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
, але це лише дає мені погляд в цю мить.
--- редагувати ---
відповідь оснащення здається близькою.
'Введення файлової системи:' - це не кешоване зчитування в 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'