Determinare quale processo sta causando I / O su disco pesante?


19

Ho visto questa domanda: come identificare la scrittura pesante su disco?

E ho usato dstat e sopra prima ... ma non sembrano individuare quale processo sta causando l'I / O del disco. Ad esempio, da 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 |

Nota quanto è alto dsk / totale - tra 2 e 5 MB / sec. Ma poi guarda la colonna "più costosa": qui ci sono solo un paio di byte, un paio di KB lì, e talvolta persino niente. È lo stesso tipo di cose con "in cima". Mostra un elevato utilizzo complessivo del disco, ma un basso utilizzo da parte dei singoli processi. Sto usando CentOS 5, kernel 2.6.18-53.

Ho bisogno di una versione del kernel più recente? Forse qualche configurazione di sistema da qualche parte? La homepage di "atop" consiglia di installare alcune patch del kernel, ma preferirei non dover affrontare la seccatura di configurare e compilare il mio kernel.

Risposte:


26

iotop ( link ) per iniziare;) Non ti ho visto pubblicare un output di esso.

1: Ho sperimentato quasi la stessa situazione con un filesystem di registrazione e atime - tuttavia con più scritture.

Prova a rimontare con noatime e disattiva la registrazione del filesystem (in seguito solo per i test) per vedere se è basato su filesystem e, come detto, iotop se è basato su processi.

2: Immagino che questa partizione non faccia parte di un array raid appena ricostruito, vero?

3: Se hai molti file di dimensioni molto ridotte (molto più piccoli della dimensione del blocco del dispositivo a blocchi reale e / o della dimensione del blocco del file system) e stai leggendo quei piccoli file, finisci per leggere interi blocchi dal sistema e la maggior parte di quei blocchi verrà letto per niente.

4: Se nulla aiuta sopra, è sempre possibile ottenere l'elenco dei file a cui si accede eseguendo

echo 1 > /proc/sys/vm/block_dump

si noti che riduce notevolmente le prestazioni del sistema. Le istruzioni sono disponibili nel mio post precedente qui


1

Sono stato solo fortunato, ma ho quasi immediatamente esteso la risposta, poiché non era esattamente una risposta alla domanda;)
asdmin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.