TOP-Beobachtung: Der Prozentsatz der CPU-Zeit, der durch IO-Wartezeiten belegt wird. Wenn er höher als 30 % ist, ist der IO-Druck hoch. Verwenden Sie als Nächstes iostat -x 1 10 [root@controller ~]#iostat -d -k 1 10 Gerät: tps kB_lesen/s kB_schreiben/s kB_lesen kB_schreiben sda 19,00 0,00 112,00 0 112 sda1 0,00 0,00 0,00 0 0 sda2 0,00 0,00 0,00 0 0 sda3 0,00 0,00 0,00 0 0 sda4 0,00 0,00 0,00 0 0 sda5 3,00 0,00 16,00 0 16 sda6 0,00 0,00 0,00 0 0 sda7 16,00 0,00 96,00 0 96 tps: Die Anzahl der Übertragungen pro Sekunde des Geräts. Eine Übertragung bedeutet „eine I/O-Anforderung“
Verwenden Sie -x, um weitere Informationen zu erhalten Verwenden Sie -x, um weitere Informationen zu erhalten Gerätenutzung (%util) und Reaktionszeit (await) anzeigen [root@controller ~]#iostat -d -x -k 1 10 Gerät: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz warte auf svctm %util sda 0,00 22,00 0,00 18,00 0,00 160,00 17,78 0,07 3,78 3,78 6,80 sda1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 sda2 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 sda3 0,00 15,00 0,00 2,00 0,00 68,00 68,00 0,01 6,50 6,50 1,30 sda4 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 sda5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 sda6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 sda7 0,00 7,00 0,00 16,00 0,00 92,00 11,50 0,06 3,44 3,44 5,50
Wenn %util nahe 100 % liegt, bedeutet dies, dass zu viele E/A-Anfragen generiert werden, das E/A-System bereits vollständig ausgelastet ist und auf der Festplatte möglicherweise ein Engpass vorliegt. Wenn der Leerlauf weniger als 70 % beträgt, ist der IO-Druck relativ hoch und im Allgemeinen gibt es bei der Lesegeschwindigkeit mehr Wartezeiten. Sie können auch vmstat verwenden, um den b-Parameter () und den wa-Parameter () anzuzeigen. Weitere Informationen finden Sie unter svctm ist im Allgemeinen kleiner als await (da die Wartezeit gleichzeitig wartender Anfragen wiederholt gezählt wird). Die Größe von svctm hängt im Allgemeinen mit der Festplattenleistung zusammen. Auch die CPU-/Speicherauslastung wirkt sich darauf aus. Zu viele Anfragen führen indirekt zu einer Erhöhung von svctm. Die Größe der Wartezeit hängt im Allgemeinen von der Servicezeit (svctm) sowie der Länge der E/A-Warteschlange und dem Ausgabemuster der E/A-Anfragen ab. Wenn svctm nahe an await liegt, bedeutet dies, dass es fast keine Wartezeit für I/O gibt; wenn await viel größer als svctm ist, bedeutet dies, dass die I/O-Warteschlange zu lang ist und die Reaktionszeit der Anwendung langsam ist. Wenn die Reaktionszeit den für Benutzer tolerierbaren Bereich überschreitet, können Sie den Austausch einer schnelleren Festplatte, die Anpassung des Kernel-Elevator-Algorithmus, die Optimierung der Anwendung oder ein Upgrade der CPU in Betracht ziehen. Die Warteschlangenlänge (avgqu-sz) kann auch als Indikator zur Messung der E/A-Last des Systems verwendet werden. Da es sich bei avgqu-sz jedoch um den Durchschnittswert pro Zeiteinheit handelt, kann er nicht die momentane E/A-Flut widerspiegeln. Andere haben ein gutes Beispiel. (E/A-System vs. Supermarkt-Warteschlange) Wenn wir beispielsweise in einem Supermarkt an der Kasse anstehen, wie entscheiden wir dann, zu welcher Kasse wir gehen? Als erstes schauen wir uns die Anzahl der Leute in der Schlange an. Fünf Leute sind immer schneller als 20, oder? Neben der Anzahl der Leute schauen wir oft auch, wie viel die Person vor uns eingekauft hat. Wenn vor uns eine Tante steht, die Lebensmittel für eine Woche eingekauft hat, können wir in Erwägung ziehen, die Schlange zu wechseln. Eine andere Sache ist die Geschwindigkeit der Kassierer. Wenn Sie auf einen Neuling treffen, der nicht einmal das Geld zählen kann, müssen Sie warten. Darüber hinaus ist auch das Timing sehr wichtig. Die Kasse, die vor 5 Minuten noch überfüllt war, ist jetzt möglicherweise leer. Zu dieser Zeit ist es sehr angenehm, zu bezahlen. Natürlich geht es dabei darum, dass das, was Sie in den letzten 5 Minuten getan haben, sinnvoller ist als das Anstehen (aber ich habe nichts gefunden, das langweiliger ist als das Anstehen). Außerdem weisen E/A-Systeme viele Ähnlichkeiten mit Warteschlangen im Supermarkt auf:
Wir können diese Daten verwenden, um das E/A-Anforderungsmuster sowie die E/A-Geschwindigkeit und Antwortzeit zu analysieren. %util: Die gesamte IO-Verarbeitungszeit während der statistischen Zeit, geteilt durch die gesamte statistische Zeit. Wenn das statistische Intervall beispielsweise 1 Sekunde beträgt, das Gerät 0,8 Sekunden lang E/A verarbeitet und 0,2 Sekunden lang im Leerlauf ist, dann beträgt die Auslastung des Geräts 0,8/1 = 80 %, sodass dieser Parameter die Auslastung des Geräts angibt. Wenn dieser Parameter 100 % beträgt, bedeutet dies im Allgemeinen, dass das Gerät nahezu mit voller Kapazität läuft (wenn mehrere Festplatten vorhanden sind, muss die Festplattennutzung aufgrund der Parallelitätsfähigkeit der Festplatten natürlich nicht unbedingt einen Engpass erreichen, selbst wenn %util 100 % beträgt). Beim Bereitstellen eines Programms (ich habe ein Programm getestet, das Protokolle in Echtzeit hochlädt) müssen Sie die CPU, den Speicher, die E/A usw. des Systems berücksichtigen, um einen effizienten Betrieb des Systems sicherzustellen. Wenn das Programm selbst sehr kleine Pakete verarbeitet, viele Ereignisse aufweist, unter hohem Druck steht und keine Intervalle aufweist, beansprucht es viele CPU-Ressourcen. Wird statt des Arbeitsspeicher-Cache ein Disk-Cache verwendet, kann eine Breakpoint-Retransmission unterstützt werden, um einen zuverlässigen Datenupload zu gewährleisten. Bei einem plötzlichen Stromausfall werden die im Disk-Cache gespeicherten Daten nach der Wiederherstellung trotzdem hochgeladen und gehen nicht verloren. Allerdings erhöht sich die Anzahl der Disk-Lese- und Schreibvorgänge entsprechend. Bei relativ geringen Datenmengen ist die Geschwindigkeit noch erträglich. Nachfolgend finden Sie eine Analyse dieser Parameterausgabe, die von anderen geschrieben wurde # iostat -x 1 Durchschnittliche CPU: %Benutzer %nice %sys %idle 16,24 0,00 4,31 79,44 Gerät: rrqm/s wrqm/sr/sw/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz warte auf svctm %util /dev/cciss/c0d0 0,00 44,90 1,02 27,55 8,16 579,59 4,08 289,80 20,57 22,35 78,21 5,00 14,29 /dev/cciss/c0d0p1 0,00 44,90 1,02 27,55 8,16 579,59 4,08 289,80 20,57 22,35 78,21 5,00 14,29 /dev/cciss/c0d0p2 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 Die obige iostat-Ausgabe zeigt, dass 28,57 Geräte-E/A-Vorgänge pro Sekunde stattfinden: Gesamt-E/A (io)/s = r/s (Lesen) + w/s (Schreiben) = 1,02 + 27,55 = 28,57 (Male/Sekunde), wovon Schreibvorgänge den Großteil ausmachen (w:r=27:1). Im Durchschnitt dauert die Ausführung jedes Geräte-E/A-Vorgangs nur 5 ms, aber jede E/A-Anforderung muss 78 ms warten. Warum? Weil es zu viele E/A-Anforderungen gibt (etwa 29 pro Sekunde). Unter der Annahme, dass diese Anforderungen gleichzeitig gestellt werden, kann die durchschnittliche Wartezeit wie folgt berechnet werden: Durchschnittliche Wartezeit = einzelne I/O-Servicezeit * (1 + 2 + ... + Gesamtzahl der Anfragen - 1) / Gesamtzahl der Anfragen Auf das obige Beispiel angewendet: Durchschnittliche Wartezeit = 5 ms * (1 + 2 + … + 28)/29 = 70 ms, was sehr nahe an der von iostat angegebenen durchschnittlichen Wartezeit von 78 ms liegt. Dies wiederum deutet darauf hin, dass die I/Os gleichzeitig initiiert wurden. Pro Sekunde werden viele E/A-Anfragen gestellt (etwa 29), aber die durchschnittliche Warteschlange ist nicht lang (nur etwa 2). Dies zeigt, dass das Eintreffen dieser 29 Anfragen nicht gleichmäßig erfolgt und die E/A die meiste Zeit im Leerlauf ist. In 14,29 % der Fälle einer Sekunde befinden sich Anforderungen in der E/A-Warteschlange, was bedeutet, dass das E/A-System 85,71 % der Zeit nichts zu tun hat. Alle 29 E/A-Anforderungen werden innerhalb von 142 Millisekunden verarbeitet. delta(ruse+wuse)/delta(io) =await=78,21=>delta(ruse+wuse)/s=78,21*delta(io)/s= 78,21*28,57=2232,8, was bedeutet, dass die E/A-Anfragen pro Sekunde insgesamt 2232,8 ms warten müssen. Die durchschnittliche Warteschlangenlänge sollte also 2232,8 ms/1000 ms = 2,23 betragen, aber die von iostat angegebene durchschnittliche Warteschlangenlänge (avgqu-sz) beträgt 22,35. Warum?! Da es in iostat einen Fehler gibt, sollte der avgqu-sz-Wert 2,23 und nicht 22,35 betragen. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: JavaScript zum Implementieren einer zeitlich begrenzten Flash-Sale-Funktion
Normalerweise verwenden wir die folgende SQL-Anwe...
Da li ein Element auf Blockebene ist und standard...
Syntax der Whitelist-Regel: Grundregel wl:ID [neg...
Inhaltsverzeichnis Code: Auffüllen: Zusammenfasse...
Inhaltsverzeichnis 1. fürJedes() 2. arr.filter() ...
Frage Nachdem das Unternehmen den Server migriert...
Dieser Artikel erläutert anhand von Beispielen di...
Inhaltsverzeichnis 1. Array-Induktion 1. Teilen S...
Zustandshaken Beispiele: importiere { useState } ...
Haben Sie nach den letzten beiden Kapiteln ein ne...
transform:scale() lässt sich ein proportionales V...
Die Implementierungsmethode gliedert sich in drei...
Vorwort Ich habe gerade angefangen, MySQL zu lern...
1. Abgerundete Ecken Heutige Webdesigns halten stä...