Je veux lire les statistiques d'utilisation du CPU à partir d'un programme C, je suis intéressé par le pourcentage d'utilisation du CPU, le temps de vol, etc. Ces statistiques sont affichées dans la 3ème ligne de la top
commande.
J'ai essayé d'analyser top
la sortie de awk
( top -n 1 -b | awk '{print $0}'
), mais il semble que cela top
donne toujours les mêmes valeurs «fictives» avant de commencer à afficher des statistiques correctes.
Existe-t-il un moyen de code, ou en analysant la sortie de certaines commandes pour obtenir les statistiques d'utilisation du processeur?
Éditer:
La plateforme est Linux
Je vous remercie.
monitoring
cpu
c
top
0xFF
la source
la source
Réponses:
Vous voulez lire les premières lignes de
/proc/stat
. Vous devrez le lire deux fois, à un intervalle de temps mesuré, et soustraire le premier ensemble de chiffres du second. Les lignes ressemblent à ceci:La première ligne est agrégée pour tous les cœurs. Les lignes suivantes montrent chaque noyau. Lorsque vous voyez la ligne commençant par
intr
, vous savez arrêter l'analyse.Chaque nombre est le temps que le processeur a passé dans un état particulier. Les unités sont généralement des centièmes de seconde. Les champs sont
user
,nice
,system
,idle
,iowait
,irq
,softirq
,steal
,guest
etguest_nice
.La documentation faisant autorité est, bien sûr, le code source. Si vous avez une copie de la source du noyau Linux à portée de main, regardez
fs/proc/stat.c
, en particulier lashow_stat
fonction.la source
Il existe un exemple sur le Web qui montre comment lire
/proc/pid/stat
en C.Vous pouvez lire
utime
oustime
valeurs à deux moments distincts et calculer les statistiques d'utilisation du processeur souhaitées. (Je suppose qu'iltop
utilise également ces données brutes.)(J'ai oublié: c'est spécifique à Linux.)
la source