Galera,
Postei um problema para a lista que era o seguinte: instalei o mrtg pra
monitorar algumas coisas na minha maquina como: link, cpu, memoria,
etc... com a memoria e o link parecia tudo normal, mas quando vi a
utilizacao de cpu... o tempo todo em 60, 70%... nao entendi. Fui dar uma
verificada no script (que eu usei do linux.trix.net) e nao deu pra saber
muita coisa, pq ele usava os dados real time direto do /proc/stat.
Entendi o script, mas nao entendi direito como funciona o stat... dei
uma pesquisada e olhem soh:
$ cat /proc/stat | grep '^cpu'
cpu 74215 0 5988 501513
cpu0 74215 0 5988 501513
Bom... me corrijam onde eu estiver errando: se a maquina tiver um
processador soh... o valor de cpu0 vai ser sempre igual ao da cpu...
E interpretando:
1a coluna = user
2a coluna = nice
3a coluna = system
4a coluna = idle
Entao, teoricamente... somando as 3 primeiras e subtraindo da 4a,
teriamos a utilizacao da cpu, ou nao?
Bom... pra testar algumas coisas na minha maquina... rodei um script em
perl pra subir o processamento pra 100%... e fui acompanhando o
/proc/stat... e parece que os valores vao aumentando... mas muito
devagar!!! E depois quando o processamento volta ao normal, os valores
permanecem la em cima... Alguem conhece do assunto pra me explicar onde
que eu to vacilando? Please.. ;)
Bom... e pra quem interessar, ou tiver o mesmo problema... eu fiz um
script quebra galho pra resolver isso temporariamente, usando os dados
do ps. A parte pra monitorar a memoria continua igual ao script
original:
====================================================
#!/bin/bash
procs=$(ps aux | awk '{print $3}' | tr -d "%CPU")
cum=0
for a in $procs
do
cum=`echo $cum + $a | bc`
done
echo $cum
mem=$(/bin/free|grep ^-)
/usr/bin/awk -v mem="$mem" '
BEGIN {
split(mem,memstats);
print int(100*memstats[3]/(memstats[3]+\
memstats[4]));
}'
====================================================
Pra quem quiser saber como eh o script original:
====================================================
#!/bin/sh
mem=$(/bin/free|grep ^-)
cpu=$(grep '^cpu ' /proc/stat)
/usr/bin/awk -v cpu="$cpu" -v mem="$mem" '
BEGIN {
split(cpu,cpustats)
print 100-int(100*cpustats[4]/(cpustats[1]+\
cpustats[2]+cpustats[3]+cpustats[4]))
split(mem,memstats);
print int(100*memstats[3]/(memstats[3]+\
memstats[4]));
}'
====================================================
Bom, eh isso ai... se alguem puder me ajudar, ficarei muito agradecido
=]
[]'s a todos!
Andre Aun
icq #62962556
Assinantes em 09/09/2002: 2238
Mensagens recebidas desde 07/01/1999: 182270
Historico e [des]cadastramento: http://linux-br.conectiva.com.br
Assuntos administrativos e problemas com a lista:
mailto:[EMAIL PROTECTED]