Обзор RAID-контроллера Areca ARC-1220

Автор: Glottis, niknik
Дата: 10.07.2006
Все фото статьи

Введение


Сегодня мы рассмотрим новый восьмиканальный SATA II RAID контроллер от компании Areca. Рискнём предположить, что с продукцией этой компании большинство наших читателей доселе не встречались. А может и встречались, только не знали, что это контроллеры Areca - по "загадочным" причинам в Европе контроллеры Areca продаются под торговой маркой Tekram. При этом, единственное отличие от фирменных контроллеров Areca заключается в надписи на коробке.

В наши руки попал оригинальный контроллер Areca, без малейшей примеси Tekram:







Восьмиканальный контроллер ARC-1220 "основывается" на базе процессора Intel IOP333 (частота процессора - 500МНz!!!) и может поддерживать до восьми SerialATAII дисков (поддерживающих передачу данных на скорости в 3Гбит/сек). Размер встроенной памяти контроллера – 128Мб (без возможности расширения), батарея питания кеша (BBU) - поставляется отдельно. Контроллер позволяет создавать следующие типы RAID-массивов – 0, 1, 3, 5, 6, 10, и JBOD. Контроллер выполнен в набирающем популярность PCI-E -исполнении (название модели-аналога для шины PCI-X - ARC-1120).

Контроллер также можно программно переключить в режим SATA-контроллера, т.е. отключить все RAID-функции, но кому может понадобиться восьмиканальный SATA-контроллер за ~700 у.е. - непонятно.

А сейчас следует немного рассказать про новый для нас тип массива - RAID6, поддерживаемый контроллером Areca.
В принципе, ничего сверхъестественного в RAID6 - нет. По сути это дельнейшее "развитие" идеи RAID5 - вращающаяся чётность, только контрольная сумма (она же чётность) для каждого страйпа пишется не на один диск, а на два!


где D1, D2 и т.п. - данные, а P1-2 - чётность для блоков данных D1 и D2.
Таким образом минимальное количество дисков в массиве RAID6 составляет 4. При этом полезная ёмкость массива RAID 6 = (N-2) * объём диска, что, конечно, меньше, чем у массива RAID5 из такого же количества дисков.
Да, для четырёхдискового массива коэффициент использования дисков в массиве у RAID6 получается точно таким же, как у RAID10 - 0.5. Не надо печалиться - для массивов из большего количества дисков коэффициент использования дисков быстро становится вполне разумным.
Для чего же нужно хранить копию контрольной суммы страйпа? - Для того, чтобы массив мог без потери данных перенести отказ ДВУХ любых дисков!

Для массивов из "недорогих" и, соответственно, не слишком надёжных дисков этот тип массива - RAID6 - является вполне разумным компромисом между объёмом и надёжностью. А вот как насчёт скорости?
Теоретически, она не должна уступать скорости массива RAID5 - так как основные затраты времени при записи - расчёт контрольной суммы, а лишняя запись легко парируется кэш-памятью контроллера и (или) дисков.
Собственно, сейчас мы и проверим наши предположения...

Методика тестирования


Тестовая система:

корпус -Intel SC5200
материнская плата – Intel SE7520BD2;
процессор - 2 x Intel Xeon 2.8/800FSB;
память - 2 x 512MB DDR SDRAM PC3200 ECC Registered;
винчестер - IBM DTLA 307015;
видеокарта – onboard ATi Rage XL;
операционная система - Windows 2000 Pro SP4.

Использовались следующие тесты:

FC-Test v1.0 bild 13
IOMeter 2003.02.15

Для сравнения скорости работы винчестеров при помощи теста IOMeter использовались паттерны Fileserver & Webserver.


Эти паттерны призваны измерить производительность дисковой подсистемы при нагрузке, типичной для file- и web-серверов.
Паттерн Workstation, используемый нами, создан нашим автором Романовым Сергеем aka GReY на основании статистики обращений к диску при работе различных приложений, приведённой в описании SR Testbed3. Статистические данные собраны на файловой системе NTFS5 в режимах работы Office, Hi-End и Boot-up.


