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 14:35:40 -0300

Man, tem uma outra ferramenta parecida, o 'mpstat'

[root@fw2 proc]# mpstat 1 9 | awk {'print $5'} | sed -n '1,2!p;s/^$//;' | nl

Se eu soubesse disso semestre passado...

--

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

Dúvidas: enviar para /dev/null



2008/8/26 Raul Libório <address@hidden>:
> 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]