Como posso descobrir se um processo está vinculado à CPU, memória ou disco?
performance
ssanj
fonte
fonte
Respostas:
Isso requer algum vodu. Depende. Exemplo:
Se houver memória suficiente e os discos não parecerem muito ocupados, pode ser vinculado à CPU. Observe o uso da CPU e, se estiver na faixa de 100%, é vinculado à CPU. Caso contrário, há um gargalo artificial na implementação. Por exemplo, em uma CPU de núcleo duplo, um único processo encadeado não ultrapassará 50% de uso da CPU.
Se a CPU e a memória estiverem disponíveis, mas os discos estiverem muito ocupados ou a latência de E / S parecer alta, é provável que ela esteja ligada. Veja se a adição de 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 se esquecido de remover o sono (1)? Naah normalmente não é assim tão fácil. ;)
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 específicas de monitoramento de perf, etc. para depurar problemas de perf.
fonte
confira
iotop
, pode ser útilfonte
Uma ferramenta que pode ser útil para verificar em tempo real várias estatísticas do processo (memória, uso da CPU, E / S etc.) é o htop . Não substitui as ferramentas mais especializadas nomeadas por Sudhanshu, mas pode ser um bom começo.
fonte
Assim como as outras ferramentas mencionadas, execute
ps l PID
, inserindo o ID do processo relevante ou consulte as colunas STATE e WCHAN na parte superior ou no htop.Se estiver no estado D (para disco), estará executando o arquivo IO. Isso pode ser porque está lendo muitos arquivos ou porque está usando muita memória e troca. A coluna WCHAN lhe dirá qual função do kernel está dentro; pesquisar no Google ou perguntar aqui pode dar uma indicação do que eles significam.
Se estiver no estado R (execução), está usando a CPU no espaço do usuário, ou seja, a CPU está ligada naquele momento.
Se estiver no estado S (inativo), está dentro de uma chamada de sistema interrompível, o que pode significar que ele está realmente dormindo ou está fazendo algo como aguardar o tráfego de rede ou um bloqueio. Mais uma vez, olhar para o wchan específico lhe dirá mais.
Veja também O que é o "Canal em espera" de um processo?
fonte
Executar
top
e olhar para a linha de uso da CPU. Um alto usuário% indica que está vinculado à CPU. Uma% de espera alta indica que está vinculado à IO.fonte