Ответ
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 — частая причина лагующих баз данных в облаке.