doc_memo/raspberry-and-orange-pi/measuring-performance-storage-devices.md

5.4 KiB
Raw Blame History

Измерение скорости накопителей (HDD, SSD, USB Flash, NAS и т.д.) под Linux

Способов измерения скорости накопителей под Linux много, и можно подобрать такие, что более точно покажут производительность именно на ваших задачах.

Измерение задержек (latency) операций ввода/вывода

Утилита ioping проверяет задержки накопителей данных (похож на ping, но для дисков):

Установим ioping:

sudo apt install ioping

Замер:

ioping -c 10 -s 1m -W .

Где:

  • -c 10 -- количество замеров;
  • -s 10m -- размер блока данных для тестирования. `10m' -- 10 мегабайт;
  • -W -- С записью вместо чтения. Это более безопасно для временного файла в целевом каталоге, и, кроме того, запись ввода-вывода даёт более надежные результаты для систем, где некэшированные чтения не поддерживаются или происходит искажающее замеры кэширование на каком-то уровне.
  • . -- каталог, в котором будут производиться замеры. . -- текущий каталог.

Другие ключи и опции можно посмотреть в справке man ioping или ioping --help.

Результаты теста будут примерно такими:

10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=1 time=21.1 ms (warmup)
10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=2 time=29.7 ms
10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=3 time=23.5 ms
10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=4 time=22.3 ms
10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=5 time=21.7 ms
10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=6 time=23.1 ms
10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=7 time=21.7 ms (fast)
10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=8 time=31.1 ms (slow)
10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=9 time=23.0 ms
10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=10 time=22.7 ms

--- . (ext4 /dev/nvme0n1p2 1.79 TiB) ioping statistics ---
9 requests completed in 218.8 ms, 90 MiB written, 41 iops, 411.3 MiB/s
generated 10 requests in 9.04 s, 100 MiB, 1 iops, 11.1 MiB/s
min/avg/max/mdev = 21.7 ms / 24.3 ms / 31.1 ms / 3.32 ms

Сверху выводятся данные по индивидуальным запросам:

10 MiB >>> . (ext4 /dev/nvme0n1p2 1.79 TiB): request=1 time=21.1 ms (warmup)

Где:

  • 10 MiB — размер блока данных, к которому идет доступ;
  • <<< . — текущая директория, на которой проводится тест;
  • (ext4 /dev/nvme0n1p2 1.79 TiB) — файловая система (ext4) и устройство (/dev/nvme0n1p2) с емкостью 1.79 ТБ, где выполняется тест;
  • request=1 — номер запроса;
  • time=21.1 ms — время выполнения запроса (в миллисекундах -- ms, в микросекунды -- us);
  • (warmup) — первый запрос может использоваться для "прогрева", его результаты могут быть исключены из финальной статистики, (fast) — запрос выполнен быстрее, чем среднее время выполнения, (slow) — запрос выполнен медленнее, чем среднее время выполнения.

Снизу выводятся статистические данные по всем запросам:

--- . (ext4 /dev/nvme0n1p2 1.79 TiB) ioping statistics ---
9 requests completed in 218.8 ms, 90 MiB written, 41 iops, 411.3 MiB/s
generated 10 requests in 9.04 s, 100 MiB, 1 iops, 11.1 MiB/s
min/avg/max/mdev = 21.7 ms / 24.3 ms / 31.1 ms / 3.32 ms

Где:

  • 9 requests completed in 218.8 ms — количество запросов, завершенных за время теста и общее время выполнения;
  • 90 MiB written — общий объем данных, записанных на диск;
  • 41 iops — количество операций ввода/вывода в секунду (IOPS);
  • 411.3 MiB/s — скорость записи данных на диск;
  • generated 10 requests in 9.04 s — количество запросов, сгенерированных за время теста и общее время выполнения;
  • 100 MiB — общий объем данных, сгенерированных тестом;
  • 1 iops — количество операций ввода/вывода в секунду (IOPS) при генерации данных;
  • 11.1 MiB/s — скорость генерации данных;
  • min/avg/max/mdev = 21.7 ms / 24.3 ms / 31.1 ms / 3.32 msминимальное, среднее, максимальное время выполнения запроса и стандартное отклонение.