Назад | Перейти на главную страницу

Влияние уровней RAID на IOPS

Что касается IOPS, я видел несколько источников в сети, которые предполагают, что IOPS для заданного количества дисков - это просто IOPS для одного диска, умноженное на количество дисков.

Если я правильно понимаю количество операций ввода-вывода в секунду (а я в этом не уверен), я бы подумал, что реальность будет зависеть, среди многих других факторов, от уровня RAID. В RAID 1/10 все данные дублируются по крайней мере на двух дисках, что снижает конкуренцию на конкретном диске для некоторых шаблонов ввода-вывода. Однако на уровнях RAID с чередованием, таких как RAID 0/5/6, данные распределяются, а не дублируются, что означает, что последовательные запросы чтения могут быть для одного и того же шпинделя, что приводит к блокировке, пока завершается предыдущий ввод-вывод. Записи еще более спорны.

Я должен добавить, что я понимаю, что реальность намного сложнее из-за различных оптимизаций и других факторов. Мой вопрос на самом деле сводится к тому, правильно ли я понимаю, что означает IOPS, на самом базовом уровне. Возможно, мое утверждение о том, что уровни RAID могут даже влиять на количество операций ввода-вывода в секунду, указывает на фундаментальное непонимание концепции.

Для HDD, IOPS обычно преобладает время доступа, какой сумма задержки поиска + задержка вращения + задержка передачи. Поскольку эти переменные сильно зависят от шаблонов доступа и имеют неочевидное взаимодействие с конкретной структурой RAID (например, размером полосы) и контроллером (например, настройкой упреждающего чтения), любой простой ответ БУДЕТ НЕПРАВИЛЬНЫМ.

Однако давайте попробуем получить приблизительную цифру. В первом приближении количество операций ввода-вывода в секунду, гарантированное массивом из n дисков, должно в n раз превышать количество операций ввода-вывода в секунду для отдельного диска. Однако как уровень RAID, так и шаблон доступа к даннымпутем смещения веса между задержкой поиска / вращения / передачи резко изменяет это приближение первого порядка.

Давайте рассмотрим несколько примеров, предполагая, что 100 операций ввода-вывода в секунду на один диск (типичное значение для дисков со скоростью 7200 об / мин) и массивы из 4 дисков (за исключением RAID1, часто ограниченного только двусторонней связью):

  • один диск составляет 100 операций ввода-вывода в секунду при чтении и записи (примечание: из-за объединения операций записи количество операций ввода-вывода в секунду при записи обычно выше, чем операций ввода-вывода в секунду при чтении, но для простоты это можно игнорировать)
  • RAID0 (4-полосное чередование) имеет вплоть до В 4 раза больше случайных операций ввода-вывода в секунду и вплоть до В 4 раза больше последовательных операций ввода-вывода в секунду. Ключевое слово здесь - «до»: из-за характера чередования и выравнивания данных, если секторы, к которым осуществляется произвольный доступ, в основном, находятся на одном диске, вы получите гораздо меньшее количество операций ввода-вывода в секунду.
  • RAID1 (2-стороннее зеркалирование) сложнее профилировать. Поскольку разные диски могут выполнять поиск по разным данным, у них в 2 раза больше операций ввода-вывода в секунду при произвольном чтении, но такое же количество операций ввода-вывода в секунду при произвольной записи (или немного ниже из-за накладных расходов). Если все согласовано хорошо (например: большое, но не 100% последовательное чтение, RAID-контроллер, использующий концепцию / обработку фрагментов / полос даже в режиме зеркалирования, упреждающее чтение работает правильно и т. Д.), Последовательные чтения могут когда-то быть до 2x значения одного диска, в то время как последовательные записи остаются ограниченными 1x для одного диска (то есть: без ускорения)
  • RAID10 (4-стороннее зеркалирование) с точки зрения производительности находится на полпути между 4-сторонним чередованием RAID0 и 2-сторонним зеркалированием. Он имеет в 4 раза больше операций ввода-вывода в секунду при произвольном чтении и до 2 раз больше операций ввода-вывода в секунду при произвольной записи. Для последовательных передач применяется предостережение RAID1: иногда он имеет до 4 раз больше операций ввода-вывода в секунду при последовательном чтении, но только в 2 раза больше операций ввода-вывода в секунду при последовательной записи. Обратите внимание, что некоторые реализации RAID10 (а именно Linux MDRAID) предоставляют разные схемы для массивов RAID10, с другой профиль производительности.
  • RAID5 (чередующаяся четность) имеет до 4 раз больше операций ввода-вывода в секунду при произвольном чтении, а число операций ввода-вывода в секунду при произвольной записи, в зависимости от ряда факторов, таких как размер записи по отношению к размеру полосы, доступность большого кэша полос, алгоритм реконструкции полосы сам по себе (чтение-восстановление-запись против чтения-изменения-записи) и т. д. может иметь значение от 0,5x (или ниже) до 2x IOPS для одного диска. Последовательные рабочие нагрузки более предсказуемы: в 3 раза больше операций ввода-вывода в секунду по сравнению с одним диском (как для чтения, так и для записи)
  • RAID6 (чередующаяся двойная четность) ведет себя так же, как его собрат RAID5, но с меньшей производительностью записи. Он имеет в 4 раза больше операций ввода-вывода в секунду при произвольном чтении, чем один диск, но его производительность при произвольной записи даже ниже, чем у RAID5, с теми же абсолютными значениями (0,5x - 2x), но с более низким средним реальным числом слов. Последовательные чтения и записи ограничиваются вдвое большим количеством операций ввода-вывода в секунду по сравнению с одним диском.

