Введение
Покопавшись в архиве статей, я с немалым удивлением обнаружил, что уже довольно долго в сферу нашего внимания не попадали контроллеры Highpoint. Сегодня настало время исправить эту досадную оплошность, благо на рынке появился весьма интересный и многообещающий продукт от этой известной компании.
После продолжительных, и, пожалуй, неудачных экспериментов с программной реализацией RAID5 компания HighPoint одним мощным рывком догнала конкурентов, выпустив продукт, вобравший в себя все актуальные на сегодняшний день технологии.
Контроллер RocketRAID 2320 от HighPoint поддерживает восемь SATAII-дисков (естественно, с дисками SATA150 он тоже прекрасно будет работать) и может объединять их в следующие типы массивов: 0, 1, 5, 10 и JBOD. Интерфейс контроллера – самый передовой – PCI-Express. Тип разъёма – PCI-E x4.
Благодаря поддержке 64-битной LBA-адресации контроллер позволяет создавать массивы объемом более 2ТБ. Кроме того, контроллер умеет работать с двумя вариантами реализации технологии очереди команд - TCQ и NCQ.
Контроллер поставляется в светлой, сине-белой коробке:
Сам контроллер сделан низкопрофильным. Ради уменьшения его высоты SATA–разъемы установлены в два ряда и два слоя. XOR-процессор надежно спрятан под радиатором, который выглядит очень внушительно на фоне такой маленькой платы. Разъем PCI Express x4 позволяет устанавливать контроллер в разъемы PCI-E x8 и x16.
Кроме контроллера, в коробке присутствуют низкопрофильная планка, кабель для подключения к плате мониторинга
RocketGuard100 и программное обеспечение, а так же SATA-кабели традиционного для контроллеров HighPoint синего цвета (числом 8) и руководство по установке контроллера.
Контроллер RocketRAID 2320 как заявлено производителем, может работать в следующих операционных системах:
Windows,
Windows X64 Editions,
Linux(opensource),
FreeBSD(opensource)
Mac OS X
Более свежие версии драйверов всегда можно найти на
сайте производителя.
Методика тестирования
Тестовая система:
корпус -Intel SC5200
материнская плата – Intel SE7520BD2;
процессор - 2 x Intel Xeon 2.8/533FSB;
память - 2 x 512MB DDR SDRAM PC2100 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.
Паттерны StorageReview
| File Server | Web Server
|
---|
| 80% Read, 100% Random | 100% Read, 100% Random
|
512b | 10% | 22%
|
1KB | 5% | 15%
|
2KB | 5% | 8%
|
4KB | 60% | 23%
|
8KB | 2% | 15%
|
16KB | 4% | 2%
|
32KB | 4% | 6%
|
64KB | 10% | 7%
|
128KB | 0% | 1%
|
512KB | 0% | 1%
|
Эти паттерны призваны измерить производительность дисковой подсистемы при нагрузке, типичной для file- и web-серверов.
Паттерн Workstation, используемый нами, создан нашим автором Романовым Сергеем aka GReY на основании статистики обращений к диску при работе различных приложений,
приведённой в описании SR Testbed3. Статистические данные собраны на файловой системе NTFS5 в режимах работы Office, Hi-End и Boot-up.
Паттерн Workstation
Transfer Size Request | % of Access Specification | % Reads | % Random
|
---|
Workstation
|
512B | 1 | 0 | 100
|
1KB | 2 | 0 | 100
|
2KB | 1 | 0 | 100
|
4KB | 50 | 60 | 80
|
8KB | 4 | 50 | 100
|
16KB | 6 | 50 | 100
|
20KB | 2 | 50 | 100
|
24KB | 2 | 50 | 100
|
28KB | 1 | 50 | 100
|
32KB | 13 | 70 | 70
|
48KB | 1 | 50 | 100
|
52KB | 1 | 50 | 100
|
64KB | 14 | 80 | 60
|
64KB+512B | 2 | 50 | 100
|
Этим паттерном мы будем руководствоваться для оценки привлекательности винчестеров для обычного Windows-пользователя.
Ну и, наконец, была проверена способность винчестеров работать с Sequential-запросами переменного размера на чтение/запись и скорость дисков в паттерне Database, имитирующем работу дисковой подсистемы с SQL-подобными запросами.
Для FC-Test мы использовали наши стандартные пять наборов файлов (Install, ISO, MP3, Programs и Windows) с которыми проводились операции записи (создания файлов на диске), чтения с диска и копирования файлов.
Контроллер тестировался с прошивкой 1.01 и драйверами из того же набора. Устанавливался контроллер в слот PCI-E x4.
Диски WD740GD (Raptor) устанавливались в корзину ASATAHSDB (SATA 4-Hot-Swap Drive Bay Upgrade).
Результаты тестов
Начнем обзор с тестирования работы контроллера со смешанными потоками запросов:
IOMeter: паттерн Database В этом паттерне мы посылаем смешанные запросы на чтение и запись блоков данных объемом 8КБ со случайным адресом. Изменяя соотношение запросов, мы можем выявить качество сортировки их драйвером контроллера.
Результаты работы контроллера представлены в следующей таблице:
Рассмотрим результаты в виде графиков зависимостей скорости передачи данных от удельного веса запросов на запись для очередей с глубиной в 1, 16 и 256 запросов. Для большего удобства разобьем массивы на две группы:
С увеличением доли запросов на запись диск может выполнять отложенную запись более эффективно, поэтому, скорость работы одиночного диска возрастает. Скорость работы массивов RAID0 тоже растет соответственно количеству дисков в массиве, но, даже в режиме RandomWrite (при ста процентах запросов на запись), пропорциональность скоростей количеству дисков в массиве не наблюдается. При линейной нагрузке, в режиме RandomRead, все массивы показывают очень близкие скорости, однако вполне заметна обратная пропорциональность скорости количеству дисков в массиве.
Массивы RAID1 и RAID10, содержащие зеркальные пары, используют алгоритм чередования запросов на чтение между дисками внутри зеркала, о чем можно судить по отличию скоростей их работы от JBOD и RAID0 из двух дисков. Однако, преимущества этого алгоритма проявляются только в режимах с преобладанием запросов на чтение. В режимах с большой вероятностью появления запроса на запись скорости работы массивов RAID1 и RAID10, заметно ниже скоростей одиночного диска и массива RAID0 из двух дисков соответственно.
Скорость массивов RAID5, согласно теории, должна снижаться по мере увеличения вероятности появления запроса на запись. За исключением режима RandomWrite, поведение графиков этих массивов соответствует теории. Кроме одного – скорость массива из четырёх дисков оказалась меньше (!) скорости массива из трёх дисков.
Увеличим нагрузку:
Увеличение нагрузки приводит к тому, что скорость работы массивов RAID0 становится пропорциональна количеству дисков в массиве уже практически при ста процентах запросов на чтение. Однако с ростом числа запросов на запись массив картинка начинает портиться. У массивов из нечётного количества дисков минимум скорости приходится на режим с пятьюдесятью процентами запросов на запись, а у массивов из чётного количества дисков – на режим с шестьюдесятью процентами на запись.
Посмотрим на остальные массивы:
Скорости массивов RAID1 и RAID10, как и в случае линейной нагрузки, оказываются выше чем у одиночного диска и массива RAID0 из двух дисков, соответственно, в режимах с высокой вероятностью запроса на чтение и ниже в режимах с высокой вероятностью запроса на запись. Очевидно, что в режимах с преобладанием запросов на чтение массивы RAID1 и RAID10 быстрее за счёт интеллектуального выбора оптимального диска из зеркальной пары.
А вот с RAID5-массивами дела опять не заладились. Массив из четырёх дисков быстрее массива из трёх дисков только в режимах с преобладанием запросов на чтение. По мере же увеличения доли запросов на запись массивы сначала сравниваются по скорости, а, затем, массив из большего количества дисков «проваливается»…
Увеличение нагрузки до 256-ти запросов в очереди не приводит к существенным изменениям в поведении графиков работы массивов. В то же время, быстродействие RAID0-массивов в режиме RandomRead со всей очевидностью говорит нам о том, что контроллер поддерживает технологию TCQ.
Переходим к тестам на скорость последовательного чтения/записи.
IOMeter: паттерны Sequential Read&Write Этот паттерн позволяет исследовать контроллер в режиме последовательного чтения/записи. На массив при помощи программы IOMeter подаётся поток запросов на чтение/запись с глубиной очереди команд, равной четырём. Раз в минуту в тесте меняется размер блока данных, так что после окончания теста мы получаем зависимость скорости линейного чтения или записи от размера блока данных.
Зависимость скорости чтения данных контроллером от размера их блока приведены в таблице:
Построим графики зависимости скорости работы массива от размера блока данных, разбив RAID-массивы на две группы:
Преимущества RAID0 массивов с большим количеством винчестеров начинают проявляться только при больших размерах запрашиваемого блока данных, то есть в случаях, когда контроллер может разбивать большие блоки на несколько маленьких и использовать винчестеры параллельно. В данном случае массивы RAID0 показали себя очень неплохо. Массивы из двух, трех и четырех дисков достигают максимальной скорости запроса при размерах блока в 16, 32 и 64 кБ соответственно. Кроме того, масштабируемость скорости чтения по количеству дисков в массиве почти идеальна.
Эта группа массивов выглядит несколько хуже. До определенного размера блока данных (для каждого массива размер свой) все массивы ведут себя очень неплохо. Графики массивов RAID1, RAID10&RAID5 из трех дисков и RAID5 из четырех дисков полностью повторяют графики одиночного диска и массивов RAID0 из двух и трех дисков соответственно. Однако, при достижении размера блока в 64, 128 или 256 КБ (для каждого массива этот размер свой) скорости работы массивов достаточно резко снижаются.
Теперь посмотрим на поведение контроллера при последовательной записи. Скорости прокачки данных контроллером, в зависимости от размера их блока в режиме приведены в таблице:
Построим графики зависимости скорости работы массива от размера блока данных и снова разобьем графики на две группы:
Так же как и в случае последовательного чтения преимущества RAID0 массивов с большим количеством винчестеров начинают проявляться только при больших размерах запрашиваемого блока данных. Однако, если в случае с чтением эта группа массивов достигла максимальной скорости уже при сравнительно небольших размерах запросов, а рост скорости был резким, то при записи все массивы выходят на максимальную скорость гораздо более плавно.
Скорости работы зеркальных массивов RAID1 и RAID10 при отсутствии запросов на чтение почти совпадают со скоростями одиночного диска и массива RAID0 из двух дисков соответственно. Массивы RAID5, демонстрируют неплохую масштабируемость скорости по количеству дисков в массиве и достигают максимальной скорости работы при достаточно небольшом размере блока данных. Однако максимальной скорости работы массивов RAID0 из n-1 они не достигают.
IOMeter: Fileserver&Webserver Посмотрим, как контроллер справится режимом, имитирующим дисковые подсистемы файл- и веб-сервера.
Сначала, результаты тестирования контроллера в режиме имитации файл-сервера:
Рассмотрим результаты в виде графиков зависимостей скорости передачи данных от глубины очереди. Для большего удобства разобьем массивы на две группы:
В этом паттерне всего двадцать процентов запросов на запись, поэтому большинство массивов показывает очень неплохие результаты. Массивы RAID0 демонстрируют очень хорошую масштабируемость по скорости в зависимости от количества винчестеров. Скорости массивов RAID1 и RAID10 заметно выше скоростей одиночного диска и массива RAID0 из двух дисков соответственно, и это значит, что в этом режиме алгоритм оптимизации чтения с зеркал работает прекрасно.
Скорости массивов RAID5 в режимах с высокой нагрузкой оказались ниже скорости массива RAID1, что снова наводит на мысль о недостаточности вычислительной мощности XOR-процессора контроллера RocketRAID 2320.
Сравним производительность различных массивов, применив рейтинговую систему. Считая все нагрузки равновероятными, общий балл будем рассчитывать, как среднее значение скорости обработки контроллером запросов при трех вариантах нагрузки:
Массив RAID0 лидирует с большим отрывом. Массив RAID10 вплотную приблизился к массиву RAID0 из трех дисков, а массив RAID1 лишь незначительно отстал от массива RAID0 из двух дисков. Массивам RAID5 удалось обогнать только одиночный диск.
Посмотрим на результаты работы контроллера при имитации файловой системы веб-сервера:
Графики массивов RAID0, по сравнению с Fileserver, качественно не изменились, но на остальные массивы отсутствие запросов на запись повлияло гораздо сильнее. Зеркальные массивы RAID1 и RAID10, в работе которых используется алгоритм оптимизации чтения с зеркал, во всех режимах (кроме очереди в 256 запросов), оказываются быстрее массивов RAID0 двух и четырех дисков соответственно. Но гораздо заметнее то, что скорости массивов RAID5 из трех и четырех дисков почти во всех режимах выше скоростей массивов RAID0 из соответствующего числа дисков.
Сравним производительность различных массивов, применив рейтинговую систему. Считая все нагрузки равновероятными, общий балл будем рассчитывать, как среднее значение скорости обработки контроллером запросов при всех вариантах нагрузки :
Отсутствие задач для XOR- процессора привело к тому, что массив RAID5 из четырех дисков показал наилучшую производительность, а производительности массивов RAID0 и RAID5 из трех дисков практически равны. Массивы RAID1 и RAID10 при отсутствии запросов на запись тоже смогли показать себя неплохо и обогнать массивы RAID0 из соответствующего количества дисков.
IOMeter:Workstation Переходим к паттерну Workstation, который позволяет имитировать интенсивную работу пользователя в различных приложениях на файловой системе NTFS5:
Для массивов RAID0 картина стандартна - чем больше винчестеров в массиве, тем быстрее он обрабатывает запросы. Скорости массивов RAID1 и RAID10 во всех режимах хоть ненамного, но выше скоростей одиночного диска и массива RAID0 из двух дисков соответственно.
В паттерне Workstation достаточно много случайных запросов на запись, которые сильно снижают скорость работы массивов RAID5, но в данном случае, они просто "похоронили" массивы RAID5.
Сравним между собой производительности разных 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 Как и следовало ожидать, наличие случайных запросов на запись привело к тому, что по производительности зеркальные массивы RAID1 и RAID10 обошли только одиночный диск и массив RAID0 из двух дисков соответственно. Массивы RAID5, как и следовало из графиков, заняли "почетные" последние места.
Многопотоковая запись/чтение В данном паттерне мы исследуем способность контроллера осуществлять многопотоковую последовательную запись/чтение, имитируя одновременную нагрузку на дисковую подсистему со стороны нескольких приложений, затребовавших "большие файлы". Специальный тестовый агент программы IOMeter (в терминах IOMeter - Worker), изображая каждое приложение, последовательно читает/пишет блоками по 64КБ данные, начиная с некоторого стартового сектора. Увеличивая количество исходящих запросов от Worker-а (от одного до восьми с шагом 1) мы исследуем способности диска или контроллера к переупорядочиванию запросов (склеивания нескольких запросов на последовательно расположенные данные в один запрос). Увеличивая количество одновременно работающих Worker-ов, мы усложняем работу дисковой подсистемы - как и в реальной ситуации несколько одновременно работающих программ конкурируют между собой за доступ к дискам. Каждый Worker работает со своими данными (т.е. адреса запрашиваемых блоков у разных Worker-ов не пересекаются).
Построим диаграмму скоростей различных массивов при нагрузке в один запрос, как наиболее вероятную в реальности. Все массивы RAID0 мы выкрасили в один цвет, массивы RAID5 в другой, а зеркальные массивы в третий. Порядок массивов на диаграмме совпадает с порядком на легенде, чем выше – тем больше дисков в массиве.
При нагрузке в один запрос на одном потоке мы не получили уверенного масштабирования скорости чтения от количества дисков ни в массиве RAID0, ни в массиве RAID5. Скорость одиночного диска оказалась почти равна скорости массива RAID1. Судя по тому, что с массива RAID0 не удалось вытянуть больше, агрессивного упреждающего чтения ни контроллер, ни диски не производят.
На двух одновременно выполняемых потоках зеркальные массивы RAID1 и RAID10 оказались на высоте (идеальный случай - каждый диск отдаёт "свои" данные). А вот скорость всех остальных массивов неожиданно резко снизилась, хотя и проявилась масштабируемость скорости от количества дисков в массивах RAID0 и RAID5. Конечно, при двух потоках головкам жёстких дисков приходится постоянно перемещаться между двумя рабочими зонами, так что о достижении скорости линейного чтения с массива можно забыть.
Дальнейший рост числа потоков приводит к снижению скорости работы всех массивов не изменяя, принципиально, вид, соответствующий двум потокам.
Переходим к результатам многопоточной записи:
А при записи массивы RAID1 и RAID10, использующиt зеркалирование заметно "провалились" по скорости – они почти во всех режимах медленнее одиночного диска и массива RAID0 из двух дисков соответственно. Массивы RAID5, напротив, демонстрируют высокую скорость работы и прекрасную мастабируемость скорости от количества дисков в массиве.
Массивы RAID0 при работе в один поток демонстрируют достаточно низкую скорость, да и масштабируемостью скорости здесь и не пахнет. Зато при двух потоках и скорость и масштабируемость выше вполне приличные. При трёх одновременно исполняемых потоках мы вновь наблюдаем масштабирование скорости массивов 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 демонстрируют наиболее высокие результаты и хорошее масштабирование скорости по количеству дисков в массиве, зеркальные массивы RAID1 и RAID10 везде отстают от одиночного диска и массива RAID0 из двух дисков соответственно.
Скорость массивов RAID5 самая низкая, хотя масштабирование скорости от количества дисков в массиве просматривается во всех наборах.
Переходим к режиму чтения:
Такой результат чтения файлов мы уже видели в обзоре контроллера
MegaRAID SATA 300-8X.
Скорости трех- и четырехдисковых массивов RAID0 и RAID5 очень близки и не очень высоки. Скорость чтения с массива RAID1 и RAID10 почти аналогичны скоростям чтения с одиночного диска и массива RAID0 из двух дисков.
Посмотрим на скорость копирования:
Массивы RAID0 и RAID5 демонстрируют прекрасное масштабирование скорости от количества дисков в массиве во всех наборах. Однако величина этой скорости, мягко говоря, невелика.
Скорость массива RAID10 практически равна скорости массива RAID0 из двух дисков, а массив RAID1 стабильно быстрее одиночного диска.
И еще одно копирование:
Как и в предыдущем копировании массивы RAID0 и RAID5 демонстрируют прекрасное масштабирование скорости от количества дисков в массиве, а скорость массива RAID10 практически равна скорости массива RAID0 из двух дисков.
Скорость работы массивов RAID5 относительно высока в наборах "Install" и "ISO". Скорость работы массива RAID1 относительно высока в наборе"ISO".
Переходим к системе FAT32:
По сравнению с системой NTFS скорость работы немного повысилась. В остальном, все осталось так же.
Скорость чтения массива RAID1 практически не отличается от скорости одиночного диска. Скорости остальных массивов очень похожи.
И при копировании картина очень напоминает результаты для NTFS.
По традиции, графики линейного чтения приводим для каждого массива отдельно.
График линейного чтения 1HDD-JBOD
График линейного чтения 2HDD-RAID1
График линейного чтения 2HDD-RAID0
График линейного чтения 3HDD-RAID0
График линейного чтения 3HDD-RAID5
График линейного чтения 4HDD-RAID0
График линейного чтения 4HDD-RAID5
График линейного чтения 4HDD-RAID10
Выводы
Итак, по результатам тестов первого аппаратного RAID5-контроллера HighPoint мы можем сказать, что он показал себя достаточно неплохо. Массивы RAID0 демонстрируют хорошее масштабирование скорости массива от количества дисков в нём и приличную скорость работы. Прекрасно показали себя зеркальные массивы RAID1 и RAID10.
Однако массивы RAID5 пока являются слабым местом контроллера. Пожалуй, программистам HighPoint нужно еще немножко поработать над этим типом массива.