Como posso saber quais processos estão causando cargas altas se não forem usados com alta CPU?

9

Às vezes, meus servidores mostrarão uma média de carga alta no programa "top" (por exemplo, load é ~ 10 em uma máquina de 4 núcleos), mas o uso real da CPU não é particularmente alto.

Suponho que o problema é que há muitas tarefas com I / O intenso em execução. Existe alguma maneira fácil de identificar esses trabalhos que estão causando a carga, se os valores de "% CPU" no topo não são tão altos?

    
por Lorin Hochstein 19.08.2009 / 16:20

3 respostas

6

iostat pode relatar estatísticas como essa. Geralmente incluído em sua distro no pacote sysstat.

dstat também pode valer a pena, é um substituto moderno.

    
por 19.08.2009 / 17:13
4

Se você tiver contabilidade de IO em seu kernel, poderá usar iotop para dar informações como essa. Além disso, ferramentas de monitoramento como collectd podem gravar e relatar os dados.

    
por 19.08.2009 / 16:47
3

Para descobrir o que está causando carga alta, você pode verificar algumas coisas.

  • vmstat -w irá mostrar-lhe ovierwiem (processos, swap, mem, cpu, io, sistema)
  • pmstat -P ALL fornecerá estatísticas (com% iowait) por núcleo de cpu
  • iostat -x procura alta% util ou longa espera ou grande tamanho médio da fila
    • aprofunde-se com iotop
  • ps -ax procura estado D que é ininterrompível (normalmente IO), execute-o mais uma vez, verifique se eles ainda estão no estado D
    • aprofunde-se com strace
    • verificar arquivos e conexões desses processos com lsof e netstat
  • sar / sysstat - com essa ferramenta você pode explorar não apenas as estatísticas "agora", mas também verificar o que estava acontecendo ontem à meia-noite
    • sar -b - atividades globais do io
    • sar -d - atividades io do dispositivo de bloco individual
por 24.02.2017 / 13:15

Tags