Existem algumas maneiras possíveis de fazer isso. Observe que é inteiramente possível seus muitos processos em um cenário descontrolado, causando isso, não apenas um.
A primeira maneira é configurar o pidstat para executar em segundo plano e produzir dados.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Isso fornecerá uma visão bastante detalhada da execução do sistema em intervalos de dez minutos. Eu sugeriria que este seja seu primeiro porto de escala, pois produz os dados mais valiosos / confiáveis para trabalhar.
Existe um problema com isso, principalmente se a caixa entrar em um loop descontrolado da CPU e produzir uma carga enorme - você não garante que seu processo real seja executado em tempo hábil durante a carga (se houver), para que você possa realmente perder a saída !
A segunda maneira de procurar isso é habilitar a contabilidade do processo. Possivelmente mais uma opção de longo prazo.
accton on
Isso permitirá a contabilidade do processo (se ainda não tiver sido adicionada). Se ele não estava sendo executado antes, isso precisará de tempo para ser executado.
Tendo sido executado, por exemplo, 24 horas - você pode executar um comando (que produzirá uma saída como esta)
# sa --percentages --separate-times
108 100.00% 7.84re 100.00% 0.00u 100.00% 0.00s 100.00% 0avio 19803k
2 1.85% 0.00re 0.05% 0.00u 75.00% 0.00s 0.00% 0avio 29328k troff
2 1.85% 0.37re 4.73% 0.00u 25.00% 0.00s 44.44% 0avio 29632k man
7 6.48% 0.00re 0.01% 0.00u 0.00% 0.00s 44.44% 0avio 28400k ps
4 3.70% 0.00re 0.02% 0.00u 0.00% 0.00s 11.11% 0avio 9753k ***other*
26 24.07% 0.08re 1.01% 0.00u 0.00% 0.00s 0.00% 0avio 1130k sa
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28544k ksmtuned*
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28096k awk
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 29623k man*
7 6.48% 7.00re 89.26% 0.00u 0.00% 0.00s
As colunas são ordenadas da seguinte forma:
- Número de chamadas
- Porcentagem de chamadas
- Quantidade de tempo real gasto em todos os processos desse tipo.
- Percentagem.
- Tempo de CPU do usuário
- Percentagem
- Tempo de CPU do sistema.
- Média de chamadas de E / S.
- Percentagem
- Nome do comando
O que você procurará são os tipos de processo que geram mais tempo de CPU do usuário / sistema.
Isso divide os dados como a quantidade total de tempo da CPU (a linha superior) e, em seguida, como esse tempo foi dividido. A contabilização de processos é contabilizada corretamente apenas quando os processos são ativados, portanto é provavelmente melhor reiniciar o sistema depois de permitir que ele garanta que todos os serviços sejam contabilizados.
Isso, de maneira alguma, realmente lhe dá uma idéia definitiva de qual processo pode ser a causa desse problema, mas pode lhe dar uma boa sensação. Como pode ser um instantâneo de 24 horas, existe a possibilidade de resultados distorcidos, portanto, lembre-se disso. Ele também deve sempre registrar, pois é um recurso do kernel e, diferentemente do pidstat, sempre produzirá saída mesmo durante carga pesada.
A última opção disponível também usa a contabilidade do processo para que você possa ativá-la como acima, mas use o programa "lastcomm" para produzir algumas estatísticas dos processos executados na época do problema, juntamente com as estatísticas da CPU para cada processo.
lastcomm | grep "May 8 22:[01234]"
kworker/1:0 F root __ 0.00 secs Tue May 8 22:20
sleep root __ 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa X root pts/0 0.00 secs Tue May 8 22:49
ksmtuned F root __ 0.00 secs Tue May 8 22:49
awk root __ 0.00 secs Tue May 8 22:49
Isso pode lhe dar algumas dicas também sobre o que pode estar causando o problema.