Изучение эффективности драйверов Intel ATA


Для работы любого устройства в ПК необходим драйвер — связующая программа между железом и операционной системой. Однако благодаря унифицированной архитектуре ПК было возможно использование одного стандартного драйвера для устройств целого ряда производителей. Например, одно из самых старых устройств в ПК — контроллер гибких дисков — в подавляющем количестве компьютеров использует стандартный драйвер, то же касается и последовательных и параллельных портов, клавиатур и мышей.

С одной стороны, драйвер от автора операционной системы обеспечивает необходимую функциональность и является наиболее стабильным в работе, с другой — драйвер от производителя устройства может обеспечить большие возможности. К сожалению, часто мы не обращаем внимание на используемые в системе драйверы — если они есть, и устройство работает, то, как правило, новые версии уже не рассматриваются (исключение составляют влияющие на работу игр драйверы видео и звука :). А уж если этот драйвер стандартный и входит в состав операционной системы, то на него практически никто не обращает внимания. Конечно, есть и противоположные прецеденты — пользователи устанавливают все возможные самые свежие драйверы (даже альфа и бета версии) в свои системы, но таких все таки не очень много. Оба этих варианта являются крайностями, драйверы, конечно, стоит иногда обновлять, но делать это только когда необходимо для подключения новой функции или увеличения скорости, иначе можно очень сильно снизить стабильность работы ПК, тем более, что домашние ПК бывают просто перегружены различными устройствами, которые на совместимость никто не проверял.

Одними из устройств в ПК, также имеющими стандартные драйверы практически в составе любой операционной системы, являются контроллеры жестких дисков IDE. Причем в отличие от, например, SCSI контроллеров, IDE в большинстве ПК являются встроенными и поэтому драйверы для них тоже используются чаще интегрированные в операционную систему.

Для большинства пользователей встроенные IDE контроллеры начались с чипсетов для процессора Intel Pentium серии Intel 430 (FX, VX, HX, TX). Эти контроллеры отличались простотой и надежностью. Они поддерживали все существующие на тот момент стандарты передачи данных по шине IDE (PIO, DMA, MWDMA). Драйверы были встроены в Windows 95 и хотя они не поддерживали режим Bus Master работы контроллера, интерес к фирменным драйверам от Intel (которые он, конечно, выпустил) был невелик. Одной из причин этого было то, что самые быстрые режимы передачи с участием процессора (PIO4) и без него (MWDMA2) обеспечивали примерно одинаковую скорость передачи в 16MB/sес. И только когда потребовалась мощность процессора одновременно с чтением с дисков (это произошло с распространением цифрового MPEG видео на ПК), пользователи стали обращать внимание на преимущества режима Bus Master работы с диском. В версию Windows 95 OSR2 уже были встроены драйверы с поддержкой режима DMA работы дисков, которые существенно снижали загрузку процессора при выполнении дисковых операций. И опять драйверы от Intel опоздали :) — не каждый захочет менять что-то в хорошо работающей системе. Отметим, что сами по себе они в то время были не очень красивы внешне — практически постоянное состояние в бета версиях, непонятный инсталлятор, очень объемные рекомендации по установке с множеством ветвлений, на большинство проблем в работе одинаковый ответ — «удалите драйвер» и все такое.

Однако с тех времен многое изменилось: скорости шины IDE достигли 100MB/sec, необходимость в использовании Bus Master драйверов возросла с появлением MPEG2 и MPEG4,  да и чипсеты Intel уже сменили пару поколений. Хотя и сегодня Microsoft в своих последних версиях операционных систем предлагает встроенные драйверы для всех чипсетов Intel, включая i815 (точнее, они просто совместимы с последними ICH серии 82801xx), с поддержкой режима DMA. Тем не менее, нам было интересно сравнить последнюю версию драйверов от Intel для своих IDE контроллеров (теперь они называются Intel Ultra ATA Storage Driver) со стандартными драйверами Microsoft.

