Heim  >  Artikel  >  System-Tutorial  >  Entdecken Sie die Gründe, warum langsame Festplatten eine stark ansteigende Linux-Last verursachen

Entdecken Sie die Gründe, warum langsame Festplatten eine stark ansteigende Linux-Last verursachen

WBOY
WBOYnach vorne
2023-12-29 14:49:59526Durchsuche

1. Der Unterschied zwischen CPU-Auslastung und Auslastungsrate

Entdecken Sie die Gründe, warum langsame Festplatten eine stark ansteigende Linux-Last verursachen

Hier müssen wir zwischen CPU-Auslastung und CPU-Auslastung unterscheiden. Es handelt sich um zwei verschiedene Konzepte, deren Informationen jedoch im selben Top-Befehl angezeigt werden können. Die CPU-Auslastung zeigt den Prozentsatz der CPU an, die das Programm während der Ausführung in Echtzeit belegt. Dabei handelt es sich um eine Statistik der CPU-Auslastung innerhalb eines bestimmten Zeitraums. Wenn die Zeit sehr hoch ist, müssen Sie überlegen, ob die CPU bereits überlastet ist. Die CPU-Auslastung zeigt die statistischen Informationen über die Summe der Anzahl der Prozesse an, die die CPU innerhalb eines bestimmten Zeitraums verarbeitet und die darauf warten, dass die CPU sie verarbeitet. Dies sind auch statistische Informationen über die Länge der CPU-Auslastungswarteschlange.

Hohe CPU-Auslastung bedeutet nicht, dass die Last groß sein muss. Möglicherweise ist die Aufgabe CPU-intensiv. Tritt bei derselben Situation mit niedriger CPU-Auslastung ein hoher Lastdurchschnitt auf? Wenn Sie die Belegungs- und Nutzungszeit verstehen, können Sie wissen, dass bei der Zuweisung eines Zeitabschnitts durch die CPU die Verwendung vollständig vom Benutzer abhängt, sodass eine geringe Auslastung und ein hoher Lastdurchschnitt durchaus möglich sind. Darüber hinaus können IO-Geräte auch eine hohe CPU-Last verursachen.

Unter diesem Gesichtspunkt reicht es nicht aus, allein anhand der CPU-Auslastung zu beurteilen, ob sich die CPU in einem überlasteten Arbeitszustand befindet. Sie muss mit dem Lastdurchschnitt kombiniert werden, um die CPU-Auslastung global zu betrachten. Es gibt ein Beispiel im Internet, um den Unterschied zwischen beiden zu veranschaulichen: In einer öffentlichen Telefonzelle ruft eine Person an und vier Personen warten darauf, das Telefon eine Minute lang zu benutzen Wenn sie innerhalb einer Minute anrufen, können sie nur auflegen, in die Warteschlange gehen und auf die nächste Runde warten. Das Telefon entspricht hier der CPU, und die Personen, die anrufen oder auf einen Anruf warten, entsprechen der Anzahl der Aufgaben. Während der Nutzung der Telefonzelle werden einige Leute nach dem Telefonieren definitiv gehen, einige Leute werden wieder in die Warteschlange gestellt, ohne ihr Gespräch zu beenden, und es werden sogar neue Leute in der Warteschlange stehen Erhöhung oder Verringerung der Anzahl der Aufgaben. Um die durchschnittliche Auslastung zu ermitteln, zählen wir alle 5 Sekunden die Anzahl der Personen und mitteln die Statistiken in der 1., 5. und 15. Minute, um die durchschnittliche Auslastung in der 1., 5. und 15. Minute zu ermitteln. Manche Leute nehmen den Hörer ab und rufen sofort an, und der Anruf dauert eine Minute, während andere möglicherweise in den ersten dreißig Sekunden nach der Telefonnummer suchen oder zögern, anzurufen, und dann in den letzten dreißig Sekunden tatsächlich anrufen. Wenn das Telefon als CPU und die Anzahl der Personen als Aufgabe betrachtet wird, sagen wir, dass die CPU-Auslastung der ersten Person (Aufgabe) hoch und die CPU-Auslastung der zweiten Person (Aufgabe) niedrig ist. Natürlich wird die CPU in den ersten dreißig Sekunden nicht arbeiten und in den nächsten dreißig Sekunden ruhen. Die CPU arbeitet weiter. Es ist nur so, dass einige Programme viele Berechnungen erfordern, sodass die CPU-Auslastung hoch ist, während andere Programme nur sehr wenige Berechnungen erfordern, sodass die CPU-Auslastung natürlich niedrig ist. Aber ob die CPU-Auslastung hoch oder niedrig ist, hat nichts damit zu tun, wie viele Aufgaben später in die Warteschlange gestellt werden.

Die Anzahl der CPUs und die Anzahl der CPU-Kerne (also die Anzahl der Kerne) wirken sich auf die CPU-Auslastung aus, da Aufgaben letztendlich den CPU-Kernen zur Verarbeitung zugewiesen werden. Zwei CPUs sind besser als eine CPU und Dual-Cores sind besser als Single-Cores. Daher müssen wir bedenken, dass die CPU-Last neben dem Unterschied in der CPU-Leistung auch auf der Grundlage der Anzahl der Kerne berechnet wird, d. h. „wie viele Kerne es gibt, also wie viel Last vorhanden ist“. Für einen einzelnen Kern ist es am besten, 100 % nicht zu überschreiten, d. h. die Last beträgt 1,00 usw.

Unter Linux gibt es ein /proc-Verzeichnis, in dem die virtuelle Zuordnung des aktuell laufenden Systems gespeichert ist. Es gibt eine Datei namens cpuinfo, in der CPU-Informationen gespeichert sind. Die Datei /proc/cpuinfo zeigt Informationen in Abschnitten nach logischer CPU und nicht nach tatsächlicher CPU an. Die Informationen jeder logischen CPU belegen einen Abschnitt, und die erste logische CPU-ID beginnt bei 0.

