- Die Leistungsgrenze eines Servers wird üblicherweise anhand der % CPU-Auslastung aus Monitoring-Tools wie
top beurteilt, tatsächlich bildet dieser Wert die Leistung jedoch nicht linear ab
- Tests mit stress-ng in einer Ryzen-9-5900X-Umgebung zeigen, dass bei 50 % Auslastung die tatsächliche Arbeitslast bereits 60–100 % erreichen kann – mit einer erheblichen Abweichung zwischen Kennzahl und Realität
- Hauptursachen sind Hyper-Threading und Turbo Boost: gemeinsame Ressourcennutzung zwischen logischen Kernen und veränderliche Taktraten verzerren die Kennzahl
- Daher ist statt einer simplen CPU-Auslastung der Vergleich zwischen benchmarkbasierter tatsächlich verarbeitbarer Arbeitsmenge und aktuellem Durchsatz der genauere Indikator
- Wer CPU-Auslastung linear interpretiert, riskiert große Fehler bei der Leistungsschätzung; für die Systemplanung ist deshalb ein benchmarkbasierter Ansatz nötig
Diskrepanz zwischen CPU-Auslastungswerten eines Servers und dem tatsächlichen Durchsatz
- Im Serverbetrieb möchten viele wissen, ob ein System nahe an seiner Maximalauslastung läuft
- Meist wird dafür in Monitoring-Tools wie
top auf den höchsten Wert unter Netzwerk-, Speicher- und CPU-Auslastung geschaut
- In der Praxis tritt jedoch das Problem auf, dass CPU-Auslastungswerte und die tatsächlich verarbeitbare Arbeitsmenge nicht linear ansteigen
Testumgebung und Methode
- Experiment auf Basis eines Ubuntu-Desktops mit Ryzen 9 5900X (12 Kerne/24 Threads)
- Precision Boost Overdrive (Turbo) aktiviert
- Mit stress-ng wurden verschiedene Lasten simuliert (1–24 Worker, 1–100 % Auslastung)
- Gemessene Kennzahlen: vom System gemeldete CPU-Auslastung und tatsächliche Rechenmenge (Bogo ops)
Zusammenfassung der Ergebnisse
- Allgemeine CPU-Last: bei 50 % Auslastung tatsächlich 60–65 % Durchsatz
- 64-Bit-Integer-Berechnungen: bei 50 % Auslastung 65–85 % Durchsatz
- Matrixberechnungen (Matrix math): bei 50 % Auslastung 80–100 % Durchsatz
- Tatsächlich steigt die CPU-Auslastung selbst dann weiter, wenn zusätzliche Worker nichts mehr zur Leistung beitragen
Ursachenanalyse
-
Hyper-Threading
- Struktur aus 12 physischen Kernen + 12 logischen Kernen
- Bis zu 12 Worker werden optimal auf physische Kerne verteilt, bei mehr als 12 sinkt die Leistung durch gemeinsame Nutzung logischer Kerne
- Besonders bei SIMD-Berechnungen (Matrixberechnungen) ist keine Leistungssteigerung möglich, weil die Ressourcen geteilt werden
-
Turbo Boost
- Bei geringer Last 4,9 GHz → bei Volllast 4,3 GHz, also 15 % weniger Takt
- Dadurch entsteht eine Verzerrung in der Formel zur CPU-Auslastung (= busy cycles / total cycles)
- Da der Nenner (Gesamtzahl der Zyklen) sinkt, wird der Anstieg der Auslastung gegenüber der tatsächlichen Arbeitsmenge überbewertet
Implikationen
- CPU-Auslastung ist kein absoluter Leistungsindikator
- Bei Server-Kapazitätsplanung und Leistungsprognosen sollte man:
- 1. mit Benchmarks den maximalen Durchsatz messen
- 2. den Echtzeit-Durchsatz überwachen
- 3. durch Vergleich beider Werte beurteilen, ob man sich der Leistungsgrenze nähert
- Je nach CPU-Architektur (AMD vs Intel), Hyper-Threading-Effizienz und Turbo-Verhalten sind die Abweichungen groß; daher ist eine Analyse pro Prozessor nötig
Fazit
- CPU-Auslastung ist lediglich das Verhältnis beschäftigter Zyklen und bildet die tatsächliche Verarbeitungsleistung nicht präzise ab
- Selbst bei effizienter Nutzung können „50 % Auslastung“ bereits 80–100 % der Maximalleistung bedeuten
- Daher sollten sich Leistungsmonitoring und Systemplanung nicht auf CPU-Auslastung, sondern auf benchmarkbasierten Arbeitsdurchsatz stützen
Noch keine Kommentare.