Cenário: De repente, meu computador parece lento. O mouse se move, mas as janelas levam muito tempo para abrir, etc. uptime
diz que a carga está em 7,69 e está aumentando.
Qual é a maneira mais rápida de descobrir quais processos são a causa da carga?
Agora, ferramentas "top" e similares não são a resposta, porque mostram o uso da CPU ou da memória, mas não as duas ao mesmo tempo. O que eu preciso é do único comando que eu possa digitar quando acontecer - algo que descobrirá qualquer
O sistema está tentando trocar 8 GB de RAM para o disco porque o processo X ...
ou
processo X procura por todo o disco
ou
o processo X usa 400% da CPU "
Então, o que estou procurando é o iostat, o htop / atop e ferramentas semelhantes que se encontram em um com uma saída como esta:
1235 cp - Disk trashing
87 chrome - Uses 2 GB of RAM
137 nfs_bench - Uses 95% of the network bandwidth
Eu não quero uma ferramenta que me dê alguns números que eu possa analisar, mas uma ferramenta que me diga exatamente qual processo causa a carga atual. Suponha que o usuário na frente do teclado mal saiba escrever "processo", mas o usuário fica rapidamente impressionado quando se trata de "tamanho residente", "memória virtual" ou "ciclo de vida do processo".
Meu argumento é o seguinte: Um usuário percebe um problema. Pode haver milhares de razões ... bem, quase :-) O usuário quer saber a origem do problema.
As soluções atuais me fornecem muitos números, e eu preciso saber o que esses números significam. O que estou procurando é uma ferramenta meta. 99% dos dados são irrelevantes para o problema. Portanto, o que a ferramenta deve fazer é procurar processos que consomem algum recurso e listar apenas aqueles junto com "esse processo precisa de muita CPU, isso produz muitos IRQs, esse processo aloca muita RAM (e ainda está crescendo)".
Esta será uma lista relativamente curta. Será muito mais simples para alguém novo localizar o culpado desta lista do que da saída de, digamos, o htop
que me dá cerca de 5000 números, mas exige que eu próprio dobre processos multiencadeados (eu tenho 50 linhas que dizem VIRT 2750M
mas apenas 16 GB de RAM - a máquina deve se trocar até a morte, mas é claro, isso é uma interpretação incorreta dos dados que podem acontecer rapidamente).
fonte
top
meio)Respostas:
Eu tenho que sorrir para as respostas, porque cada uma disse para você executar a ferramenta X. O único problema é que o que você está vendo é intermitente, não há como correlacionar nada. Uma ferramenta como o sar pode ajudar se você a executar com uma frequência suficientemente alta, mas eu diria que collectl é ainda melhor.
Como o sar , você o executa como um daemon instalando o RPM e executando
/etc/init.d/collectl start
.Agora, quando você vê algo lento,
collectl -p /var/log/collectl/filename --top
reproduz os dados e mostra os principais processos. Você também pode simplesmente corrercollectl --top
e vê-los em tempo real. BTW - qualquer coisa que você possa fazer em tempo real, também poderá reproduzir.Quanto à carga da CPU, e se você estiver sobrecarregado com interrupções?
collectl -sC
não apenas mostrará as cargas em CPUs individuais (ou usará-sc
para carga média), mas também mostrará como eles estão gastando seu tempo. Include-j
(-scj
) e você verá o número de interrupções / CPU. Use maiúsculas-J
e você verá os TIPOS de cada interrupção / CPU.Obviamente, se você realmente gosta do vmstat, sempre pode reproduzir os dados coletados
--vmstat
e os dados históricos serão mostrados no formato vmstat.Existem muito mais opções do que tenho tempo para listar, mas você pode conferir no SourceForge ou apenas pesquisar no Google.
fonte
"top" funciona razoavelmente bem, desde que você veja os números certos. Vamos ver:
Agora, se o sistema estiver lento porque a CPU já está ocupada, ela será mostrada como "us" e "sy" nas colunas "CPU (s):", estando a linha próxima a 100% juntas.
Se estiver lento devido à troca, "Mem:" "free" mostra valores muito baixos e "Swap:" "usou" valores altos.
Se estiver lento devido à E / S em geral, "CPU (s):" "wa" informa que o tempo é gasto na espera de E / S.
Agora, se você souber que as esperas de E / S são o problema, poderá usar os programas "iotop" para saber quais processos criam a maioria das E / S.
fonte
top
, o mesmo acontece com um computador. Este não é o sorriso de Mona Lisa, é apenas analisar alguns números para encontrar números "ruins".Com base no uso de 400%, presumo que você tenha um processador quad-core. Sua média de carga é quase o dobro da capacidade e metade dos processos estão aguardando CPU.
Primeiro,
renice
seu shell é 0 ou -10 para obter um sistema mais responsivo e, em seguida, usehtop
para encontrar o (s) processo (s) ofensivo (s) e siga-ostrace
em um determinado processo. Outras ferramentas que podem ser úteis são:vmsat
sar
iostat
pmap
fonte
Um mouse lento também pode ser devido a uma carga de interrupção muito alta ou controladores USB muito ocupados (presumo que seja um mouse USB).
fonte
O vmstat pode ajudá-lo em termos gerais. Um exemplo de uso é:
Você também pode executá-lo a cada X segundos - basta adicionar o número X após o comando.
Editar: Em vista do comentário ... Escreva o seguinte em um arquivo e torne esse arquivo executável. Ele mostrará os três principais processos da máquina.
Se você quiser saber qual memória consumida é diferente da CPU, leia a página de manual superior e altere a ordem da exibição.
fonte