Ich versuche einige Daten zu verstehen, die aus SAR abgerufen wurden. Ich habe drei Hauptfragen dazu. Letztendlich möchte ich feststellen, wie viele CPUs in jedem Abtastintervall auf einem Servercluster inaktiv waren.
- Viele der CPUs werden nicht in jedem Eintrag angezeigt. Wird das erwartet und was genau bedeutet das? Hat es mit # 2 zu tun?
- Es gibt nicht verwendete Leitungen (CPU = U). In der Dokumentation heißt es "U gibt die systemweit nicht genutzte Kapazität an". Ich kann wirklich keine genaue Definition von "systemweit ungenutzter Kapazität" oder überhaupt keine Definition finden. Ich bin mir nicht sicher, wie ich eine Zeile interpretieren soll, die so etwas wie "Die nicht genutzte Kapazität war zu 70% im Leerlauf" sagt.
- Schließlich bin ich mir nicht sicher, wie die Linie
-
oderall
berechnet wird. Ich würde denken, es ist der Durchschnitt aller CPUs, aber wenn ich über alle CPUs rechne, bekomme ich eine ganz andere Antwort als in dieser Zeile. Kann mir jemand genau sagen, was in diese Berechnung einfließt? Bei genauerer Betrachtung dieser verwandten Frage zu SAR scheint dersystem-wide
Leerlaufprozentsatz die Summe aus dem Produkt aus dem Leerlaufprozentsatz jeder CPU und dem 'physc'-Wert zu sein. Leider habe ich keinphysc
oder entc% (vorausgesetzt, es gibt eines), daher kann ich dies nicht mit meinen eigenen Daten überprüfen. Wenn das richtig ist, bedeutet das, dass ich diephysc
Werte brauche , um den Leerlaufprozentsatz wirklich zu verstehen?
Hier sind einige Beispiele von dem, was ich sehe. Diese sind alle vom selben Tag.
CPU | Idle CPU | Idle CPU | Idle
---------- ---------- ----------
0 | 8 0 | 15 0 | 17
1 | 25 1 | 94 1 | 32
2 | 79 2 | 100 2 | 97
3 | 62 3 | 99 3 | 71
4 | 5 4 | 13 4 | 5
5 | 7 5 | 13 5 | 23
6 | 6 6 | 99 6 | 71
7 | 7 7 | 44 7 | 98
8 | 11 8 | 12 8 | 48
9 | 17 12 | 0 12 | 38
10 | 33 16 | 12 16 | 37
11 | 64 20 | 3 20 | 42
12 | 6 U | 95 U | 97
13 | 6 - | 15 - | 85
14 | 6
15 | 6
16 | 12
17 | 15
18 | 62
19 | 69
20 | 7
21 | 7
22 | 6
23 | 7
U | 80
- | 15
case 1: avg(24): 22
case 2: avg(12): 42
case 3: avg(12): 48
Diese Daten werden von einem Skript erzeugt, das ausgeführt wird: sar -P ALL 1 1
Anschließend wird ein awk-Befehl ausgeführt. Ich bin nicht gut mit awk, aber das sind eindeutig die wichtigen Teile:
Filter: /System|AIX|^$|%/ {next}
Analysieren: {k=0;if(NR==7) k=1} {sub("^-", "all", $1); cpu=$(1+k); user=$(2+k); sys=$(3+k); io=$(4+k); idle=$(5+k)}
Dies scheint richtig zu sein, basierend auf dem Wenigen, das ich von awk verstehe und dem, was ich aus Beispielen der Ausgabe sehe.
Wenn ich davon ausgehe, dass die fehlenden Werte für Fall 2 alle Null sind, beträgt der Durchschnitt 21, was in gewisser Weise mit Fall 1 übereinstimmt. Wenn ich diese Annahme für Fall 3 mache, erhalte ich 24%, was völlig im Widerspruch zu den 85% steht. Prozentwert von sar für den gesamten CPU-Leerlauf.
Hier ist eine Grafik der Aufnahmen eines ganzen Tages (alle 30 Sekunden):
Wenn nur sehr wenig "systemweite" Leerlaufzeit zur Verfügung steht, ist die Korrelation zwischen dem durchschnittlichen CPU-Leerlauf und dem "systemweiten" Leerlauf nahezu perfekt. Mit zunehmender "systemweiter" Leerlaufzeit wird die Korrelation jedoch viel schwächer. Unter der Annahme, dass dies deterministische Maschinen sind, sagt mir das, dass die Daten, die ich habe, nicht das vollständige Bild liefern. Aber wie sehr kümmert es mich?
Ich verstehe nicht ganz, warum einige CPUs nicht an jedem Punkt gemeldet werden, aber die fehlenden sind nicht gleichmäßig verteilt, wie in den obigen Beispielen gezeigt. Auch beim Lesen dieses Redbooks gehe ich davon aus, dass dies logische CPUs sein müssen und dass physc
ich ohne die Zahlen nicht viel mit diesen Werten anfangen kann. Ich habe versucht, den U
Wert in verschiedenen Gleichungen zu verwenden, aber ich habe nichts Sinnvolles gefunden. Mir ist nicht einmal klar, dass der gesamte Leerlaufprozentsatz zum Nennwert angenommen werden kann.
HINWEIS : Bei der Erfassung dieser Daten aus sar stimmt etwas nicht. Dies ist eine vollständig gültige Antwort für Nummer 1. Wenn dies der Fall ist, sollte sie immer zurückgegeben werden.
sar -P ALL
aus.sar -P ALL 1 1
und verwendet dann awk, um die CPU-Nummer und dann die Prozentsätze für Benutzer, System, E / A-Wartezeit und Leerlauf aufzuteilen. Ich werde Ihrer Antwort weitere Informationen hinzufügen.sar -P ALL
direkt und nicht die Ausgabe dieses Skripts bereitstellen ? Es ist ein nicht standardmäßiges Skript und niemand kann Ihnen sagen, was es tut, ohne es zu sehen.Antworten:
Die von Ihnen bereitgestellte Ausgabe unterscheidet sich von der Standard-
sar -P ALL
odersar -u
Ausgabe. Ich bin mir nicht sicher, ob Sie es von Hand formatiert haben oder ob Sie es über ein anderes Tool ausführen, aber ich denke, es gibt genügend Informationen, um dies herauszufinden.Hier ist die wichtige Information, die Sie auf der Manpage für erhalten haben
sar
Da Sie in einem Cluster ausgeführt werden, kann davon ausgegangen werden, dass Sie SMP-Computer verwenden.
Beachten Sie, dass in Beispiel 2 und 3 nur 12 der 24 Kerne Statistiken melden. Wenn Sie davon ausgehen, dass diese Kerne deaktiviert sind, wie in der Manpage erwähnt, sind die Statistiken sinnvoll.
Lassen Sie uns Ihre Daten wie folgt aktualisieren, um einen deaktivierten Kern mit anzuzeigen
-
Dann können wir das Folgende verwenden, um die Durchschnittswerte zu berechnen (dies ist ein kurzer Oneliner, den ich geschrieben habe, ich bin sicher, dass etwas Besseres geschrieben werden könnte.)
Beachten Sie, dass die Anzahl der Kerne in Beispiel 2 und 3 12 beträgt und die Durchschnittswerte mit denen übereinstimmen, die Sie in Ihrer Beispielausgabe sehen.
Es sieht so aus, als ob irgendwann zwischen Ihrem ersten und zweiten Fall die Hälfte Ihrer CPU-Kerne deaktiviert wurde.
Eine kurze Zusammenfassung Ihrer Fragen:
U
durchschnittliche Zeile unterscheidet sich von derU
in dieser Manpage. DieU
in der Manpage genannten Informationen sollten in der Spalte Prozessor-ID angezeigt werden.sar
und es werden nicht genügend Informationen bereitgestellt, um zu bestimmen, worauf sich dieU
oderall
die durchschnittliche Zeile beziehen. Die erste Zahl scheint jedoch der Leerlauf% auf aktiven Kernen zu sein.quelle
U
undall
-Werte kommen von sar als Linien. Ich habe sie in meiner Antwort herausgebrochen, da sie sich grundlegend von den CPU-Werten unterscheiden, soweit ich weiß.