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