Нужен ли нам интерфейс U320 SCSI. Попытка №2.

Автор: niknik
Дата: 27.02.2003
Все фото статьи

Введение


Как это часто бывает в тот момент, когда я начал писать статью о Cheetah 15K.3, компания Adaptec выпустила новую версию драйвера для контроллера 39320D. Так как именно этот контроллер используется для тестирования жёстких дисков с U320-интерфейсом, а на драйвер версии "1.0.000.000" я смотрел косо с самого первого теста U320-диска, то это не могло меня не заинтересовать.
Однако, после проведения всех тестов выяснилось, что для того, чтобы объяснить результаты Cheetah 15K.3 на новом драйвере нужно проводить дополнительные исследования. Не то, чтобы результаты были "плохие" - они были "другие". :)
А диск Cheetah 15K.3 между тем уже нужно было отдавать...
В итоге я решил вычленить из обзора Cheetah 15K.3 результаты, полученные на Adaptec 39320D, и подробнее рассмотреть поведение диска на разных драйверах в отдельной статье. Спустя некоторое время я вернулся к теме драйверов и теперь готов дать Вам полный отчёт.

Вторая тема, которая будет обсуждаться в этой статье - работа нескольких дисков на одном шлейфе, "добавилась" в статью спонтанно. Не так давно в одном молодом, но прогрессивном компьютерном журнале я прочёл что-то вроде полемики на тему необходимости U320-интерфейса для SCSI-дисков. В качестве "стандартного аргумента", верность которого подвергалась сомнению, была использована знакомая до боли цитата...
На текущий момент с уже не самого нового SCSI-диска Seagate Cheetah X15 36LP можно считывать поток данных в 60 МБ/сек., и, при использовании трёх таких винчестеров на одном канале SCSI, пропускной способности Ultra160 (160МБ/сек.) уже не хватает для утилизации скорости трёх таких винчестеров (3*60=180). А ведь интерфейс позволяет использовать 15 таких винчестеров на одном шлейфе.
Если учесть, что следующее поколение SCSI-дисков, которое уже на подходе, ещё выше поднимет планку в плотности записи (а, следовательно, вырастет и скорость линейного чтения), то становится ясно, что интерфейс Ultra160 становится узким местом дисковой подсистемы.

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

Чтобы расставить все точки над "ё" я решил проверить "справедливость" своей цитаты и протестировал скорость работы контроллеров U160 и U320 при обработке потоковых запросов на чтение.

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


В первой части обзора мы рассмотрим "разницу в скорости" диска Cheetah 15K.3 на контроллере Adaptec 39320D на различных драйверах в паттернах Fileserver и Webserver.
Тесты винчестера проводились на следующей платформе:

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

материнская плата - Asustek P3B-F;
процессор - Intel P3 600E;
память - 2*128Mb SDRAM Hyundai PC100 ECC;
винчестер - IBM DPTA 372050;
видеокарта - Matrox Millennium 4Mb;
операционная система - Windows 2000 Pro SP2;


Во второй части статьи мы рассмотрим зависимость скорости чтения с пакета из четырёх дисков Cheetah 15K.3 от типа SCSI-контроллера при переменном размере блока данных. Так как ожидаемый трансфер с дисков должен был превысить 133МБ/сек., то была использована несколько более "крутая" платформа.

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

материнская плата - Intel SE7501BR2;
процессор - 2x XEON 2,8ГГц;
память - 4*1GB DDR PC2100 ECC;
винчестер для OC- IBM IC35L018UWD210;
операционная система - Windows 2000 Pro SP2;

И никаких 33МГц PCI!

Четыре винчестера Cheetah 15K.3 подключались к контроллерам Adaptec 29160N и 39320D на один канал.
Для того, чтобы равномерно нагрузить диски в тесте IOMeter создавалось четыре worker-а с одинаковыми "заданиями". Каждый worker должен был посылать запросы на свой, "именной" диск, имитируя работу некоего "реального" приложения. При одновременном старте всех worker-ов мы измеряем суммарную скорость прокачки данных со всех дисков через контроллер в оперативную память.

