Введение
Итак, после очередной паузы, сегодня мы возвращаемся к теме WD Raptor2 и особенностей работы TCQ (Tagged Command Queuing). Причина, по которой мы решили поворошить пепел костра в поисках тлеющих углей, проста - в наших руках оказался контроллер компании
PacificDigital - Talon ZL4–150. Компания Pacific Digital знаменита тем, что она была единственной, кто производил ATA-контроллеры с поддержкой TCQ.
Потому вполне логично предположить, что SATA-контроллер этой фирмы идеально подойдёт для дисков WD Raptor2, ATA-наследственность которого мы
установили в статье "WD740GD или Raptor2".
Контроллер Talon ZL4–150, как легко догадаться из его названия, поддерживает работу четырех SATA150 устройств, из которых позволяет организовывать массивы следующих уровней: JBOD, RAID0, RAID1 и RAID10. Любопытно, что на момент тестирования контроллер не поддерживал создание RAID0-массива из трёх дисков.
Таблица параметров:
В комплект поставки кроме самого контроллера входят руководство пользователя, драйверы и утилиты как на CD, так и на дискете и четыре SATA кабеля.
Внешний вид контроллера:
Под радиатором, находящимся в центре платы спрятан основной чип контроллера. Справа от него находится микросхема Flash-памяти. За счет того, что SATA-разъемы «утоплены» относительно верхнего края контроллера Talon ZL4–150, сам он получился низкопрофильным. На плате контроллера, рядом с каждым разъёмом для подключения SATA-кабеля, отчётливо видны одинаковые микросхемы. И, в них мы, нимало не удивившись, можем опознать уже не раз нам встречавшиеся контроллеры Marvell 88i8030.
То есть можно смело говорить о том, что контроллер Talon ZL4-150, по сути, является PATA RAID-контроллером, получившим возможность работать с SATA-дисками за счёт наличия конвертеров PATA-SATA от Marvell. Что же, это нас совсем не пугает… :)
Как уже
говорилось, чип Marvell никоим образом не мешает диску и контроллеру работать с tagged-командами и, потому, не будем считать наличие конвертера за недостаток. Лучше посмотрим на результаты работы контроллера.
Методика тестирования
Тестовая система:
корпус - 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 3.08 на драйверах 1.1.0.0. Контроллер устанавливался в слот PCI-X/133МГц (хотя контроллер поддерживает только PCI32/66МГц). Диски WD740GD (Raptor2) устанавливались в штатные салазки корпуса SC5200 и крепились четырьмя винтами за нижнюю грань.
Управление опцией поддержки TCQ осуществляется не через BIOS контроллера, а посредством фирменной утилиты под Windows. К сожалению, утилита не позволяет задавать режим работы каждому диску независимо, а применяет единую настройку всем подключенным дискам. Второй неприятный момент, весьма серьёзно отразившийся на количестве наших тестов, состоял в том, что утилита, после каждой перезагрузки выставляет параметр поддержки очереди команд в «TCQ Enabled» вне зависимости от того, в какое положение вы выставили параметр «руками» до перезагрузки. Мы, конечно, уважаем мнение компьютерных экспертных систем, но не потерпим произвола…
Так как наша методика тестирования предполагает многократные перезагрузки во время тестов, а работать в «ручном» режиме (то есть неусыпно сидеть перед компьютером и в нужные моменты «топтать» правильные кнопки) довольно затруднительно, то контроллер Talon ZL4-150 был «наказан» - тесты на нём проводились по сокращённой программе. Впрочем, чуть позже мы расскажем, почему это ни на что не повлияло…
В режиме «TCQ OFF» контроллер был протестирован только в одном режиме - 1HDD JBOD.
Контроллер не обладает собственной кэш-памятью (16КБ FIFO-буферов не в счёт), так что никаких настроек системы кэширования у контроллера нет. Также нет возможности управлять режимом работы отложенной записи дисков. Судя по результатам массивов, отложенная запись у дисков контроллером не запрещается.
Результаты тестов
Начнем с проверки способности дисков к переупорядочиванию команд при помощи специального паттерна, содержащего запросы на чтение секторов со случайным адресом.
Увеличивая нагрузку на диск (количество исходящих запросов), от 1 до 256 с шагом 1, будем судить о наличии/отсутствии TCQ по тому, как увеличивается производительность диска (скорость обработки им поступающих запросов) в зависимости от глубины очереди запросов.
Мы уже использовали такой тип нагрузки для определения «наличия поддержки TCQ» у диска WD740GD на контроллере Promise SX8, но тогда контроллер Promise у нас был в виде сэмпла… Соответственно, по результатам тех тестов мы могли дать только качественную оценку явлению.
На графике, кроме результатов контроллера Talon ZL4-150, приведем результаты тестирования этих же дисков WD740GD на контроллере Promise S150 TX4 (контроллер без поддержки TCQ).
Как мы видим, включение опции TCQ дает заметный вклад в рост производительности, и, что особенно важно для большинства пользователей, даже на малых нагрузках этот вклад очень заметен. Что характерно, результаты WD740GD на контроллере Talon ZL4-150 с выключенной поддержкой TCQ выглядят примерно так же, как и на контроллере Promise SATAII 150 SX8 в статье "
Raptor2: И все-таки она вертится".
Точно так же срабатывает запрет на использование TCQ – до глубины очереди в 32 исходящих запроса действует абсолютный запрет на внеочерёдное исполнение команд, как на уровне диска, так и на уровне драйвера контроллера (см. график зелёного цвета). Зато после этой «заветной цифры» мы можем наблюдать резкий рост скорости работы контроллера – начинает работать сортировка запросов драйвером контроллера.
Вид графика «TCQ ON» у контроллера Talon сильно напоминает график, который мы ранее получили на контроллере Promise. Есть и «полочка» в районе нагрузки в 32 запроса, есть и два «горба» на больших нагрузках. Стало быть, TCQ на контроллере Pacific Digital тоже работает.
В то же время, очевидно, что результаты, полученные нами при отключенной поддержке TCQ, практического смысла не имеют. Ведь контроллер в режиме «TCQ OFF» попросту «задушил» производительность дисков.
Посмотрим, как контроллер Talon ZL4-150 справится со смешанным потоком запросов:
IOMeter: паттерн Database В этом паттерне мы проверяем способность контроллеров работать с потоком запросов на чтение и запись 8КБ блоков данных со случайным адресом. Изменяя процентное соотношение запросов на чтение и запись в потоке, мы можем выявить качество сортировки драйвером контроллера запросов на чтение и запись:
Сначала, рассмотрим результаты работы контроллера в виде таблицы:
А затем, в виде графика зависимостей скорости передачи данных от удельного веса запросов на запись для очередей разной длины. Так как на сей раз количество поддерживаемых контроллером RAID-массивов невелико, то графики разделим только по глубине очереди запросов:
При линейной нагрузке в режиме RandomRead все массивы демонстрируют одинаковые скорости. Но с появлением запросов на запись, влияние отложенной записи дисков и типа массива на скорость массивов становится заметно. Количество дисков в массиве RAID0 оказывает существенное влияние на скорость работы массива только при высоком содержании запросов на запись.
Массив RAID1 начинает отставать от одиночного диска, когда количество запросов на запись превышает половину. Массив RAID10 ведет себя по отношению к массиву RAID0 из двух дисков с точностью до наоборот. Поэтому определить влияние зеркалирования на такой нагрузке сложно.
Зато определить влияние TCQ на таких нагрузках можно без труда - оно отрицательно. Это значит, что при линейной нагрузке механизм TCQ «работает в минус», то есть на обработку запросов расходуется время, но это не приносит пользы. При большой доле запросов на запись эти потери времени сглаживаются отложенной записью дисков, но в остальных режимах отставание одиночного диска с включенной опцией TCQ от диска без нее, хорошо заметно на графике.
С увеличением нагрузки графики массивов RAID0 начинают демонстрировать масштабируемость по количеству дисков в массиве. Однако, после достижения в очереди сорока процентов запросов на запись, график скорости массива RAID0 из двух дисков идёт вниз…
Массив RAID10 ведет себя довольно неплохо. Его скорость плавно уменьшается по мере увеличения доли запросов на запись в потоке. И если в режиме RandomRead массив RAID10 немного уступил в скорости массиву RAID0 из четырёх дисков, то в режиме RandomWrite массив RAID10 опередил массив RAID0 из двух дисков. То есть, для массива RAID10 работает алгоритм чередования запросов на чтение между дисками зеркальных пар.
К сожалению, этого нельзя сказать про второй массив, использующий зеркалирование. Его скорость всегда ниже, чем у одиночного диска, особенно при большой доле запросов на запись.
Судя по графику, нагрузки в шестнадцать запросов уже достаточно для демонстрации преимуществ технологии TCQ. При высоком содержании запросов на чтение диск без TCQ заметно медленнее, себя же, но с активированной поддержкой TCQ.
Но если мы вспомним, как контроллер Talon “отключает” поддержку TCQ, то поймём, что на основе этих данных говорить о «резком преимуществе» технологии TCQ нельзя.
К тому же, с уменьшением числа запросов на чтение, влияние отложенной записи дисков становится все более значимым и, начиная с шестидесяти процентов запросов на запись, скорость диска почти не зависит от поддержки TCQ.
Еще большее увеличение нагрузки почти не приводит к изменению распределения скоростей, но подчеркивает недостатки в работе некоторых массивов. Провал на графике массива RAID0 из двух дисков стал еще сильнее и лишь слегка превысил скорость одиночного диска, а массив RAID1, по-прежнему, медленнее одиночного диска почти во всех режимах. Интересно, что диск без опции TCQ при высоком содержании запросов на запись оказался быстрее, чем диск, где эта опция включена.
По результатам работы контроллера Talon ZL4–150 в паттерне со смешанными запросами можно сказать, что алгоритм чередования запросов на чтение между дисками зеркальной пары не работает для массива RAID1 и использовать этот вид массива можно только для увеличения надёжности хранения данных. Прибавки скорости от массива RAID1 по сравнению с одиночным диском, увы, не будет.
В массиве RAID10, наоборот, этот алгоритм работает прекрасно и позволяет заметно увеличить скорость чтения случайных запросов. Массив RAID0 из четырех дисков показал очень высокую скорость (ранее мы не видели такой скорости ни на одном SATA RAID-контроллере и четырёх дисках), а у массива RAID0 из двух дисков возникают проблемы при большой доле запросов на запись.
Включение опции TCQ, в основном, приводит к увеличению скорости работы диска, однако, это увеличение невелико по сравнению с предыдущим тестом.
IOMeter: паттерны Sequential Read&Write Теперь посмотрим, как контроллер справится с последовательным чтением/записью.
На массив при помощи программы IOMeter подаётся поток запросов на чтение/запись с глубиной очереди команд, равной четырём. Раз в минуту в тесте меняется размер блока данных, так что после окончания теста мы получаем зависимость скорости линейного чтения или записи от размера блока данных. Полученные результаты (зависимость скорости прокачки данных контроллером от размера блока данных) сведены в таблицы:
Построим график зависимости скорости чтения контроллера от размера блока:
Вообще-то мы ожидали, что RAID-массивы, особенно RAID0-массивы, с разным количеством дисков покажут разные скорости чтения, однако…
Отчётливо видны две «группы». В первую вошли массив RAID1 и два JBOD с разной политикой поддержки TCQ, а во вторую – массивы RAID0 из двух и четырёх дисков и массив RAID10.
Почему массивы показали именно такие скорости – вопрос не к нам. :)
Цифры в 60 и 77МБ/сек нельзя связать ни с скоростью чтения с одиночного диска (это где-то 68МБ/сек при такой нагрузке), ни с ограничениями шины PCI. В общем, не знаем…
Ясно одно – пользы от TCQ мы здесь не сможем увидеть при всём желании.
Переходим к последовательной записи.
Сначала таблица с результатами:
А затем график, который мы построим так же, как и в случае последовательного чтения:
Мы видим, что графики одиночного диска с включенной и выключенной опцией TCQ полностью совпадают, но остальные графики, к сожалению, просто ужасны.
Во-первых, начиная с четырехкилобайтных блоков скорости всех (!!!) массивов ниже, чем у одиночного диска. Во-вторых, скорости массивов RAID0 очень близки, причем двухдисковый массив зачастую опережает четырехдисковый. В-третьих, скорости массивов с зеркалированием (RAID1 и RAID10) настолько малы - просто ниже некуда.
В общем, на синтетических тестах, контроллер Talon ZL4–150 показал далеко не лучшие результаты. Посмотрим, как он покажет себя при работе в паттернах, имитирующих реальные нагрузки:
IOMeter: Fileserver&Webserver Начнём с паттерна Fileserver:
Построим график зависимостей скоростей работы массивов от глубины очереди запросов:
Массивы RAID0 демонстрируют прекрасное масштабирование по количеству дисков в массиве даже при небольшой глубине запросов. Массивы RAID1 и RAID10 всегда быстрее (и на достаточно приличную величину) одиночного диска и массива RAID0 из двух дисков соответственно. Учитывая, что в паттерне Fileserver 20% запросов на запись, можно сказать, что в этом режиме алгоритм зеркалирования массивов RAID1 и RAID10 работает достаточно хорошо. Кстати, это пока первый тест, в котором массив RAID1 работает стабильно быстрее одиночного диска.
Для сравнения производительности различных RAID-массивов применим рейтинговую систему. Считая все нагрузки равновероятными, общий балл будем рассчитывать, как среднее значение скорости обработки контроллером запросов при всех вариантах нагрузки:
Ну просто идеальная картинка :) Массив RAID0 из четырёх дисков занимает первое место. Массивы RAID10 и RAID1 значительно производительнее массива RAID0 из двух дисков и одиночного диска соответственно. Диск с выключенной опцией TCQ отстал от всех.
Переходим к паттерну Webserver:
А теперь в виде графиков:
Массивы RAID0, как и в паттерне Fileserver демонстрируют прекрасное масштабирование по количеству дисков в массиве даже при небольшой глубине запросов. Отсутствие запросов на запись приводит к тому, что массивы-зеркала RAID1 и RAID10 могут максимально продемонстрировать свои возможности. Скорость массива RAID10 практически совпадает со скоростью массива RAID0 из четырех дисков, а массив RAID1 во всех режимах значительно быстрее массива RAID0 из двух дисков.
Сортировка запросов в этом паттерне, так же как и в предыдущем прилично увеличивает скорость работы.
Сравним производительность различных массивов, применяя рейтинговую систему и рассчитывая общий балл, так же как и в паттерне Fileserver:
Распределение по производительности немного отличается от паттерна Fileserver, но вполне объяснимо. Наличие в паттерне Webserver 100% запросов на чтение дает преимущество массивам, использующим зеркалирование. Поэтому, массив RAID0 из четырех дисков только чудом не отдал первое место массиву RAID10. Массив RAID1 уверенно обогнал массив RAID0 из двух дисков. Диск с выключенной опцией TCQ как и в предыдущем паттерне отстал от всех.
IOMeter:Workstation Этот паттерн имитирует интенсивную работу пользователя в различных приложениях на файловой системе NTFS5:
Построим график зависимостей скоростей работы массивов от глубины очереди запросов:
Массивы RAID0 хорошо масштабируются, начиная с очереди в четыре запроса. Массив-зеркало RAID10 работает быстрее массива RAID0 из двух дисков во всех режимах. Второй зеркальный массив RAID1 опережает одиночный диск только при коротких очередях. При очереди в четыре запроса, его скорость резко снижается, а после шестнадцати запросов он начинает отставать от одиночного диска.
Диск с выключенной опцией TCQ отстает от всех остальных массивов даже при одиночных запросах (причина такого поведения уже неоднократно объяснялась).
Для сравнения между собой производительности разных 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 оказался быстрее одиночного диска, а наличие большой доли запросов на запись в паттерне привело к тому, что распределение массивов выглядит как паттерне Fileserver.
Winbench99 Этот пакет позволяет "измерить" производительности винчестеров при работе с "десктопными" приложениями в файловых системах NTFS и FAT32.
Начнем с результатов тестирования в системе NTFS:
Сравним скорости различных массивов по двум интегральным подтестам - Business Disk Winmark и High-End Disk Winmark:
Начнем с самого удивительного – со скорости одиночного диска без TCQ. Создается впечатление, что в таком режиме работы выполнение TCQ сильно тормозит работу контроллера. На первый взгляд кажется, что дело в системе NTFS. Однако, в паттерне Workstation, который тоже работает под NTFS, никаких проблем с TCQ не было.
Массивы RAID0, что неудивительно, оказались самыми быстрыми из остальных массивов. Массивы – зеркала RAID1 и RAID10 заняли последние места.
Теперь посмотрим результаты тестирования в системе FAT32:
Сравнивать скорости различных массивов, как и в системе NTFS, будем по двум интегральным подтестам - Business Disk Winmark и High-End Disk Winmark:
В отличие от результатов тестирования в системе NTFS здесь распределение массивов по скоростям зависит от подтеста. Если упорядочить массивы по скорости в подтесте Business Disk Winmark, то распределение массивов будет таким же, как и в системе NTFS. Что еще раз доказывает индеферентность «пользы» TCQ от файловой системы.
А если упорядочить массивы по скорости в подтесте High-End Disk Winmark (как сделано на диаграмме), то одиночный диск без TCQ займет место сразу за одиночным диском, у которого эта опция включена. В этом случае распределение массивов по скоростям выглядит вполне логично.
Так как скорости линейного чтения одинаковы для NTFS и для FAT32, то приведем одну диаграмму для обеих файловых систем:
Скорости линейного чтения одиночных дисков с выключенной и включенной опцией TCQ равны. Скорости линейного чтения зеркальных массивов RAID1 и RAID10 чуть ниже скоростей одиночного диска и массива RAID0 из двух дисков соответственно. А вот скорость массива RAID0 из четырех дисков сильно занижена.
Графики линейного чтения для каждого массива приведены отдельно.
График линейного чтения JBOD 1HDD TCQ OFF
График линейного чтения JBOD 1HDD TCQ ON
График линейного чтения RAID1 2HDD TCQ ON
График линейного чтения RAID0 2HDD TCQ ON
График линейного чтения RAID0 4HDD TCQ ON
График линейного чтения RAID10 4HDD TCQ ON
Выводы
По результатам тестов о контроллере Talon ZL4–150 у нас сложилось неоднозначное впечатление. С одной стороны, в половине синтетических тестов наблюдались явные проблемы. С другой стороны, TCQ работает, и скорость RAID0-массивов в ряде тестов просто великолепна. В тестах, имитирующих серверные нагрузки, контроллер показал очень и очень неплохие результаты.
Судя по всему, текущие драйвера контроллера "заточены" строго под серверные нагрузки.
На текущий момент, с
сайта производителя можно скачать набор драйверов и утилит версии 1.1. В User Manual контроллера Talon ZL4–150 написано, что он работает под Windows 2003/XP/2000/Linux, однако там же в минимальных требованиях к системе указаны только Microsoft Windows® 2000 (SP2+)/2003/XP (SP1+). Ни драйверов, ни утилит под Linux обнаружено не было.