Déterminer quel processus provoque des E / S de disque importantes?

19

J'ai vu cette question: comment identifier les écritures lourdes sur le disque?

Et j'ai déjà utilisé dstat et atop ... mais ils ne semblent pas identifier le processus à l'origine des E / S disque. Par exemple, à partir de 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 |

Remarquez à quel point le dsk / total est élevé - entre 2 et 5 Mo / sec. Mais alors regardez la colonne «la plus chère» - ce n'est que quelques octets ici, quelques Ko là-bas, et parfois même rien. C'est le même genre de chose avec «au sommet». Affiche une utilisation globale élevée du disque, mais une faible utilisation des processus individuels. J'utilise CentOS 5, noyau 2.6.18-53.

Ai-je besoin d'une nouvelle version du noyau? Peut-être un paramètre de configuration du système quelque part? La page d'accueil «au sommet» recommande d'installer certains correctifs du noyau, mais je préfère ne pas passer par les tracas de la configuration et de la compilation de mon propre noyau.

davr
la source

Réponses:

26

iotop ( lien ) pour starter;) Je ne vous ai pas vu en publier une sortie.

1: J'ai connu presque la même situation avec un système de fichiers de journalisation et atime - mais avec plus d'écritures.

Essayez de remonter avec noatime et désactivez la journalisation du système de fichiers (plus tard pour les tests uniquement) afin de voir s'il est basé sur le système de fichiers et, comme dit, iotop s'il est basé sur le processus.

2: Je suppose que cette partition ne fait pas partie d'un tableau de raid en cours de reconstruction, n'est-ce pas?

3: Si vous avez beaucoup de très petits fichiers (beaucoup plus petits que la taille réelle du bloc et / ou le système de fichiers), et que vous lisez ces petits fichiers, vous finissez par lire des blocs entiers du système, et la plupart de ces blocs seront lus pour rien.

4: Si rien ne vous aide, vous pouvez toujours obtenir la liste des fichiers accessibles en exécutant

echo 1 > /proc/sys/vm/block_dump

veuillez noter que cela dégrade considérablement les performances du système. Les instructions sont disponibles dans mon article précédent ici

asdmin
la source
1
Battez-moi avec environ 5 secondes;) +1
pehrs
J'ai juste eu de la chance, mais j'ai presque immédiatement étendu la réponse, car ce n'était pas exactement une réponse à la question;)
asdmin