Ferramenta de estatísticas da CPU para o CentOS?

1

Estou procurando uma ferramenta que produza informações de uso muito simples na CPU em determinados intervalos. Acho que usei uma ferramenta como essa antes de alguns anos atrás, mas não consigo lembrar o nome. Eu quero ser capaz de traçar um gráfico de como o processador sobe e desce durante os testes de carga.

Obrigado antecipadamente.

    
por MeanwhileInHell 28.05.2013 / 18:05

2 respostas

2

A maneira mais fácil de fazer isso é usar top no modo em lote e em uma única iteração:

$ top -bn 1| grep Cpu
 %Cpu(s):  5.0 us,  2.8 sy,  0.0 ni, 91.4 id,  0.5 wa,  0.0 hi,  0.2 si,  0.0 st

Veja minha resposta aqui para obter uma explicação dos campos. Basta dizer que você deseja a soma de us , sy e ni , portanto é necessária alguma análise:

$ top -bn 1| grep Cpu | gawk '{print $2+$4+$6}' > logfile

O comando acima retorna 7,8, o que significa que 7,8% da energia da CPU disponível está em uso naquele momento específico. Você pode usar cron para executar esse comando, por exemplo, a cada minuto:

$ crontab -e

Isso abrirá uma janela do editor (do editor que você definiu como a variável $EDITOR shell), nessa janela cole essa linha e salve e feche:

* * * * * top -bn 1| grep Cpu | gawk '{print $2+$4+$6}' >> ~/logfile

Isso fará com que a porcentagem da CPU seja gravada em ~/logfile a cada dois minutos.

Se você quiser um detalhamento para cada CPU, poderá analisar a saída de mpstat :

$ mpstat -P ALL | tail -n +4 | gawk '{print "CPU:"$3,$4+$5+$6}'
CPU:all 7.87
CPU:0 10.73
CPU:1 10.75
CPU:2 4.97
CPU:3 5.09
    
por 28.05.2013 / 19:52
1

Depende do que você quer:

  • /usr/bin/top retorna informações, devido a várias iterações ou outros especificadores que o ajudarão;
  • /proc/cpuinfo mostra o número de CPUs que você tem para ajudar sua ferramenta a descobrir as estatísticas de uso;
  • Para uso interativo no Ubuntu, existem widgets de área de trabalho para exibir o que você deseja graficamente. Por exemplo: link

- Editar -

Solicitações do questionador gravando no arquivo de log. Eu recomendaria usar:

 vmstat -s

esta saída:

    99052720  total memory
    60854068  used memory
     3565184  active memory
    19739432  inactive memory
    38198648  free memory
     3221080  buffer memory
    20045176  swap cache
     2097144  total swap
       10836  used swap
     2086308  free swap
   124233445 non-nice user cpu ticks
        3023 nice user cpu ticks
    45760329 system cpu ticks
 21762927158 idle cpu ticks
      124003 IO-wait cpu ticks
        9748 IRQ cpu ticks
     1040367 softirq cpu ticks
           0 stolen cpu ticks
     4503955 pages paged in
  1180587414 pages paged out
        1637 pages swapped in
       11093 pages swapped out
      708030 interrupts
  2814409153 CPU context switches
  1377801399 boot time
    40693435 forks

Então, execute este comando e canalize para um arquivo ou leia-o com python. Em seguida, repita e divida os resultados para encontrar o uso da CPU.

Note que o termo 'CPU TICKS' está SERIOUSLY MISLEADING. NÃO tente converter ticks em segundos, você irá falhar e procurar na web porquê e bater a sua cabeça até que a dor física corresponda ao seu dor mental.

Use somente esses carrapatos como medidas RELATIVAS. Isso significa, some todos os carrapatos e divida a proporção deles gastos fazendo uma coisa específica. Algo como:

 idlePercent = (idle / (idle+kernel+user+nonNiceUser+softirq+irq+iowait+stolen)) * 100
    
por 28.05.2013 / 18:51