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.