Конфигурация стенда:

  • материнская плата ASUS CULS2-LS (i815, ICH2);
  • процессор Intel Pentium III 800EB (133×6);
  • память 2×128Mb PC133;
  • системный диск IBM DTLA 15Gb, тестируемый диск Quantum FB Plus AS 30 Gb;
  • видео NVidia GeForce2 GTS 64Mb.

Операционные системы: Windows ME и Windows 2000 Pro.

Тесты:

  • ZDLabs Winstone 2001;
  • ZDLads Winbench 99 1.2;
  • Intel IOmeter.

Тестировался диск Quantum с двумя вариантами драйверов — со стандартными драйверами Microsoft (на диаграммах с индексом “MS”) и с драйверами Intel ATA 6.10.

При использовании драйверов Intel ATA диск работал в режиме UDMA100, что подтверждается программой-конфигуратором из состава самих драйверов, а также программой HDTach — скорость чтения из буфера диска составляла более 80 MB/sec.

При тестировании со стандартными драйверами Microsoft было предпринято несколько дополнительных шагов. Для включения режима UDMA в Windows ME был установлен флаг «DMA» в свойствах диска. По умолчанию он был выключен. При его активизации диски работали в режиме UDMA100, что также подтверждается  HDTach. Для обеспечения работы режима UDMA100 с драйверами Microsoft под Windows 2000 использовался hotfix Q260233. То, что он действительно позволяет работать диску в UDMA100 вместо UDMA66, снова было проверено тестом HDTach 2.61. Скорость чтения из буфера без hotfixа — 57.6 MBps (UDMA66), с hotfixом — 85.5 MBps (UDMA100).

Диск был установлен мастером на второй канал встроенного IDE контроллера. IOmeter — диски не размечаются совсем. ZDLabs — один раздел FAT32 (Windows ME) или NTFS (Windows 2000) на весь диск.

Windows ME

Первая часть тестов проводится под операционной системой Windows ME. Поскольку тест IOMeter под этой системой не работает, то ограничимся тестами ZDLabs.

В новой версии своих пакетов Winstone 2001 компания отказалась от раздельного тестирования подсистем ПК и поэтому эти результаты немного менее информативны. Зато они используют реальные приложения. Посмотрим, что получается:

Итак, скорость работы с различными драйверами отличается совсем незначительно. Теперь сравним загрузку процессора (к сожалению, этот параметр измеряется только для серии Business):

И по этому параметру результаты практически совпадают. Можно рассчитать параметр «эффективности» — отношение скорости (в единицах Winstone) к % загрузки процессора:

По результатам этих тестов можно сказать, что никакого заметного эффекта от использования драйверов Intel ATA не наблюдается.

Теперь посмотрим на цифры ZDLabs Winbench 99 1.2. В этом (последним из серии Winbench) тесте моделируется работа приложений с жестким диском, но без использования  реальных программ. Скорее всего, используются шаблоны, рассчитанные на основании статистики работы приложений с диском. На первой диаграмме приведено изменение скорости в % при использовании драйверов Intel ATA:

Как мы видим, по интегральным оценкам Business и High End Disk Winmark отличий практически нет. Что касается приложений, то заметен прирост в 10% для FrontPage 98 (эта программа характерна использованием множества небольших файлов) и падение в 8% для Sound Forge 4.0 (скорее всего, оперирующей с несколькими большими файлами).

Winbench 99 также измеряет загрузку процессора при прохождении тестов. Сами цифры загрузки CPU заметно не отличаются, а нам интереснее сравнить эффективность — отношение Disk Winmark (в тысячах байт в секунду) к % занятости процессора:

Как мы видим, снова использование драйверов Intel ATA не помогает добиться большей скорости или меньшей загрузки процессора, а для High End теста даже снижает эффективность работы диска.

Отметим, что результаты теста чтения с поверхности диска и времени доступа для обоих драйверов были идентичными. Похоже, что плотность записи и время доступа не полностью определяют скорость дисковой подсистемы — буквально у нас на глазах появился еще один загадочный  фактор — драйвера. Эффект в +10%, -8% уже значителен, что бы на него обращать внимание.