Этим паттерном мы будем руководствоваться для оценки привлекательности винчестеров для обычного Windows-пользователя.
Ну и, наконец, была проверена способность винчестеров работать с Sequential-запросами переменного размера на чтение/запись и скорость дисков в паттерне Database, имитирующем работу дисковой подсистемы с SQL-подобными запросами.
Контроллер тестировался с драйверами 1.02. Контроллер устанавливался в слот PCI-E 8x. Диски WD740GD (Raptor) устанавливались в штатные салазки корпуса SC5200 и крепились четырьмя винтами за нижнюю грань.

Результаты тестов


Традиционно, начнем обзор с тестирования работы контроллера со смешанными потоками запросов:

IOMeter: паттерн Database

В этом паттерне мы посылаем смешанные запросы на чтение и запись блоков данных объемом 8КБ со случайным адресом. Изменяя соотношение запросов, мы можем выявить качество сортировки их драйвером контроллера.

Результаты работы контроллера представлены в следующих таблицах:




Рассмотрим их виде графиков. Зависимости скорости передачи данных от удельного веса запросов на запись построим для очередей с глубиной в 1, 16 и 256 запросов. Для большего удобства, разобьем массивы на две группы:


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


Зеркальный массив RAID1 и массивы RAID6-RAID6 во всех режимах демонстрируют очень близкие скорости. Массив RAID10 на их фоне выглядит более прилично, но, скорее всего, за счёт своей RAID0-составляющей. По-видимому, такая нагрузка еще недостаточна для демонстрации эффективности работы алгоритмов этих массивов, хотя время на их обработку уже тратится.


Увеличение нагрузки приводит к тому, что пропорциональность скоростей количеству дисков в массивах RAID0 становится заметна уже в режиме со ста процентами запросов на чтение. Однако в отличие от одиночного диска, скорости работы массивов RAID0 практически не растет с ростом числа запросов на запись. Стоит также отметить разные алгоритмы работы JBOD и RAID0-массивов в отношении запросов на запись.


С ростом числа запросов на запись скорости всех массивов данной группы заметно снижаются. У зеркальных массивов RAID1 и RAID10 это связано с повышенной скоростью чтения, благодаря интеллектуальному выбору оптимального (по положению головок) диска из зеркальной пары. Скорости работы массивов RAID5 и RAID6 при чтении достаточно высоки, но с ростом числа запросов на запись из-за потери времени на создание контрольной суммы при обработке этих запросов их скорость падает очень резко. И вот что странно - массив RAID6 во всех режимах чуть быстрее, чем RAID5!

С зеркальными массивами все гораздо проще. Сравнение скоростей массивов RAID1 и RAID10 со скоростями одиночного диска и массива RAID0 из двух дисков соответственно показывает, что зеркальные массивы оказываются быстрее в режимах с высокой вероятностью запроса на чтение и медленнее в режимах с высокой вероятностью запроса на запись. Таким образом, можно утверждать, что алгоритм интеллектуального чтения с зеркальных массивов контроллера Tekram ARC1220 при подобных нагрузках работает правильно.


Дальнейшее увеличение нагрузки приводит к тому, что при сохранении пропорциональности скоростей количеству дисков, скорости массивов RAID0 достаточно заметно падают с ростом числа запросов на запись.


Увеличение нагрузки до 256-ти запросов в очереди уже не приводит к существенным изменениям в поведении графиков массивов данной группы.

IOMeter: паттерны Sequential Read&Write

Этот паттерн позволяет исследовать контроллер в режиме последовательного чтения/записи. На массив при помощи программы IOMeter подаётся поток запросов на чтение/запись с глубиной очереди команд, равной четырём. Раз в минуту в тесте меняется размер блока данных, так что после окончания теста мы получаем зависимость скорости линейного чтения или записи от размера блока данных.
Зависимость скорости чтения данных контроллером от размера их блока приведены в таблице:


Построим графики зависимости скорости работы массива от размера блока данных, разбив RAID-массивы на две группы:


Преимущества RAID0 массивов с большим количеством винчестеров начинают проявляться только при больших размерах запрашиваемого блока данных, то есть в случаях, когда контроллер может разбивать большие блоки на несколько маленьких и использовать винчестеры параллельно. В данном случае, массивы RAID0 показали себя очень неплохо. Массивы из двух, трех и четырех дисков достигли максимальной скорости уже при размерах запросов в 8 КБ, 16 КБ, и 32 КБ соответственно. При этом, масштабируемость скорости чтения по количеству дисков в массиве [b]идеальна[/b].


