Мега-контроллер от LSI Logic


Среди всех классов жестких дисков вторая часть связки диск-контроллер наибольшее значение ныне имеет для SCSI-дисков. Вот сегодня мы и рассмотрим один из представителей этого семейства, не все же нам диски тестировать, надо и на контроллеры внимание обращать. Позвольте представить, герой сегодняшнего обзора, SCSI RAID-контроллер LSI MegaRAID 320-2. Честно говоря, я думал, что приставки вроде Mega, Giga, Super, Maxi, Turbo, Hyper, Pooper, Boss PRO по большей части используют китайские производители (в худшем смысле этого слова) в названиях продуктов, которым обычно нечем похвастаться, кроме громкого имени. (Еще такими словами любят украшать свои ники подростки в пору бурной своей социализации, по числу этих приставок можно судить о количестве и махровости их комплексов). На удивление Mega-приставку получил контроллер, заподозрить который в неуместном «щеконадувании» трудно после прочтения первой же страницы его характеристик.

Небольшое отступление. Провести полномасштабное тестирование на всех возможных режимах для столь навороченного (пока поверьте на слово, все подробности дальше) контроллера не представляется возможным, поэтому сегодня подробно опишем возможности и настройки контроллера. В тестовой части статьи ограничимся сравнением производительности отдельного диска Seagate Cheetah 15K.3 на контроллере Adaptec 39320D и массивов RAID0 и RAID1, созданных из двух дисков Seagate Cheetah 15K.3 на тестируемом сегодня контроллере.

Теперь подробнее о герое. Контроллер имеет два канала Ultra320 SCSI, обеспечиваемые одним dual-SCSI контроллером 53C1030 от LSI Logic. Каждый канал допускает подключение до 15 устройств. На плате присутствуют два внешних и два внутренних 68-контрактных разъема.

Поддерживаются следующие уровни RAID: RAID0, RAID1, RAID5, RAID10, RAID50. Более подробно об уровнях RAID можно прочесть здесь.

MegaRAID поддерживается размер сегментов страйпа в 2KB, 4KB, 8KB, 16KB, 32KB, 64KB или 128KB.

RAID0. Массив может быть организован на дисках количеством от 1 до 30 (именно так написано в руководстве пользователя, можно с уверенностью предположить, что RAID-массив из одного диска будет аналогичен отдельно используемому диску).

RAID1. Массив может быть организован только на 2 дисках.

RAID5. Массив может быть организован на дисках количеством от 3 до 30.

RAID10. Число дисков, организующих массив, должно составлять от 4 до 30 и обязано быть кратным двум. Последнее условие налагается в связи с тем, что первоначально каждые два диска объединяются в RAID1 массив, а потом создается RAID0 массив RAID1 массивов (страйп зеркал). Наглядно структуру массива можно видеть ниже (иллюстрация из руководства пользователя контроллера MegaRAID 320-2):

RAID50. Массив может быть организован на дисках количеством от 6 до 30. Внутренняя организация подобна RAID10 и представляет собой страйп массивов RAID5. Рисунок ниже иллюстрирует принцип построения такого массива.

Также кратко перечислим некоторые характеристики и дополнительные возможности контроллера:

  • Возможность удаленного конфигурирования и управления массивами дисков через MegaRAID WebBIOS.
  • Собственная звуковая сигнализация наличия проблем.
  • Возможность горячей замены дисков.
  • Батарея backup'а, сохраняющая информацию кэша в течение 72 часов (на тестируемом экземпляре отсутствовала).
  • Наличие NVRAM для сохранения текущей конфигурации дисковой подсистемы (32KB × 8).
  • Хранение firmware во флеш-памяти, облегчающее его обновление (1MB × 8 flash ROM).
  • Возможность установки на плату 32MB, 64MB, 128MB или 256MB кэша (на тестируемом экземпляре установлено 64MB, устанавливается в 168-pin разъем SDRAM DIMM).
  • Возможна установка до 30 дисков на контроллер (по 15 на канал).
  • Поддержка до 40 логических дисков на контроллер.
  • Возможность использования до 12 контроллеров в системе.
  • Тип системной шины — PCI 64bit/66MHz, таким образом, пропускная способность шины составляет 533MB/sec.
  • Поддержка кэширования записи write-back, write-through, а также чтения adaptive read ahead, non read ahead, read ahead.

В контроллере используется процессор Intel 80303 (100MHz), на который возлагаются функции управления кэшем, исправления ошибок, rebuild'а дисков и т. п.

После попадания в основное меню BIOS'a контроллера можно создать новый массив, инициализировать уже созданные, удалить массив и просмотреть текущую конфигурацию.

Кратко процедуру создания RAID-массива можно описать следующим образом. При выборе пункта меню «Создать массив» первым делом предлагается выбрать диски, на которых будет создаваться RAID-массив. Далее требуется указать тип массива из возможных при таком количестве выбранных дисков (естественно, чтобы не вводить в заблуждение, перечисляются только допустимые варианты).