По результатам проведенных тестов сделаем вывод — использование драйверов Intel ATA для операционной системы Windows ME не приводит к заметному улучшению характеристик дисковой системы ПК и рекомендуется оставлять встроенный драйвер операционной системы, включив в свойствах диска режим DMA.

Windows 2000

Теперь посмотрим на работу с системой Windows 2000 Pro. Эта система рассчитана на более профессиональное использование, чем Windows ME. Она поддерживает работу с двумя процессорами, файловую систему NTFS и, конечно, технологии Windows NT по защите информации.

Для систем класса Windows NT характерно требование 32-разрядных драйверов для всего используемого оборудования, в отличие от Windows 9x, где иногда возможно использование драйверов реального режима, а к дискам вообще допускается обращаться через прерывание BIOS. Конечно, Microsoft включило в состав своей операционной системы много стандартных драйверов для системных устройств (например шин PCI, ISA, AGP), дисковых контроллеров (IDE и SCSI), сетевых карт, видеокарт. С одной стороны, это гарантирует работоспособность стандартного оборудования, а с другой — дает возможность производителю оборудования предложить свой собственный драйвер, обеспечивающий лучшую производительность или расширенные возможности по управлению устройством. В качестве примера можно привести драйверы для видеоконтроллеров компании ATi — входящие в состав Windows NT драйверы позволяют включить высокое разрешение и цветность, но не обеспечивают никаких операций по ускорению вывода трехмерной графики. Еще одним примером являются чипсеты компании ServerWorks — несмотря на поддержку нескольких шин PCI 64 и других нетривиальных возможностей, они прекрасно работают со встроенными драйверами Microsoft, а ServerWorks, похоже, даже не пытается что-то написать (хотя бы inf файлы для корректного отображения своих чипов в диспетчере устройств).

Таким образом, установка драйверов от производителя часто используется для повышения производительности системы. И поэтому эффект от установки Intel ATA драйверов представляет значительный интерес. 

Конечно, можно возразить, что использование IDE дисков не к лицу в высокопроизводительных системах, однако, я думаю, что Windows 2000 вполне уместна на любом рабочем столе, современные IDE диски догоняют SCSI (особенно при работе в одиночестве), а «выжать» еще немного скорости из своей системы, тем более с использованием бесплатных драйверов, хочется каждому :)

Отметим и еще два небольших отличия от Windows ME: Windows 2000, во-первых, по умолчанию пытается использовать режим UDMA, а во-вторых, позволяет проверить его текущий статус,  что делает драйверы в ней более удобными в использовании.

Как и с Windows ME, начнем с ZDLabs Winstone 2001:

В целом картина аналогична Windows ME — разница практически отсутствует. Отметим здесь, что несмотря на использование NTFS, общие результаты в Windows 2000 заметно больше этих показателей в Windows ME. Еще один повод покупать Windows 2000 вместо ME :)

Загрузка процессора:

Забавно, драйверы Intel ATA даже немного больше нагружают процессор, чем встроенные.

И аналогично рассчитанная эффективность:

И снова разница в результатах настолько незначительная, что даже 2.5MB дискового пространства для Intel ATA драйверов на диске становится жалко :)

Теперь ZDLabs Winbench 99 1.2. На первой диаграмме, как и в прошлый раз, представлено изменение скорости в % относительно встроенных драйверов при использовании Intel ATA:

Увы, удручающая картина. Падение скорости достигает 20% в некоторых тестах. Странно, что на Winstone 2001 такого эффекта не было. Возможно, это является следствием «искусственности» тестов Winbench. Однако, с другой стороны, «в каждой шутке есть доля шутки» и поэтому списывать эти цифры на особенности построения теста нельзя. А тест Winbench сам по себе можно рассматривать как приложение, именно так работающее с диском, что наблюдается снижение скорости от Intel ATA. Посмотрим, что у нас с эффективностью:

