Сравнение производительности серверных RAID-контроллеров Intel (на базе LSI) и Adaptec
Аннотация: Сравнение RAID-контроллеров: Intel на базе LSI2208, Intel на базе LSI2108, Adaptec 6805, Intel SCU (режим ESRT2). Вида тестов: последовательное чтение и запись, случайное чтение и запись. Типы RAID-массивов: RAID 0, RAID 10, RAID 5, RAID 50, RAID 6, RAID 60. Масштабируемость производительности дисковой подсистемы в диапазоне от 1 до 24 дисков SAS.
Мы провели сравнительное тестирование основных типов RAID-контроллеров, которые используются в наших серверах, с целью выработки рекомендаций по оптимальному выбору контроллера в зависимости от модели сервера, типа RAID-массива и количества жестких дисков.
Мы протестировали следующие RAID-контроллеры:
- RAID-модуль Intel RMS25CB080, устанавливаемый в специальный разъем x8 PCIe 3.0 на серверной системной плате. Результаты тестирования данного модуля применимы также к следующим RAID-модулям и RAID-контроллерам Intel, основанным на том же микропроцессоре LSI SAS2208: RMS25CB040, RMS25PB040, RMS25PB080, RS25DB080, RS25AB080, RS25NB008, RS25SB008. Это семейство 6-гигабитных SAS-контроллеров Intel 2-го поколения, разработанных для использования в серверах Intel на базе процессоров Intel Xeon E5-2600/2400 (серверная платформа Intel Romley EP/EN). На диаграммах мы будем обозначать этот контроллер для краткости как RS25.
- RAID-контроллер Intel RS2BL080, устанавливаемый в стандартный слот x8 PCIe 2.0 и основанный на микропроцессоре LSI SAS2108. Результаты тестирования данного контроллера применимы также к следующим контроллерам Intel, использующим тот же микропроцессор: RS2BL040, RS2WG160, RS2SG244. Это семейство 6-гигабитных SAS-контроллеров 1-го поколения, предназначенных для использования в серверах Intel на базе процессоров Intel Xeon 5600 (серверная платформа Intel Tulersburg EP). Этот контроллер обозначим RS2.
- Интегрированный 8-портовый 3-гигабитный SATA/SAS-контроллер (SCU) с программной поддержкой RAID 0/1/10/5, которым оснащены все системные платы серверов Intel нового поколения на базе процессоров Intel Xeon E5-2600/2400. Этот контроллер может работать либо в режиме RSTe (Intel Rapid Storage Technology), либо в режиме ESRT2 (Intel Embedded Server RAID Technology 2), использующем программный стек LSI MegaRAID. Мы протестировали данный контроллер в режиме ESRT2, поскольку только этот режим поддерживает массивы RAID 5 для SAS-дисков. Отметим также, что набор функциональных возможностей данного контроллера определяется типом установленного на системной плате сервера ключа активации RAID. Мы проводили тестирование с ключом RKSAS8R5, который обеспечивает максимальную функциональность — 8 портов SAS/SATA с поддержкой уровней RAID 0/1/10/5. Однако результаты тестов производительности применимы и ко всем другим ключам. Поскольку интегрированный контроллер в режиме ESRT2 не позволяет использовать расширитель портов, максимальное число дисков для него — 8. Этот контроллер обозначим как ESRT2.
- RAID-контроллер Adaptec 6805 с интерфейсом x8 PCIe 2.0. Это хорошо зарекомендовавший себя контроллер, который наряду с контроллерами Intel используется нами в серверах на базе процессоров Intel Xeon 5600. Этот контроллер для краткости обозначим 6805.
Мы измерили производительность вышеперечисленных контроллеров на операциях последовательного и случайного чтения/записи для различных типов RAID-массивов (RAID 0, RAID 1, RAID 10, RAID 5, RAID 50, RAID 6, RAID 60) при разном количестве дисков в RAID-массиве — от минимального до максимально возможного (в основном, это 24 диска). Тестирование выполнялось при помощи программы IOmeter со следующими параметрами: кэш-память контроллера и дисков отключена, глубина очереди — 256 (чтобы сравнивать только пиковую производительность), параметр Strip Size — 256KB, размер блока данных — 256KB для последовательных операций и 4KB для случайных операций. Скорость последовательных операций измерялась в MB/s, случайных — в IOPS (количество операций ввода/вывода в секунду).
Для тестов мы использовали сервер Team R2000GZ с дисковой подсистемой в составе:- Один из тестируемых контроллеров.
- Расширитель SAS-портов Intel RES2CV360 на 36 портов, к которому мы подключали 8 портов контроллера и жесткие диски. При тестировании встроенного контроллера ESRT2, который поддерживает максимально 8 дисков, расширитель не использовался.
- 24 жестких диска Seagate SAS 2,5" Seagate Savvio 10K.5 300GB 6Gb/s 10000RPM 64MB Cache.
Рассмотрим результаты тестирования применительно к различным типам RAID-массивов.
В массиве RAID 0 данные разбиваются на отдельные фрагменты, которые записываются (или читаются) параллельно на все диски массива. Поэтому массив RAID 0 теоретически должен быть быстрее одиночного диска во столько раз, сколько в нем дисков.
При последовательном чтении контроллеры Intel работают одинаково и демонстрируют практически максимальную теоретически возможную производительность до размера массива 18 дисков. Контроллер 6805 нормально масштабируется до 16-ти дисков в массиве. Максимальная скорость для интегрированного контроллера ESRT2 — утроенная производительность одного диска.
При последовательной записи RS25 нормально масштабируется даже лучше, чем при чтении — до 22-х дисков. В остальном картина примерно такая же, что и при чтении.
При случайных операциях ввода-вывода все аппаратные контроллеры демонстрируют одинаковую скорость, поскольку производительность здесь ограничивается возможностями жестких дисков. Программный контроллер ESRT2 уступает в скорости более чем в два раза.
"Классический" массив RAID 1 состоит из двух дисков, которые содержат одинаковый набор данных. Поэтому такой массив часто называют "зеркалом".
Если объединить несколько массивов RAID 1 в массив RAID 0 для параллельной обработки данных с целью увеличения производительности, получится массив RAID 10. В таком массиве отдельные зеркальные пары, состоящие из двух дисков (массивы RAID 1), называются "спанами".
Если мы имеем дело с контроллером Adaptec, то для массива RAID 10 мы можем назначить максимум 8 спанов, то есть максимальный размер массива RAID 10 — 16 дисков (с помощью некоторых ухищрений это ограничение можно обойти).
Для контроллеров Intel все проще — можно создать массив RAID 1 из любого четного количества дисков. Фактически будет создан массив RAID 10, в котором количество спанов равно количеству дисков в массиве, деленному на два. Но можно создать массив RAID 10 и в явном виде, правда, при этом количество спанов будет ограничено восемью, зато в спане может быть не два, а любое четное количество дисков. Однако делать это незачем, поскольку в итоге все равно получатся одинаковые массивы, состоящие из параллельных зеркальных пар, а производительность массивов RAID 1 и RAID 10 при одинаковом количестве дисков будет тоже одинаковой.
При последовательном чтении скорость массива RAID 1 примерно такая же, как у RAID 0, потому что разные блоки данных могут читаться одновременно с обоих дисков зеркальной пары. Небольшой проигрыш массиву RAID 0 может объясняться тем, что данные с каждого диска читаются не непрерывно, а через блок, поэтому нужно дополнительное время на позиционирование головок.
На чтении контроллеры Intel показывают скорость, близкую к теории, причем "старый" контроллер даже быстрее. На скорости 3GB/s достигается предел пропускной способности контроллера, как и для RAID 0. Контроллер 6805 нормально масштабируется до 8 дисков, но затем производительность не растет. Программный контроллер проигрывает по скорости в два раза.
При последовательной записи необходимо записывать данные на оба диска зеркальных пар, поэтому максимальная теоретическая скорость записи в два раза ниже, чем при чтении. На диаграммах мы видим отличное масштабирование для контроллеров Intel, предел в 8 дисков для 6805 и двукратное отставание в скорости для программного ESRT2. Однако до 4-х дисков в массиве программный контроллер справляется с операцией записи не хуже аппаратных конкурентов.
На операциях случайного чтения скорость массива RAID 1 сначала даже превышает "теоретическую" и при любом количестве дисков немного выше, чем для массива RAID 0. Это может быть связано с тем, что у контроллера есть выбор из двух дисков зеркальной пары при чтении случайного блока данных и он может читать с того диска, головки которого расположены ближе к нужному сектору. Производительность всех аппаратных контроллеров одинакова, 6805 даже выглядит лучше. ESRT2 уступает по скорости в три раза.
При случайной записи необходимо записывать данные на оба диска зеркальной пары, поэтому максимальная теоретическая скорость в два раза ниже, чем для RAID 0. Все контроллеры нормально масштабируются до максимального количества дисков в массиве, программный ESRT2 проигрывает в производительности примерно в два раза.
В массиве RAID 5 блоки данных записываются и считываются параллельно на несколько дисков, как в массиве RAID 0, но число таких "параллельных" блоков на единицу меньше, чем число дисков в массиве. Дело в том, что для каждого набора таких блоков формируется еще блок четности, который записывается на один из дисков массива. Эти блоки четности распределяются равномерно на всех дисках массива. Поэтому при последовательных операциях чтения-записи теоретическая скорость массива RAID 5 должна соответствовать скорости массива RAID 0, в котором на один диск меньше.
При последовательном чтении контроллеры Intel достигают максимальной производительности при 19-ти дисках и далее скорость не растет. Контроллер 6805 масштабируется до 9 дисков. Программный ESRT2 демонстрирует очень хорошую производительность, примерно равную аппаратным контроллерам.
При последовательной записи лучшие результаты у контроллера Intel RS25. RS2, который практически не уступал в предыдущих тестах, отстает при девяти и более дисках в массиве. Это может объясняться тем, что у RS25 более мощный блок вычислений четности. Программный контроллер снижает производительность при увеличении количества дисков в массиве. Сказывается отсутствие аппаратного блока вычислений четности.
На операциях случайного чтения скорость массива RAID 5 равна скорости RAID 0, поскольку данные четности распределены по всем дискам массива равномерно и контроллер может читать случайные блоки данных параллельно со всех дисков. Поэтому все контроллеры здесь показывают такие же результаты, как и для массива RAID 0 с таким же количеством дисков.
А вот при случайной записи картина совершенно иная. Когда нужно записать блок данных на один из дисков, контроллер должен прочитать соответствующий "старый" блок данных (чтобы «знать», как изменить блок четности), соответствующий ему блок четности, а затем записать «новый» блок данных и измененный блок четности. Поскольку мы проводили тестирование с отключенным кэшем контроллера, последний не оптимизировал очередность выполнения запросов и роста производительности при увеличении количества дисков не происходило. В «нормальных» условиях (с включенным кэшем контроллера на запись) RAID 5 из 24 дисков будет работать примерно как RAID 0 из восьми дисков (штраф на запись 4).
Массив RAID 50 получается из двух или более массивов RAID 5, объединенных в массив RAID 0. Массивы RAID 5, входящие в состав массива RAID 50, называются спанами. Каждый такой спан использует для хранения данных четности объем одного диска.
Мы протестировали массивы RAID 50, состоящие из двух (RAID 52) и четырех (RAID 54) спанов. Теоретическая производительность этих массивов на последовательных операциях должна соответствовать производительности RAID 0 с количеством дисков на 2 (для RAID 52) или 4 (для RAID 54) меньше.
При последовательном чтении в массиве RAID 52 оба контроллера Intel ведут себя одинаково и масштабируются до предела пропускной способности контроллера 3GB/s. 6805 масштабируется только до 10 дисков. Программный контроллер массивы RAID 50 (а также все типы массивов, которые будут рассмотрены далее) не поддерживает, поэтому на следующих диаграммах он отсутствует.
При последовательной записи, когда необходимо выполнять вычисления четности, проявляется значительное превосходство контроллера RS25.Его производительности хватает для практически идеального масштабирования массивов до 18 дисков. Остальные контроллеры выходят на плоскую кривую уже на 10 дисках.
В массиве RAID 50 из четырех спанов (обозначен RAID 54) уже четыре "лишних" диска для хранения данных четности, а минимально возможное количество дисков в массиве — 12. При последовательном чтении контроллеры Intel масштабируются хорошо до 24-х дисков, а контроллер 6805, как и ранее, при размере массива более 10 дисков на их количество "не реагирует".
При последовательной записи для RAID 54 преимущество нового контроллера Intel в вычислительной мощности вновь обеспечивает ему безоговорочное лидерство. Очевидно, что этот контроллер заведомо создавался для работы с количеством дисков, большим, чем 8, в отличие, например, от контроллера 6805.
При случайном чтении производительность массива RAID 50 из двух спанов (RAID 52) такая же, как у массивов RAID 5 и RAID 0 из такого же количества дисков — из-за того, что данные четности распределены равномерно по всем дискам массива, скорость случайного чтения пропорциональна общему (а не "полезному") количеству дисков.
При случайной записи в массиве RAID 50 из двух массивов RAID 5 (спанов) теоретическая скорость равна скорости двух дисков, поскольку скорость одного массива RAID 5 при случайной записи равна скорости одного диска (см. выше раздел о RAID 5). Мы видим, что контроллеры Intel успевают считать четность для любого количества дисков в массиве, а вот 6805 имеет недостаточную для этого производительность. Отметим, что при включении на запись кэш-памяти контроллера картина существенно изменится в лучшую сторону.
Скорость случайного чтения для массива RAID 50 из четырех спанов (RAID 54) должна быть такой же, как и для массивов RAID 0, RAID 5 и RAID 52 из такого же количества дисков. Однако на практике мы видим некоторое отклонение от "теории" для массива RAID 50 из 16 дисков для контроллеров Intel.
Скорость случайной записи для массива RAID 50 из четырех спанов "теоретически" должна быть не хуже производительности четырех дисков. В общем, примерно так и есть. 6805 опять проигрывает на вычислениях четности. И опять нужно отметить необходимость использования кэш-памяти контроллера на запись.
Массив RAID 6 имеет по сравнению с RAID 0 уже два дополнительных диска, поскольку этот массив хранит два независимых набора контрольных сумм. Как и в RAID 5 "избыточные" данные распределяются равномерно по всем дискам массива.
На операциях последовательного чтения все контроллеры показывают производительность, близкую к теоретической и равную производительности массива RAID 0 с количеством дисков на два меньше. А вот при записи мощности блока вычислений контрольных сумм достаточно только у контроллера Intel RS25.
На случайном чтении производительность одинакова на всех типах массивов (RAID 0, RAID 5, RAID 6) и зависит только от числа дисков.
При случайной записи скорость массива RAID 6 примерно соответствует скорости одного диска, поскольку при записи блока данных контроллер должен сначала прочитать «старый» блок данных и соответствующие ему блоки четности, а затем записать «новый» блок данных, пересчитать блоки четности и записать их. Картина была бы иной, если бы мы включили кэш контроллера на запись. В этом случае производительность будет расти с увеличением количества дисков с учетом штрафа на запись 6 по сравнению с массивом RAID 0 с таким же количеством дисков.
Массив RAID 60 получается путем объединения двух или более массивов RAID 6 (спанов) в массив RAID 0. Каждый массив RAID 6 в составе RAID 60 будет иметь по два дополнительных диска для хранения контрольных сумм. Всего в массиве RAID 60 из двух спанов будет четыре дополнительных диска, а в массиве из четырех спанов — восемь. При этом контрольные суммы записываются на все диски массивов. Мы протестировали массивы RAID 60 из двух спанов (RAID 62) и из четырех спанов (RAID 64).
Здесь оба контроллера Intel при чтении справляются с любым количеством дисков практически идеально, чего не скажешь о 6805, для которого максимальное "нормальное" количество "полезных" дисков по прежнему равно восьми.
При записи контроллеру Intel RS2 не хватает производительности при числе дисков более 12-ти, а 6805 вообще показывает необъяснимо низкий результат.
Для массива RAID 60 из четырех спанов при 16 дисках (RAID 64) на операциях последовательного чтения все контроллеры показывают одинаковую скорость, которая равна теоретической скорости массива RAID 0 из восьми дисков. При большем количестве дисков производительность 6805 не растет, а вот оба контроллера Intel даже обгоняют "теорию". При записи Intel RS25 вполне на уровне, RS2 опять испытывает "вычислительный" дефицит, а 6805 опять работает необъяснимо медленно.
На операциях случайного чтения все контроллеры обеспечивают стандартную для всех массивов RAID 62 производительность, равную производительности RAID 0 из такого же количества дисков.
На операциях случайной записи снова все «портит» отсутствие аппаратного кэша, что не позволяет контроллерам включить режим оптимизации обработки запросов.
Для массивов RAID 64 при случайном чтении на производительность начинает оказывать сложность организации массивов, хотя при 24 дисках в массиве все контроллеры работают одинаково и точно так же, как и все остальные массивы (кроме RAID 10) при этом количестве дисков, и выдают 6000 IOPS.
Графики случайной записи вновь подтверждают необходимость использования кэш-памяти контроллера на операциях записи.
Шести-гигабитные контроллеры Intel второго поколения (RS25) на всех типах тестов и для всех видов RAID-массивов показали производительность, близкую к теоретически предельной при любом количестве дисков вплоть до максимального в системе (24 диска). Эти контроллеры обладают достаточной пропускной способностью по чтению и записи, а также отличной производительностью вычислительного блока, ответственного за формирование блоков четности и контрольных сумм.
Шести-гигабитные контроллеры Intel первого поколения (RS2) при количестве "полезных" дисков в массиве до восьми (то есть без учета дополнительных дисков, необходимых для хранения избыточных данных) демонстрируют такую же производительность на всех тестах и ни в чем не уступают RS25. При большем количестве дисков на операциях, требующих вычислений четности (RAID 5) или контрольных сумм (RAID 6), производительности этих контроллеров уже недостаточно из-за меньшей мощности вычислительного блока и меньшей производительности по IOPSам.
Интегрированный на серверной системной плате программный RAID-контроллер в режиме ESRT2 можно рекомендовать для небольших RAID-массивов RAID 1 и RAID 5 с преобладанием операций чтения. Особенно хорошо этот контроллер "смотрится" на операциях последовательного чтения в массивах RAID 5, где практически не уступает аппаратным контроллерам вплоть до размера массива в восемь дисков.
Контроллер Adaptec 6805 при размере RAID-массива до восьми "полезных" дисков демонстрирует производительность, сопоставимую с контроллерами Intel, а на некоторых тестах даже опережает их. Однако при большем количестве дисков производительности недостаточно, поскольку этот контроллер изначально не предназначен для работы с более чем 8-ю дисками, а также, возможно, тем, что данный контроллер не учитывает особенностей работы расширителя SAS-портов, который используется в новых серверах Intel.
05.09.2012