Спершу потрібно перейти на розділ того диску який нам потрібен. Один із можливих варіантів для вимірювання швидкості запису:
time sh -c "dd if=/dev/zero of=test bs=1048576 count=2048 && sync"
Опція count вказує на к-ть блоків які слід скопіювати. Опція bs — розмір блоку в байтах. Оскільки 1048576 це один Міб, то виходить: скопіювати блок в один Міб 2048 раз.
Для вимірювання швидкості читання:
time sh -c "dd if=test of=/dev/null bs=1048576 && sync"
Тільки я не впевнений в тому що команда sync тут потрібна.
Після закінчення роботи програми слід поділити к-ть записаних даних на затрачений час (рядок real).
Приклад:
time sh -c "dd if=/dev/zero of=test bs=1048576 count=2048 && sync"
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 52.8006 s, 40.7 MB/s
real 1m9.805s
user 0m0.016s
sys 0m3.180s
2147483648 bytes — к-ть записаних даних. 1m9.805s — час витрачений на виконання команди. Отже, 2147483648/69,805 = 30764037,6477. Що буде 29,34 Міб/с
Програма time видасть час затрачений на операцію запису файлу (слід дивитися на рядок який починається з real після завершення роботи програми). dd створить файл розміром 2Гіб з назвою test. "&&" вказує на те що, якщо лівий операнд завершився успішно (здається у такому випадку програма повертає нуль), то виконати правий операнд. В даному випадку команду sync яка синхронізує дані на диску з даними які знаходяться в оперативній пам’яті. Необхідність команди sync пояснюється тим що частина даних може залишатися в оперативній пам’яті і записатися на жорсткий диск пізніше.
Посилання:
Linux I/O Performance Tests using dd