Что такое IOPS?

«Что такое IOPS?» — вопрос из категории Базы данных, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

IOPS (Input/Output Operations Per Second) — это ключевая метрика производительности систем хранения данных, измеряющая максимальное количество операций чтения или записи (обычно в блоках по 4КБ или 8КБ), которое система может обработать за секунду.

Почему это важно для баз данных и DevOps? Производительность БД (PostgreSQL, MySQL, MongoDB) часто упирается в скорость дисковых операций. Высокий показатель IOPS критичен для рабочих нагрузок с большим количеством случайных операций: OLTP-системы, журналы транзакций (WAL), интенсивное логгирование.

Факторы, влияющие на IOPS:

  • Тип накопителя:
    • HDD (SATA/SAS): 50–200 IOPS (случайные операции очень медленные).
    • SATA SSD: 10 000 – 100 000 IOPS.
    • NVMe SSD: 100 000 – 1 000 000+ IOPS.
  • Характер доступа: Случайный (random) доступ требует больше IOPS, чем последовательный (sequential).
  • Соотношение чтения/записи: Запись обычно медленнее чтения.
  • Размер блока: Операции с малыми блоками (4КБ) требуют больше IOPS для достижения той же пропускной способности (throughput в МБ/с), что и операции с большими блоками.

Измерение IOPS в Linux (используем fio):

# Тест случайного чтения (4КБ, 1 поток, прямой доступ к диску)
fio --name=randread --ioengine=libaio --rw=randread --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --time_based --group_reporting
# Тест случайной записи
fio --name=randwrite --ioengine=libaio --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --time_based --group_reporting

В выводе ищите строку iops=.

Облачный контекст (AWS EBS, GCP Persistent Disk): IOPS — это настраиваемый параметр, за который часто взимается отдельная плата. Например, для EBS типа gp3 можно независимо задать базовые IOPS, пропускную способность и размер диска. Недостаточные IOPS — частая причина лагующих баз данных в облаке.