После этого с учетом размеров дисков и типа массива автоматически подсчитывается размер будущего логического диска. Также можно выбрать размер сегмента страйпа из значений 2KB, 4KB, 8KB, 16KB, 32KB, 64KB или 128KB; тип кэширования при записи write-back или write-through; тип кэширования при чтении adaptive read ahead, non read ahead или read ahead.

Тесты

Тесты проводились на двух стендах.

Первый стандартен для тестирования дисков. Он таков:

  • Системная плата — Supermicro 370DLE (BIOS ver. R1.32);
  • Процессор — Intel Pentium III 800EB;
  • Память — 512 MB PC133 SDRAM;
  • Системный диск — Seagate Barracuda ATA IV ST340016A;
  • ОС — Windows 2000 Professional SP4;
  • LSI MegaRAID 320-2 (BIOS ver. 1.04, firmware ver. 1L19, driver ver. 2.0.0.0) установлен в пятый слот PCI (первый слот PCI64);
  • SCSI-адаптер (для тестирования отдельного диска) — Adaptec 39320D (BIOS ver. 4.00.0, driver ver. 2.0.0.0) установлен в пятый слот PCI (первый слот PCI64).

Второй:

  • Системная плата — Tyan GC-SL (S2707);
  • Процессор — Intel Pentium IV 3,06GHz;
  • Память — 512 MB SDRAM;
  • Системный диск — Seagate Barracuda ATA IV ST340016A;
  • ОС — Windows 2000 Professional SP4.
  • LSI MegaRAID 320-2 (BIOS ver. 1.04, firmware ver. 1L19, driver ver. 2.0.0.0) установлен в пятый слот PCI (первый слот PCI-X, 133/100/66MHz, 64bit).

Использование двух тестовых стендов потребовалось, чтобы у процессорозависимых тестов присутствовала возможность сравнить результаты с ранее полученными, это позволяет сделать первый стенд. С другой стороны, надо постепенно переходить на более производительные платформы, иначе начинает появляться несбалансированность стенда — современные диски и контроллеры и процессор не то чтобы морально устаревший, но предпоследнего поколения.

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

Набор тестов стандартный.

  • Ziff-Davis WinBench 99 ver. 2.0;
  • Intel IOMeter.

Массивы RAID0 и RAID1 создавались с установками по умолчанию, в этом случае размер блока был равен 64KB, тип кэширования — write through, adaptive read ahead.

Ziff-Davis WinBench 99

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

Для RAID1 ситуация понятна — чтение происходит с того диска, головка на котором ближе к местоположению нужного блока, в результате мы имеем небольшое преимущество. С RAID0 кажется запутанной, временно оставим комментарии на потом, предлагаю перейти к графикам линейной скорости чтения.


RAID1 Seagate Cheetah 15K.3


RAID0 Seagate Cheetah 15K.3


Seagate Cheetah 15K.3 (SCSI адаптер Adaptec 39320D)

Экзотика на первом графике и оригинальные результаты на втором. На графике для массива RAID0 линейная скорость чтения колеблется в пределах от 95MB/sec до 105MB/sec (а также провал до 83MB/sec прямо посередине). Это не очень согласуется с тем, что можно было бы предположить. Если считать, что, например, первый сегмент пишется в начало первого диска, второй — в конец второго, третий — после первого сегмента на первом диске, четвертый — перед последним сегментом на втором и т. д., то тогда теоретический максимум скорости линейного чтения (чтение происходит в аналогичном порядке) может достигать 130 — 135MB/sec, а минимум не должен быть ниже 120-125MB/sec. При другой реализации порядка записи сегментов на диски, например, первый сегмент — в начало первого диска, второй — в начало второго, третий — после первого на первый диск, четвертый — после первого на второй и т. д., теоретический максимум составит 150MB/sec, минимум — 100MB/sec. Естественно, всегда надо иметь в виду, что теоретическое значение в мире высоких технологий практически не достижимо, но и откровенные несоответствия тоже наблюдаются редко. В разделе Intel IOMeter у нас будет возможность сравнить полученный график с результатами теста «sequential read».

График линейного чтения для RAID1 имеет конкретно инопланетную природу, причем из мира с абсолютно другими законами физики. Попытки повторить эксперимент и получить подобный график во второй раз не увенчались успехом — график получался столь же лунным, но скачки и провалы располагались абсолютно произвольно.

Результаты теста времени доступа вполне предсказуемы: RAID0 ведет себя практически аналогично отдельному диску, при использовании массива RAID1 в игру вступает оптимизация контроллером выбора диска, с которого в данный момент будет производиться считывание, что приводит к приличному уменьшению времени доступа.