Результат опять просто идеальный. Графики зеркальных массивы RAID1 и RAID10 повторяют графики одиночного диска и массива RAID0 из двух дисков соответственно. Скорости массивов RAID5 из трех и четырех дисков совпадают со скоростями массивов RAID0 из двух и трех дисков соответственно. Массив RAID6 полностью повторяет массив RAID0 из двух дисков.
В общем-то, в режиме, где ни один из алгоритмов массивов не оказывает ни положительного ни отрицательного влияния такая картина должна наблюдаться у всех контроллеров, однако на практике она почти не встречается.

Теперь, посмотрим на поведение контроллера при последовательной записи. Скорости прокачки данных контроллером, в зависимости от размера их блока приведены в таблице:


Опять разобьем массивы на две группы и построим графики зависимости скорости работы массива от размера блока данных:


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


Скорости работы зеркальных массивов RAID1 и RAID10 при отсутствии запросов на чтение практически совпадают со скоростями одиночного диска и массива RAID0 из двух дисков соответственно. Графики массивов RAID5 и RAID6 выглядят несколько хуже, но эти массивы в режимах со ста процентами запросов на запись и должны вести себя подобным образом.

IOMeter: Fileserver&Webserver

Посмотрим, как контроллер справится режимом, имитирующим дисковые подсистемы файл- и веб-сервера.

Сначала, результаты тестирования контроллера в режиме имитации файл-сервера:


В графическом представлении эта таблица выглядит следующим образом:




Наличие всего двадцати процентов запросов на запись приводит к тому, что все массивы показывают очень неплохие результаты. Массивы RAID0 демонстрируют очень хорошую масштабируемость по скорости в зависимости от количества винчестеров. Скорости массивов RAID1 и RAID10 приближаются к скоростям массивов RAID0 из двух и четырех дисков соответственно, и это значит, что в этом режиме алгоритм оптимизации чтения с зеркал работает прекрасно. Массивы RAID5 и RAID6 так же демонстрируют очень неплохие результаты.

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


Массив RAID0 из четырех дисков лидирует с большим отрывом. Массив RAID10 немного отстал, но занимает почетное второе место. Массивы RАID5 и RAID6 немного отстают от массива RAID0 из трех дисков. Что интересно, массив RAID6 смог обогнать массив RAID5 из четырех дисков. Массив RAID1 занимает предпоследнее место, однако отрыв его от одиночного диска значителен.

Посмотрим на результаты работы контроллера при имитации файловой системы веб-сервера:






Графики массивов RAID0, по сравнению с Fileserver, качественно не изменились. Скорости массивов RAID5 и RAID6 значительно возросли, так как паттерн Webserver, в котором отсутствуют запросы, на запись - это их оптимальный режим работы. По этой же причине, зеркальные массивы RAID1 и RAID10, в работе которых используется алгоритм оптимизации чтения с зеркал, почти во всех режимах, оказываются быстрее массивов RAID0 двух и четырех дисков соответственно.

В рейтинговой системе, которую мы построили по тем же правилам, что и в паттерне Fileserver, места распределились следующим образом:


Массивы RAID10, RAID6 и RAID5 использовали отсутствие запросов на запись на все сто процентов. Несмотря на то, что все четырехдисковые массивы показали очень близкие результаты, массив RAID10 показал самую высокую производительность. Массив RAID5 из четырех дисков оказался быстрее массива RAID6, а массив RAID0 из четырех дисков даже не вошел в тройку лидеров. Массив RAID0 из трех дисков отстал от массива RAID5 из трех дисков, а массив RAID1 прилично оторвался от массива RAID0 из двух дисков.

IOMeter:Workstation

Переходим к паттерну Workstation, который позволяет имитировать интенсивную работу пользователя в различных приложениях на файловой системе NTFS5:






Для массивов RAID0 картина стандартна - чем больше винчестеров в массиве, тем быстрее он обрабатывает запросы. Скорость массива RAID1 значительно выше скорости одиночного диска, а массив RAID10 во всех режимах хоть и на доли процента, но быстрее массива RAID0 из двух дисков. Массивы RAID5 и RAID6 тоже показывают не самые высокие скорости, что не удивительно, так как в паттерне Workstation много случайных запросов на запись, а они сильно снижают скорость массивов RAID5 и RAID6.
Сравним между собой производительности разных RAID-массивов и составим диаграмму с рейтингами быстродействия массивов. Рейтинг для паттерна Workstation мы считаем по следующей формуле:

