time
это блестящая команда, если вы хотите выяснить, сколько процессорного времени занимает данная команда.
Я ищу что-то подобное, что может измерить дисковый ввод программы и любых детей. Предпочтительно следует различать операции ввода-вывода, которые были кэшированы (и, следовательно, не приводили к вращению диска), и операции ввода-вывода, которые не кэшировались.
Итак, я хотел бы сделать:
iomeassure my_program my_args
и получить вывод, похожий на:
Cached read: 10233303 Bytes
Cached write: 33303 Bytes # This was probably a tmp file that was erased before making it to the disk
Non-cached read: 200002020 Bytes
Non-cached write: 202020 Bytes
Я смотрел vmstat
, iostat
и sar
, но ни один из них не смотрит на единый процесс. Вместо этого они смотрят на всю систему.
Я посмотрел iotop
, но это только дает мне представление в этот момент.
--- редактировать ---
Ответ Snap кажется близким.
«Входные данные файловой системы» - это не кэшированные чтения в 512-байтовых блоках.
«Вывод файловой системы:» - это кэшированные записи в 512-байтовых блоках.
Вы можете сделать кеш пустым:
sync ; echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
Я проверил с:
seq 10000000 > seq
/usr/bin/time -v bash -c 'perl -e "open(G,\">f\"); print G <>;close G; unlink \"f\";" seq'