$ cat /proc/cpuinfo 
processor : 0
vendor_id : GenuineIntel
cpu family: 6
model : 63
model name: Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
stepping: 2
microcode : 0x36
cpu MHz : 2399.998
cache size: 20480 KB
physical id : 0
siblings: 2
core id : 0
cpu cores : 2
apicid: 0
initial apicid: 0
fpu : yes
fpu_exception : yes
cpuid level : 15
wp: yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr ......
bogomips: 4799.99
clflush size: 64
cache_alignment : 64
address sizes : 42 bits physical, 48 bits virtual
power management:

Um die CPU-Informationen in dieser Datei zu verstehen, müssen Sie mehrere verwandte Konzepte kennen, wie zum Beispiel: Prozessor stellt die Identifikation der logischen CPU dar, Modellname stellt die Modellinformationen der realen CPU dar, physische ID stellt die reale CPU und Identifikation dar , und CPU-Kerne stellen die tatsächliche Anzahl der Kerne der CPU usw. dar.

Beschreibung der logischen CPU: Heutige Server verwenden im Allgemeinen die „Hyper-Threading“ (HT)-Technologie, um die CPU-Leistung zu verbessern. Die Hyper-Threading-Technologie ermöglicht es einer CPU, mehrere Programme gleichzeitig auszuführen und die Ressourcen in einer CPU zu teilen. Theoretisch sollte sie zwei Threads gleichzeitig ausführen, wie zwei CPUs. Obwohl die Hyper-Threading-Technologie zwei Threads gleichzeitig ausführen kann, ist sie nicht wie zwei echte CPUs, jede CPU verfügt über unabhängige Ressourcen. Wenn zwei Threads gleichzeitig eine Ressource benötigen, muss einer von ihnen vorübergehend angehalten werden und die Ressource aufgeben, bis diese Ressourcen inaktiv sind, bevor sie fortfahren können. Daher entspricht die Leistung von Hyper-Threading nicht der Leistung von zwei CPUs. CPUs mit Hyper-Threading-Technologie haben andere Einschränkungen.

2. Berechnungsmethode der CPU-Auslastung

Das Konzept des Lastdurchschnitts stammt von UNIX-Systemen. Obwohl die Formeln jedes Unternehmens unterschiedlich sind, werden sie alle verwendet, um die Anzahl der Prozesse zu messen, die die CPU nutzen, und die Anzahl der Prozesse, die auf die CPU warten Anzahl ausführbarer Prozesse. Daher kann der Auslastungsdurchschnitt als Referenzindikator für CPU-Engpässe verwendet werden. Wenn er größer als die Anzahl der CPUs ist, bedeutet dies, dass die CPU möglicherweise nicht ausreicht.

Allerdings ist es unter Linux etwas anders!

Der Auslastungsdurchschnitt unter Linux umfasst neben der Anzahl der Prozesse, die die CPU nutzen, und der Anzahl der Prozesse, die auf die CPU warten, auch die Anzahl der Prozesse im ununterbrochenen Ruhezustand. Normalerweise befindet sich der Prozess beim Warten auf E/A-Geräte und das Netzwerk im unterbrechungsfreien Ruhezustand. Die Logik der Linux-Designer besteht darin, dass der unterbrechungsfreie Ruhezustand nur von sehr kurzer Dauer sein sollte und bald wieder in Betrieb genommen wird, sodass er mit lauffähig gleichgesetzt wird. Allerdings ist ununterbrochener Schlaf immer noch Schlaf, auch wenn er kurz ist, ganz zu schweigen davon, dass ununterbrochener Schlaf in der realen Welt möglicherweise nicht sehr kurz ist. Eine große Anzahl oder langer ununterbrochener Schlaf bedeutet normalerweise, dass das E/A-Gerät auf einen Engpass gestoßen ist. Wie wir alle wissen, benötigen Prozesse im Ruhezustand keine CPU. Selbst wenn alle CPUs im Leerlauf sind, ist die Anzahl der Ruheprozesse definitiv nicht als Indikator zur Messung der CPU-Auslastung geeignet zählt ununterbrochene Schlafvorgänge als Die Praxis der Eingabe des Lastdurchschnitts untergräbt direkt die ursprüngliche Bedeutung des Lastdurchschnitts. Daher ist der Lastdurchschnittsindikator auf Linux-Systemen grundsätzlich nutzlos, da Sie nicht wissen, was er bedeutet. Wenn Sie einen hohen Lastdurchschnitt sehen, wissen Sie nicht, ob zu viele ausführbare Prozesse oder zu viele unterbrechungsfreie Ruheprozesse vorhanden sind. Es lässt sich nicht feststellen, ob die CPU nicht ausreicht oder das IO-Device einen Engpass hat.

Andererseits kann es auch erklären, warum die CPU-Last ansteigt, wenn die Festplatte langsam ist (wenn eine große Menge an Festplatte verwendet wird). Wenn ich auf eine hohe CPU-Auslastung stoße, gibt es grundsätzlich zwei Situationen: Die CPU selbst verarbeitet zu viele Aufgaben, außerdem kommen Soft-Interrupts und Kontextwechsel zu häufig vor, was zu einer hohen Auslastung führt und die Festplatte zu langsam ist, was zu viel unterbrechungsfreiem Schlaf führt. was dazu führt, dass die CPU-Auslastung hoch ist.

Das obige ist der detaillierte Inhalt vonEntdecken Sie die Gründe, warum langsame Festplatten eine stark ansteigende Linux-Last verursachen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen