shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Consumo de CPU


From: Raul Libório
Subject: Re: [shell-script] Consumo de CPU
Date: Tue, 26 Aug 2008 13:25:18 -0300

Uma recomendação:

# --sar ( System Activty Reporter )
[ http://www.dicas-l.com.br/dicas-l/20040424.php ]

O sar provê informações semelhantes ao vmstat/iostat/netstat (esses
com algumas particularidades), embora seja mais completo e flexível.
Ocupa aproximadamente 750Kb de RAM, com uso aproximado de CPU em torno
de 0,25% causando um relativo pequeno impacto no sistema. Entre as
informações fornecidas pelo sar destacam-se:

    * Paginação: exibe freqüência de paginação em KB/s de dados lidos
e gravados (-w, -p)
    * Buffer: uso, reinicialização e atividade do buffer (-b)
    * Fila: atividade e uso da fila de processos (-q)
    * CPU: exibe informações sobre relação uso da CPU por usuário x sistema (-u)
    * Memória: exibe como a memória está sendo utilizada (-g ou -k via
kernel allocation)
    * Geral: coleta geral de todas informações providas via sar (-A)

Ele pode ser encontrado no pacote 'Sysstat'.
Pra baixar: http://linux.softpedia.com/progDownload/Sysstat-Download-4621.html
Entao.. ao script :D

#!/bin/bash
# coleta a porcentagem de uso de CPU em um dado momento
# 06.04.08 - GPL
#______________________________

dados="/tmp/process.log"
medias="/tmp/media.log"

#  --- Captura somente as linhas que contenham
# a media retornada, e filtra a coluna que indica
# processamento, salvando em arquivo.

sar 1 10 -u | grep -i Average | \
awk '{print $5}' > $dados

# -- Captura somente a ultima linha, que contem a
# media geral das amostras retiradas no momento.
cat  $dados | head -n 1 > $medias


# -- Guarda a porcentagem em uma variavel
MediaGeral=$( cat $medias )


# Escreve a media no arquivo de log
echo MEDIA = $MediaGeral >> /var/log/processador.log


Eu usei esse script em um trabalho da faculdade, nao fui eu quem o
fez, MASSS, funciona :)
--

Raul Libório
UniJorge Redes - www.redesfja.com
rauhmarutsªhotmailºcom
Linux user#4444581

Dúvidas: enviar para /dev/null



2008/8/26 fernando_gottlieb <address@hidden>:
> Olá pessoal.
> Estive procurando uma maneira de obter o consumo de CPU e esbarrei em
> características do top, a primeira leitura é sempre a mesma.
> Continuando a procura por outra forma de obter este resultado,
> encontrei vários trechos de códigos mas nenhum conclusivo.
> Depois de algumas tentativas, consegui o que segue abaixo.
> Espero que ajude alguém.
> Gostaria, se possivel, de pedir sugestões para otimizá-lo.
> Segue o código:
>
> ### Escreve dados sobre uso do processador
> # Obtem duas leituras do comando top (top -b -d 0.5 -n2)
> # Separa apenas as linhas onde aparece o uso da cpu (| grep 'Cpu(s)')
> # Retira as strings contidas no inicio do texto contando dois espacos
> (| cut -f2- -d ' ')
> # Separa os dois primeiros parametros cortando os primeiros 18
> caracteres (| cut -c1-18)
> # Substitui as strings %, u, s e y por espacos, deixando apenas as
> virugulas (| tr '%usy' ' ')
> var=$(top -b -d 0.5 -n2 | grep 'Cpu(s)' | cut -f2- -d ' ' | cut -c1-18
> | tr '%usy' ' ')
> # Obtem o dado anterior a terceira virgula = user
> user=$(echo $var | cut -d, -f3)
> # Obtem o dado anterior a quarda virgula = sys
> sys=$(echo $var | cut -d, -f4)
> # Depois de obter o uso de cpu para usuario (%us = $user) e sistema
> (%sy = $sys)
> # faz a soma das variaveis usando bc (basic calculator) retirando o
> numero sem o ponto
> total=$(echo "$user + $sys" | bc | cut -d. -f1)
> echo '#cpu = '$total
>
> Abraços
>
> Fernando
>
> 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]