# Измерение скорости накопителей (HDD, SSD, USB Flash, NAS и т.д.) под Linux Способов измерения скорости накопителей под Linux много, и можно подобрать такие, что более точно покажут производительность именно на ваших задачах. ## Измерение задержек (latency) операций ввода/вывода Утилита ioping проверяет задержки накопителей данных (похож на ping, но для дисков): Установим ioping: ```shell sudo apt install ioping ``` Замер: ```shell ioping -c 10 -s 1m -W . ``` Где: * `-c 10` -- количество замеров; * `-s 10m` -- размер блока данных для тестирования. `10m' -- 10 мегабайт; * `-W` -- С записью вместо чтения. Это более безопасно для временного файла в целевом каталоге, и, кроме того, запись ввода-вывода даёт более надежные результаты для систем, где некэшированные чтения не поддерживаются или происходит искажающее замеры кэширование на каком-то уровне. * `.` -- каталог, в котором будут производиться замеры. `.` -- текущий каталог. Другие ключи и опции можно посмотреть в справке `man ioping` или `ioping --help`. Результаты теста будут примерно такими: ```text 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 ``` Сверху выводятся данные по индивидуальным запросам: ```text 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)` — запрос выполнен медленнее, чем среднее время выполнения. Снизу выводятся статистические данные по всем запросам: ```text --- . (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` — **минимальное**, **среднее**, **максимальное** время выполнения запроса и **стандартное отклонение**.