Avaliando a E / S da CPU no Linux

5

Fazendo um top para verificar a espera, recebo estes números:

Cpu(s):  6.7%us,  1.4%sy,  1.2%ni, 85.5%id,  5.0%wa,  0.0%hi,  0.3%si,  0.0%st

Olhando para estas figuras (% us ~ =% wa), elas significam que:

  1. existem quase tantos processos de CPU esperando do que trabalhando? (= > ruim)
  2. os processos de trabalho estão esperando 5,0% de seu plano de execução? (= > ok neste caso)
  3. outra coisa
por Toto 19.11.2014 / 17:27

3 respostas

14

Você precisa ter cuidado ao avaliar esses números.

  1. O IOWait está relacionado, mas não necessariamente correlacionado linearmente com a atividade do disco.
  2. O número de CPUs que você tem afeta sua porcentagem.
  3. 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.

    
por 19.11.2014 / 19:04
0

O estado de espera é quando um processo que, de outra forma, é executado, é interrompido à espera de E / S. É um sinal de contenção, geralmente para recursos de disco.

Isso significa que alguns de seus processos não estão sendo executados o mais rápido que podem, mas isso é muito normal.

    
por 19.11.2014 / 17:37
0

Isso significa que 5% do tempo de CPU é gasto esperando que o I / O do disco seja concluído e que o tempo de CPU de 6,7% seja gasto para realmente processar o processo requerido pelo usuário.

Verifique a saída do vmstat; por exemplo. vmstat 1 30 , desde que a contagem de processos na coluna b não aumente, você é bom. Coluna b indica o número de processos em estado ininterrupto (estado D) que são bloqueados até que a operação do disco IO seja concluída.

Então responda às suas perguntas

  1. existem quase tantos processos de CPU esperando do que trabalhando? (= > ruim)

Nenhum tempo é aproximadamente o mesmo, mas isso não é necessariamente um problema. Contanto que você não tenha problema onde os processos começam a empilhar no estado D, você é bom. As melhorias podem incluir a adição de mais RAM para ter mais espaço para pagecache (diskcache) para reduzir o número de leituras de disco e, em vez disso, ler a partir do cache de memória, ajustando o agendador de disco.

  1. os processos de trabalho estão esperando 5,0% de seu plano de execução? (= > ok neste caso)

Isso é parte do tempo de CPU gasto no processamento de processos de userland; não há nada para se preocupar aqui, especialmente com tanta 85.5%id tempo de CPU

    
por 19.11.2014 / 17:37