Ich würde gerne wissen, ob die Ausgabe eines Red-Hat-basierten Linux von einem Debian-basierten Linux anders interpretiert werden könnte.
Um die Frage noch spezifischer zu machen, möchte ich verstehen, wie der "Lastdurchschnitt" aus der ersten top
Befehlszeile eines Red-Hat-Systems interpretiert wird und wie dies durch den offiziellen Ro-Code der Dokumentation überprüft werden kann.
[Es gibt viele Möglichkeiten, sich diesem Thema zu nähern, die alle akzeptable Antworten auf die Frage sind.]
Ein möglicher Ansatz wäre, herauszufinden, wo diese Informationen offiziell dokumentiert sind.
Eine andere Möglichkeit wäre, die Codeversion zu finden, die top
in der spezifischen Distribution und Version, an der ich arbeite, erstellt wurde.
Die Befehlsausgabe, die ich erhalte, lautet:
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
Wie kann ich in diesem Fall den Lastdurchschnitt interpretieren ? Wert?
Ich habe festgestellt, dass die durchschnittliche Last ungefähr in letzter Minute von einer Dokumentationsquelle stammt und dass sie nach Multiplikation mit 100 von einer anderen Dokumentationsquelle interpretiert werden sollte.
Die Frage ist also:
Ist es 0,02% oder 2% geladen?
Dokumentationsquellen und -versionen:
1) Der erste Stern mit
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
Quelle: man top
In meiner RedHat-Distribution hat
Ubuntu auch die Version mit "Aufgaben", die den Lastdurchschnitt nicht erklärt:
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html
2) Der zweite beginnt mit
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
Quelle:
http://man7.org/linux/man-pages/man1/top.1.htm
3) Dieser beginnt mit:
TOP(1)
NAME
top - display and update information about the top cpu processes
Quelle: http://www.unixtop.org/man.shtml
Die erste ist man top
in RHEL
oder in zu sehen online ubuntu documentation
und enthält keine Erklärung für das Ausgabeformat (noch für den Lastdurchschnitt, an dem ich interessiert bin). .
Die zweite enthält eine kurze Erklärung, in der darauf hingewiesen wird, dass der Lastdurchschnitt mit der letzten 1 Minute zu tun hat, aber nichts über die Interpretation seines Wertes!
Ich zitiere direkt aus der zweiten Quelle:
2a. UPTIME- und LOAD-Durchschnittswerte
Dieser Teil besteht aus einer einzelnen Zeile, die Folgendes enthält:
Programm- oder Fensternamen, abhängig von der
aktuellen Zeit und der Zeitdauer seit dem letzten Start des Anzeigemodus
- Gesamtzahl der Benutzer
Systemlast avg in den letzten 1, 5 und 15 Minuten
Wenn diese Erklärung tatsächlich richtig ist, reicht es gerade aus zu verstehen, dass der Lastdurchschnitt ungefähr die letzte Minute beträgt.
Das Format der Nummer wird jedoch nicht erklärt.
Im dritten Erklärung heißt es:
Wenn Sie Zahlen für Lastmittelwerte angeben, sollten Sie diese mit 100 multiplizieren.
Diese Erklärung legt nahe, dass 0,02 2% und nicht 0,02% bedeutet. Aber ist das richtig? Ist es außerdem korrekt für alle Linux-Distributionen und potenziell unterschiedliche Implementierungen von top
?
Um die Antwort auf diese Frage zu finden, habe ich versucht, den Code durch Online-Suche durchzugehen. Aber ich habe mindestens zwei verschiedene Versionen von top
RHEL gefunden! das builtin-top.c
und das umgestaltete top.c
. Beide sind von Red-Hat urheberrechtlich geschützt, wie in der Mitteilung am Anfang des Codes angegeben, und daher erscheint es logisch, dass RHEL eine davon verwendet.
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
Bevor ich mich mit so viel Code befasste, wollte ich eine Meinung darüber, wo ich mich konzentrieren sollte, um ein genaues Verständnis dafür zu erhalten, wie die CPU-Last interpretiert wird.
Aus den Informationen in den Antworten unten habe ich zusätzlich zu einer persönlichen Suche Folgendes herausgefunden:
1 - Die von top
mir verwendeten Informationen sind im Paket procps-3.2.8 enthalten. Welches kann mit überprüft werden top -v
.
2 - In der Version procps-3.2.8
, die ich von der offiziellen Website heruntergeladen habe, scheint es, dass das Tool uptime
seine Informationen direkt aus der procfs
Datei /proc/loadavg
bezieht (ohne die Linux-Funktion zu verwenden getloadavg()
).
3 - Für den top
Befehl wird die Funktion jetzt ebenfalls nicht verwendet getloadavg()
. Ich habe es geschafft zu überprüfen, ob das top
tatsächlich die gleichen Dinge tut wie dasuptime
Werkzeug zum Anzeigen der Lastmittelwerte. Es ruft tatsächlich die uptime
Funktion des Tools auf, die seine Informationen aus der procfs
Datei erhält /proc/loadavg
.
Also zeigt alles auf die /proc/loadavg
Datei! Um ein genaues Verständnis des von load average
erzeugten zu erhalten top
, muss man den Kernel-Code lesen, um zu sehen, wie die Datei loadavg
geschrieben wird.
Es gibt auch einen ausgezeichneten Artikel, auf den in einer der Antworten hingewiesen wird, der die Begriffe eines Laien zur Erklärung der drei Werte von enthält loadavg
.
Trotz der Tatsache, dass alle Antworten gleichermaßen nützlich und hilfreich waren, werde ich die Antwort, die auf den Artikel http://www.linuxjournal.com//article/9001 verwies, als "die" Antwort auf meine Frage markieren
. Vielen Dank für Ihren Beitrag!
Zusätzlich habe ich aus der Frage Grundlegendes zum Top- und Lastdurchschnitt einen Link zum Quellcode des Kernels gefunden, der auf die Stelle verweist, an der loadavg
berechnet wird. Wie es scheint, gibt es einen großen Kommentar, der erklärt, wie es funktioniert, auch dieser Teil des Codes ist in C
!
Der Link zum Code lautet http://lxr.free-electrons.com/source/kernel/sched/loadavg.c. halber
Auch hier versuche ich nicht, mich auf irgendeine Form von Plagiaten einzulassen, sondern füge dies der Vollständigkeit halber hinzu. Ich wiederhole also, dass der Link zum Kernel-Code aus einer der Antworten in Grundlegendes zum Top- und Lastdurchschnitt gefunden wurde ...
top -v
)