36 votes

Comment savoir quel processus consomme le "CPU d'attente" (c'est-à-dire que les E/S sont bloquées) ?

Avec top il est facile de savoir combien de CPU chaque tâche utilise. Cependant, je veux traquer un travail qui cause une attente CPU élevée. Existe-t-il un moyen de savoir quels travaux sont bloqués sur les E/S ?

58voto

Johannes Weiß Points 19013

Les processus bloqués sur IO sont ceux qui sont marqués comme D dans la colonne d'état ( S colonne en haut).

40voto

quentinxue Points 171

Pour être plus précis, cette commande permet de savoir facilement quels processus "mangent" vos cycles CPU :

while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done

Cette url pourrait être utile : Problème d'attente d'E/S sous Linux

36voto

ephemient Points 87003

iotop y latencetop peut être utile. Ni l'un ni l'autre ne donne exactement le "temps d'attente du CPU causé par un processus" -- je ne suis même pas sûr que cela ait un sens, parce que le CPU peut se mettre au service d'autres processus en attendant les E/S -- mais ces deux outils donnent une vue d'ensemble (respectivement) du trafic d'E/S du système et des retards d'ordonnancement.

3voto

vicky Points 11

Faites un top, puis shift F , puis choisissez m ou n, pour trier la liste des processus par temps CPU utilisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X