я знаю это 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 в примере)