Je voudrais savoir si la sortie d'un linux basé sur Red-Hat pourrait être interprétée différemment par un linux basé sur Debian.
Pour rendre la question encore plus précise, ce que je recherche, c'est de comprendre comment la "charge moyenne" de la première ligne de la top
commande sur un système Red-Hat est interprétée et comment vérifier cela par la documentation officielle ro code.
[Il existe de nombreuses façons d'aborder ce sujet, qui sont toutes des réponses acceptables à la question]
Une approche potentielle serait de trouver où ces informations sont officiellement documentées.
Un autre serait de trouver la version du code qui top
est construite à partir de la distribution et de la version spécifiques sur lesquelles je travaille.
La sortie de commande que j'obtiens est:
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
Dans ce cas, comment interpréter la valeur moyenne de la charge ?
J'ai réussi à localiser que la charge moyenne est d'environ la dernière minute, à partir d'une source de documentation et qu'elle doit être interprétée après avoir été multipliée par 100, par une autre source de documentation.
Donc, la question est:
est-il chargé à 0,02% ou 2%?
Sources et versions de la documentation:
1) Le premier étoiles avec
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
Source: man top
dans ma distribution RedHat,
Ubuntu a également la version avec "tâches" qui n'explique pas la moyenne de charge dans:
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html
2) Le second commence par
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
Source:
http://man7.org/linux/man-pages/man1/top.1.htm
3) Celui-ci commence par:
TOP(1)
NAME
top - display and update information about the top cpu processes
Source: http://www.unixtop.org/man.shtml
Le premier , peut être vu par man top
dans RHEL
ou dans online ubuntu documentation
et il n'a aucune explication sur le format de sortie (ni sur la moyenne de charge qui m'intéresse) .
La seconde , contient une brève explication, soulignant que la moyenne de charge a à voir avec la dernière minute, mais rien à propos de l'interprétation de sa valeur!
Je cite directement la deuxième source:
2a. Moyennes UPTIME et LOAD
Cette partie se compose d'une seule ligne contenant: le nom du
programme ou de la fenêtre, en fonction de
l'heure actuelle du mode d'affichage et de la durée écoulée depuis le dernier démarrage
nombre total d'utilisateurs
charge moyenne du système au cours des 1, 5 et 15 dernières minutes
Donc, si cette explication est en effet correcte, il suffit juste de comprendre que la moyenne de charge est d'environ la dernière minute.
Mais cela n'explique pas le format du nombre.
Dans la troisième explication, il dit que:
Lorsque vous spécifiez des nombres pour les moyennes de charge, ils doivent être multipliés par 100.
Cette explication suggère que 0,02 signifie 2% et non 0,02%. Mais est-ce exact? De plus, est-ce correct pour toutes les distributions de Linux et potentiellement différentes implémentations de top
?
Pour trouver la réponse à cette question, j'ai essayé de parcourir le code en le recherchant en ligne. Mais j'ai trouvé, au moins, deux versions différentes de top
RHEL sur le marché! le builtin-top.c
et le refactorisé top.c
. Tous deux protégés par Red-Hat, comme le dit l'avis au début du code, et il semble donc logique que RHEL en utilise un.
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
Donc, avant de plonger dans autant de code, je voulais une opinion sur où se concentrer pour former une compréhension précise de la façon dont la charge du processeur est interprétée?
À partir des informations fournies dans les réponses ci-dessous, en plus d'une recherche personnelle, j'ai trouvé que:
1 - Le top
que j'utilise est contenu dans le package procps-3.2.8. Ce qui peut être vérifié en utilisant top -v
.
2 - Dans la version procps-3.2.8
que j'ai téléchargée sur le site officiel, il semble que l'outil tire directement uptime
ses informations du procfs
fichier /proc/loadavg
(sans utiliser la fonction linux getloadavg()
).
3 - Maintenant, pour la top
commande, il n'utilise pas non plus la fonction getloadavg()
. J'ai réussi à vérifier que le top
fait fait les mêmes choses que leuptime
outil pour afficher les moyennes de charge. Il appelle en fait la uptime
fonction de l' outil, qui obtient ses informations du procfs
fichier /proc/loadavg
.
Donc, tout pointe vers le /proc/loadavg
fichier! Ainsi, pour avoir une compréhension précise du load average
produit par top
, il faut lire le code du noyau pour voir comment le fichier loadavg
est écrit.
Il y a aussi un excellent article souligné dans l'une des réponses qui fournit une explication en termes simples des trois valeurs de loadavg
.
Donc, malgré le fait que toutes les réponses ont été également utiles et utiles, je vais marquer celle qui a désigné l'article
http://www.linuxjournal.com//article/9001 comme "la" réponse à ma question. Merci à tous pour votre contribution!
De plus, à partir de la question Comprendre le sommet et la moyenne de charge , j'ai trouvé un lien vers le code source du noyau qui pointe vers l'endroit où loadavg
est calculé. Comme il semble qu'il y ait un énorme commentaire expliquant son fonctionnement, cette partie du code est également disponible C
!
Le lien vers le code est http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
Encore une fois, je n'essaye pas de m'engager dans une quelconque forme de plagiat, j'ajoute simplement ceci pour être complet. Donc, je répète que le lien vers le code du noyau a été trouvé à partir de l'une des réponses dans Comprendre le sommet et la charge moyenne ...
top -v
)