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

17

Eu tenho uma caixa no Linode que está passando por um comportamento estranho. De vez em quando, a E / S de CPU e disco dispara para 100% e o servidor não responde e precisa ser inicializado. Eu gostaria de investigar melhor o que está acontecendo, mas não sei como encontrar quem é responsável por todo esse CPU e I / O. Estou executando o Gentoo 2.6.18.

    
por hsribei 10.10.2009 / 16:43

6 respostas

17

Você poderia tentar fazer algo assim:

while true; do ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10 >> logfile.txt; printf "\n" >> logfile.txt; sleep 3; done

que mostraria os dez principais processos em termos de uso da CPU. Você pode alterar o número de processos mostrados alterando os 10 em "head -10" para um número diferente, e com que frequência atualiza alterando os 3 em "sleep 3" ou removendo totalmente a parte "sleep 3".

    
por 10.10.2009 / 18:42
12

Confira no topo que ele irá escrever um log binário de praticamente tudo que você possivelmente deseja e então você pode usar um top como gui para percorrer as fatias de tempo do dia (o padrão é pegar os dados a cada 5 minutos). link

    
por 13.10.2009 / 09:09
6

Acho que munin é uma das ferramentas de monitoramento de produtos que ajudará você a obter algumas informações sobre as atividades da sua caixa . Além disso, existem algumas ferramentas de linha de comando como sar , iostat, ps, top para tal uso.

    
por 10.10.2009 / 16:53
5

As outras respostas mostraram apenas como você pode ver o que está acontecendo atualmente, o que não ajuda se o sistema foi reinicializado.

Se você quiser que essas informações sejam registradas para a posteridade (ou faturamento ou qualquer outro uso que você também possa ter), o que você deseja é a contabilidade do processo.

Aqui está um HOWTO que encontrei, mas vou ser honesto - faz uma década desde que usei contabilidade de processo.

link

    
por 10.10.2009 / 19:35
2

Uma abordagem mais amigável para a solução da Shawn para monitoramento quase em tempo real:

while true; do clear; ps -eo pcpu,pmem,pid,user,args --sort=-pcpu c|head -20; sleep 1; done

Isso fornecerá uma visão estática dos 20 principais processos que serão atualizados a cada 1 s. A opção "c" no comando ps imprimirá o nome do executável do processo em vez do comando args inteiro. Você pode omitir essa opção se precisar de toda a informação do comando. % de coluna de uso de memória também adicionada.

    
por 15.11.2013 / 11:32
1

O Gentoo também não tem o comando "top"?

machine:~/# top

deve fornecer as estatísticas de execução de quais programas causam mais carga.

    
por 10.10.2009 / 16:49