Eu tenho um servidor que tem uma carga muito alta. Nada está saltando para mim em termos de uso da CPU, e não está trocando.
Acho que é porque alguns processos estão aguardando E / S de disco e quero ver o que está aguardando.
Existe algum programa que me mostre quais processos estão aguardando IO? Eu sei, iotop
mas isso mostra o que está fazendo no momento.
Ou isso é uma pergunta boba? (Se sim, explique como :))
iowait
informações necessárias , éiotop
necessário privilégios elevados.watch
,ps
Eawk
dar apenas a informação necessária, e não requerem privilégios elevados.ps
os sinalizadores POSIX eawk
editado de maneira diferente:watch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"
- desta forma, você obtém os títulos das colunas e o stat, pid e command.ps axu
e procure processos que estão no estado "D". Com base na página de manual ps (1) , os processos que estão no estado D estão em suspensão ininterrupta, o que quase sempre significa 'aguardando E / S'. Infelizmente, matar esses processos geralmente não é possível.fonte
A resposta de Zanchey é a melhor que eu conheço para descobrir o que está esperando por IO.
Quando você diz que seu servidor está sob alta carga, o que você quer dizer com isso? Algo em particular é lento para responder?
Se você está se perguntando se o seu disco IO é o gargalo, eu usaria o comando iostat (parte do pacote sysstat) para ver se o disco está realmente sob carga pesada.
Exemplo:
fonte
Habilite o log block_dump de quais processos estão executando operações de leitura / gravação em bloco:
Quando terminar, desative o rastreamento para não enviar spam aos seus arquivos de log:
fonte