SATA-RAID контроллер SiI 3114 SATALink™ 4-Port PCI Host Controller от Silicon Image

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

Введение


После некоторой паузы мы возобновляем публикацию обзоров, посвящённых тестированию многоканальных SATA RAID-контроллеров. На сей раз мы рассмотрим четырёхканальный контроллер Silicon Image - SiI 3114 SATALink™ 4-Port PCI Host Controller от Silicon Image.
Согласно информации с сайта производителя контроллера, одной из основных целей при создании Sil 3114 было получение наиболее оптимального соотношения цены и производительности. Чип этот уже давно присутствует на рынке и используется на множестве материнских плат и на внешних PCI-контроллерах. Так что с ценой у SiI3114, по всей видимости, - всё в порядке. Наша же задача определить его производительность.

Контроллер Sil 3114 создан на основе одноименного чипа от Silicon Image. Он способен поддерживать до четырех Serial ATA/150 устройств, а так же устройства, совместимые с SATA 1.0. Набор поддерживаемых RAID-массивов стандартен – JBOD, RAID0, RAID1, RAID10. За счет способности контроллера работать в 66МГц слоте PCI 2.3 максимально возможная (теоретическая) пропускная способность контроллера составляет 266МБ/c. Под BIOS, по умолчанию, выделяется 128КБ, однако контроллер позволяет расширить эту память до 4МБ внешней Flash-памяти.

Таблица параметров:



Внешний вид контроллера




Использование малогабаритного чипа SATALink™ Sil3114 (в центре справа), позволяет создавать контроллеры в очень широком диапазоне размеров. В данном случае контроллер оказался достаточно компактным, но планка крепления у него только для стандартного корпуса, поэтому, именно это решение низкопрофильным назвать нельзя. Справа от чипа SiI3114 расположен разъем под внешнюю Flash для BIOS. Судя по количеству свободного места на контроллере, его можно было сделать еще меньше, однако минимальная длина контроллера ограничена PCI-разъемом.

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



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

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


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

WinBench 99 2.0
IOMeter 2003.02.15


В Winbench99 на логическом диске создавался один раздел на весь объём диска. Тесты Winbench проводились по семь раз, выбирался лучший показанный результат.

Для сравнения скорости работы винчестеров при помощи теста 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-подобными запросами.

В контроллер был прошит BIOS 5033, использовались драйвера из набора (1.0.0.3). Для контроля состояния массива и для синхронизации массивов использовалась программа 3DM Disk Management. Контроллер устанавливался в слот PCI-X/133МГц (хотя контроллер поддерживает только PCI32 66МГц).

Диски WD360GD (Raptor) устанавливались в штатные салазки корпуса SC5200 и крепились четырьмя винтами за нижнюю грань.




При выполнении основной программы тестирования отложенная запись для дисков разрешалась. Все тесты были проведены при 128КБ памяти под BIOS.

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



Начнем обсуждение с результатов работы контроллера со смешанными потоками запросов:

IOMeter: паттерн Database

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

Сначала рассмотрим результаты теста в виде таблицы:


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


При линейной нагрузке в начале графика (в режиме RandomRead) все массивы демонстрируют очень близкие скорости. С ростом числа запросов на запись скорости работы массивов начинают различаться – сказывается влияние отложенной записи дисков и типа массива.
Массивы RAID0 демонстрируют зависимость скорости от количества дисков в массиве, однако существенная разница в скоростях массивов с разным количеством дисков проявляется только при высоком содержании запросов на запись.
График массива RAID10 практически полностью повторяет график массива RAID0 из двух дисков. Различия появляются только в режиме RandomWrite (100% запросов на запись), где скорость массива RAID10 оказалась ниже, чем у RAID0-массива из двух дисков.
Но еще любопытнее, что массив RAID1 отстает от одиночного диска при любой доле запросов на запись. И, чем выше процент запросов на запись, тем больше RAID1-массив уступает в скорости одиночному диску.


Увеличение нагрузки приводит к тому, что графики массивов RAID0 демонстрируют масштабируемость по количеству дисков в массиве почти во всех режимах. Однако отметим, что скорость массива RAID0 из трех дисков несколько хуже масштабируется, чем у остальных RAID-массивов.
График массива RAID10, как и при линейной нагрузке, повторяет график массива RAID0 из двух дисков. Различия, правда, появляются уже при 90 процентах запросов на запись, а в режиме RandomWrite, скорость массива RAID10 начинает снижаться. График массива RAID1 ведет себя точно так же, как и при линейной нагрузке.
Такое поведение графиков зеркальных массивов позволяет сделать однозначный вывод, что текущие драйвера/BIOS контроллера Sil3114 не используют оптимизацию запросов на чтение (чередование запросов на чтение между дисками зеркальной пары). Однако, если в массиве RAID10 алгоритм зеркалирования никак не влияет на скорость, то в массиве RAID1 мы можем отметить снижение скорости контроллера при работе с запросами на запись.


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

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

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

Сначала результаты последовательного чтения:


Построим график зависимости скорости чтения контроллера от размера блока:


Максимальная скорость чтения достигается разными массивами при разных размерах запросов. Но для всех массивов максимум достигается при достаточно большом объёме запроса, когда контроллер разбивает большой запрос на несколько маленьких, которые выполняются несколькими винчестерами.
При этом хотелось бы отметить, что на контроллере Sil 3114 максимальная скорость массива RAID0 из четырех дисков достигает 215МБ/сек., что почти в четыре раза больше максимальной скорости одиночного диска. Великолепная масштабируемость!

