Como posso saber o que é um processo de Linux está esperando?
-
03-07-2019 - |
Pergunta
Eu estou tentando rastrear a causa de gargalos de desempenho em um aplicativo que eu estou depuração no Linux. Os vários processos envolvidos parecem gastar muito do seu tempo de bloqueio sobre os pedidos de E / S, e eu queria saber se alguém sabia todos os truques do Linux que permitem ver por um determinado processo está bloqueada / o recurso é esperando por? Existe alguma coisa útil em /proc
por exemplo?
Solução
processo Seja o que for, você usa top
para verificar o estado. Então você pode executá-lo através treliça ou strace . Isso deve detalhar o que está acontecendo. Se isso não for possível, gancho it até gdb . Ferramentas como iostat pode mostrar-lhe, em geral, o que está acontecendo (por exemplo, se o disco é gargalo) .
Outras dicas
Você pode usar o comando strace
para ver o que o seu processo está fazendo. Você também pode achar que é útil para executar lsof
em seu processo para ver quais arquivos e soquetes que está usando.
strace é seu amigo, porque você pode ficar o tempo gasto em cada chamada do sistema, mais você pode selecionar a chamada descritores de arquivos e sistema que você está interessado, mas você também pode obter suporte a partir do kernel:. Dê uma olhada no < a href = "http://www.latencytop.org/" rel = "noreferrer"> LatencyTOP