Напомню, что среднее время доступа складывается из среднего времени перемещения головки чтения/записи на нужную дорожку и среднего времени задержки (average latency), равного в случае единственного диска половине времени полного оборота диска (это есть математическое ожидание равномерно распределенной случайной величины). Для 15000 prm полный оборот составит 4 мс, тогда математическое ожидание равно 4 × 1/2 = 2 мс (это и есть average latency). Если мы возьмем два диска, на которых будет содержаться одинаковая информация (как в случае RAID1), то при условии одновременного позиционирования двух головок на обоих дисках на нужную дорожку, среднее время начала чтения хотя бы с одного из дисков будет составлять 4 × 1/3 мс (математическое ожидание наступления хотя бы одного события для двух равномерно распределенных на одном и том же интервале случайных величин), или 1,33 мс. Естественно, выигрыш по среднему времени доступа в RAID1 идет не по описанному выше сценарию уменьшения среднего времени задержки. Однако этот сценарий является некоей идеализированной моделью поведения головок чтения/записи при перемещении на нужную дорожку. Если знать, что среднее время позиционирования на нужную дорожку для одного диска составляет 5,9 — 2 = 3,9 мс, и если предположить, что это время равномерно распределено, то тогда для двух дисков среднее время позиционирования на нужную дорожку хотя бы на одном диске составит (3,9 × 2) × 1/3 = 2,6 мс. Но время позиционирования никогда не может быть равномерно распределено, потому что, как минимум, скорость движения штанги с головкой чтения/записи непостоянна, ей требуется время для разгона и остановки. Поэтому среднее время доступа для RAID1 равно не 2 + 2,6 = 4,6 мс, а в данном случае 5,2 мс, что на самом деле очень даже хорошо.





В тестах Ziff-Davis WinMarks Maxtor картина получается достаточно предсказуема: массив RAID1 чуть-чуть опережает одиночный диск, а RAID0 сильно вырывается вперед.

Intel IOMeter

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







Четыре вышеприведенных графика суть наглядная иллюстрация теоретических выкладок «О производительности RAID-систем». В паттернах «workstaion» и «file-server» доля запросов на запись составляет 20% — в этих случаях при увеличении нагрузки мы видим некоторое отставание массива RAID1, на графике «database», где доля запросов на запись уже 33% — отставание более заметно. В это же время, на графике «web-server», где запросы на чтение составляют все 100%, видим более чем десятипроцентное превосходство RAID1 массива, напрямую связанное с меньшим временем доступа, показанным в тесе WinBench. Еще следует отметить, что при максимальных нагрузках производительность двухдискового массива RAID0 достигает практически удвоенной производительности одного диска, что приближается к теоретическому пределу увеличения производительности дисковой подсистемы с увеличением числа дисков, входящих в RAID0-массив.

Все сказанное выше относительно паттерна «web-server» оказывается абсолютно справедливо и для «random read».

Опять наглядное подтверждение теоретических выкладок — производительность RAID0 практически приближена к теоретическому двукратному максимуму, производительность RAID1 колеблется около результатов отдельного диска.

Картина достаточно предсказуема, при минимальной нагрузке и отдельный диск, и массивы ведут себя практически одинаково, только не очень понятен сильный рост производительности RAID0 массива при увеличении доли операций на запись до 80-100%.



При длине очереди, равной 16 или 256, наблюдается картина, аналогичная описанной выше: при 100% чтения RAID1 превосходит RAID0, с увеличением процента записи производительность зеркалки снижается, а при достижении уровня 100% записи производительность двухдискового RAID1 падает до производительности отдельного диска.

Замечательное явление — скачок производительности RAID0 массива более чем в два раза при увеличении размера бомбардируемого блока до 64KB — как вы помните, именно таков был размер блока страйпа. Честно говоря в свете этого не очень понятен график линейного чтения, построенный WinBench'ем для RAID0, почему там скорость колебалась в районе 100MB/sec? Продолжение роста производительности массива RAID1 при чтении блоков, больших 64KB, можно объяснить следующим образом. Сначала такой блок разбивается на подблоки, размером равные размеру страйпа, т. е. в нашем случае 64KB. Далее процесс чтения может некоторым образом оптимизироваться контроллером, когда разные подблоки будут читаться с разных дисков. Можно предположить, что в некоторые моменты времени будут параллельно считываться разные подблоки с разных дисков, за счет этого и наблюдается рост производительности.

На этот раз результаты предсказуемы, в случае RAID1 писать приходится на оба диска сразу, причем одну и ту же информацию, соответственно, превысить скорость линейной записи на единственный диск невозможно. На RAID0 после увеличения размера блока до сакральных в нашем случае 64KB, как и при последовательном чтении, происходит практически двукратный скачок производительности. Примечательно, что на обоих графиках при размере блока до 64KB оба RAID'а ведут себя примерно одинаково и, например, при бомбардировке блоками по 8KB более чем два раза отстают от одиночного диска.

Выводы

С точки зрения комплектации и возможностей контроллер много чего имеет и умеет, более подробно смотри начало статьи.

С точки зрения производительности контроллер получился удачный, в синтетических тестах на максимальной нагрузке производительность RAID-систем вплотную приближается к теоретическому пределу, а, вообще говоря, «хорошесть» контроллера заключается в приближенности к теоретически возможным результатам, а значит и предсказуемости поведения.

Средние текущие цены (количество предложений) на контроллер (в комплектации, побывавшей на тестировании) в московской рознице:   Н/Д(1)

Контроллер LSI MegaRAID 320-2,
а также оборудование для второго тестового стенда
предоставлены компанией «3Logic Inc» — официальный дистрибутор LSI Logic, Micron и Tyan в России

Жесткие диски Seagate предоставлены компанией «ASBIS»





Дополнительно

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.