Один из вариантов организации дисковой подсистемы и некоторые тесты. Пересмотрено и дополнено.

Гугл на вопросы о кэше обратной записи выдает и эту страницу, поэтому сначала о том, что такое кэш обратной записи.

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

Конфигурация следующая: рабочие файлы лежат на зеркальном массиве, построенном средствами Intel Matrix Storage, то есть попросту говоря, на интегрированном в матплату ASUS Maximus (или как-то так) контроллере ICH9R. Диски в этом массиве – Seagate NS.2 емкостью 750 гигабайт.

Следующий массив организован в виде страйпа (чередования) двух дисков Seagate 7200.11 емкостью 320 гигабайт. Размер блока – 64К, массив отформатирован в NTFS с размером кластера тоже 64К. Диски однопластинные, достаточно быстры, может быть одни из самых быстрых на данный момент (май 2008 года). Физически они имеет меньшую высоту, что тоже достаточно хорошо, ибо большее расстояние между установленными дисками благотворно сказывается на их охлаждении. А всего дисков в системе 6.

Операционная система Windows XP Pro x64, 8 гигабайт памяти. Из них на 3 гигабайтах построен RAM-диск, который используется как первый диск для хранения scratch-файла фотошопа. Вторым диском для скратча используется вышеуказанный страйп из двух 320-ти гигабайтных дисков. Далее 3 гигабайта выделено фотошопу, а оставшиеся 2 – системе и дисковому кэшу. Для создания RAM-диска использован QSoft RAMDisk, который существует в версии х64, бесплатен по крайней мере для русских локализаций, работает стабильно и в эксплуатации удобнее, чем похожий продукт от www.superspeed.com. Использование RAM-диска дает огромное преимущество при работе в Фотошоп, в 3 гигабайта помещается достаточное количесто шагов обработки, сооответственно время отклика сильно уменьшено, а комфорт увеличен. Для теста этот RAM-диск не использовался, с ним все гораздо веселее.

Intel Matrix Storage в системе представлен драйвером и утилитой управления массивами. Утилита называется Intel Matrix Storage Console. В ней можно, кроме собственно создания и удаления массивов, включать для них кэш обратной записи, а так-же включать и выключать кэш самих дисков. Ниже для тестов взят дисковый массив из вышеуказанных 320-ти гигабайтных дисков, массив с чередованием, то есть файл пишется одновременно на все диски в массиве, что, при правильной реализации драйвера, может давать прирост производительности.

Первый график (сверху) – то, как программы вроде HD Tune читают весь диск последовательно. На графике лишь 1:40, то есть это не график чтения всего диска, а лишь начала диска. Кэш обратной записи выключен. Мы можем видеть скорость чтения до величины порядка 225 мегабайт в секунду, что достаточно быстро.

Второй график (сверху) – то же самое, но кэш обратной записи включен. График гораздо более похож на правильный, более ровный, с плавным падением, все достаточно красиво.

А теперь переходим к записи. Порядок действия такой. С диска "C:" открывается большой файл в несколько сотен мегабайт. Затем пауза до тех пор, пока дисковая активность не прекратится. Далее запускается записанный предварительно action – автоматизированная последовательность действий. Легенда:

На графике вверху файл читается (розовая линия), затем Фотошоп начинает сбрасывать что-то в скратч (жирная красная), далее Фотошоп или операционная система, видимо, начинает сбрасывать данные на диск мелкими "частями", мы видим увеличивающуюся очередь записи на диск (до 65) и уменьшающуюся скорость записи. Затем пауза, и запуск action в Фотошопе. Резко увеличивается скорость, затем опять много мелких запросов на запись. Скорость записи – практически 125 МБ/сек. Кэш обратной записи выключен.

Включаем кэш обратной записи. И видим падение скорости записи, заметное падение. Первый график сверху то, как диск читается при выключенном кэше – неровно, скажем так. А вот второй – при включенном кэше, читается он ровнее, но вот скорость записи падает! И общее время выполнения увеличилось.

В первом варианте статьи тут был конец, теперь же добавлено кое-что новое и труднообъяснимое.

Сначала, пожалуй, о самом интересном и непонятном. Помещаем несколько больших файлов на вышеуказанный страйп и открываем/закрываем их по очереди. При этом включам и выключаем кэш обратной записи. Делаем это в утилите Intel Matrix Storage Console, в свойствах диска/тома в менеджере устройств кэшом для массивов управлять не получится. На графиках все представлено несколько в обратном порядке, сначала идет запись на диск открытого файла и затем сразу открывается следующий файл.

Замеченные особенности – где-то на середине графика записи фотошоп уже возвращает управление, т.е. файл как-будто уже записан. Насколько я понимаю, таким образом работает кэш отложенной записи самой операционной системы, см. скриншот настройки (на английском, но на русских версиях это находится примерно тут: Панель управления -> Система -> Расширенные -> кнопка Производительность -> вкладка Расширенные).

Use large system cache screenshot

Но следующий файл не открывается до тех пор, пока не запишется предыдущий на диск из кэша, при любых настройках кэша в драйвере контроллера! Выглядит все это забавно: Фотошоп вернул вам управление, вы пытаетесь открыть файл, а ничего не проиходит. Ну и собственно графики:

Вверху – кэш обратной записи выключен.

Вверху – кэш обратной записи включен.

Можно наблюдать интересную вещь – скорости записи и чтения меняются местами по своей величине! При выключенном кэше обратной записи скорость записи выше, а вот скорость чтения ниже. И наоборот. При этом общее время примерно одинаково, более того, на графике выделена скорость записи и видно, что средняя скорость записи одинакова в обоих случаях.

Но тем не менее, в процессе эксплуатации было замечено следующее: Фотошоп достаточно медленно читает с диска, например Autopano Pro читает при начальной загрузке файлов на полной скорости диска, Фотошоп-же видимо делает еще что-то внутри себя дополнительно (процессор не загружен почти всегда) и не может так "разогнаться" – на графиках выше максимальная его скорость около 175МБ/сек., массив же "может" более 230 МБ/сек. То же самое и при записи. На очереди проверка на трех дисках в страйпе, но не будет удивительным, если результат будет не сильно выше (так и вышло, результаты чуть выше и только). В этом случае это будет означать, что сильно большой скорости диска Фотошоп не сможет "утилизировать", для примера график для страйп-массива из четырех дисков, но разной емкости и скорости: двух вышеуказанных Seagate 7200.11 320G, и двух Hitachi 750G, которые заметно медленнее. Кстати, сильно сказывается скорость самого медленного диска, что значит, что диски в массиве должны быть одинаковы, графиков не привожу, но результаты порой сильно удручающие – иногда эти 4 диска медленне просто двух Seagate 7200.11.

Как видно, скрость записи на 4-х дисковый массив с чередованием не фантастически высока. Но это надо перепроверять на массиве из одинаковых дисков.

Какие выводы можно сделать? Все нужно проверять. Просто установки быстрых дисков может быть недостаточно. Intel выпустит новый драйвер и в нем поведение может измениться. И все опять придется перепроверять. Стоит ли думать, что дисковая подсистема не так сильно важна? Для Фотошоп может быть и так, но есть другие программы в арсенале фотографа-панорамщика, и там все порой достаточно интереснее со скоростью.

* * *