(эссе с вопросами, и без ответов)

Когда я решил проверить производительность нового рейда и прилагающихся к нему 72 дисков, мне казалось, что я знаю про иопсы всё. Сейчас я понимаю, что ничего не понимаю.

Итак, IOPS = i/o (operations) per second. Число операций ввода-вывода в секунду.

Померять IOPSы очень легко — достаточно запустить почти любой монитор производительности. perfmon в виндах, atop в линуксе. Сколько раз конкретный диск сумел ответить за секундну на запросы «записать»/«прочитать», столько и IOPS'ов.

Но когда говорят «иопсы», обычно подразумевают не текущий показатель, а максимальный, который способен выдать [диск|рейд|полка].

И вот тут-то нас ждёт величайшее удивление.

Не буду голословным, вот результаты измерения.
write iops =13200,  write speed=550Mb/s
write iops=324, write speed=1.2Mb/s


Это один и тот же диск. Один и тот же объём данных. Что же меняется, откуда эта ошеломляющая разница почти на два порядка?

Эта разница — в порядке выполнения запросов. Первое — линейная запись. Второе — произвольная, блоками по 4к. Записан строго один и тот же объём данных, но в разном порядке.

… И этот результат смотрелся бы логичнее, если бы речь шла об одном винчестере. Но это RAID60 на 22 диска!

Я меняю в свойствах рейда один параметр (размер слайса) — и получаю совсем другие цифры для произвольной записи:
write iops=4020 write speed=16Mb/s


Разумеется, это совсем не сверхзвуковые скорости линейных операций, но, разница между 320 и 4000 иопсами СЛИШОМ велика, чтобы её игнорировать.

… я чуть-чуть меняю условия теста (размер блоков) и один вариант рейда сваливается вниз, а второй взрывается вверх…

Так что же такое ИОПС? И как мы можем, хотя бы приблизительно, оценить производительность дисковой подсистемы?

Мы можем сказать «считать надо под задачу». Под какую задачу? Можете ли вы предсказать размер блоков данных, к��торые решит записать ваш (тот, который вы лучше всего знаете) sql-сервер после очередного commit'а? Или другая вами администрируемая программа: можете ли вы сказать, какими блоками она будет писать/читать?

А дальше, не зная этой информации, мы оказываемся перед параметрами, которые кардинально определяют производительность RAID'а: количество дисков в мирроре и количество дисков в избыточных массивах, размер стрипа…

У меня ощущение, что среди всех областей «устройства компьютера», производительность в «запросах» — наименее изведанная. Или, если изведанная, то тщательно скрываемая…