Контроллеры тестировались со следующими версиями драйверов:

Adaptec 29160N - 4.10.4002
Adaptec 39320В - 1.0 и 1.1

Для тестов использовались диски Seagate Cheetah 15K.3 с firmware "0002".

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


Итак, начнём с результатов тестов диска в паттернах Fileserver и Webserver:


Если мы превратим эту таблицу в график (достаточно и результатов в паттерне Fileserver), то сразу заметим ЭТО!


Обратите внимание на то, как изменилось поведение диска Cheetah 15K.3/320 на драйверах 1.1! Если на драйверах 1.0 скорость Cheetah 15K.3 на U160 и на U320 была одинаковой (что, кстати, опровергает еще одну теорию...), то на драйверах 1.1 поведение диска резко изменяется. Скорость работы при 64 запросах на драйверах 1.1 намного выше, чем на драйверах 1.0, а при 256-ти запросах, наоборот, ниже!
Признаться, это меня тогда озадачило... :)

Однако, народная мудрость гласит: - "Если ничего не помогает, прочти документацию!". И, действительно, в файле ReadMe.txt, прилагавшемся к драйверам, я нашёл ссылку на один волшебный ключик реестра, в котором можно управлять некоторыми параметрами контроллера.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\adpu320\Parameters\Device\

Если сравнить содержимое этого раздела реестра для двух версий драйверов контроллера Adaptec 39320D, то мы сразу найдём разницу:
Adaptec 39320D v. 1.0


Adaptec 39320D v. 1.1

Как видим, в этом ключе реестра у двух драйверов различается только значение параметра MAXTAGS. Что же это за параметр? Ответ на этот вопрос можно найти всё в том же файле ReadMe.txt.

MAXTAGS - Specifies a tagged command queue depth per target.

Этот параметр определяет максимальное количество команд, которое контроллер может пересылать винчестеру, не дожидаясь окончания выполнения предыдущей команды. Внутри этой очереди винчестер может изменять порядок выполнения команд по своему усмотрению. Как Вы понимаете, глубина этой очереди самым непосредственным образом влияет на производительность...

Остальные два параметра не так интересны (так как они остались неизменными), но для порядка расмотрим и их:

MAXIMUMSGLIST - Sets the maximum transfer size for an individual command. The formula is: TRANSFER SIZE =PAGE_SIZE * (number of elements -1)

Параметр назначает максимальный размер блока данных, передаваемый одной командой. Для обеих версий драйверов этот параметр имеет значение "65", что определяет максимальный размер блока данных передаваемого одной командой в 256КБ.

NumberOfRequests - Specifies the maximum number of outstanding or concurrent requests that can be delivered to the SCSI adapter.

Этот параметр определяет количество команд, которое можно передавать SCSI-контроллеру.

Итак, мы нашли отличия между драйверами 1.0 и 1.1. Но как убедиться в том, что именно этот параметр реестра так влияет на скорость? Интересно, если мы в драйверах 1.1 изменим значение параметра MAXTAGS на 64 - получим ли мы ту же скорость, что и в драйверах 1.1 на нагрузке в 256 запросов? Ну, а чтобы нам было совсем интересно, увеличим параметр MAXTAGS до максимального значения в 256 команд... Результаты Cheetah 15K.3, полученные на контроллере Tekram DC-390U4W (чип LSI 1030), добавлены в этот обзор факультативно...

В таблице в столбцах озаглавленных "U320 v 1.1-64" и "U320 v 1.1-256" приводятся результаты, полученные на драйверах 1.1 с параметром MAXTAGS 64 и 256 соответственно.


Что же мы видим? Скорость диска на "подправленных" драйверах 1.1 (MAXTAGS=64) аналогична скорости драйверов 1.0. Не хотелось бы думать, что вся разница между этими драйверами в содержимом одного ключа реестра. ;)
Интересно, но увеличение параметра MAXTAGS до 256 практически не повлияло на результат (скорость на больших нагрузках даже несколько упала).
Итак, влияние на скорость жёсткого диска значения параметра MAXTAGS можно считать доказанным, плюс, попутно, "раскрыта" тайна драйверов 1.1.

