Как стать автором
Обновить

IOPSы

Время на прочтение2 мин
Количество просмотров1.6K
(эссе с вопросами, и без ответов)

Когда я решил проверить производительность нового рейда и прилагающихся к нему 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'а: количество дисков в мирроре и количество дисков в избыточных массивах, размер стрипа…

У меня ощущение, что среди всех областей «устройства компьютера», производительность в «запросах» — наименее изведанная. Или, если изведанная, то тщательно скрываемая…
Теги:
Хабы:
Всего голосов 17: ↑14 и ↓3+11
Комментарии34

Публикации