Ermitteln, welcher Prozess Festplatten-E / A verursacht

19

Ich habe die folgende Frage gesehen: Wie erkenne ich starke Schreibzugriffe auf die Festplatte?

Und ich habe dstat und atop zuvor verwendet ... aber sie scheinen nicht genau zu bestimmen , welcher Prozess Festplatten-E / A verursacht. Zum Beispiel aus dstat:

dstat -ta --top-bio
----system---- ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----most-expensive----
     time     |usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw |  block i/o process
14-12 16:16:25| 22   3  49  26   0   0|2324k    0 |  17k 6144B|   0     0 |1324     0 |
14-12 16:16:26| 24   3  30  43   0   0|4960k 8192B|1498B 4322B|   0     0 |1494     0 |wget          0  4096B
14-12 16:16:27| 25   4  38  33   0   0|4612k  548k|5011B   27k|   0     0 |1582     0 |kjournald     0    24k
14-12 16:16:28| 23   3  42  32   0   0|5072k    0 |  24k 4368B|   0     0 |1495     0 |

Beachten Sie, wie hoch dsk / total ist - zwischen 2 und 5 MB / Sek. Aber dann schauen Sie sich die "teuerste" Spalte an - es sind nur ein paar Bytes hier, ein paar KB da und manchmal sogar nichts. Das Gleiche gilt für "atop". Zeigt eine hohe Gesamtbelegung der Festplatte, aber eine geringe Belegung der einzelnen Prozesse. Ich verwende CentOS 5, Kernel 2.6.18-53.

Benötige ich eine neuere Kernelversion? Vielleicht irgendwo eine Systemkonfigurationseinstellung? Die "atop" -Homepage empfiehlt, einige Kernel-Patches zu installieren, aber ich würde lieber nicht den Aufwand zum Konfigurieren und Kompilieren meines eigenen Kernels in Kauf nehmen.

davr
quelle

Antworten:

26

iotop ( link ) for starter;) Ich habe nicht gesehen, dass du eine Ausgabe davon gepostet hast.

1: Ich habe fast die gleiche Situation mit einem Protokolldateisystem und atime erlebt - jedoch mit mehr Schreibvorgängen.

Versuchen Sie, mit noatime erneut zu mounten und die Protokollierung des Dateisystems zu deaktivieren (später nur zum Testen), um festzustellen, ob es auf dem Dateisystem und wie gesagt auf iotop basiert, ob es prozessbasiert ist.

2: Ich denke, diese Partition ist nicht Teil eines gerade neu erstellten RAID-Arrays, oder?

3: Wenn Sie viele sehr kleine Dateien haben (viel kleiner als die tatsächliche Blockgeräteblockgröße und / oder die Dateisystemblockgröße) und Sie diese kleinen Dateien lesen, werden Sie am Ende ganze Blöcke aus dem System lesen und die meisten von diesen Blöcken wird nichts gelesen.

4: Wenn oben nichts hilft, können Sie immer die Liste der Dateien abrufen, auf die durch Ausführen zugegriffen wird

echo 1 > /proc/sys/vm/block_dump

Bitte beachten Sie, dass dies die Systemleistung erheblich beeinträchtigt. Anweisungen finden Sie in meinem vorherigen Beitrag hier

asdmin
quelle
1
Schlage mich mit ungefähr 5 Sekunden;) +1
pehrs
Ich hatte gerade Glück, erweiterte aber die Antwort fast sofort, da dies keine
genaue