19 Punkte von GN⁺ 2025-09-04 | Noch keine Kommentare. | Auf WhatsApp teilen
  • 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.

Noch keine Kommentare.