IOPS-Größen überwachen

IOPS-Größen überwachen

Wie überwacht man die Größe der Speicher-IOPS auf einem modernen Linux?

Ich kann die Menge der Speicher-IOPS mit Befehlen wie iostat überwachen. Ich möchte jedoch die Größe der IOPS kennen, die durch die Arbeitslast generiert werden.

Etwa so: In den letzten X Sekunden gab es: 5 IOPS 4K, 10 IOPS 8K, 20 IOPS 16K ...

Ich bin an der Überwachung auf Blockgeräteebene (z. B. /dev/sda) interessiert, aber auch jede andere Ebene wäre interessant.

Antwort1

Niedriges Niveau

Auf niedrigerer Ebene können Sie diese Informationen von erhalten /sys/block/X/stat, die dokumentiert istHier.

Beispielinhalte sehen so aus:

   10465     3250   759844    27528     4400     2983   546848    66306        0     9754    93792

Die gewünschten Felder sind die Spalten 1 und 3 für Lesevorgänge und 5 und 7 für Schreibvorgänge. Die Berechnungsmethode ist für beide gleich, daher bespreche ich nur die Lesevorgänge.

Spalte 1 ist die Anzahl der Lesevorgänge (die Sie bereits überwachen können), und Spalte 3 ist die Anzahl der gelesenen Sektoren. Ein Sektor ist 512 Bytes groß. Um die Größe der Lesevorgänge zu berechnen, führen Sie einfach Folgendes aus: . $col3 * 512 / $col1Die
Zahlen in dieser Datei sind die Gesamtzahlen seit der Inbetriebnahme der Festplatte. Um die durchschnittliche Lesegröße über einen bestimmten Zeitraum zu berechnen, lesen Sie die Datei einfach zweimal und berechnen Sie mit: ($col3_t2 - $col3_t1) * 512 / ($col1_t2 - $col1_t1).

Beachten Sie, dass die obige Methode Ihnen die Größe der auf Anwendungsebene ausgeführten Operationen angibt (die Beschreibung ist nicht exakt, aber nahe genug). Der Kernel kann mehrere Operationen zusammenführen, sodass die Anzahl der auf der Festplatte ausgeführten Operationen kleiner ist. Die Berechnung hierfür lautet: $col3 * 512 / ($col1 - $col2). Und um den Wert über einen bestimmten Zeitraum zu erhalten:($col3_t2 - $col3_t1) * 512 / (($col1_t2 - $col1_t1) - ($col2_t2 - $col2_t1))

Hohes Level

iostatkann Ihnen den Wert ebenfalls geben, allerdings weniger genau. Es unterscheidet nicht zwischen Schreib- und Lesevorgängen und gibt Ihnen den Wert nur in Sektoren, nicht in Bytes an (multiplizieren Sie also erneut mit 512). Aber der Befehl lautet iostat -x -d, und die zu betrachtende Spalte ist avgrq-sz.

verwandte Informationen