Влияние уровней RAID на IOPS [закрыто]

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

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

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

11
задан 22 August 2017 в 23:39
2 ответа

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

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

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

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

12
ответ дан 2 December 2019 в 21:51

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

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

1
ответ дан 2 December 2019 в 21:51

Теги

Похожие вопросы