Como impedir que o sistema operacional limite meu uso de CPU / RAM?

1

Eu tenho um programa python que utiliza multiprocessing.Pool , o que significa que ele gera vários processos. O programa obtém 70k arquivos de texto, faz algum processamento e os salva em outro diretório. Eu quero fazer uso de todos os meus núcleos de CPU ao executá-lo, como isso .

E por um tempo, eu consegui. Meu programa levou ~ 10 segundos para ser executado a cada vez, o que é bom.

real    0m12.430s
user    0m13.072s
sys     0m9.704s

Mas nos últimos dias tem sido inconsistente. Às vezes, usa 100% de CPU para todos os núcleos. Outras vezes, sem nenhum motivo, o programa usa apenas 0-1% e leva até 5 minutos para ser executado.

real    5m6.186s
user    0m4.844s
sys     0m4.968s

Observe que o real > > user + sys, embora eu não tenha ideia do que isso implica. Observe também que não estou alterando nenhum parâmetro do código ou qualquer outra configuração entre as execuções. Nesse caso, também notei que o uso de RAM de cada processo nunca ultrapassa 10 MB, o que pode afetar o uso da CPU.

Minha pergunta é: como posso começar a diagnosticar esse problema? Algumas das minhas hipóteses são:

  1. O SO detectou que meu laptop tem 2 anos e está tentando prolongar sua vida acelerando o uso da CPU / RAM
  2. Talvez o sistema operacional limita o uso de CPU / RAM de um processo se estiver usando muito por um bom tempo.
  3. Alguém ganhou acesso remoto ao meu laptop e está me perseguindo

Estou executando o Linux Mint 17.3 em um laptop com CPU Intel (R) Core (TM) i3-4005U a 1.70GHz, 4 núcleos, 8 GB de RAM, HDD

Obrigado antecipadamente.

EDIT: Aqui está a saída do vmstat enquanto o programa está sendo executado

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  1      0 2773588 242912 2522744    0    0   114    54  229  812 11  2 83  5  0
    
por Carl Araya 30.03.2018 / 16:30

0 respostas