Если же по полученным данным построить наши стандартные рейтинги быстродействия:



то может показаться, что на драйверах 1.1 диск Cheetah потерял в скорости. Однако, так ли это? Нагрузка в 256 запросов на диске возможна, но маловероятна. Если на контроллере возникает такая очередь команд, то можно говорить о том, что компьютер, в котором установлена эта дисковая подсистема, используется явно не по назначению...
Мы используем такую глубину очереди команд (256 исходящих запросов) только для того, чтобы оценивать качество оптимизации алгоритмов кэширования винчестеров и контроллеров, и, справедливости ради, давно пора выбросить эту нагрузку из формулы расчёта рейтингов... Но вплоть до оглашения методики тестирования винчестеров и контроллеров следующего поколения текущую систему подсчёта рейтингов придётся сохранить во имя совместимости.

Исходя из вышесказанного следует признать, что драйвера 1.1 для контроллера Adaptec 39320D не ухудшили, а улучшили быстродействие жёсткого диска за счёт большей скорости последнего при нагрузке в 64 запроса.

Ну, что же, нам осталось проверить, как SCSI-контроллеры справятся с прокачкой данных с четырёх дисков Cheetah 15K.3. Как мы помним, каждый диск Cheetah 15K.3 может выдавать поток данных больше 70МБ/сек., так что контроллерам придётся поработать! :)
Для того, чтобы шина PCI не стала узким местом нашей дисковой системы, контроллеры тестировались в слоте PCI-X/100МГц материнской платы Intel SE7501BR2.


Перенесём полученные данные на диаграмму:


Как видите, при использовании только одного винчестера на канале при большом размере пакета между U160 и U320-контроллерами нет никакой разницы. Оба они справляются с потоком в 70МБ/сек. Однако уже при двухвинчестерной конфигурации мы наблюдаем обозначившееся преимущество контроллера U320 над контроллером U160. И что самое интересное - контроллер U320 начинает опережать своего соперника при работе с блоками данных малого размера! Вот где сказывается преимущество в большей пропускной способности интерфейса U320...
При дальнейшем увеличении количества винчестеров на шлейфе... Стоп, а где же графики скорости трёх и четырёхвинчестерных конфигураций на U160-контроллере? Ах вот, где они спрятались - за графиком двухдисковой системы на U160! :)
Вот это сюрприз... Скорости всего двух дисков Cheetah 15K.3 хватило для утилизации пропускной способности U160. При дальнейшем увеличении количества дисков на канале скорость одновременного чтения с них совсем не растёт! А в это время на контроллере U320 такие конфигурации продолжают работать, работать и работать. :)

Хотя и на U320 у четырёхдисковой конфигурации наблюдаются проблемы. Если двух и трёхдисковые конфигурации были, соответственно, в два и три раза быстрее, чем однодисковая, то 4-х дисковая система масштабируется хуже... Что же, скорость контроллера тоже не беспредельна...

Выводы


В результате проведённых экспериментов мы выяснили, что современные U320-диски прекрасно работают с контроллерами U320. Стоит ли покупать контроллер U320 для того, чтобы повесить на него одиночный SCSI-диск? Нет, конечно, такая покупка себя не оправдает. Однако для работы с потоковыми данными и несколькими винчестерами контроллер 39320D может быть полезен.
Тем более, что компания Adaptec выпустила для контроллера 39320D комплект из BIOS и драйверов, которые превращают этот контроллер в простейший RAID-контроллер с поддержкой массивов 0 и 1.

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

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

компании ASBIS Москва за предоставленые диски Cheetah 15K.3,
компании Альянс за контроллер Adaptec 39320D,
Московскому представительству компании Intel за платформу на материнской плате SE7501BR2.