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 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.
sar -P ALL
aus.