Повторяю: это простые и почти неверные приближения. В любом случае, если вы хотите поиграть с (сильно неполным) калькулятором RAID IOPS, посмотрите Вот.

А теперь вернитесь в реальный мир. В реальных рабочих нагрузках, RAID10 часто является более быстрым и предпочтительным выбором, сохраняя высокую производительность даже перед лицом деградированного массива. RAID5 и RAID6 не следует использовать для рабочих нагрузок, чувствительных к производительности, если они не ориентированы на чтение или не являются последовательными по своей природе. Стоит отметить, что серьезные RAID-контроллеры имеют большой кэш с обратной записью, защищенный от потери питания в основном, чтобы преодолеть (за счет кэширования тяжелых полос) низкую производительность произвольной записи RAID5 / 6. Никогда не используйте RAID5 / 6 с RAID-контроллерами без кеширования, если вы действительно не заботитесь о скорости массива.

SSD разные звери, подумал. Поскольку они изначально имеют гораздо более низкое среднее время доступа, RAID-массивы на основе четности несут гораздо меньшие накладные расходы на производительность и являются гораздо более жизнеспособным вариантом, чем жесткие диски. Однако в небольшой рабочей нагрузке, ориентированной на произвольную запись, я бы все равно использовал настройку RAID10.

Это просто вопрос определений. Вы можете измерять количество операций ввода-вывода в секунду на разных уровнях системы и получать разные значения. Например, предположим, что у вас есть два зеркальных диска, и вы пишете так быстро, как только можете. Число операций ввода-вывода в секунду, поступающих на диски, будет вдвое больше числа операций ввода-вывода в секунду, которое может обработать один диск при аналогичной нагрузке записи. Но количество операций ввода-вывода в секунду, поступающих в контроллер, будет равно количеству операций ввода-вывода в секунду, которое может обработать один диск.

Обычно нас волнует, сколько логических операций ввода-вывода в секунду мы можем получить в массиве, и нас не особо заботит, что происходит на уровне диска. В этом случае вы правы, и количество операций ввода-вывода в секунду зависит от уровня RAID, количества дисков, производительности отдельных дисков и, в некоторых случаях, от конкретных характеристик операций.