Detaillierte Erklärung der Linux-CPU-Last und CPU-Auslastung

Detaillierte Erklärung der Linux-CPU-Last und CPU-Auslastung

CPU-Last und CPU-Auslastung

Beides kann bis zu einem gewissen Grad die Auslastung einer Maschine widerspiegeln.

Die CPU-Auslastungsrate spiegelt die aktuelle CPU-Auslastung wider. Der Grund für die Schwankung besteht darin, dass sich der Prozess, der die CPU-Verarbeitungszeit belegt, möglicherweise im IO-Wartezustand befindet, aber noch nicht zum Warten freigegeben wurde.

Die durchschnittliche Auslastung bezieht sich auf die Anzahl der Prozesse, die innerhalb eines bestimmten Zeitraums CPU-Zeit beanspruchen und auf CPU-Zeit warten. Dabei bezieht sich der Prozess, der auf CPU-Zeit wartet, auf den Prozess, der darauf wartet, aufgeweckt zu werden, mit Ausnahme des Prozesses im Wartezustand.

Aus der obigen Analyse können wir ersehen, dass eine Maschine sehr wahrscheinlich in einer Situation mit geringer CPU-Auslastung und hoher Belastung ist. Daher sollte die Auslastung der Maschine in Kombination mit beiden betrachtet werden. Aus der tatsächlichen Nutzungsbeobachtung geht hervor, dass meine eigene Dual-Core-Xeon-Maschine mit 2,8 GHz und 2 GB Speicher eine durchschnittliche Auslastung von etwa 50 % hat und die CPU-Auslastung nahe 100 % liegt (die Anwendung hat viele IO-Operationen). In diesem Fall läuft die Anwendung immer noch reibungslos und die tatsächliche Zugriffsverzögerung ist nicht sehr hoch. Wenn die CPU also noch im Leerlauf ist, ist die Verbesserung der IO-Reaktion der Schlüssel zur Reduzierung der Belastung. Viele Leute denken, dass die Maschine sehr beschäftigt ist, wenn die Belastung Dutzende erreicht. Ich denke, wenn die CPU-Auslastung zu diesem Zeitpunkt relativ niedrig ist, erklärt die hohe Belastung das Problem möglicherweise nicht gut. Sobald der von der CPU verarbeitete Prozess abgeschlossen ist, können diese wartenden Prozesse auch sofort eine Antwort erhalten. In diesem Fall sollte die IO-Lese- und Schreibgeschwindigkeit optimiert werden. Wenn die CPU-Auslastung immer über 90 % liegt, auch wenn die durchschnittliche Auslastung nur im einstelligen Bereich liegt (z. B. wenn ein bestimmter Prozess immer ausgeführt wird), ist die Maschine tatsächlich ausgelastet.

Tatsächlich wurde im vorherigen Artikel auch geschrieben, dass die CPU-Auslastung niedrig und die Last hoch ist. Der Grund für die niedrige CPU-Auslastung, aber die Last ist sehr hoch, die hohe Last kann IO sein

Eine Analogie zur CPU-Auslastung

Um festzustellen, ob das System überlastet ist, müssen Sie die wahre Bedeutung der durchschnittlichen Auslastung verstehen. Im Folgenden werde ich versuchen, dieses Problem in der gängigsten Sprache anhand des Artikels „Die CPU-Auslastung von Linux verstehen“ zu erklären.
Nehmen wir zunächst den einfachsten Fall an, bei dem Ihr Computer nur eine CPU hat und alle Berechnungen von dieser CPU durchgeführt werden müssen.
Nun, wir können uns diese CPU genauso gut als eine Brücke mit nur einer Spur vorstellen, und alle Fahrzeuge müssen diese Spur nutzen. (Die Brücke ist natürlich nur in eine Richtung für den Verkehr freigegeben.)
Die Systemlast beträgt 0, das heißt, es befindet sich kein Auto auf der Brücke.

Die Systemlast beträgt 0,5, das heißt, die Hälfte der Brücke ist mit Autos befahren.

Eine Systemlast von 1,0 bedeutet, dass sich auf allen Abschnitten der Brücke Autos befinden, die Brücke also „voll“ ist. Allerdings muss festgehalten werden, dass die Brücke bis zu diesem Zeitpunkt noch begehbar war.

