Назад | Перейти на главную страницу

Общая стоимость ввода-вывода процесса

я знаю это iotop позволяет мне в реальном времени измерять пропускную способность диска, используемую любым или всеми процессами. iotop -a измеряет накопленную пропускную способность диска, что ближе к тому, что я хочу.

Однако, когда процесс, который я запускаю, завершается, он слишком быстро исчезает в iotop, чтобы я мог точно увидеть, сколько операций ввода-вывода было использовано процессом с момента его запуска. Есть ли способ записать общее использование операций ввода-вывода в процессе его завершения и, возможно, сохранить его в каком-нибудь файле для дальнейшего анализа?

Обратите внимание, что я ищу ответы только для Linux, в частности для Ubuntu.

Пытаться pidstat. Используйте это так: pidstat -d -e command

pidstat умеет сообщать статистику по задачам Linux. В -d инструктирует pidstat для сбора статистики ввода-вывода. pidstat остановится и распечатает отчет после завершения команды.

iotop имеет --batch вариант, который можно использовать для его неинтерактивной обработки. Это позволит вам (например):

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

который обеспечит такой вывод:

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

Последняя строка, соответствующая вашему fgrep(1) строка (в этом примере ищем dd команда) - ваша последняя совокупная строка.

Кроме того, вывод остается в ~/dd.log для последующего анализа по мере необходимости. (вы также можете изменить порядок tee и fgrep если вы хотите сохранить ВСЕ выходные данные iotop в файл журнала, а не только выходные данные, относящиеся к dd в примере)