IOPS: от чего зависит скорость диска VPS
Что означает IOPS, чем отличаются дисковые лимиты Cloud и Dedicated и как безопасно проверить производительность NVMe-диска на VPS.
IOPS — количество операций ввода-вывода в секунду. Показатель особенно важен для баз данных, поисковых индексов, сборочных систем и приложений, которые читают или записывают много небольших блоков.
Одного значения IOPS недостаточно для полной оценки диска. На работу приложения также влияют задержка, скорость в МБ/с, характер запросов и устойчивость результата под длительной нагрузкой.
Что показывает IOPS
Каждое небольшое чтение или запись считается отдельной операцией. Поэтому высокий IOPS особенно заметен при работе с большим числом мелких файлов, журналами, индексами и случайными запросами базы данных.
Последовательное копирование крупного файла может показать высокую скорость в МБ/с при сравнительно небольшом числе операций. Эти показатели отвечают на разные вопросы и должны оцениваться вместе.
Дисковые лимиты тарифов

CloudиGaming— до 10 000 IOPS на чтение и до 10 000 IOPS на запись системного диска.DedicatedиFrance 9950X— до 30 000 IOPS на чтение и до 30 000 IOPS на запись системного диска.
Почему результаты различаются
- Размер блока: случайная работа блоками по 4 КиБ создаёт больше операций, чем последовательная работа по 1 МиБ.
- Глубина очереди и число параллельных заданий.
- Соотношение чтения и записи, синхронные записи и вызовы fsync.
- Файловая система, параметры монтирования и заполненность диска.
- Кеш операционной системы и приложения.
- Текущая нагрузка на дисковую подсистему.
Сравнивать два результата fio корректно только при одинаковых параметрах. Для проекта важнее тест, похожий на его реальные запросы, чем максимальная цифра из случайной команды.
Безопасный короткий тест fio
Команда создаёт временный файл с уникальным именем в /var/tmp, запускает смешанный случайный тест на 30 секунд и удаляет файл после завершения. Существующие файлы и блочные устройства она не открывает.
(
set -eu
fio_file="$(mktemp /var/tmp/ds-fio-test.XXXXXX)"
trap 'rm -f "$fio_file"' EXIT HUP INT TERM
fio --name=ds-wiki-test --filename="$fio_file" --size=1G \
--rw=randrw --rwmixread=70 --bs=4k --ioengine=libaio \
--iodepth=32 --direct=1 --runtime=30 --time_based --group_reporting
)Если fio не установлен, установите одноимённый пакет из официального репозитория своей операционной системы.
Как читать результат и выбирать тариф
IOPS— число операций в секунду отдельно для чтения и записи.BW— пропускная способность в КиБ/с или МиБ/с.clat— задержка завершения операции; обращайте внимание на высокие перцентили, а не только на среднее значение.iowaitпомогает увидеть, сколько времени процессы внутри VM ожидают завершения дисковых операций.
Повторите одинаковый короткий тест несколько раз в разные периоды и сопоставьте результат с метриками приложения. Один запуск не подтверждает постоянную производительность и не исключает проблему в SQL, памяти или настройках системы.
Переход имеет смысл, когда рабочая нагрузка регулярно достигает дискового лимита Cloud, а оптимизация приложения уже выполнена. Dedicated сочетает повышенный приоритет CPU с более высоким пределом операций для системного диска и лучше подходит для продолжительной нагрузки.
- Проверьте планы SQL и добавьте необходимые индексы.
- Ограничьте параллельность фоновых задач и объединяйте мелкие записи.
- Следите за свободным местом и ростом журналов.
- Сравнивайте тарифы на реальной задаче с одинаковыми параметрами.