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


11

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

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

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


4
Вы упрощаете это до такой степени, что исключаете влияние кэша контроллера RAID, ОС, поведения приложения, синхронного или асинхронного ввода-вывода и типа диска. Так что ты ищешь?
17

@ewwhite Извините, мне следовало быть понятнее. Я действительно надеюсь увидеть, верен ли основной принцип моего мышления, а не делать реальные прогнозы. Я ценю, что на самом деле на вещи сильно влияют всевозможные оптимизации и другие сложности. На заднем плане возникает реальная ситуация, но, как это часто бывает, когда вы изучаете что-то, с чем вы не очень хорошо знакомы, я решил уйти и заняться фоновым обучением, поэтому чувствую себя немного более комфортно с основными принципами.
17

Мне хотелось спросить, есть ли у кого-нибудь какие-либо рекомендации по чтению хорошего качества, касающиеся теории и концепций, связанных с хранилищем и его производительностью, но я не сделал этого, так как думал, что это может считаться неподходящим вопросом для ServerFault. Похоже, что в Интернете было довольно мало качественных писем на эту тему, возможно, потому что это довольно сложный предмет, который мало кто понимает полностью.
17

Производительность RAID во многом зависит от аппаратного обеспечения контроллера и ограничений реализации, чем от уровня RAID. Например, RAID0, RAID1, RAID5 и RAID6 теоретически могут использовать все диски для длительного чтения, поэтому они могут иметь одинаковую скорость чтения на идеальном контроллере.
Zac67

Ответы:


12

Для HDD в IOPS обычно преобладает время доступа к диску, которое является суммой задержки поиска + задержки вращения + задержки передачи. Поскольку эти переменные сильно зависят от шаблонов доступа и имеют неочевидные взаимодействия с конкретной схемой RAID (т. Е. Размером полосы) и контроллером (т. Е. С настройкой чтения с опережением), любой простой ответ будет неверным.

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

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

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

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

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

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


Никогда не используйте RAID5 / 6 с RAID-контроллерами без кеша, если только вам не важна скорость работы массива. Вы можете обойтись без этого, если вы действительно знаете, что делаете, и имеете жесткий контроль над своим шаблоном ввода-вывода. Если вы делаете только последовательный ввод-вывод, соответствующий размеру полосы массива, вы можете избежать использования RAID5 / 6 без кеша. Кроме того, кэш не может сохранить производительность, если вы выполняете достаточно случайных операций записи небольших блоков в массив RAID5 / 6, хотя значение «достаточного количества операций ввода-вывода», которое убивает производительность, может быть огромным для действительно хорошего контроллера RAID.
Эндрю Хенле

@AndrewHenle Конечно, если только выдает последовательные операции чтения / записи с выравниванием по полосам, даже контроллер без кеша в режиме RAD5 / 6 может дать вам хорошие результаты. Однако это очень узкий шаблон использования (т. Е. Потоковое и резервное копирование). Для рабочей нагрузки общего назначения контроллер без кэш-памяти в сочетании с RAID-массивом любой четности будет работать очень медленно. Некоторым контроллерам даже необходим защищенный от потери кэш с обратной записью, чтобы позволить вам создать RAID четности.
Сёданшок

Я больше думал об администраторах, которые задаются вопросом, почему их корпоративный массив RAID6 с 21 диском для хранения почты с размером полосы 19 МБ, потому что он должен быть больше, медленнее ...
Эндрю

1

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.