web-dev-qa-db-fra.com

Coût total des E / S d'un processus

Je sais que iotop me permet de mesurer la bande passante du disque utilisée par tout ou partie des processus en temps réel. iotop -a mesure la bande passante du disque accumulée, qui est plus proche de ce que je veux.

Cependant, lorsque le processus que j'exécute se termine, il disparaît trop tôt dans iotop pour que je puisse voir exactement combien d'E/S le processus a utilisé au total depuis son démarrage. Existe-t-il un moyen d'enregistrer l'utilisation totale des E/S d'un processus à la fin, et peut-être de l'enregistrer dans un fichier pour une analyse plus approfondie?

Notez que je ne cherche que des réponses exclusives à Linux, en particulier Ubuntu.

17
user308485

Essayez pidstat . Utilisez-le comme ceci: pidstat -d -e command

pidstat est capable de rapporter des statistiques pour les tâches Linux. Le -d demande à pidstat de rassembler IO stats. pidstat arrêtera et imprimera le rapport une fois la commande terminée.

19
Henrik Pingel

iotop a l'option --batch, que vous pouvez utiliser pour le traiter de manière non interactive. Cela vous permettrait de faire (par exemple):

Sudo iotop --batch -qqq --accumulated | fgrep --line-buffered '% dd ' | tee  ~/dd.log

qui fournirait une sortie comme:

19804 be/4 user  0.00 B      0.00 B  0.00 %  0.00 % dd if=/dev/zero of=/tmp/log.1 bs=1M count=10000
19804 be/4 user  0.00 B    755.18 M  0.00 % 30.99 % dd if=/dev/zero of=/tmp/log.1 bs=1M count=10000
19804 be/4 user  0.00 B   1029.48 M  0.00 % 50.96 % dd if=/dev/zero of=/tmp/log.1 bs=1M count=10000

La dernière ligne correspondant à votre chaîne fgrep(1) (dans cet exemple, à la recherche de la commande dd) est votre dernière ligne cumulative.

En outre, la sortie reste dans ~/dd.log Pour votre analyse ultérieure selon les besoins. (vous pouvez également inverser l'ordre de tee et fgrep si vous souhaitez enregistrer TOUTES les sorties iotop dans le fichier journal, et pas seulement les sorties spécifiques à dd dans l'exemple)

1
Matija Nalis