Вимірювання програми вводу / виводу диска для програми


12

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'

Відповіді:


9

Ви не вказали, яку операційну систему ви використовуєте.

Linux

Замість того, щоб використовувати time foo(як правило) вбудовану оболонку, ви можете спробувати зовнішню команду /usr/bin/time foo. Це дає деяку додаткову інформацію, таку як кількість входів та виходів файлової системи (але немає інформації про хіти кеш-пам'яті чи кількості байтів). Див. man timeТа man getrusageдля подальших інструкцій.

Зауважте, що для цієї функції потрібне ядро ​​Linux версії 2.6.22 або новішої.

FreeBSD

Використовуйте /usr/bin/time -l foo. Він дає кількість входів і виходів. Див. man timeТа man getrusageдля подальших інструкцій.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.