Você precisa ter cuidado ao avaliar esses números.
- O IOWait está relacionado, mas não necessariamente correlacionado linearmente com a atividade do disco.
- O número de CPUs que você tem afeta sua porcentagem.
- Um IOWait alto (dependendo da sua aplicação) não
indica um problema para você. Alternativamente, um pequeno IOWait pode se traduzir em um problema para você. Basicamente, resume-se a que tarefa está esperando.
O IOWait neste contexto é a medida do tempo durante um determinado período que uma CPU (ou todo o CPUS) gastou ociosa porque todas as tarefas executáveis estavam esperando por uma operação de IO a ser cumprida.
No seu exemplo, se você tiver 20 CPUs, com uma tarefa realmente martelando o disco, essa tarefa está (na verdade) gastando 100% do tempo no IOWait, subseqüentemente a CPU que essa tarefa executa gasta quase 100% do seu tempo no IOWait. No entanto, se 19 outras CPUs estiverem efetivamente ociosas e não estiverem utilizando esse disco, elas reportarão 0% de IOWait. Isso resulta em uma porcentagem média de IOWait de 5%, quando, na verdade, se você visse sua utilização de disco, isso poderia gerar um relatório de 100%. Se o aplicativo que está aguardando no disco for crítico para você - esses 5% são um pouco enganosos porque a tarefa no gargalo está vendo problemas de desempenho provavelmente muito maiores do que ficar 5% lenta.
there are almost as many CPU processes waiting than working? (=> bad)
Provavelmente, lembre-se que na maioria das vezes as CPUs executam tarefas e as tarefas são o que solicitam o IO. Se duas tarefas separadas estiverem ocupadas consultando o mesmo disco em duas CPUs separadas, isso colocará as duas CPUs em 100% de IOWait (e no exemplo de 20 CPUs, uma média geral de 10% de IOWait).
Basicamente, se você tem muitas tarefas que solicitam IO, especialmente do mesmo disco, mais esse disco é 100% utilizado (veja iostat -mtx
), então isso é ruim.
the working processeses are waiting 5,0% of their execution plan? (=> ok in this case)
Não. Os processos de trabalho quase certamente aguardam em tempo integral pelo IO. É apenas o caso de relatório médio ("as outras CPUs não estão ocupadas") falsifica a porcentagem ou o fato de que a CPU tem muitas tarefas para executar, das quais muitas não precisam fazer IO.
Como regra geral, em um sistema com múltiplas CPUs, uma porcentagem de IOWait que é igual ao número de CPUs que você dividiu por 100 provavelmente é algo para investigar.
something else
Veja acima. Mas observe que os aplicativos que fazem gravações muito pesadas são limitados (pare de usar o writeback, comece a gravar diretamente no disco). Isso faz com que essas tarefas produzam alto IOWait, enquanto outras tarefas na mesma CPU gravando no mesmo disco não. Então existem exceções.
Observe também se você tem 1 CPU dedicada a executar 2 tarefas, uma é uma leitura / gravação pesada de IO e a outra é um usuário pesado de CPU, então a CPU reportará 50% de IOWait neste caso, se você tiver 10 tarefas assim seria 10% de IOWait (e uma carga horrível), então o número pode ser reportado muito abaixo do que pode ser um problema.
Eu acho que você realmente precisa dar uma olhada em iostat -mtx
para obter algumas métricas de utilização de disco e pidstat -d
para obter algumas métricas por processo e, em seguida, considerar se os aplicativos atingindo esses discos são prováveis ou não para causar um problema ou outros aplicativos em potencial que afetam esses discos, provavelmente causando um problema.
As métricas de CPU realmente agem como indicadores de problemas subjacentes, elas são gerais, então entender onde elas podem ser demais geral é uma coisa boa.