Je sais que la charge instamné est accessible avec top... mais il doit bien y avoir des outils comme sar qui font des moyennes...
Tu as la charge moyenne des 1, 5 et 15 dernières minutes avec par exemple "cat /proc/loadavg" ou la commande "w".
Pour la charge instantannée (ou moyennée sur la durée que tu veux), tu peux te servir du contenu du fichier /proc/stat, dont les champs sont mis à jour en permanence, de façon incrémentale et monotone (des compteurs donc). Par défaut sur ma machine (noyau 2.6.11-6mdk) c'est 100 fois par seconde (les ticks ou jiffies, je ne sais plus).
J'ai un script shell qui fait ça toutes les secondes pour adapter la vitesse du CPU à la charge instantanée (ou presque, la charge sur une seconde en fait) :
last_total_time=0
last_idle_time=0
while sleep 1 ; do
. procstat=($(grep cpu0 /proc/stat))
. user_time=${procstat[1]}
. nice_time=${procstat[2]}
. system_time=${procstat[3]}
. idle_time=${procstat[4]}
[^] # Re: charge moyenne
Posté par Olivier Jeannet . En réponse au message commande procinfo. Évalué à 2.
Tu as la charge moyenne des 1, 5 et 15 dernières minutes avec par exemple "cat /proc/loadavg" ou la commande "w".
Pour la charge instantannée (ou moyennée sur la durée que tu veux), tu peux te servir du contenu du fichier /proc/stat, dont les champs sont mis à jour en permanence, de façon incrémentale et monotone (des compteurs donc). Par défaut sur ma machine (noyau 2.6.11-6mdk) c'est 100 fois par seconde (les ticks ou jiffies, je ne sais plus).
J'ai un script shell qui fait ça toutes les secondes pour adapter la vitesse du CPU à la charge instantanée (ou presque, la charge sur une seconde en fait) :
last_total_time=0
last_idle_time=0
while sleep 1 ; do
. procstat=($(grep cpu0 /proc/stat))
. user_time=${procstat[1]}
. nice_time=${procstat[2]}
. system_time=${procstat[3]}
. idle_time=${procstat[4]}
. idle_time=$[idle_time + nice_time]
. total_time=$[user_time + system_time + idle_time]
. total_elapsed=$[total_time - last_total_time]
. last_total_time=$total_time
. idle_elapsed=$[idle_time - last_idle_time]
. last_idle_time=$idle_time
. idle_ratio=$[100 * idle_elapsed / total_elapsed]
done
idle_ratio est une valeur entre 0 (CPU à 100%) et 100 (CPU idle), sur laquelle je fais des tests ensuite.