monitorando o tempo de CPU com “/ proc / stat”

0

Eu devo ter alguns problemas para entender "/ proc / stat". Na folha de cálculo anexada (uma imagem de fato, porque eu não pude adicionar uma folha), eu gravei alguns "/ proc / stat" coletados com um atraso de 2 segundos (colunas amarelas mostram a hora do dia eo tempo exato entre dois scans, colunas azuis mostram a primeira linha coreresponding de "/ proc / stat"). Nas colunas brancas, realizo alguns cálculos. Na coluna Q eu adiciono todos os 10 cpu vezes e espero um resultado de 100%. Este não é o caso. De onde vem o problema? Obrigado pela ajuda.

    
por jam75 20.02.2016 / 17:28

1 resposta

1

Portanto, a melhor maneira de ver isso são as estatísticas cumulativas de todas as CPUs. Eu apenas corri o seguinte:

cat /proc/stat | grep "cpu "; sleep 1; cat /proc/stat | grep "cpu "
cpu  72793 633 14979 2271004 2783 0 517 0 0 0
cpu  72794 633 14980 2271403 2783 0 518 0 0 0

A mudança entre os dois conjuntos de resultados é o número de USER_HZ consumidos. Então, eu pego

usuário: 72794 - 72793 = 1

legal: 633 - 633 = 0

system: 14980 - 14979 = 1

ocioso: 2271403 - 2271004 = 399

iowait: 2783 - 2783 = 0

irq: 0 - 0 = 0

softirq: 518 - 517 = 1

roubar: 0 - 0 = 0

convidado: 0 - 0 = 0

guest_nice: 0 - 0 = 0

Assim, o total de USER_HZ consumido é 1 + 0 + 1 + 399 + 0 + 1 + 0 + 0 + 0 = 402. Isto é para uma máquina de 4 threads, de modo que chega a ~ 100.5 USER_HZ por CPU, que é aproximadamente certo para alguma amostragem estatística em um relógio de 100Hz. Um período de amostragem mais longo levará a um resultado mais próximo da taxa de clock inicial.

Você pode fazer o mesmo para todas as n CPUs em um sistema, cpu0 .. CPUn-1. Apenas calcule o delta das estatísticas entre cada período de amostragem, some os deltas e ele será invariavelmente mais ou menos igual ao número de CPUs x taxa de clock.

    
por Colin Ian King 20.02.2016 / 19:40