Введение
Несмотря на то, что некоторое время назад я волевым решением исключил тест HDTach из набора тестов жёстких дисков (подробности
здесь и
здесь ), случилось так, что нам придётся ещё раз вернуться к теме "применимости" HDTach для тестов современных винчестеров.
В один прекрасный день по всей сети Интернет проревели Иерихонские трубы. Они возвещали о выходе новой версии теста HDTach - 2.7. Любопытно, но новая версия теста была выпущена широкоизвестной в узких кругах компанией
Simpli Software, Inc., а не компанией TCDLabs, ранее известной, как автор HDTach... Домен tcdlabs.com теперь ведёт на сайт simplisoftware.com, так что можно предположить, что какие-то "родственные" связи между компаниями TCDLabs и Simpli Software, Inc. существуют. Увы, никаких разъяснений на этот счёт на сайте simplisoftware.com я не обнаружил.
Но зато там есть искомая программа -
HDTach 2.7!
HDTach 2.7
Сразу под громадной кнопкой "скачай меня" мы можем увидеть краткое описание теста:
"
HD Tach is a low level hardware benchmark for random access read/write storage devices such as hard drives, removable drives (ZIP/JAZZ), flash devices, and RAID arrays. HD Tach uses custom device drivers and other low level Windows interfaces to bypass as many layers of software as possible and get as close to the physical performance of the device possible."
- Воистину универсальный тест. Даже RAID-массивы тестирует...
Чтобы долго Вас не томить, привожу скриншот рабочего окна программы:
HDTach 2.7Кликните на картинке, чтобы увеличить
Хм... Выглядит, почти как старый добрый HDTach 2.61:
HDTach 2.61Кликните на картинке, чтобы увеличить
Однако на верхней картинке всё выглядит намного симпатичнее... Но если я скажу, что диск ёмкостью 74ГБ программа "обработала" секунд за двадцать, то, возможно, Вы согласитесь со мной в том, что стоит присмотреться к скриншоту HDTach 2.7 повнимательнее.
Коль не врут мне очи, новая версия при измерении скоростей чтения и записи сделала значительно меньше итераций, чем версия 2.61.
Открываем log-файл и что же мы видим?
HD Tach version 2.70
Drive: PhysicalDrive1 74.3gb
Access time: 7.5ms
CPU utilization: 2.1%
64 zones to be tested (1123120kb zones).
- Обратите внимание на нижнюю строчку... Из всей поверхности жёсткого диска новая версия проверила скорость чтения и записи всего в 64-х точках! Не маловато-ли? Посмотрим, как вела себя предыдущая версия теста:
HD Tach version 2.61
Drive: WDC WD740GD-00FLX0 20.0
Access time: 7.7ms
CPU utilization: 0.0%
1107 zones to be tested (65536kb zones).
Оказывается, HDTach 2.61 в 17 с хвостиком раз более тщательно замерял скорости чтения и записи. К тому же он сумел правильно определить модель жёсткого диска. ;)
Интересно, а как же старая и новая версия HDTach измеряют среднюю скорость доступа (average access time), скорость чтения из буфера винчестера и скорости чтения и записи? Можно ли доверять новой версии теста?
Для этого на одной и той же тестовой станции я последовательно запустил старую и новую версию HDTach и записал логи обращений к диску. Результаты меня шокировали...
Итак, оказалось, что для измерения среднего времени случайного доступа тест посылает на жёсткий диск всего 256 запросов! Причём, количество запросов никак не зависит от размера подключённого диска... Единственное, что можно сказать "в защиту" теста - выборка из 256 запросов генерируется на основе данных о размере винчестера. Но, всё же, по спецификациям IBM, для измерения AAT нужно использовать как минимум 4096 запросов со случайным адресом (т.е. более чем в 10 раз больше)...
Для измерения скорости чтения из буфера винчестера (Burst Read Speed) используется следующий алгоритм:
Обратите внимание, что процедура измерения скорости состоит всего из 35-ти итераций. И, что характерно, она идентична для обоих версий теста. Также следует отметить, что скорость чтения из буфера производится с использованием только одного объёма запросов - 128 секторов (запрос четырёх секторов, судя по всему, - "разогревочный").
Если мы посмотрим на скриншот теста HDTach 2.7, то увидим, что шкала измерения скорости чтения из буфера диска опять не смогла отобразить скорость нашего бешенного мустанга. :)
Цикл измерения скорости чтения состот из вот таких "кирпичиков":
Итак, внутри цикла тест посылал на диск 33 запроса на чтение 32КБ-блоков с последовательными адресами. То есть суммарный размер запроса немного превышает 1МБ. Потом тест "сдвигается" по адресному пространству диска на некоторое количество секторов и повторяет цикл чтения 33-х блоков по 32КБ.
Прекрасно видно, что вся разница между блоками измерения скорости у разных версий теста состоит только в размере "шага" в секторах, с которым тест перемещается от одной зоны, где измеряется скорость, до другой (выделено жирным). Старая версия шагает по адресному пространству диска, отмеряя каждый раз по 64МБ, а новая версия не мелочится и прыгает через 1ГБ. Воистину, HDTach 2.7 - тест-скороход. :)
Посмотрим, что делают HDTach 2.61 и HDTach 2.7 при записи:
А видим мы почти то же самое, что и при чтении. Обе версии теста внутри цикла измерения скорости записи отсылают на диск пакет из 33-х запросов на запись 32КБ блоков с последовательно увеличивающимся адресом и завершают пакет одним запросом на чтение. Вероятно, последний запрос должен "заставить" винчестер выполнить все предыдущие запросы на запись, т.е. выполнить отложенную запись немедленно.
Если это предположение верно, тогда измерение скорости записи винчестера не является в чистом виде измерением скорости записи. Ибо в потоке команд присутствуют и запросы на чтение...
Интересно, а почему для "вытестения" запросов на запись потребовался запрос на чтение? Ведь, рано или поздно, запросы на запись будут вытеснены следующей порцией запросов. Да и команды Flush Cache вроде пока никто не отменял... :o)
Итак, пора подвести итоги.
Такой хоккей нам не нужен.
"Вскрытие" показало, что в версии 2.7 не исправлены те самые алгоритмы тестов, которые пасовали перед современными контроллерами и винчестерами со времён HDTach 2.61. По сути, новая версия HDTach отличается от старой только более современным внешним видом и значительно уменьшенным временем работы. Увы, в жертву скорости выполнения теста была принесена "точность" измерений скоростей чтения и записи. Правда, и про точность измерений применительно к версии 2.61 тоже можно говорить только с определённой натяжкой.
В данном виде использовать HDTach 2.7 для тестов жёстких дисков я не вижу никакого смысла. Да и флеш-драйвы им можно тестировать только при отсутствии более "правильных" тестов. ;)
Остаётся только ждать выхода
обещанной полностью переработанной версии HDTach и надеяться на серьёзные изменения в подходе к тестированию винчестеров.