Le uptime te donne la charge dans l’ordre sur 1, 5 et 15 minutes.
Par exemple:
top - 14:32:51 up 38 min, 3 users, load average: 0.03, 0.21, 0.30
Tasks: 62 total, 3 running, 59 sleeping, 0 stopped, 0 zombie
Cpu(s): 24.7% user, 1.0% system, 0.0% nice, 74.3% idle
Mem: 515132k total, 500572k used, 14560k free, 1168k buffers
Swap: 971892k total, 112k used, 971780k free, 430568k cached
Le loadaverage sur le moment est sur 1, ci dessus, cela te donne 0,3 soit 0,3 tache dans la file d’attente. Un loadaverage à 1 signifie que le CPU est constamment sollicité. C’est le nombre moyen de taches attendant dans la file d’attente du CPU sur la période donnée. Le load average peut être donc de 5 ou 6.
La charge CPU est une notion délicate à définir.
Sinon, les renseignements utilisés par top sont dans /proc/stats
Chaque CPU est suivi de 7 champs nommés u,n,s,i,w,x,y (je lis au fur et à mesure dans le code de top.c)
En gros ces champs augmentent à chaque fois, si tu appelles
u’,n’,s’,i’,w’,x’ et y’ les nouvelles valeurs lues un instant plus tard, tu auras la somme Ds= (u’-u)+(n’-n)+…+(y’-y) qui représente les «ticks» totaux passés. top calcule le %CPU en regardant le % de chacune des augmentations:
%utilisateurs = (u’-u)/Ds
%idle = (i’-i)/Ds
Ce qui t’intéresserait serait donc 1-((i’-i)/Ds)
A vue de nez:
u = utilisaateur
i = idle
s = sytème
n bnice j’imagine (?), quant 'à w,x et y, le code source de top n’explique pas ce que c’est…
Je ne m’étais jamais plongé dans le code de top, c’est plutôt intéressant.