Ksysguard, harddisks und diskstats

Gestern bekam ich von Michael die Frage, wie man denn unter Linux für die "kryptischen" Plattenbezeichnungen in Ksysguard die zugehörigen Partitionen herausfinden könne. Er hatte ein Performance-Problem und wollte sehen, auf welche Platte bzw. Partition das System besonders häufig schreibend zugreift.

Mit "kryptischen" Plattenbezeichnungen waren etwa nachfolgende Einträge im Sensor-Bereich von Ksysguard unter dem Punkt Festplattendurchsatz gemeint :

Ksysguard - Ausschnitt aus dem Sensor-Browser

Festplattendurchsatz

+ 2:0 + 7:0 ... ... + 7:7 + 8:0 + 8:1 ... ... + 8:28 + 11:0 + 11:1 (s. Abbdg.)

kys_600

Nun, hinter den Nummern verbergen sich die "major" und "minor" device numbers. Dieses Wissen allein hilft aber auch nicht direkt weiter. Wichtig war Michael ja die Zuordnung dieser Device-Nummern zu den Plattenpartitionen. Letzere sind dem Administrator natürlich besser geläufig.

Auf einem meiner Systeme gibt es z.B. 11 reguläre Linux-Partitionen (Ext3 und ReiserFS) und 3 NTFS-Partitionen in relativ harmonischer Eintracht. Auf die NTFS-Partitionen wird u.a. von VMware-Instanzen aus zugegriffen. Ist man auf einem solchen System an einer partitionsspezifischen Beobachtung des Plattendurchsatzes interessiert, muss man bei Ksysguard schon wissen, wohin genau man schauen sollte.

Zusatz-Informationen aus dem /proc-FS : /proc/diskstats

Woher bekomme ich nun also die Informationen zum Zusammenhang zwischen "device number" und Partition?

Antwort: Aus dem Kernel, oder besser dem /proc - File-System. Moderne Kernel schreiben nämlich statistische Werte für den Plattendurchsatz mit. (Solche Werte werden z.B. von "sar" ausgewertet.) Harddisk-relevante Informationen findet man unter "/proc/diskstats".

Nachfolgend ein typischer Auszug des Ergebnisses von "cat diskstats" oder "cat /proc/diskstats":

user@machine:/proc> cat diskstats
8 0 sda 354415 43112 7631712 3704336 269025 782582 8477712 65951972 0 2135876 69736240
8 1 sda1 784 799 0 0
8 2 sda2 4 8 0 0
8 5 sda5 84 520 0 0
8 6 sda6 515 4114 21 168
8 7 sda7 4225 101288 6085 48624
8 8 sda8 826 841 0 0
8 9 sda9 384 778 0 0
8 10 sda10 390174 7518090 1046963 8375680
8 16 sdb 98498 45267 3730694 1115992 194344 559016 6057920 8996952 0 1112700 10123120
8 17 sdb1 2111 2622 0 0
8 18 sdb2 4 8 0 0
8 21 sdb5 36929 293990 72507 580056
8 22 sdb6 384 778 0 0
8 23 sdb7 1078 1093 0 0
8 24 sdb8 436 780 9 16
8 25 sdb9 814 3450 3 16
8 26 sdb10 1877 2374 0 0
8 27 sdb11 95005 3414382 682211 5457664
8 28 sdb12 4309 5184 0 0

Und nun eine Beschreibung der Felder (die ich übrigens großteils dem ersten unten angegebenen Link entnommen habe):

Feld 1 -- major device number
Feld 2 -- minor device number
Feld 3 -- device name (partition)
Feld 4 -- # of reads issued
Feld 5 -- # of reads merged,
Feld 6 -- # of sectors read
Feld 7 -- # of milliseconds spent reading
Feld 8 -- # of writes completed
Feld 9 -- # of writes merged
Feld 10 -- # of sectors written
Feld 11 -- # of milliseconds spent writing
Feld 12 -- # of I/Os currently in progress
Feld 13 -- # of milliseconds spent doing I/Os
Feld 14 -- weighted # of milliseconds spent doing I/Os

Man sieht:
Hier ist eine Menge Information enthalten - im besonderen eben auch die Zuordnung der Device-Nummern zu den Partitionen.

Datenaufbereitung in Ksysguard

Das Schöne ist, dass Ksysguard einen Teil dieser Informationen in netter Weise aufbereitet. Im besonderen wird einem die Umrechnung in Bytes/s abgenommen. Man kann nun gezielt Ksysguard-Datenblätter für die Parttionen anlegen, die einen besonders interessieren (s. die Abbildung). Zusammenfassende Informationen liefert übrigens auch das Tool "gkrellm".

Viel Spaß beim Analysieren des Plattenzugriffs !

gkrellm_1

Links

http://ubuntuforums.org/showthread.php?t=31213
http://www.meinews.net/festplattenbenutzung-t17640.html
http://utcc.utoronto.ca/~cks/space/blog/linux/DiskIOStats
http://en.opensuse.org/Monitor_your_hard_disk_activity_with_KSysGuard

Generell zum "procfs":
http://en.wikipedia.org/wiki/Procfs