С зеркальными же массивами не все так гладко. Как мы помним, некоторые производители практикуют чередование запросов на чтение между дисками зеркальной пары, причем, делают "это" даже при линейном чтении. Таким образом, RAID1-массив при чтении уподобляется RAID0-массиву и скорость чтения с массива (теоретически) может удвоиться! Но, как мы убеждаемся по результатам теста, этим алгоритмом контроллер Sil3114 не пользуется. Скорость чтения с массива RAID1 почти всегда совпадает со скоростью чтения с одиночного диска, а скорость массива RAID10 совпадает со скоростью массива RAID0 из двух дисков.

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


А теперь построим график зависимости скорости чтения контроллера от размера блока:


При последовательной записи, как и при последовательном чтении, максимальная скорость достигается разными массивами при разных размерах запросов. Однако масштабируемость скорости работы от количества дисков в массивах RAID0 просматривается только в двух- и трехдисковом массивах. Массив RAID0 из четырех дисков выпадает из общей картины. Его максимальная скорость достигает всего 193МБ/сек. В принципе, очень неплохо, но хотелось большего. :)

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

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

IOMeter: Fileserver&Webserver

Сначала, проверим, как поведет себя контроллер при имитации работы дисковой подсистемы файлсервера:


Построим график зависимостей скоростей работы массивов от глубины очереди запросов:


Массивы RAID0 демонстрируют прекрасную масштабируемость скорости работы от количества дисков в массивах даже при небольших очередях запросов. Скорость чтения с массива RAID1 всегда совпадает со скоростью чтения с одиночного диска, а скорость массива RAID10 совпадает со скоростью массива RAID0 из двух дисков. Учитывая то, что в паттерне Fileserver всего 20% запросов на запись можно предположить, что в контроллере Sil3114 оптимизация чтения с зеркал не используется никогда.

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


Как мы видим, рейтинг тоже не продемонстрировал никаких неожиданностей. Массивы RAID0 выстроились по количеству дисков в массиве. Массивы, использующие зеркалирование, RAID1 и RAID10 хоть ненамного, но отстают от одиночного диска и массива RAID0 из двух дисков соответственно.

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




Массивы RAID0 демонстрируют прекрасную масштабируемость скорости работы от количества дисков в массивах даже при небольших очередях запросов. Скорость чтения с массива RAID1 всегда совпадает со скоростью чтения с одиночного диска, а скорость массива RAID10 совпадает со скоростью массива RAID0 из двух дисков. Учитывая то, что в паттерне Webserver 100% запросов на чтение и такой режим является идеальным для демонстрации преимуществ зеркальных массивов, можно сказать однозначно, что контроллер Sil3114 не использует оптимизацию чтения с зеркал.

Для сравнения производительностей массивов построим рейтинговую систему по тому же принципу, что и в паттерне Fileserver:


Сказать, что и распределение по производительностям оказалось таким же, как и в паттерне Fileserver. Конечно, в данном случае массив RAID10 оказался более производительным, чем массив RAID0 из двух дисков, однако, как и в предыдущем паттерне, разница невелика.

IOMeter:Workstation

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


Построим график зависимостей скоростей работы массивов от глубины очереди запросов:


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

Для сравнения между собой производительности разных RAID-массивов в зависимости от использования WB-кэширования составим диаграмму с рейтингами быстродействия массивов. Рейтинг для паттерна 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


Даже присутствие большой доли запросов на запись в паттерне не привело к изменению порядка в рейтинге по сравнению с паттернами File– и Webserver.

Winbench99

Завершаем этот обзор пакетом Winbench, который служит нам в качестве измерителя производительности дисковых подсистем при работе с "десктопными" приложениями.


Сравним скорости различных массивов по двум интегральным подтестам - Business Disk Winmark и High-End Disk Winmark:


Как и следовало ожидать, первые три места завоевали RAID0-массивы из двух, трёх и четырёх дисков. Массив RAID01 вплотную приблизился к массиву RAID0 из двух дисков. Следует отметить соревнование между RAID1-массивом и одиночным диском - при WT-кэшировании одиночный диск быстрее массива RAID1, а при переходе к WB-кэшированию массив RAID1 выходит вперёд.

Посмотрим как изменятся результаты при переходе в систему FAT32:




Из явных отличий от результатов в системе NTFS сразу видно только то, что массив RAID1 отстал от одиночного диска, а скорости всех массивов оказались выше, чем в системе NTFS.

Так как скорости линейного чтения одинаковы для NTFS и для FAT32, то приведем только один график для обеих файловых систем:


Графики линейного чтения для каждого массива приведены отдельно:

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

Выводы


По результатам тестов можно считать, что контроллер Sil 3114 продемонстрировал неплохую производительность. Однако, это справедливо только для массивов RAID0. Массивы, использующие зеркалирование, к сожалению, могут быть использованы только в качестве повышения надежности хранения информации.
Как мы помним по результатам обзоров двухканальных SATA-контроллеров, отсутствие оптимизаций работы массивов, использующих зеркалирование, является "фирменной" фишкой референсных BIOS/драйверов от SiliconImage. И, наоборот, основной упор в драйверах от SiliconImage делается на улучшение работы RAID0-массивов.
Соответственно, можно сделать вывод, что контроллер Sil3114 можно рекомендовать для "домашнего" использования - тем, кому необходим недорогой контроллер для ускорения работы дисковой подсистемы.


На текущий момент, с сайта производителя можно скачать драйвера для Windows 98SE/ME/NT/2000/XP (Windows 95 не поддерживается), для 64-разрядной Windows и для Nowell Netware. Для Linux в наличии пока только бета – версия драйверов.