Меньшая скорость с драйверами Intel ATA и меньшая загрузка процессора с ними также почти сравняли показатели эффективности. Да, похоже, что Winbench это не тот тест, где заметна польза от использования «родных» драйверов от производителя. Скорее даже наоборот. Помните историю с 3D Winbench, когда новые «Turbo» драйверы компании ATi сильно поднимали результаты, а на реальных играх такого эффекта не было? Видимо, история повторяется, но в другую сторону. Результат похож на некоторую несовместимость тестов с драйверами. По результатам тестов ZDLabs видно, что или для тестов выбраны неудачные приложения, или Intel оптимизировал драйверы для своего набора неизвестных приложений.

Поскольку тест Intel IOmeter тоже использует шаблоны, то его результаты очень интересны в свете таких разных результатов Winstone и Winbench. Напомним используемые установки:

block size % of size % reads % random
File Server
512 10 80 100
1024 5 80 100
2048 5 80 100
4096 60 80 100
8192 2 80 100
16384 4 80 100
32768 4 80 100
65536 10 80 100
Workstation
8192 100 80 80
Database
8192 100 67 100
Data Streaming Read
8192 100 100 0
Data Streaming Write
8192 100 0 0
Data Random Read
8192 100 100 100
Data Random Write
8192 100 0 100

Важным параметром также является значение Queue Depth, для него были выбраны значения 1, 32, 64, 128, 256. Этот параметр позволяет смоделировать мощность нагрузки на диск, например, как запуск нескольких приложений одновременно, работу по сети с несколькими пользователями и т.п. Время выполнения каждого шаблона было установлено в 10 минут. Графики по IOps (операций в секунду) и MBps (Мегабайт в секунду) очень похожи, поэтому приводим только вторые. Также приводятся графики эффективности — отношении IOps к % загрузки процессора.

Еще одним отличием IOmeter от тестов ZDLabs является то, что он работает с физическим диском, а не размеченным на разделы. Однако в любом случае работа ведется через драйвер контроллера, так что от него тоже многое зависит.

Все шаблоны я разбил на 3 части — случайное чтение/запись, последовательное чтение/запись и интегральные шаблоны File Server, Workstation, Database.

Начнем со случайного чтения/записи.

Мы видим, что при увеличении нагрузки скорость работы с драйверами Intel ATA практически не меняется, а со стандартными драйверами Microsoft заметно возрастает. Отметим, что рост скорости с увеличением нагрузки характерен также и для IDE контроллеров VIA, Promise, а также для SCSI контроллеров. Таким образом, использование Intel ATA в данном случае качественно меняет картину. Посмотрим, что с эффективностью:

Драйверы Intel ATA показывают здесь большую эффективность работы. Отметим, что в этих тестах средняя загрузка процессора составляет 0.8% и 0.4% для драйверов Microsoft и Intel соответственно. Я думаю, что выгода в 0.4% загрузки процессора такой ценой в падении скорости никому не нужна.

Вторая часть — последовательное чтение-запись.

На последовательно чтение драйверы от Intel не произвели сколь видимого эффекта, а вот с записью проблемы: скорость заметно (в 2 раза!) падает при увеличении нагрузки.

Рост эффективности и в этом случае заметен, но если снова сравнить среднюю загрузку процессора, то она упала для чтения с 25% до 20%, для записи с 21% до 13%. С одной стороны, это означает улучшение на  20 и 40 процентов соответственно, а с другой, на фоне 100% разница между ними заметна.

Случайное и последовательное чтение/запись, конечно, дают представление о скорости работы диска, но интереснее их совместить и попробовать шаблоны, более похожие на реальную работу. Итак, третья часть — интегральные тесты. 

Увы, картина аналогична случайному чтению/записи — при увеличении нагрузки скорость практически не возрастает. Что, в общем-то, и ожидаемо — в шаблонах File Server и Database обращения к диску полностью случайны, а в Workstation — случайны на 80%.

В целом все повторяется. Падение средней загрузки процессора произошло с 0.77% до 0.46%.

Ну что ж, по результатам IOmeter в принципе видно, что Intel ATA добавляют эффективности к работе дисковой подсистемы, но цена слишком велика. Кстати, если привести графики отношения MBps к % загрузки CPU (другой вариант расчета эффективности), то мы не увидим такого большого (иногда почти 100%) прироста эффективности от использования драйверов от Intel.

