Erste echte CPU-Last Durchschnittliche Linux
Linux Load Average ist so alt wie die Hügel, und in etwa so verwirrend, wie wenige Ingenieure, kann Ihnen sogar sagen, was Sie wirklich ist oder wie Sie berechnet wird.,Glücklicherweise hat Brendon Gregg eine großartige Zusammenfassung seiner Geschichte bei Linux Load Averages: Solving the Mystery, in der Sie das Kernproblem sehen können:
Linux Load Average includes I / O
So einfach ist das. Im Gegensatz zu allen anderen UNIX-ähnlichen Systemen (Solaris,AIX usw.), Linux zählt SOWOHL laufende/ausführbare Prozesse ALS AUCH blockierte (unterbrechungsfreie) Prozesse, die normalerweise auf E/A warten.Dies ist eine schlechte Sache, und stammt aus einem archaischen 24 Jahre alten Patch, den Brendon gefunden hat.
Warum machen wir uns sorgen machen?,
Es ist uns wichtig, dass auf jedem gemischten System (mit CPU und E/A) der resultierende Lastdurchschnitt sehr variabel und oft nutzlos ist. Dies kann bei Hochthread-Systemen, die E/A verursachen können, besonders schlimm sein, sodass Dutzende oder Hunderte von ihnen auf langsamen Festplatten blockiert werden können.
Was die meisten von uns wirklich wollen, ist das traditionelle Unix-Maß für den Lastdurchschnitt, dh die durchschnittliche Anzahl laufbarer Prozesse, die im Laufe der Zeit gemittelt werden. Dies zeigt uns, wie geladen unser System ist, und wir können die Warteschlange als Maß für die Sättigung betrachten, dh, eine kontinuierliche CPU-Warteschlange bedeutet, dass wir überlastet sind.
Also, wie können wir das?
Wir möchten wirklich, dass die CPU-Warteschlangenlänge > 0, wenn Prozesse auf die CPU warten müssen. Aber es ist schwer, genau zu kommen, und der Linux-Kernel ist in diesem Bereich nicht sehr freundlich.
Erstens enthält das, was Linux-Leute die Ausführungswarteschlange nennen, laufende Aufgaben, sodass es sich nicht wirklich um die Warteschlange handelt, sondern um die Warteschlange plus das, was ausgeführt wird. Das ist verwirrend, und daher müssen Sie die Anzahl der CPUs subtrahieren, um ein Gefühl für die reale Warteschlange zu erhalten.,
Mehrere Tools können die aktuelle momentane Laufwarteschlangengröße abrufen. Dies zeigt die Spalte vmstat „r“ und „sar-q“; Beide erhalten dies aus der Metrik procs_running von /proc/stat.
Das Problem ist, dass dies eine momentane Anzahl ist, daher ist es sehr laut und muss gemittelt werden, um nützliche Daten zu erhalten, aber der Kernel wird dies nicht für Sie tun. Idealerweise gibt es in /proc eine Kernel-Ausgabe nur für CPU und E/A-Lademittelwerte, aber noch niemand hat dies erstellt.,
Daher benötigen wir ein Tool, das versucht zu emulieren, wie Load Average funktioniert, indem diese sofortige Laufwarteschlangengröße schnell abtastet und im Laufe der Zeit gemittelt wird.
Einführung runqstat
runqstat tut dies — es ist ein einfaches Befehlszeilentool, das in Go geschrieben ist und standardmäßig diese Warteschlangengröße alle 10 ms abtastet und dies über eine Sekunde durchschnittlich macht. Das Ziel ist ein stabiles und genaues Maß dafür, wie beschäftigt das System ist.,
Es enthält Optionen, um die Abtastrate und Mittelungszeit zu ändern, sowie die Anzahl der CPUs zu subtrahieren, so dass Sie nur die tatsächliche Warteschlangengröße sehen können, wenn Sie wollen.
Es hat auch eine Option zum Berechnen der durchschnittlichen blockierten Anzahl, die theoretisch vom Lastdurchschnitt subtrahiert werden kann, um eine andere Ansicht der CPU-Sättigung zu erhalten (und um zu sehen, wie viel Probleme der Lastdurchschnitt verursacht).
Mit diesem Tool haben ops-Teams endlich eine gute Möglichkeit, die Sättigung ihrer Linux-Server zu überwachen.
Finde es auf Github-runqstat