Representando graficamente o uso da CPU por usuário em uma máquina Linux

7

Eu quero fazer um gráfico (saída gráfica seria ótimo, ou seja, um arquivo .png) a seguinte situação: Eu tenho usuários A, B e C. Eu limito seus recursos para que quando todos os usuários executem uma tarefa intensiva da CPU no Ao mesmo tempo, esses processos usarão 25%, 25% e 50% da CPU. Eu sei que posso obter as estatísticas em tempo real usando top , mas não tenho ideia do que fazer com elas. Eu pesquisei na enorme página top man, mas não encontrei muito sobre o assunto da saída de dados que podem ser representados graficamente. Idealmente, o gráfico mostraria um intervalo de talvez 30 segundos. Alguma idéia de como conseguir isso?

    
por mart1n 05.06.2012 / 17:27

4 respostas

4

I know I can get the real-time stats using top but have no idea what to do with them

O modo em lote pode ser útil:

   -b : Batch mode operation
        Starts  top  in ’Batch mode’, which could be useful for sending output from top to other programs or
        to a file.  In this mode, top will not accept input and runs until the iterations limit  you’ve  set
        with the ’-n’ command-line option or until killed.

Por exemplo:

$ top -b -n 1 -u <user> | awk 'NR > 7 { sum += $9 } END { print sum }'

Ganglia Gmetric pode ser usado para traçar um gráfico para isso.

cpu_per_user_gmetric.sh

#!/bin/bash
USERS="a b c"

for user in $USERS; do
    /usr/bin/gmetric --name CPU_per_"$user"_user --value 'top -b -n 1 -u $user | awk 'NR>7 { sum += $9; } END { print sum; }'' --type uint8 --unit Percent
done

crontab -l

* * * * * /path/to/cpu_per_user_gmetric.sh

e aqui está o resultado:

    
por 14.08.2012 / 11:52
6

O comando tload representa a representação pictórica da carga média do sistema através do gráfico ASCII. Este comando pode ser usado para fornecer o gráfico em um terminal. A sintaxe do comando é:

tload [options] [terminal]

Se o terminal não for fornecido como o argumento para este comando, então, por padrão, ele exibe o gráfico no terminal atual. Portanto, as formas mais simples desse comando são:

$ tload
por 20.03.2014 / 15:04
2

Talvez você possa usar collectd e adaptar um dos plug-ins disponíveis . Sim, nenhum dos listados fará exatamente o que você quer, mas por outro lado eles são muito simples de modificar e eu acho que você poderia começar com por exemplo processes plugin e começar a trabalhar a partir daí.

    
por 05.06.2012 / 20:13
1

Teste sar e sadf para reunir e preparar os dados para facilitar a representação gráfica. link

    
por 05.06.2012 / 23:37