Quero ler as estatísticas de utilização da CPU de um programa C, estou interessado na porcentagem de uso da CPU, no tempo de roubo , etc. Essas estatísticas são mostradas na terceira linha do top
comando.
Tentei analisar top
a saída de awk
( top -n 1 -b | awk '{print $0}'
), mas parece que top
sempre dá os mesmos valores 'fictícios' antes de começar a mostrar estatísticas corretas.
Existe uma maneira de código, ou analisando a saída de algum comando para obter as estatísticas de utilização da CPU?
Editar:
A plataforma é Linux
Obrigado.
monitoring
cpu
c
top
0xFF
fonte
fonte
Respostas:
Você quer ler as primeiras linhas de
/proc/stat
. Você precisará lê-lo duas vezes, com um intervalo de tempo medido e subtrair o primeiro conjunto de números do segundo. As linhas são assim:A primeira linha é agregada para todos os núcleos. As próximas linhas mostram cada núcleo. Quando você vê a linha que começa com
intr
, interrompe a análise.Cada número é a quantidade de tempo que a CPU passou em um estado específico. As unidades são tipicamente centésimos de segundo. Os campos são
user
,nice
,system
,idle
,iowait
,irq
,softirq
,steal
,guest
, eguest_nice
.A documentação autorizada é, obviamente, o código fonte. Se você tem uma cópia da fonte do kernel Linux à mão, observe
fs/proc/stat.c
, particularmente ashow_stat
função.fonte
Há algum exemplo na web que mostra como ler
/proc/pid/stat
em C.Você pode ler
utime
oustime
valores em dois momentos distintos e calcular as estatísticas de utilização da CPU desejada. (Acho que tambémtop
usa esses dados brutos.)(Eu esqueci: isso é específico para linux.)
fonte