IOPS — количество операций ввода-вывода в секунду. Одна из основных характеристик для оценки производительности проектируемой или уже существующей системы хранения данных, RAID-массива, HDD или SSD диска. Другими словами это количество блоков, которое успевает записаться или считаться с устройства в единицу времени. Чем больше IOPS, тем более производительная система.
IOPS — понятие расплывчатое, указанные производителем значения могут на практике отличаться в разы. Дело в том, что величина IOPS зависит от многих факторов:
- Конструкция диска.
- Настройка диска.
- Конструкция массива.
- Настройка массива.
- Настройка файловой системы.
- Драйвера.
- Конфигурация и тип RAID-массива.
- Количество дисков в массиве.
- Наличие и размер кеша.
- Гибридные диски.
- Качество диска.
- Типы интерфейсов.
- Количество интерфейсов.
- Пропускная способность интерфейсов.
- Размер блока.
- RAID-контроллер.
- Условия запуска программы, которая измеряет IOPS.
- Наличие других фоновых задач.
- Размеры очередей и буферов.
- Погода на Марсе.
Принято выделять несколько типов IOPS:
- IOPS последовательного чтения.
- IOPS последовательной записи.
- IOPS произвольного чтения.
- IOPS произвольной записи.
- TOTAL IOPS — суммарное значение IOPS чтения и записи (отличается для последовательного и произвольного доступа).
IOPS для HDD
Для жёстких дисков величина IOPS более или менее постоянная.
Интерфейс | Обороты | IOPS |
SATA 3 | 7200 об/мин | ~75-100 |
SATA 3 | 10000 об/мин | ~125-150 |
SAS | 10000 об/мин | ~140 |
SAS | 15000 об/мин | ~175-200 |
IOPS для SSD и гибридных дисков
Зависит от модели и интерфейса. PCIe на порядок быстрее чем SATA.
Вычисление IOPS для RAID массива
Если мы знаем IOPS диска, то можем вычислить IOPS RAID массива.
RAID пенальти. При операции чтения данных из любого массива происходит одна операция, собственно, операция чтения, поэтому на чтение RAID пенальти отсутствует. При записи ситуация иная для каждого типа массива.
Тип массива | Пенальти | Операции |
RAID0 | 1 | запись данных |
RAID1 | 2 | запись данных + запись данных |
RAID10 | 2 | запись данных + запись данных |
RAID5 | 4 | чтение данных + чтение чётности + запись данных + запись чётности |
RAID6 | 6 | чтение данных + чтение чётности * 2 + запись данных + запись чётности * 2 |
-
Больше пенальти
Тип массива Пенальти RAID0 1 RAID1 2 RAID1E 2 Triple Mirror 3 RAID3 4 RAID4 4 RAID5 4 RAID5E 4 RAID5EE 4 RAID50 4 RAID51 10 RAID6 6 RAID60 6 RAID61 12 RAID10 2 RAID-DP 2 RAID-TEC 3 RAID-Z0 1 RAID-Z1 4 RAID-Z2 6 RAID-Z3 8 RAID7 5 RAID7.3 8 RAIDN+M 2 + 2 * M
T = (I * N * W)/P + I * N * R
Где T — вычисляемое значение IOPS массива, I — IOPS диска, N — количество дисков, P — пенальти, W — процент записи, R — процент чтения.
Пример 1. RAID5 массив из 10 дисков. IOPS одного диска — 200. Посчитаем IOPS массива при 20% операций чтения и 80% операций записи.
T = (200 * 10 * 0.8)/4 + 200 * 10 * 0.2
T = 800 IOPS
Пример 2. RAID5 массив из 10 дисков. IOPS одного диска — 200. Посчитаем IOPS массива при 80% операций чтения и 20% операций записи.
T = (200 * 10 * 0.2)/4 + 200 * 10 * 0.8
T = 1700 IOPS
Пример 3. RAID10 массив из 10 дисков. IOPS одного диска — 200. Посчитаем IOPS массива при 20% операций чтения и 80% операций записи.
T = (200 * 10 * 0.8)/2 + 200 * 10 * 0.2
T = 1200 IOPS
Пример 4. RAID10 массив из 10 дисков. IOPS одного диска — 200. Посчитаем IOPS массива при 80% операций чтения и 20% операций записи.
T = (200 * 10 * 0.2)/2 + 200 * 10 * 0.8
T = 1800 IOPS
Вычисление требуемого количества дисков для достижения заданного IOPS
N = T / ( I * (W/P + R))
Где N — вычисляемое количество дисков, T — IOPS массива, I — IOPS диска, P — пенальти, W — процент записи, R — процент чтения.
Пример. Сколько нужно дисков, чтобы получить 1700 IOPS при использовании RAID5 массива (80% операций чтения и 20% операций записи, IOPS одного диска — 200)?
N = 1700 / ( 200 * (0.2/4 + 0.8))
N = 10 дисков
Ответ совпадает с примером 2 выше.