Производительность = Total I/O (queue=1)/1 + Total I/O (queue=2)/2 + Total I/O (queue=4)/4 + Total I/O (queue=8)/8 + Total I/O (queue=16)/16 + Total I/O (queue=32)/32


Как и следовало ожидать, наличие случайных запросов на запись привело к тому, что по производительности массивы RAID5 и RAID6 отстали даже от одиночного диска. Массивы RAID0 выстроились по количеству дисков. Зеркальный массив RAID10 отстает от массива RAID0 из трех дисков. Массив RAID1 во всех режимах кроме линейной нагрузки был быстрее одиночного диска. Однако, из-за того что в нашем расчете производительности результат при меньшей очереди обладает большим весом, производительность одиночного диска оказалась выше, чем у массива RAID1.

Многопотоковая запись/чтение

В данном паттерне мы исследуем способность контроллера осуществлять многопотоковую последовательную запись/чтение, имитируя одновременную нагрузку на дисковую подсистему со стороны нескольких приложений, затребовавших "большие файлы". Специальный тестовый агент программы IOMeter (в терминах IOMeter - Worker), изображая каждое приложение, последовательно читает/пишет блоками по 64КБ данные, начиная с некоторого стартового сектора. Увеличивая количество исходящих запросов от Worker-а (от одного до восьми с шагом 1) мы исследуем способности диска или контроллера к переупорядочиванию запросов (склеивания нескольких запросов на последовательно расположенные данные в один запрос). Увеличивая количество одновременно работающих Worker-ов, мы усложняем работу дисковой подсистемы - как и в реальной ситуации несколько одновременно работающих программ конкурируют между собой за доступ к дискам. Каждый Worker работает со своими данными (т.е. адреса запрашиваемых блоков у разных Worker-ов не пересекаются).








Построим диаграмму скоростей различных массивов при нагрузке в один запрос, как наиболее вероятную в реальности:


Чтобы не перегружать диаграммы цветом, все массивы RAID0 мы выкрасили в один цвет, массивы RAID5 в другой, а зеркальные массивы в третий. Отдельные цвета получили одиночный диск и массив RAID6. Порядок массивов на диаграмме совпадает с порядком на легенде, чем выше – тем больше дисков в массиве.
При нагрузке в один запрос на одном потоке мы получили хорошее масштабирование скорости чтения от количества дисков в массивах RAID0 и RAID5. Скорость одиночного диска почти совпала со скоростью массива RAID1. Скорости чтения массивов RAID10, RAID6 и RAID5 из трех дисков так же почти совпадают.
На двух одновременно выполняемых потоках скорость всех массивов резко снизилась, хотя и сохранилась масштабируемость скорости от количества дисков в массивах RAID0 и RAID5. Конечно, при двух потоках головкам жёстких дисков приходится постоянно перемещаться между двумя рабочими зонами, так что о достижении скорости линейного чтения с массива можно забыть. Используемые для тестов диски имеют оптимизацию для использования в серверах, то есть упор сделан на малое время доступа. Поэтому, ожидать упреждающего чтения от них не стоит.
Дальнейший рост числа потоков приводит очень незначительному росту скоростей всех массивов.

Переходим к результатам записи:


Запись выглядит гораздо лучше. При нагрузке в один запрос на одном потоке скорости массивов несколько ниже, чем в случае чтения, но масштабирование скорости чтения от количества дисков в массивах RAID0 и RAID5 сохранилось. Скорость одиночного диска почти совпала со скоростью массива RAID1, а скорость массива RAID10 со скоростью массива RAID0 из двух дисков.
Однако уже при двух потоках скорости записи во всех массивах гораздо выше, чем при чтении. И, даже с учетом того, что с ростом числа потоков скорость почти всех массивов падает, скорость записи и при трех и при четырех потоках остается выше скорости чтения.

FC-test