Die Systemauslastung beträgt 1,7, was bedeutet, dass zu viele Fahrzeuge vorhanden sind und die Brücke bereits vollständig belegt (100 %) ist. Die auf die Brücke wartenden Fahrzeuge machen 70 % der Fahrzeuge auf der Brücke aus. Analog dazu bedeutet eine Systemlast von 2,0, dass die Zahl der auf die Brücke wartenden Fahrzeuge der Zahl der Fahrzeuge auf dem Brückendeck entspricht; eine Systemlast von 3,0 bedeutet, dass die Zahl der auf die Brücke wartenden Fahrzeuge doppelt so groß ist wie die Zahl der Fahrzeuge auf dem Brückendeck. Kurz gesagt: Wenn die Systemlast größer als 1 ist, müssen die nachfolgenden Fahrzeuge warten; je höher die Systemlast, desto länger müssen sie warten, bis sie die Brücke überqueren können.

Die Systemauslastung der CPU entspricht grundsätzlich der obigen Analogie. Die Verkehrskapazität der Brücke stellt die maximale Arbeitslast der CPU dar; die Fahrzeuge auf der Brücke sind Prozesse, die darauf warten, von der CPU verarbeitet zu werden.
Wenn die CPU maximal 100 Prozesse pro Minute verarbeitet, bedeutet eine Systemlast von 0,2, dass die CPU in dieser Minute nur 20 Prozesse verarbeitet; eine Systemlast von 1,0 bedeutet, dass die CPU in dieser Minute genau 100 Prozesse verarbeitet; eine Systemlast von 1,7 bedeutet, dass zusätzlich zu den 100 Prozessen, die von der CPU verarbeitet werden, 70 Prozesse in der Warteschlange stehen, um von der CPU verarbeitet zu werden.
Um einen reibungslosen Betrieb des Rechners zu gewährleisten, sollte die Systemlast 1,0 nicht überschreiten, damit kein Prozess warten muss und alle Prozesse schnellstmöglich abgearbeitet werden können. Offensichtlich ist 1,0 ein kritischer Wert. Wenn dieser Wert überschritten wird, befindet sich das System nicht mehr im optimalen Zustand und Sie müssen eingreifen.

CPU-Auslastung - Multiprozessor

Oben sind wir davon ausgegangen, dass Ihr Computer nur über eine CPU verfügt. Was würde passieren, wenn auf Ihrem Computer zwei CPUs installiert wären?
2 CPUs bedeuten eine Verdoppelung der Rechenleistung des Computers und auch die Zahl der Prozesse, die gleichzeitig abgearbeitet werden können, hat sich verdoppelt.
Verwenden wir noch einmal die Brücke als Analogie. Zwei CPUs bedeuten, dass die Brücke zwei Spuren hat, was ihre Verkehrskapazität verdoppelt.

Daher zeigen 2 CPUs an, dass die Systemlast 2,0 erreichen kann. An diesem Punkt erreicht jede CPU 100 % ihrer Arbeitslast. Im Allgemeinen beträgt die maximal akzeptable Systemlast für einen Computer mit n CPUs n,0.

CPU-Auslastung - Mehrkernprozessoren

Chiphersteller integrieren häufig mehrere CPU-Kerne in einer einzigen CPU, was als Multi-Core-CPU bezeichnet wird.
In Bezug auf die Systemlast ist die Wirkung einer Multi-Core-CPU ähnlich wie die mehrerer CPUs. Daher müssen Sie bei der Betrachtung der Systemlast berücksichtigen, wie viele CPUs der Computer hat und wie viele Kerne jede CPU hat. Teilen Sie dann die Systemlast durch die Gesamtzahl der Kerne. Solange die Last pro Kern 1,0 nicht überschreitet, läuft der Computer normal.
Woher wissen Sie, wie viele CPU-Kerne Ihr Computer hat?
Mit dem Befehl „cat /proc/cpuinfo“ können CPU-Informationen angezeigt werden. Der Befehl „grep -c ‚Modellname‘ /proc/cpuinfo“ gibt direkt die Gesamtzahl der CPU-Kerne zurück.

Faustregeln zur Systemauslastung

Ist 1,0 der Idealwert für die Systemauslastung?

