it-swarm-pt.tech

Como posso descobrir se um processo é CPU, memória ou disco?

Como posso descobrir se um processo está vinculado a CPU, memória ou disco?

40
ssanj

Isso requer algum vodu. Depende. Exemplo:

  • Se houver memória suficiente e os discos não parecerem muito ocupados, pode ser ligado à CPU. Veja o uso da CPU e, se estiver perto de 100%, está ligado à CPU. Se não é, há um gargalo artificial na implementação. Por exemplo. em uma CPU dual-core, um único processo encadeado não ultrapassará 50% do uso da CPU.

  • Se a CPU e a memória estão disponíveis, mas os discos estão muito ocupados, ou IO latência parece alta, é provável que seu IO limite. Veja se adicionar mais discos (RAID?) Ajuda.

  • Nenhuma das acima? Verifique a memória disponível.

  • Memória suficiente? Pode haver um gargalo artificial no próprio processo, ou seja, talvez alguém tenha esquecido de remover um sono (1)? Naah não é tão fácil normalmente. ;)

Há uma razão pela qual temos um laboratório inteiro para engenheiros de desempenho na maioria das empresas que lidam com produtos sensíveis ao desempenho!

Use ferramentas como sar, vmstat, iostat, oprofile, lockstat, dtrace, ferramentas de monitoramento de desempenho específicas do produto, etc., para depurar problemas de desempenho.

15
Sudhanshu

confira iotop, pode ser útil

11
ithkuil

Uma ferramenta que pode ser útil para a verificação em tempo real de várias estatísticas do processo (memória, uso da cpu, E/S, etc.) é htop. Ele não substitui as ferramentas mais especializadas nomeadas pelo Sudhanshu, mas pode ser um bom começo.

9
JanC

Além das outras ferramentas mencionadas, execute ps l PID, inserindo o ID do processo relevante ou observe as colunas STATE e WCHAN no topo ou no htop.

Se estiver no estado D (para disco), ele estará fazendo o arquivo IO. Isso pode ser porque ele está lendo muitos arquivos ou porque está usando muita memória e troca. A coluna WCHAN lhe dirá qual a função do kernel que está dentro; pesquisando por eles ou perguntando aqui pode dar alguma indicação do que eles significam.

Se estiver no estado R (run), ele está usando a CPU no espaço do usuário, em outras palavras, ela está ligada à CPU naquele momento.

Se estiver no estado S (sleep), ele estará dentro de uma chamada do sistema que pode ser interrompida, o que pode significar que ele está realmente adormecido ou está fazendo algo como esperar por um tráfego de rede ou um bloqueio. Mais uma vez, olhando para o wchan específico lhe dirá mais.

Veja também O que é o "Canal de Espera" de um processo?

4
poolie

Execute top e observe a linha de uso da cpu. Um usuário alto% indica que está vinculado à cpu. Uma alta espera% indica que é IO ligado.

2
psusi