Если из всех результатов выделить суть, то получается, что такое падение скорости вызвано двумя причинами — худшей обработкой случайных запросов чтения/записи и последовательных запросов записи при возрастании нагрузки. Очень похоже, что драйверы хотят сделать какую-то оптимизацию этих операций, но это у них не выходит. Особенно неприятно выглядит падение скорости при последовательной записи. Казалось бы — запросы идут последовательно, информация пишется также последовательно, неужели нельзя просчитать такую ситуацию и хотя бы не мешать? Тем более, что работа идет на физическом уровне и даже нет никаких отвлекающих моментов типа записи в FAT или MFT.

В результате проведенных исследований, мы выяснили, что использование драйверов Intel ATA в тестах IOmeter приводит скорее к ухудшению результатов. По крайней мере, считать такое значительно падение скорости ценой за меньшее использование процессора нельзя. Больше даже расстраивает факт, что поведение графиков скорости (IOps и MBps) с драйверами Intel ATA приобретает совсем другой характер —  рост скорости с увеличением нагрузки заметно снижается или даже становится отрицательным. Получается, что выгода от использования Intel ATA в Windows 2000 также очень сомнительна. Да и списать такое поведение на то, что тест IOmeter использует обращения к физическому диску, нельзя, Все равно все идет через драйвер, а IOmeter специально построен для детального исследования работы дисковой подсистемы и не является каким-то обособленным приложением с редко встречающимися алгоритмами работы с диском.

Объяснить такое поведение драйверов сложно. Поэтому мы связались с разработчиками и получили несколько комментариев этой ситуации. Приведем их:

  • драйверы Intel ATA являются не просто связующим звеном между контроллером и операционной системой, они также выполняют некоторую оптимизацию запросов на запись, а также упреждающее чтение. Таким образом в них встроены некоторые «интеллектуальные» алгоритмы, которые могут влиять на результаты низкоуровневых тестов типа IOmeter;
  • драйверы оптимизированы для процессора Intel Pentium 4 и могут обеспечить на нем прирост скорости дисковой подсистемы;
  • драйверы оптимизированы больше для FAT32, чем NTFS.

Действительно, некоторые объяснения кажутся вполне правдоподобными. Однако «оптимизация», которая не видна на тестах ZDLabs Winstone (использующих реальные приложения!), а при проверке в Winbench даже приводящая к ухудшению результатов, кажется не очень-то полезной для пользователей. Получается, что она дает где-то рост производительности, а вот назвать конкретный положительный пример никто не может. Оптимизация для Pentium 4, безусловно, необходима,  поскольку человек, купивший этот процессор, хочет иметь на своем ПК хотя бы одно приложение, использующее особенности P4, за которые он уже заплатил :) Однако есть множество систем, на которых продолжает использоваться Pentium 3, а на них это работать не будет. Ориентация драйверов на использование файловой системы FAT32 в целом не вызывает претензий, поскольку можно считать, что использование NTFS это высокопроизводительные ПК со SCSI контроллерами и дисками.

Таким образом, вырисовывается интересный образ пользователя, для которого предназначены эти драйверы: домашний пользователь с ПК на базе Pentium 4. У него установлена операционная система Windows ME, жесткий диск размечен одним большим разделом на FAT32. И драйверы Intel ATA он установил исключительно для возможности посмотреть в программе Intel Ultra ATA Companion, как быстро работает его жесткий диск.

Однако все-таки я думаю, что от драйверов дискового контроллера большинство пользователей ждет высокой скорости и эффективности работы на любых платформах и с любыми файловыми системами. И поэтому операции по высокоуровневой оптимизации лучше выносить в отдельные программы. А от драйвера требовать скорости (и, возможно, оптимизации) низкоуровневых обращений к диску. Иначе могут наблюдаться такие отрицательные эффекты, как мы видели в тестах IOmeter с драйверами Intel ATA.






Дополнительно

Опрос Ajax

Используете ли охранную систему дома?