Der unbekannte Befehl – „iostat“ der Gatekeeper

iostat ist ein Werkzeug zur Überwachung der Geschwindigkeit der Ein/Ausgabe-Geräte (I/O-Devices) und wird normalerweise als Teil einer Performance-Analyse verwendet. In Debian-System ist es Teil des Paketes sysstat und kann mit apt-get install sysstat installiert werden. Alle sysstat-Programme lesen ihre Werte aus dem proc-Dateisystem des Linux-Kernels aus und können daher nicht mehr Daten zur Verfügung stellen als der Kernel nach /proc schreibt.

Ein einfaches Ausrufen von iostat ohne Optionen führt zu einer Ausgabe die so ähnlich aussieht  (Die Ausgabe ist farblich unterlegt aber auf diese Wiedergabe verzichte ich hier):

$ iostat
Linux 4.19.0-8-amd64 (Marvin)           07.07.2020          _x86_64_                (4 CPU)

avg-cpu:           %user            %nice          %system         %iowait          %steal         %idle
                         8,80               0,00              4,06                0,05               0,00            87,09

Device                                      tps                kB_read/s         kB_wrtn/s     kB_read    kB_wrtn
sda                                          4,01                24,31                201,88         8408878    69819736

Zu beachten ist, dass die erste Ausgabe standardmäßig die Werte seit dem Systemstart beinhaltet und erst alle weiteren Ausgaben beziehen sich auf das Intervall zwischen den einzelnen Ausgaben. Die ausschließlich aktuellen Werte werden durch die Option -y durch das überspringen des ersten Reports erhalten.

In der ersten Zeile werden die Kernel-Version und der Hostname sowie Datum und Prozessorinformationen angezeigt. In der zweiten Zeile sind I/O-Informationen zum Prozessor, durchschnittliche CPU-Auslastung, Prozentsatz der Zeit, in der die CPU im Leerlauf wartete und auf die I/O-Antwort wartete, Prozentsatz der Wartezeit der virtuellen CPU und Prozentsatz der Zeit, in der die CPU im Leerlauf war, aufgeführt Die nächsten Zeile zeigen den Bericht über die Geräteauslastung mit der Anzahl der gelesenen und geschriebenen Blöcke pro Sekunde und Gesamtzahl der gelesenen und geschriebenen Blöcke pro Sekunde an.

Wie so oft bei GNU-Werkzeugen gibt die Option -V die Versionsnummer und ein wenig zusätzliche Informationen aus. Die Option -t ergänzt die obige Ausgabe noch mit einem Zeitstempel. Will man nur die Statistik der CPU oder der Laufwerke sehen so wird das über die Option -c (CPU) und -d (Laufwerke) erreicht.

Möchte man Geräteberichte mehrfach hintereinander sehen so kann man das durch iostat nachgestellten Zahlen wie iostat 10 3 erreichen – es werden drei Berichte mit dem Abstand von zehn Sekunden angezeigt. Eine Kombination der Optionen ergibt für iostat -ct 10 3 folgende Ausgabe:

$ iostat -ct 10 3
Linux 4.19.0-8-amd64 (Marvin)              07.07.2020         _x86_64_               (4 CPU)

07.07.2020 13:50:44
avg-cpu:                 %user                %nice           %system           %iowait          %steal            %idle
                                 8,82                  0,00               4,06                  0,05              0,00                87,07

07.07.2020 13:50:54
avg-cpu:                 %user                 %nice           %system           %iowait         %steal            %idle
                                  3,59                  0,00               1,93                  0,00             0,00                 94,48

07.07.2020 13:51:04
avg-cpu:                 %user                 %nice           %system           %iowait         %steal            %idle
                                  3,41                  0,00               2,01                  0,03             0,00                94,55

Möchte man eine genaue Gerätestatistik zu einem Block-Device angezeigt bekommen so wird das durch die Option -p erreicht (Die Ausgabe ist hier gekürzt):

$ iostat -p sda
Linux 4.19.0-8-amd64 (Marvin)                 07.07.2020             _x86_64_           (4 CPU)

avg-cpu:                 %user                 %nice           %system           %iowait         %steal         %idle
                                8,82                   0,00              4,06                  0,05              0,00            87,07

Device                   tps                         kB_read/s          kB_wrtn/s          kB_read         kB_wrtn
sda                         3,97                        24,13                202,43              8482450         71147392
sda2                       0,00                        0,01                  0,00                  2088               0
sda9                       2,01                        3,77                  191,84              1325317         67423664
[…]

Weitere, in diesem Zusammenhang interessante Optionen, sind -x die eine erweiterte Anzeige einer Partition z.B. als iostat -x sda5 bewirkt und die Option -m die eine Anzeige der Geräte-I/O-Statistik in MB/Sekunde ermöglicht.

kais-universum.de