CPU-Auslastung ist falsch

Die Kennzahl, die wir alle für die CPU-Auslastung verwenden, ist zutiefst irreführend und wird jedes Jahr schlechter. Was ist CPU-Auslastung? Wie beschäftigt sind Ihre Prozessoren? Nein, das ist nicht das, was es misst. Ja, ich spreche von der “%CPU”-Metrik, die überall und von jedem verwendet wird. In jedem Performance Monitoring Produkt. In top(1). Was Sie vielleicht denken, dass 90% CPU-Auslastung bedeutet. Stillstand bedeutet, dass der Prozessor keine Fortschritte bei den Anweisungen gemacht hat, und das passiert normalerweise, weil er auf die Speicher-I/O wartet. Wichtig ist dass Sie das folgendes einspielen windows update cpu auslastung dass bei dem Update dann die CPU während des Updates an die Grenzen kommen kann das ist normal. Das Verhältnis, das ich oben gezogen habe (zwischen beschäftigt und festgefahren), ist das, was ich typischerweise in der Produktion sehe. Die Chancen stehen gut, dass du meistens festgefahren bist, aber ich weiß es nicht. Was bedeutet das für dich? Wenn Sie verstehen, wie viel Ihre CPUs blockiert sind, können Sie die Leistungsoptimierung direkt zwischen der Reduzierung von Code oder der Reduzierung von Speicher-I/O durchführen.

Jeder, der sich mit der CPU-Leistung beschäftigt, insbesondere bei Clouds, die automatisch auf CPU-Basis skalieren, würde davon profitieren, die festgefahrene Komponente seiner %CPU zu kennen.

  • Was ist eigentlich CPU-Auslastung?
  • Die Metrik, die wir CPU-Auslastung nennen, ist wirklich “non-idle time”.
  • Die Zeit, in der die CPU den Idle-Thread nicht ausgeführt hat. Ihr Betriebssystemkern (was auch immer es ist) verfolgt dies in der Regel während des Kontextwechsels.
  • Wenn ein nicht-leerer Thread anfängt zu laufen, dann 100 Millisekunden später stoppt, berücksichtigt der Kernel, dass die CPU diese gesamte Zeit genutzt hat.


Diese Metrik ist so alt wie Time-Sharing-Systeme. Der Apollo Mondlandefähre Leitrechner (ein bahnbrechendes Zeitteilsystem) nannte seinen Leerlauf den “DUMMY JOB”, und die Ingenieure verfolgten Zyklen, in denen er im Vergleich zu realen Aufgaben ausgeführt wurde, als eine wichtige Metrik für die Computerauslastung. (Ich habe darüber schon mal geschrieben.)

Also, was ist daran falsch?

Heutzutage sind CPUs viel schneller geworden als der Hauptspeicher, und das Warten auf den Speicher dominiert das, was immer noch als “CPU-Auslastung” bezeichnet wird. Wenn Sie hohe %CPU in top(1) sehen, könnten Sie sich den Prozessor als den Engpass vorstellen – das CPU-Paket unter dem Kühlkörper und dem Lüfter – wenn es wirklich diese DRAM-Bänke sind.

Das wird immer schlimmer. Lange Zeit skalierten die Prozessorhersteller ihre Taktfrequenz schneller als das DRAM seine Zugriffslatenz (die “CPU DRAM-Lücke”).

Dies entsprach etwa 2005 mit 3-GHz-Prozessoren, und seitdem haben die Prozessoren mit mehr Kernen und Hyperthreads sowie Multi-Socket-Konfigurationen skaliert, was die Anforderungen an das Speichersubsystem erhöht. Prozessorhersteller haben versucht, diesen Speicher-Engpass durch größere und intelligentere CPU-Caches und schnellere Speicherbusse und Verbindungen zu reduzieren. Aber wir sind immer noch normalerweise festgefahren.
Wie man erkennt, was die CPUs wirklich tun. Durch den Einsatz von Performance Monitoring Counters (PMCs): Hardware-Zähler, die mit Linux perf und anderen Tools ausgelesen werden können. Zum Beispiel die Messung des gesamten Systems für 10 Sekunden.