Предисловие
Многие из вас, наверное, заметили, что на нашем сайте уже давно не появлялись статьи по винчестерам. На то были свои причины. Нет-нет, я не болел и не обленился. :) Просто я был немножечко занят - тестировал IDE RAID-контроллеры. Так как некоторые контроллеры имеют очень много каналов для подключения винчестеров, то значительно увеличивается и количество вариантов объединения этих винчестеров в RAID-массивы. То есть для того, чтобы подробно рассмотреть работу контроллера, требуется провести очень много тестов. Это первая причина. :)
Вторая причина логически вытекает из первой. Большое количество тестов порождает большое количество результатов, которые нужно обработать и осмыслить... Не гарантирую, что я постиг абсолютную истину, но я сделал всё, что мог. :)
Критически оглядев фронт работ, я решил, что не буду делать одну сводную статью по всем контроллерам, так как она получилась бы очень большой. Я решил выпустить отдельные статьи, посвящённые каждому контроллеру в отдельности, а затем сравнить контроллеры между собой.
Итак, в первой статье из планируемой серии я расскажу Вам о новом IDE RAID контроллере фирмы Adaptec.
Введение
Как мы помним, первый шаг фирмы Adaptec на рынок IDE RAID контроллеров был неудачным. Контроллер AAA-UDMA по всем статьям проигрывал конкурентам в лице 3Ware Escalade 6400 и Promise SuperTrak100. Отчасти это можно объяснить тем, что Adaptec собрала этот контроллер, следуя примеру известной российской эстрадной певицы - "Я тебя слепила из того, что было...", - из имевшихся под рукой деталей. То есть был спроектирован IDE-контроллер, и к нему добавили мост IDE-to-SCSI. Полученная система работала довольно медленно и явно имела высокую себестоимость. Так что единственное, что оставалось делать Adaptec – это последовать злобному совету: "А потом что стало, то и закопала...".
Но фирма Adaptec не привыкла проигрывать, и вот она выпускает второй свой IDE RAID контроллер - Adaptec 2400a. Посмотрим, учли ли специалисты Adaptec свои предыдущие ошибки... :)
Контроллер
Как театр начинается с вешалки, так контроллер начинается с коробки:
Стандартная для Adaptec цветовая гамма, а из рисунка следует, что контроллер 2400a позиционируется в недорогие 1U-2U сервера.
Хотя, если мы откроем коробку
,то увидим в ней полноразмерную (full length) PCI 32/33МГц плату.
Но, как можно легко убедиться, на ней совсем немного чипов (не 7-8, как на AAA-UDMA, а четыре!).
Самый большой чип - это RISC процессор Intel i960 RS100:
В качестве IDE-контроллеров Adaptec использовала широко распространённые чипы фирмы HighPoint - HPT370:
Не могу сказать, чтобы RAID-контроллеры на этих чипах внушали мне доверие, но, судя по всему, здесь они выполняют сугубо ограниченные функции IDE-контроллеров.
У контроллера Adaptec 2400a модуль кэш-памяти выполнен в виде съёмного (а значит сменного!) модуля DIMM PC100 SDRAM. По умолчанию контроллер поставляется с модулем 32МБ, но заявлена поддержка модулей до 128МБайт (включительно).
Контроллер оснащён системой светодиодной индикации, которая, к сожалению, располагается на внутренней, скрытой от пользователя стороне контроллера.
Инсталляция контроллера затруднений у меня не вызвала, драйвера и утилиты "встали" замечательно.
Замена firmware контроллеру была произведена также легко и непринуждённо... Понравилось и то, что теперь создавать и переделывать конфигурацию массивов можно как из BIOS контроллера при загрузке машины, так и утилитой из-под операционной системы.
Тестовая система
материнская плата - SuperMicro 370DLE
процессор - Intel Coppermine 600MHz
память - 2*128Mb SDRAM Micron PC133 ECC Registered
винчестер - WD200BB
видеокарта - Matrox Milennium 4Mb
операционная система - Windows 2000 Pro
Методика тестирования
При создании массивов размер stripe-блока составлял 64КБ. Для файловых тестов массивы размечались в FAT32 на один раздел с размером кластера по умолчанию.
Для контроллера использовались драйвера версии 3.03, версия firmware - 370F.
Тесты проводились по четыре раза, результаты усреднялись. Винчестеры между тестами не охлаждались.
Использовались следующие тесты:
WinBench 99 1.2
IOMeter 1999.10.20
Для IOMeter использовались следующие паттерны:
Паттерны для Intel IOMeter
% of Access Specification | Transfer Size Request | % Reads | % Random
|
---|
File Server Access Pattern
|
10% | 0.5 KB | 80% | 100%
|
5% | 1 KB | 80% | 100%
|
5% | 2 KB | 80% | 100%
|
60% | 4 KB | 80% | 100%
|
2% | 8 KB | 80% | 100%
|
4% | 16 KB | 80% | 100%
|
4% | 32 KB | 80% | 100%
|
10% | 64 KB | 80% | 100%
|
Workstation Access Pattern
|
100% | 8 KB | 80% | 80%
|
Database Access Pattern
|
100 | 8 KB | 67% | 100%
|
RandomWrite
|
100 | 8 KB | 0% | 100%
|
SequentialWrite
|
100% | 256 KB | 0% | 0%
|
RandomRead
|
100% | 8 KB | 100% | 100%
|
SequentialRead
|
100% | 256 KB | 100% | 0%
|
Исследование влияния размера stripe-блока на производительность проводилось на RAID 0 массиве из четырёх винчестеров. На том же массиве исследовалось влияние на производительность объёма кэш-буфера.
Результаты WinBench 99
Посмотрим, что получит пользователь, использующий этот контроллер при работе с обычными Windows-приложениями.
Adaptec 2400A: RAID 0
| 1HDD | 2HDD | 3HDD | 4HDD
|
---|
Business Disk WinMark 99 | 7178 | 7803 | 8510 | 8688
|
High-End Disk WinMark 99 | 24100 | 27700 | 29000 | 29725
|
| | | |
|
Disk Transfer Rate:Beginning | 30600 | 55600 | 82900 | 90300
|
Disk Transfer Rate:End | 20400 | 40800 | 60800 | 80600
|
! Обратите внимание, что значения скорости линейного чтения в начале диска являются ссылками на графики!
Как видим, в этих тестах толку от IDE RAID контроллеров пока не видно. :)
Масштабируемость от количества дисков в RAID0 отчётливо видна только при линейном чтении, а в приложениях результаты тестов слабо зависят от количества дисков. При подключении четвёртого диска не растёт уже и линейная скорость чтения, что говорит о том, что достигли предела пропускной способности PCI32 или контроллера. Если вспомнить предыдущие обзоры, то цифра 90МБ/сек - это тот максимум, в который упираются все PCI32 контроллеры, так что нет никакого резона грешить на Adaptec 2400a. Наоборот, стоит его похвалить... Ну, может быть, слегка пожурить за то, что он не поддерживает PCI64 или PCI 32 66МГц.
Adaptec 2400A: RAID 1; 5; 01
| 1HDD | RAID 1 | RAID 5-3HDD | RAID 5-4HDD | RAID01-4HDD
|
---|
Business Disk WinMark 99 | 7178 | 6583 | 5598 | 5753 | 6943
|
High-End Disk WinMark 99 | 24100 | 21600 | 17525 | 17400 | 23725
|
| | | | |
|
Disk Transfer Rate:Beginning | 30600 | 36500 | 73100 | 67700 | 72900
|
Disk Transfer Rate:End | 20400 | 20500 | 40700 | 57500 | 40600
|
Здесь тоже не очень интересно. Разве что любопытен график чтения с RAID 5 массива на 4-х дисках... Что-то там интерферировало... :)
Результаты IOMeter
Контроллер Adaptec 2400a позиционируется в сервера начального уровня. Не знаю, насколько наши тесты соответствуют "начальному уровню" в понимании Adaptec, но, регулируя уровень нагрузки на контроллер, мы попробуем испытать его "в широком диапазоне нагрузок". Чем чёрт не шутит, может он и SCSI обгонит...
Для начала таблица результатов (только значения Total I/O) контроллера с RAID 0-массивом:
Adaptec 2400A: RAID 0
| 1HDD | 2HDD | 3HDD | 4HDD
|
---|
Fileserver
|
1 | 77,76 | 84,34 | 88,38 | 89,46
|
4 | 79,61 | 124,84 | 167,30 | 198,90
|
16 | 96,67 | 140,80 | 197,74 | 247,66
|
64 | 113,35 | 197,11 | 284,64 | 357,15
|
256 | 126,85 | 216,12 | 314,64 | 403,60
|
Workstation
|
1 | 91,38 | 98,33 | 103,36 | 105,17
|
4 | 94,24 | 148,34 | 198,70 | 230,63
|
16 | 108,65 | 167,71 | 235,76 | 294,47
|
64 | 131,71 | 233,69 | 331,40 | 412,59
|
256 | 145,11 | 256,49 | 366,50 | 473,17
|
Database
|
1 | 81,11 | 94,14 | 101,34 | 104,07
|
4 | 83,29 | 142,53 | 192,50 | 228,08
|
16 | 103,59 | 157,03 | 220,28 | 275,26
|
64 | 121,67 | 209,89 | 302,38 | 380,37
|
256 | 132,70 | 224,87 | 321,67 | 414,13
|
RandomWrite
|
1 | 161,97 | 278,91 | 409,55 | 517,73
|
4 | 158,35 | 278,01 | 403,40 | 516,66
|
16 | 160,37 | 295,64 | 412,78 | 526,54
|
64 | 160,73 | 296,74 | 412,63 | 524,90
|
256 | 158,68 | 297,46 | 411,72 | 525,26
|
SequentialWrite
|
1 | 93,24 | 166,68 | 201,30 | 231,73
|
4 | 103,06 | 173,80 | 237,23 | 309,69
|
16 | 103,41 | 174,86 | 240,10 | 313,66
|
64 | 103,24 | 174,99 | 241,33 | 313,68
|
256 | 95,60 | 166,73 | 233,81 | 310,16
|
RandomRead
|
1 | 77,34 | 76,62 | 77,09 | 77,13
|
4 | 79,08 | 126,00 | 164,32 | 190,96
|
16 | 98,29 | 146,10 | 199,47 | 249,01
|
64 | 118,87 | 209,33 | 299,75 | 374,70
|
256 | 140,55 | 237,90 | 344,80 | 441,70
|
SequentialRead
|
1 | 102,80 | 180,28 | 198,95 | 260,86
|
4 | 107,95 | 208,39 | 311,17 | 390,60
|
16 | 108,16 | 211,23 | 319,60 | 405,43
|
64 | 108,12 | 211,31 | 319,56 | 406,35
|
256 | 106,81 | 209,52 | 316,94 | 403,06
|
Как видим, с маштабируемостью всё в порядке. Чуть позже мы увидим это на графиках.
Adaptec 2400A: RAID 1; 5; 01
| 1HDD | RAID 1 | RAID 5-3HDD | RAID 5-4HDD | RAID01-4HDD
|
---|
Fileserver
|
1 | 77,76 | 81,11 | 77,29 | 77,84 | 85,94
|
4 | 79,61 | 133,05 | 137,23 | 158,50 | 199,49
|
16 | 96,67 | 137,46 | 159,15 | 187,01 | 228,00
|
64 | 113,35 | 194,48 | 207,81 | 240,76 | 309,27
|
256 | 126,85 | 208,19 | 217,24 | 252,66 | 338,07
|
Workstation
|
1 | 91,38 | 84,68 | 88,00 | 88,81 | 88,75
|
4 | 94,24 | 139,01 | 145,03 | 166,18 | 217,17
|
16 | 108,65 | 162,46 | 178,79 | 209,33 | 266,88
|
64 | 131,71 | 218,99 | 229,13 | 260,79 | 341,89
|
256 | 145,11 | 233,18 | 240,83 | 277,41 | 380,75
|
Database
|
1 | 81,11 | 90,17 | 81,44 | 81,81 | 97,05
|
4 | 83,29 | 141,69 | 137,29 | 151,66 | 222,06
|
16 | 103,59 | 145,10 | 152,66 | 172,35 | 239,91
|
64 | 121,67 | 185,48 | 185,47 | 205,43 | 300,26
|
256 | 132,70 | 192,61 | 188,36 | 211,27 | 317,40
|
RandomWrite
|
1 | 161,97 | 158,26 | 105,65 | 110,08 | 246,81
|
4 | 158,35 | 149,18 | 105,99 | 110,38 | 252,82
|
16 | 160,37 | 148,64 | 105,28 | 110,15 | 254,55
|
64 | 160,73 | 148,74 | 105,61 | 109,78 | 249,05
|
256 | 158,68 | 145,85 | 104,94 | 109,47 | 248,81
|
SequentialWrite
|
1 | 93,24 | 82,83 | 49,12 | 52,16 | 128,92
|
4 | 103,06 | 85,67 | 54,97 | 59,19 | 120,89
|
16 | 103,41 | 86,12 | 55,75 | 60,22 | 121,76
|
64 | 103,24 | 85,77 | 55,67 | 60,28 | 122,73
|
256 | 95,60 | 81,38 | 55,24 | 59,59 | 122,36
|
RandomRead
|
1 | 77,34 | 77,85 | 75,36 | 75,33 | 76,51
|
4 | 79,08 | 155,29 | 161,83 | 187,13 | 227,62
|
16 | 98,29 | 160,00 | 196,45 | 244,61 | 266,94
|
64 | 118,87 | 234,27 | 294,20 | 368,64 | 377,75
|
256 | 140,55 | 257,48 | 333,25 | 428,00 | 431,53
|
SequentialRead
|
1 | 102,80 | 85,65 | 137,36 | 157,64 | 178,40
|
4 | 107,95 | 113,52 | 191,40 | 267,68 | 221,08
|
16 | 108,16 | 113,55 | 196,62 | 278,43 | 193,60
|
64 | 108,12 | 113,54 | 127,76 | 181,24 | 163,88
|
256 | 106,81 | 112,73 | 127,59 | 179,87 | 163,12
|
А здесь начинаются интересности! Массив RAID 1 значительно быстрее одиночного диска, RAID 5 тоже очень неплох. Интересно будет сравнить их на диаграммах. :)
Для этого возьмём результаты различных вариантов массива в каждом паттерне при максимальной нагрузке:
Первый тест и первый шок: RAID 1 по скорости лишь немного уступил RAID 0 на двух винчестерах! Да и RAID 5 оказался очень даже быстр. Правда, добавление в RAID 5 четвёртого винчестера не привело к такому же росту скорости, как это наблюдается на RAID 0, но ведь так и должно быть! :)
Также нужно отметить очень хорошие результаты RAID 01 массива, который обогнал по скорости RAID 0 на трёх винчестерах.
Судя по результатам RAID1-массива, Adaptec взяла на вооружение идею чередования запросов на чтение на оба винчестера в mirror-группе, которую с успехом применяла ранее только 3Ware. Т.е. при чтении массив RAID 1 ничем не уступает RAID 0 на двух винчестерах!
Посмотрим, как это отразится в остальных паттернах:
А в этом паттерне мы видим, что RAID 1 уступил немного RAID 0 2HDD, но не потому, что скорость работы RAID 1 массива упала, просто RAID 0 "ускорился" при работе с 8КБ блоками (в паттерне Fileserver размер блоков переменный, но основная доля запросов идёт на 4КБ блоки).
Здесь причина отставания RAID1 от RAID 0 2HDD немного другая - выросла доля операций записи, а "чередовать" их не получается. Запись блока производится на оба винчестера, и это отнимает чуть большее время, чем запись на один из винчестеров в RAID 0.
Точно такая же проблема возникает и у RAID 01 массива, чья скорость уменьшается до уровня RAID 0 3HDD.
Самый "тяжёлый" режим для RAID 1, RAID5 и RAID 01... Скорость RAID 1 уже уступает скорости одиночного винчестера, ибо запросов на чтении нет как таковых, а каждый запрос на запись нужно сдублировать для второго винчестера в массиве.
Для RAID 5 скорость записи ограничивается, по всей видимости, скоростью XOR процессора и необходимостью записывать не только указанный блок, но и модифицированный блок контрольной суммы.
При увеличении размера блока до 256КБ мало что изменилось, кроме, пожалуй, результатов RAID 01 - ему, бедненькому, уже трудновато из-за возросшей нагрузки на кэш-память...
Вот яркое подтверждение моей гипотезы о "чередовании" запросов на чтение в RAID 1 & 01 - результаты этих массивов практически равны (RAID 1 даже чуть быстрее RAID 0!...). Любопытно также, что чтение с RAID 5 массива не сопровождается падением скорости относительно RAID 0 массива с тем же количеством дисков.
В этом паттерне массивы RAID 1; 5 и RAID 01 выглядят не так здорово. Ну, с RAID 1 и RAID 01 всё ясно: так как запросы на чтение не распределяются между винчестерами (или stripe-группами) согласно заданному размеру stripe-блока, то 256КБайт запрашиваются с каждого винчестера (или stripe-группы). Т.е. каждый из винчестеров массива RAID 1 читает и выдаёт на-гора блоки по 256Кбайт (правда, следующий запрос на 256КБайт обрабатывает другой винчестер). Это загружает шину и снижает общую производительность системы.
А вот почему так плохо выглядит RAID 5 - сказать сложно.
Влияние размера Stripe block
В тех паттернах IOMeter, которые мы используем для тестов, чётко фиксированы размеры блоков данных, с которыми работает тест. Но кто может поручиться, что тот размер stripe-блока, который мы приняли "по умолчанию", позволит достичь на контроллере максимальной скорости? Я - нет! :)
Поэтому я выполнил тесты для всех возможных вариантов размера stripe-блока, который предлагает выставить контроллер Adaptec 2400A - 32; 64; 128 и 256КБайт.
Ниже я привёл графики зависимости Total I/O (т.е. скорости обработки контроллером запросов) от размера stripe-блока для каждого паттерна.
Как видите, есть чёткая зависимость скорости от размера stripe-блока во всех паттернах, кроме SequentialWrite и SequentialRead. В большинстве паттернов чем больше stripe-блок, тем выше скорость. Также мы видим, что дальнейшее увеличение размера страйп-блока (>256) вряд ли принесёт какие-либо дивиденды. Впрочем, специалисты Adaptec уже подумали об этом за нас. :)
Влияние размера кэш-буфера
Другим, не менее важным параметром, влияющим на быстродействие, является размер кэш-буфера контроллера. Контроллер Adaptec 2400a продаётся с 32МБ-ным модулем, но, при желании, размер кэша можно увеличить до 128МБайт (про текущие цены на 128МБ модули я писать не буду, ибо через неделю цифры стареют).
Желание у меня было и я его реализовал:
Почему же контроллер с 128МБайт кэша показал худшую производительность, чем с 32МБ или с 64МБ модулями? Возможно, всё дело в том, что у меня под рукой не оказалось 128МБ модуля PC100 с таймингами 2-2-2 (а 32 и 64 МБайт модули были именно такими) и контроллеру не понравилась та PC133 планка, которую я ему подсунул... Но взглянем на эту проблему с другой стороны: мы убедились, что для получения максимальной производительности нужен модуль не только максимальной ёмкости, но и с минимальными таймингами (желательно brand-name, с корректно прописаным SPD).
* Для справки: текущие цены на SDRAM 32MB - 3 у.е.; 64MB - 7 у.е. 128MB - 10 у.е
Влияние настроек системы кэширования
Насколько я понял, включение опции
write back в BIOS контроллера приводит к тому, что контроллер начинает принудительное кэширование операций записи, т.е. он создаёт в кэше контроллера некую очередь команд на запись и выполняет записи в "удобное" время. Отложенная запись,
как мы знаем, существенно влияет на скорость работы винчестера. Посмотрим, как она повлияет на скорость работы RAID-массива!
Write back vs. Write through
| Write through | Write back
|
---|
Fileserver
|
1 | 88,11 | 88,23
|
4 | 189,91 | 190,09
|
16 | 232,78 | 233,40
|
64 | 314,35 | 314,61
|
256 | 382,79 | 381,42
|
Workstation
|
1 | 103,74 | 103,82
|
4 | 219,11 | 219,77
|
16 | 275,66 | 275,77
|
64 | 365,85 | 364,78
|
256 | 449,81 | 446,26
|
Database
|
1 | 102,70 | 103,29
|
4 | 218,89 | 218,23
|
16 | 259,74 | 259,10
|
64 | 332,46 | 330,75
|
256 | 392,76 | 393,15
|
RandomRead
|
1 | 76,34 | 76,04
|
4 | 181,96 | 182,54
|
16 | 235,85 | 234,95
|
64 | 329,41 | 330,69
|
256 | 415,87 | 416,47
|
SequentialRead
|
1 | 256,14 | 258,22
|
4 | 376,88 | 377,45
|
16 | 381,51 | 382,27
|
64 | 398,63 | 398,88
|
256 | 394,95 | 395,44
|
RandomWrite
|
1 | 517,02 | 516,78
|
4 | 513,07 | 508,80
|
16 | 523,39 | 520,36
|
64 | 519,95 | 520,85
|
256 | 521,14 | 521,14
|
SequentialWrite
|
1 | 231,61 | 232,55
|
4 | 308,08 | 306,06
|
16 | 309,00 | 308,94
|
64 | 313,27 | 313,14
|
256 | 305,62 | 306,19
|
Как видим, никакой разницы в скорости массива при включении Write back не выявлено. Варианта два: либо эта опция была унаследована от биоса SCSI-контроллеров Adaptec и в 2400а не работает, либо эта опция активирована по умолчанию.
Надёжность
Для проверки контроллера на способность распознавать отказы дисков в массиве и принимать адекватные меры были сымитированы "несчастные случаи" в двух типах массива - RAID 1 и RAID 5. Время ребилда RAID 1 массива составило порядка 15 минут, а вот восстановление RAID 5 массива на 4 диска заняло полтора часа. И это при том, что IOMeter был остановлен и приоритетность rebuild-а была выставлена в максимум.
Выводы
Чтобы сохранить некую интгригу, я не буду сейчас писать о том, как новый контроллер Adaptec соотносится с изделиями конкурентов, но очевидно, что он значительно быстрее, чем Adaptec AAA-UDMA (Скорость sequential записи у 2400a в RAID 5 более чем в три раза выше, чем у AAA-UDMA!). В паттернах, имитирующих серверную нагрузку, контроллер также показал достойные результаты. Плюс к этому, у контроллера Adaptec 2400a имеется возможность увеличить скорость относительно "базового комплекта" простым увеличением объёма кэш-буфера.
Итак, вкратце перечислим достоинства и недостатки контроллера Adaptec 2400A:
Плюсы:
Великолепная скорость RAID 0, 1, 01
Возможность наращивания объёма кэш-буфера
Наличие драйверов под все распространённые OC
Минусы:
Большой размер платы
Отсутствие поддержки PCI 32/66МГц или PCI 64
Продолжение следует...