Размер шрифта:
Влияние ntfs-сжатия на скорость чтения файлов
Play

Влияние ntfs-сжатия на скорость чтения файлов

“Сжимать, или не сжимать, вот в чем вопрос.” – к таким отнюдь не праздным размышлениям в стиле шекспировского “Гамлета” приходит в конце концов наверно каждый, кто исчерпал все иные способы освобождения места на жестком диске.

Как все уже догадались, речь пойдет о ntfs сжатии, вернее не о нем самом, а о его влиянии на скорость дисковых операций. В данной статье будут описаны результаты измерений скорости чтения файлов.

В очередной раз я обратился к ntfs сжатию когда переносил операционную систему Windows 7 на твердотельный накопитель небольшого размера. В своем исходном виде загрузочный раздел Windows категорически не мог поместиться на маленьком 60 (55,8) гигабайтном SSD.

Для решения этой задачи пришлось предварительно выполнить целый комплекс мероприятий. Почитать о них можно в цикле статей под общим названием “Перенос Windows 7 на твердотельный диск небольшого объема”. Первая публикация цикла находится здесь.

Одной из системных папок, которая занимает достаточно много места на диске, является WinSxS. Оказалось, что в силу ее специфики ни удалить часть файлов из этой папки, ни перенести ее целиком на второй диск не представлялось возможным.

Забегая вперед, так как статья на эту тему еще только готовится к публикации, скажу, что вслед за Windows 8 и Windows 8.1 в Windows 7 буквально два дня назад наконец появились средства для обслуживания содержимого WinSxS. Следите за публикациями блога. Для этого достаточно подписаться на обновления.

Тогда для уменьшения размера WinSxS было принято решение сделать ntfs-сжатие уникальных файлов в этой папке. Описание технологии такого выборочного сжатия и готовый скрипт можно найти в этой статье.

Сжатие файлов в папке WinSxS позволило высвободить больше 2 ГБ дискового пространства. Вместе с этим захотелось оценить как повлияла компрессия на скорость дисковых операций. Тем более, что твердотельный накопитель, ради которого все это делалось, уже и так использует встроенное сжатие данных (Intel SSD 520 Series).

Методика измерения скорости чтения диска

Найти в Интернет заслуживающую доверия информацию о влиянии ntfs-сжатия на скорость дисковых операций не получилось. Материалов на удивление мало и часто информация в них носит чисто умозрительный характер — если процессор быстрый, а диск медленный, то будет хорошо, если наоборот, то будет плохо.

В этой статье представлена попытка количественной оценки скоростных характеристик сжатых и не сжатых носителей с помощью теста CristalDiskMark. Однако, описанные в ней результаты, отличающиеся в пределах погрешности измерений, вызывают сомнения. Логика и практический опыт подсказывают, что тут что-то не так.

Как будет показано чуть ниже на примере тестирования с помощью CristalDiskMark диска RAMDisk, сомнения были обоснованными.

Почему CristalDiskMark намеряет в этом случае практически одинаковые показатели сказать трудно, но для того, чтобы получить более “жизненные” результаты, была использована следующая методика.

Идея ее чрезвычайно проста – измерить время считывания с носителя некого заданного набора данных. Далее, зная объем считанных данных, несложно вычислить среднюю скорость чтения.

Для практической реализации такого простейшего алгоритма нужно иметь блочное устройство со скоростью записи на порядок выше тестируемого источника.

Первоначальная идея копировать файлы на фиктивное устройство «nul» после первых же измерений показала свою полную несостоятельность.

Для оценки скорости чтения данных с механического HDD в качестве целевого диска в принципе можно было бы использовать твердотельный накопитель. Но как измерить скорость чтения с самого SSD?

В конечном счете для того, чтобы создать очень быстрое устройство на которое можно копировать файлы, была использована программа Dataram RAMDisk. Эта замечательная программа позволяет создавать диски в свободной оперативной памяти компьютера. В ее бесплатном варианте объемом до 4 ГБ. Для наших целей этого более чем достаточно.

В повседневной практике Dataram RAMDisk может с успехом использоваться в компьютерах с большой оперативной памятью и 32-разрядной операционной системой Windows. Если в незадействованной операционной системой части RAM создать такой быстрый диск и перенести на него некоторые критичные для скорости чтения/записи файлы, то поведение компьютера можно заметно оживить.

После создания RAM-диска, для измерения времени считывания (копирования) файлов из некоторой заданной папки, можно воспользоваться, например, командой:

robocopy X:\Testfiles\ R:\Testfiles\ /E /XJ X: – буква исследуемого диска; R: – буква, присвоенная RAM-диску; Testfiles – папка с тестовыми файлами.

