10 min. rajadas de uso da CPU: como posso descobrir quais processos são a causa?

1

OgráficodeusodaCPUacimafoigeradoexecutando psensor durante a noite na minha caixa linux. Observe as explosões de 10 minutos de atividade consumindo até 40% do Xeon. A máquina deveria estar inativa durante a noite, exceto por possíveis processos administrativos configurados por padrão com uma configuração de desktop de usuário único do Debian. A altura da janela é de 67% (devido a um breve pico na extremidade direita).

Como posso descobrir quais processos estão causando essas explosões de 10 minutos de uso da CPU? Idealmente, seria útil ter gráficos semelhantes para cada processo.

    
por mike 15.03.2016 / 15:18

4 respostas

0

Olhando para o gráfico, parece-me que os períodos de alta utilização da CPU ocorrem em horas inteiras ou meio, o que aponta para algo que passa pelo cron. Se você quiser começar a investigar por essa rota, é aí que eu começaria.

Dito isto, dado que as rajadas de alta utilização da CPU são razoavelmente longas (dez minutos no seu caso), você poderia simplesmente descarregar o estado do sistema através de um cron do seu próprio para analisar de manhã .

Sugiro usar o modo em lote de top ( -b ) com uma contagem de iteração de 1 ( -n 1 ), para que você adicione algo como o seguinte a um novo arquivo em / etc / cron .d:

* * * * * root top -b -n 1 > /var/log/processes/$(date +%F_%R)

Lembre-se de criar um diretório / var / log / processes para isso.

De manhã, escolha um ou alguns desses arquivos de um período de alta utilização da CPU e observe-os mais de perto.

A ordem de classificação padrão parece ser a mais alta utilização atual da CPU, o que deve funcionar bem no seu caso. Caso contrário, você pode simplesmente importar o arquivo para um aplicativo de planilha (ele deve importar muito bem como dados de largura fixa) e classificar no campo% CPU. Uma vez que você sabe o nome do binário, você pode procurá-lo no disco (inclusive usando dpkg -S para descobrir a que pacote ele pertence) ou alterar o acima com algo como pstree para ter uma idéia do que levou para aquele binário em particular sendo invocado.

Isso, por sua vez, deve lhe dar uma boa idéia de quais programas reais (e não apenas processos) estão sobrecarregando a CPU, permitindo que você determine se é um problema, e se você acha que é um problema, então como desligá-lo.

    
por 15.03.2016 / 21:00
0

Eu acho que você tem que codificar por conta própria para obter informações sobre qual processo está levando a cpu.

Houve uma discussão anterior sobre isso aqui que pode poupar algum tempo:

Como faço para registrar o uso da CPU por processo?

    
por 15.03.2016 / 15:33
0

Eu usei o link quando ele foi lançado pela primeira vez e ele monitora e registra informações do sistema, como a captura da saída do topo e semelhantes. Talvez isso te dê o que você precisa para rastrear o problema.

    
por 15.03.2016 / 16:16
0

Eu sugiro usar em cima com intervalo de 30 segundos para capturar os dados. Então você pode navegar facilmente em qualquer ponto (t - forward / shift + t - para trás) e obter estatísticas estendidas - cpu / io / network loads e assim por diante.

    
por 15.03.2016 / 22:10