Nicht unbedingt. Systemadministratoren lassen oft etwas Spielraum. Wenn dieser Wert 0,7 erreicht, sollten Sie aufpassen. Die Faustregel lautet:

  • Wenn die Systemlast dauerhaft über 0,7 liegt, müssen Sie nach der Ursache des Problems suchen, um eine Verschlimmerung der Situation zu verhindern.
  • Wenn die Systemlast dauerhaft über 1,0 liegt, müssen Sie eine Lösung finden, um diesen Wert zu reduzieren.
  • Wenn die Systemlast 5,0 erreicht, bedeutet dies, dass Ihr System schwerwiegende Probleme hat, längere Zeit nicht reagiert hat oder kurz vor dem Absturz steht. Sie sollten nicht zulassen, dass Ihr System diesen Wert erreicht.

Meine Maschine hat 24 Kerne. Was ist also die entsprechende Auslastung?

[[email protected] /home/ahao.mah/ALIOS_QA]#grep 'Modellname' /proc/cpuinfo | wc -l24

Die Antwort ist:

[[email protected] /home/ahao.mah/ALIOS_QA]#echo "0,7*24" |bc16.8

Optimale Beobachtungszeit

Die letzte Frage lautet: „Durchschnittliche Systemlast“ gibt drei Durchschnittswerte zurück – 1 Minute Systemlast, 5 Minuten Systemlast, 15 Minuten Systemlast – auf welchen Wert soll ich mich beziehen?

Wenn die Systemlast nur 1 Minute lang größer als 1,0 und in den beiden anderen Zeiträumen kleiner als 1,0 ist, deutet dies darauf hin, dass es sich nur um ein vorübergehendes Phänomen handelt und kein ernstes Problem darstellt.

Wenn die durchschnittliche Systemlast innerhalb von 15 Minuten größer als 1,0 ist (nach Anpassung der Anzahl der CPU-Kerne), deutet dies darauf hin, dass das Problem weiterhin besteht und es sich nicht um ein vorübergehendes Phänomen handelt. Daher sollten Sie vor allem die „15-Minuten-Systemlast“ beobachten und als Indikator für den Normalbetrieb des Computers nutzen.

Das könnte Sie auch interessieren:
  • Ideen und Lösungen zur Fehlerbehebung bei hoher CPU-Auslastung in Linux-Systemen
  • Detaillierte Erläuterung des Prozesses zur Behebung der Ursache für hohe CPU-Auslastung unter Linux

<<:  So entwickeln Sie eine Progressive Web App (PWA)

>>:  Detaillierte Erläuterung des Ausführungsplans, Beispiel für einen Befehl in MySQL

Artikel empfehlen

Element-Beispielcode zum Implementieren dynamischer Tabellen

Inhaltsverzeichnis 【Code-Hintergrund】 【Code-Imple...

Nodejs-Fehlerbehandlungsprozessaufzeichnung

In diesem Artikel wird der Verbindungsfehler ECON...

Vue implementiert einfache Rechnerfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Grundlegendes zur JavaScript-Prototypenkette

Inhaltsverzeichnis 1. Verständnis der Gleichheits...

CSS-Implementierungscode für horizontale und vertikale Fortschrittsbalken

Manchmal ist es schön, ein paar nette Scrollbar-E...

Videojs+Swiper realisiert Taobao-Produktdetailkarussell

In diesem Artikel wird der spezifische Code von v...

Vue implementiert die vollständige Auswahlfunktion

In diesem Artikelbeispiel wird der spezifische Co...

MySQL-Zeittypauswahl

Inhaltsverzeichnis DATETIME ZEITSTEMPEL Wie man w...

Vue Learning - Grundlagen des VueRouter-Routings

Inhaltsverzeichnis 1. VueRouter 1. Beschreibung 2...

So implementieren Sie eine verschachtelte if-Methode in Nginx

Nginx unterstützt weder verschachtelte if-Anweisu...

Datenbankabfrage, welches Objekt welches Feld enthält, Methodenanweisung

Die Datenbank fragt ab, welches Objekt welche Fel...

Einige Verbesserungen in MySQL 8.0.24 Release Note

Inhaltsverzeichnis 1. Verbindungsmanagement 2. Ve...