Команда robocopy самостоятельно подсчитает объем данных Vfiles, затраченное время Tread и среднюю скорость операций копирования Cread.

Для сравнения использовались команды copy и xcopy:

@echo off format R: /FS:NTFS /Q @echo %time% for /R "X:\Testfiles" %%i in (*) do ( copy /Y %%i "R:\" rem xcopy %%i R:\ /Y ) @echo %time% pause>nul

Зная общий объем файлов Vfiles в тестовой папке вычислялась скорость чтения данных с диска:

Cread = Vfiles / Tread

Все достаточно очевидно. Кроме того можно отметить, что результаты, полученные при использовании разных команд, оказались одинаковыми.

Тестовое оборудование, тестируемые накопители, наборы данных

Компьютер

Тестирование скорости накопителей проводились на компьютере следующей конфигурации:

Процессор: Intel I7 950, 3,07 GHz Системная плата: Intel DX58SO Системная память: 6 Gb (3 x 2 Gb DDR3-1080 MHz) Видеоадаптер: AMD ATI Radeon HD 5700 Series (1024 Мb) Операционная система: Microsoft Windows 7 Корпоративная SP1

Тестируемые накопители

Всего в тестах участвовали четыре жестких диска: два полноразмерных (3,5”) диска Seagate Barracuda, быстрый диск для ноутбука (2,5”) Seagate Momentus и твердотельный накопитель Intel 520 Series. Основные параметры дисков представлены в следующей таблице:

ST3500418AS Seagate Barracuda 7200.12

ST31000528AS Seagate Barracuda 7200.12

ST9250410AS Seagate Momentus 7200.4

SSDSC2CW060A Intel 520 Series

Тестовые наборы данных

Для того, чтобы максимально приблизить условия тестирования к реальным и оценить как ntfs-сжатие влияет на скорость чтения различных типов данных, были созданы четыре набора разнотипных файлов:

Books

Photo

WinSxS

ISO

Как видно из представленной таблицы, половина из выбранных для тестирования данных практически не меняет свой размер после ntfs-компрессии. К ним относятся форматы файлов со сжатием, такие как фотографии в форматах jpg и raw (nef) и образ диска iso.

Надо сказать, что найти на компьютере в необходимом количестве реальные данные с большим коэффициентом ntfs-сжатия оказалось очень сложно. К таковым можно было бы смело отнести все чисто текстовые форматы, но по объему их крайне мало. А документы, например, Microsoft Office изначально имеют сжатый формат. Электронные книги так же часто представлены с сжатом виде.

Данные, обозначенные как WinSxS, представляют собой файлы, произвольно выбранные в папке C:\Windows\winsxs. Как понятно из предисловия к статье, выбор содержимого этой папки для тестирования совершенно не случаен.

Результаты измерения скорости чтения ntfs-сжатых данных

Еще несколько слов о процедуре тестирования.

Выбранные для тестирования данные размещались в четырех соответствующих папках на испытуемом носителе, после чего выполнялась его дефрагментация штатным дефрагментатором Windows (defrag).

Для того, чтобы максимально исключить влияние кеширования дисковых операций системой, диск в памяти создавался максимально возможного размера, то есть около 4 Гб.

Все измерения повторялись 5 раз. Опять же для исключения влияния кеша, во всех последовательных измерениях использовались разные данные.

По окончании измерения скорости чтения несжатых данных они сжимались после чего повторно выполнялась дефрагментация носителя и проводились измерения по описанной выше методике.

Dataram RAMDisk

Предварительно была сделана попытка оценить скорость чтения/записи сжатых и несжатых данных на диске RAMDisk с помощью уже упомянутого в начале статьи популярного теста CristalDiskMark. Однако результаты измерений в обоих случаях оказались практически идентичными. То есть, если верить этому тесту, то получается, что ntfs-сжатие диска не оказывает никакого влияния на его скоростные характеристики. А это совершенно не верно.

На первой диаграмме представлены скоростные характеристики RAMDisk. Считываемые данные записывались на этот же диск в отдельную папку. Так как отдельно подсчитать скорость чтения и записи в этом случае не представлялось возможным, условно было принято, что для несжатых данных они равны. Время считывания ntfs-сжатых данных рассчитывалось как разность общего времени операции и половины времени операции чтения/записи несжатых файлов.

При измерении таким способом влияние ntfs-сжатия оказалось весьма существенным и отличающимся для разных типов данных. Наибольшая деградация скорости чтения (40% и 54% от первоначальной) получилась, соответственно, для файлов электронных книг и фалов из папки winsxs. То есть для «сжимающихся» в результате ntfs-компрессии файлов.

Никакого особого практического смысла данные измерения RAM-диска не несут. Однако, они показывают, что для всех типов файлов RAM-диск пригоден в качестве целевого накопителя.

ST3500418AS Seagate Barracuda 7200.12 (500 Гб)

По сравнению с другими механическими дисками, участвовавшими в тестировании, 500 гигабайтный однодисковый Seagate Barracuda ST3500418AS неожиданно показал удивительные результаты в смысле его отношения к ntfs-сжатым данным. Падение скорости чтения компрессированных данных имело место лишь при копировании файлов фотографий (64% от первоначальной).

К сожалению, если впоследствии дело дойдет до тестирования скорости записи, то этот накопитель участвовать в нем уже не будет. К нему в полной мере можно отнести выражение “Сгорел на работе”. Некоторое время назад без каких бы то ни было предупреждений этот HDD умер в момент раскрутки шпинделя. Наверное его сгубила его же шустрость .

ST31000528AS Seagate Barracuda 7200.12 (1 Тб)

Следующим протестированным представителем семейства Seagate Barracuda явился вдвое более “толстый” ST31000528AS. Особенностью этого диска явилось то, что он очень хорошо справился с несжимаемыми файлами (“photo”, “iso”), однако “провалился” на сжимаемых (“books”, “winsxs”).

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

ST9250410AS Seagate Momentus

Третьим номером был протестирован быстрый HDD для ноутбуков Seagate Momentus ST9250410AS (250 Гб). Главной особенностью этого диска является скорость вращения шпинделя 7200 об/мин. Этот накопитель продемонстрировал удивительно ровное, за исключение “photo” (как и в случае с ST3500418AS), отношение к сжатым данным.

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

Еще одной совершенно необъяснимой особенностью всех полученных результатов явилось увеличение скорости чтения несжимаемого файла большого размера (“iso”) у всех механических дисков. Возможно, что в данном случае имеет место некое несовершенство принятой методики измерения, но найти его я не смог. Буду крайне признателен, если кто-то предложит свое объяснение этого феномена.

SSDSC2CW060A Intel 520 Series

Последним протестированным жестким диском, который на самом деле и инициировал проведение тестирования, явился твердотельный накопитель Intel 520 Series SSDSC2CW060A.

Особенностью этого накопителя является то, что установленный в нем контроллер SandForce SF-2281 уже использует сжатие данных и можно предположить, что этот диск должен хуже всех остальных справиться с ntfs-сжатием.

Как видно из полученных результатов, чтение плохо сжимаемых данных (“photo”, “iso”) действительно осуществляется медленнее (соответственно 80% и 66% от скорости чтения несжатых файлов). А вот сжимаемые ntfs-сжатые файлы (“books”, “winsxs”) вопреки ожиданиям читаются даже быстрее. Учитывая, что на практике именно последние, как мы уже говорили, скорее всего будут подвергнуты ntfs-компрессии, это обстоятельство не может не радовать.

Выводы

Так сжимать, или не сжимать? Можно ли на основании полученных данных дать однозначный ответ на этот вопрос? Однозначный, видимо, не получится.

Во-первых, тестирование проводилось на одном единственном компьютере с достаточно быстрым процессором.

Если эта тема окажется интересной читателям, то тестирование можно продолжить для других типов компьютеров.

Во-вторых, как неожиданно оказалось, очень много в этом случае зависит как от типа данных, так и непосредственно от жесткого диска.

На основе полученных на данный момент времени результатов можно сказать следующее.

Три из четырех протестированных накопителей, включая и SSD, продемонстрировали очень хорошие результаты при чтении ntfs-компрессированных сжимаемых данные, представленных наборами “books” и “winsxs”. Имело место или незначительное снижение скорости чтения или даже ее увеличение.

Как это ни странно, хуже всех с этой задачей справился накопитель большой емкости ST31000528AS Seagate Barracuda 7200.12 (1 Тб). С другой стороны, включать ntfs-сжатие на жестком диске такой емкости вряд ли кому-то потребуется, так как в этом случае справится с проблемой нехватки свободного места на загрузочном разделе Windows можно другими способами. Например, простым увеличением размера соответствующего раздела.

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

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

Дело в том, что так как ntfs-сжатие осуществляется сегментами по 64 килобайта, оно заметно фрагментирует данные. В сжимаемых файлах появятся «разреженные» кластеры. По данным самой Microsoft ntfs-сжатие создает в среднем один «разреженный» кластер на каждые 64 кБ. Нетрудно подсчитать, что после ntfs-сжатия на каждый гигабайт будет приходиться 16384 «разреженных» кластера.

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

📎📎📎📎📎📎📎📎📎📎