Wir stoßen auf ein merkwürdiges Verhalten, bei dem wir eine hohe CPU-Auslastung, aber einen recht niedrigen Lastdurchschnitt feststellen.
Das Verhalten wird am besten durch die folgenden Grafiken unseres Überwachungssystems veranschaulicht.
Gegen 11:57 Uhr steigt die CPU-Auslastung von 25% auf 75%. Der Lastdurchschnitt wird nicht wesentlich verändert.
Wir betreiben Server mit 12 Cores mit jeweils 2 Hyper-Threads. Das Betriebssystem sieht dies als 24 CPUs.
Die CPU-Auslastungsdaten werden durch Ausführen /usr/bin/mpstat 60 1
jeder Minute erfasst . Die Daten für die all
Zeile und die %usr
Spalte werden in der obigen Tabelle angezeigt. Ich bin sicher, dass dies den Durchschnitt pro CPU-Daten zeigt, nicht die "gestapelte" Auslastung. Während wir in der Grafik eine Auslastung von 75% sehen, sehen wir einen Prozess, der zeigt, dass ungefähr 2000% "gestapelte" CPU verwendet werden top
.
Der Lastmittelwert wird aus /proc/loadavg
jeder Minute ermittelt.
uname -a
gibt:
Linux ab04 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
Linux dist is Red Hat Enterprise Linux Server release 6.3 (Santiago)
Wir betreiben einige Java-Webanwendungen unter ziemlich hoher Last auf den Maschinen, rechnen mit 100 Anfragen / s pro Maschine.
Wenn ich die CPU-Auslastungsdaten richtig interpretiere, bedeutet dies bei einer CPU-Auslastung von 75%, dass unsere CPUs durchschnittlich 75% der Zeit einen Prozess ausführen. Wenn unsere CPUs jedoch 75% der Zeit ausgelastet sind, sollten wir dann keinen höheren Auslastungsdurchschnitt sehen? Wie können die CPUs zu 75% ausgelastet sein, wenn sich nur 2-4 Jobs in der Ausführungswarteschlange befinden?
Interpretieren wir unsere Daten richtig? Was kann dieses Verhalten verursachen?