А теперь попробуем испытать контроллер в "однопользовательском" режиме.
Мы применяем FC-Test по нашей стандартной методике - на диске создавалось два логических диска по 32 GB, и они размечались сначала в NTFS и, затем, в FAT32. На первом логическом диске создавался набор файлов, затем этот набор файлов читался с диска, затем набор файлов копировался в директорию, созданную на первом логическом диске (т.е. производилось копирование внутри одного раздела), и завершало цикл тестов копирование первого набора файлов на второй логический диск.
Между каждым тестом проводится перезагрузка тестовой системы, тем самым мы исключаем влияние кэша операционной системы на результаты тестов. Всего мы используем пять наборов файлов:

Install - 414 файлов общим объёмом 575МБ;
ISO - три файла общим объёмом 1.6ГБ;
MP3 - 271 файл общим объёмом 1ГБ;
Programs - 8504 файла общим объёмом 1.4ГБ;
Windows - 9006 файлов общим объёмом 1.06ГБ.

Посмотрим, какие получились результаты. Начнем с файловой системы NTFS.
Из-за большого количества данных будем рассматривать результаты по каждому действию для каждого набора файлов.
Первым действием мы создаем на диске набор файлов. NTFS.


Диаграммы построим только для трех наиболее интересных наборов:






Как и следовало ожидать, массивы RAID0 демонстрируют наиболее высокие результаты. Массивы RAID5 в наборах Install и ISO работают сравнительно быстро, и только в наборе Programs их скорость оказывается очень низкой. У массивов RAID0 масштабирование скорости от количества дисков в массиве просматривается во всех наборах, а у массивов RAID5 только в в наборах Install и ISO.

Переходим к режиму чтения:








При чтении масштабируемость массивов RAID0 и RAID5 сохранилась. В наборе ISO все массивы продемонстрировали удивительно высокую скорость.

Посмотрим на скорость копирования:








При копировании в наборе ISO у четырехдискового массива RAID0 появляется необъяснимый провал в скорости. В остальных наборах масштабируемость массива RAID0 сохраняется. Массивы RAID5 несколько медленнее, однако масштабирование скорости от количества дисков в массиве проявляется и у них.








Результаты второго цикла копирования не отличаются принципиально от результатов предыдущего цикла вплоть до провала скорости четырехдискового массива RAID0 в наборе ISO.

Переходим к системе FAT32:








По сравнению с системой NTFS скорость работы немного выросла. Исключение составляет непонятный провал скорости массива RAID0 из четырех дисков в наборе ISO.








Скорость чтения по сравнению с системой NTFS выросла значительно.
















При копировании файлов два раза встречается провал скорости массива RAID0 из трех дисков.

Из тестов Winbench теперь мы ограничиваемся только снятием графиков линейного чтения:

График линейного чтения 1HDD-JBOD
График линейного чтения 2HDD-RAID1
График линейного чтения 2HDD-RAID0
График линейного чтения 3HDD-RAID0
График линейного чтения 3HDD-RAID5
График линейного чтения 4HDD-RAID0
График линейного чтения 4HDD-RAID5
График линейного чтения 4HDD-RAID6
График линейного чтения 4HDD-RAID10

Выводы


Итак, по результатам тестов контроллера Tekram ARC1220 мы можем сказать, что он показал просто ВЕЛИКОЛЕПНЫЕ результаты.

Массивы RAID5 и RAID0 демонстрируют отлично масштабирование скорости массива от количества дисков в нём и очень приличную скорость работы. Контроллер надёжно сохраняет данные в отказоустойчивых массивах (RAID1, RAID5, RAID6 и RAID10). Что интересно, в большинстве паттернов более «надежный» массив RAID6 продемонстрировал скорость работы, сопоставимую со скоростью массива RAID5 из четырех дисков. Зеркальные массивы явно используют алгоритм оптимизации чтения с зеркала, что позволяет заметно увеличить быстродействие массивов при случайном характере запросов.

Отдельной похвалы заслуживает быстродействие контроллера в FC-Test. Никогда прежде мы не видели контроллера, который бы демонстрировал при работе с реальными файлами такого же быстродействия, как при синтетических (можно сказать, идеальных) нагрузках.

Быстрый кэш, высокая частота XOR-процессора плюс отсутствие "оптимизаций" - вот составляющие успеха! Именитым производителям RAID-контроллеров есть чему поучиться у молодой, но, несомненно, талантливой компании Areca.