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

38

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

    
por ssanj 07.08.2010 / 07:01

5 respostas

14

Isso requer um pouco de vodu. Depende. Exemplo:

  • Se houver memória suficiente e os discos não parecerem muito ocupados, poderá estar limitado à 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 estiverem disponíveis, mas os discos estiverem muito ocupados, ou a latência do IO parecer alta, é provável que seu IO esteja ligado. Veja se adicionar mais discos (RAID?) Ajuda.

  • Nenhuma das opções 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. ;)

Existe uma razão pela qual temos um laboratório completo 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.

    
por Sudhanshu 07.08.2010 / 07:54
9

confira iotop , pode ser útil

    
por ithkuil 06.09.2010 / 01:32
8

Uma ferramenta que pode ser útil para a verificação em tempo real de várias estatísticas de 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.

    
por JanC 07.08.2010 / 19:04
3

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

Se estiver no estado D (para disco), 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 irá dizer-lhe qual é a função do kernel; 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, ou seja, ela está ligada à CPU naquele momento.

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

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

    
por poolie 17.11.2010 / 02:40
2

Execute top e observe a linha de uso da CPU. Um usuário alto% indica que está vinculado à cpu. Uma alta espera% indica que ela está vinculada a E / S.

    
por psusi 31.01.2012 / 21:48