НЕ ПРОПУСТИТЬ ИНТЕРЕСНОЕ

Свежие обсуждения

Sorry. No data so far.

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

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

Speed ntfs-compression files

Как все уже догадались, речь пойдет о 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 /XJX: – буква исследуемого диска;
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

N

1

2

3

4

Скорость вращения шпинделя720072007200
Объем накопителя, Гб500100025060
Формат накопителя3,5”3,5”2,5”2,5”
Буфер, Мб161616
ИнтерфейсSATA-II  3 Гб/сSATA-II  3 Гб/сSATA-II  3 Гб/сSATA-III 6 Гб/с
Поддержка NCQЕстьЕстьЕстьЕсть

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

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

Данные / характеристики

Books

Photo

WinSxS

ISO

N

1

2

3

4

Количество файлов61639936841
Несжатый объем, Мб166642616691
Сжатый объем, Мб121640428686
Коэффициент сжатия1,3711,441

 

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

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

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

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

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

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

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

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

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

Dataram RAMDisk

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

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

Speed Read NTFS Compress from Ramdrive

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

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

ST3500418AS  Seagate Barracuda 7200.12 (500 Гб)

Speed Read NTFS Compress ST3500418AS

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

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

ST31000528AS  Seagate Barracuda 7200.12 (1 Тб)

Speed Read NTFS Compress ST31000528AS

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

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

ST9250410AS Seagate Momentus

Speed Read NTFS Compress ST9250410AS

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

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

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

SSDSC2CW060A Intel 520 Series

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

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

Speed Read NTFS Compress Intel SSDSC2CW060A

Как видно из полученных результатов, чтение плохо сжимаемых данных (“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  «разреженных» кластера.

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

Комментарии: 14. Присоединяйтесь к обсуждению!

  1. Что-то не так со вторых графиком HDD. И то что скорость чтения iso без сжатия у второго диска медленне, и то что сжатый iso быстрее несжатого.
    Очень похоже на то, что данные закэшировались в памяти. Либо не было дефрагментации после сжатия. Лучше после каждого измерения делать перезагрузку.

    А вообще давно уже хочется файловую систему с более хорошим и эффективным сжатием, а то это уже настолько старое что слов нет. Современные xtor/tor очень быстры и эффективны, lz4.

    • Поначалу я так и делал — проводил измерения после перезагрузки, пока не убедился, что «выпихывание» из кеша старых данных новыми работает и результаты получаются одинаковые. Дефрагментация делалась всякий раз в обязательном порядке. Хотя результаты, согласен, получились весьма интересные. Я их поэтому долгое время и не публиковал — так и не смог найти объяснение почему сжатый iso копируется быстрее несжатого. Но факт. Если бы на одном диске, а то ведь на всех механических. Есть какие то еще идеи на этот счет?

  2. Может сжатые данные переместились в начало диска, где скорость быстрее ?

  3. В целом данные photos и iso ведь похожи, и там и там не сжимаются.
    Какой средний размер файла photos ? Если их сделать из больших файлов (по 16Mb), станет ли картина похожа на iso ?
    Может стоит провести тест на только что отформатированном диске ? Иначе слишком много разных факторов влияет.

  4. Средний размер фотографии 1,6 МБ. В принципе можно из NEF сделать сжатый TIFF. Файлы получатся мегабайт по 20-ть. Попробуем.
    На совсем чистом диске, мне кажется, не очень интересно — идея была приблизить тест к «рабочим» условиям.

    • Сколько % было занято место на HDD ? Больше склоняюсь к тому, что несжатые данные были ближе в середине или в конце диска, а сжатые перенеслись в начало диска.

    • На всех дисках было занято процентов по 60 — 70. Сомневаюсь, что сжатые данные каким-то образом могли переместиться в начало.

  5. Санжар:

    Поленился и сжал всю папку winsxs, a не выборочно как на статье. У меня acer i5, хард toshiba 500gb. Было 7,5gb стало 5,5gb. Дефраг. сделал. Если установить новую игру или прогу объязательно ли надо снова сжимать папку winsxs? Какие могут быть последствия в дальнейшем со сжатым полностью папкой winsxs?

    • При сжатии всех файлов, которые представлены в WinSxS, Вы сжали большое количество файлов в папках Windows, Program Files и т.д. Впрочем, в статьях об этом написано. Последствий с точки зрения работоспособности системы не будет никаких. С точки зрения быстродействия вопрос сложный. Если по ощущениям ничего не изменилось (а это так?) то и бог с ним. А зачем вообще делать сжатие, если большой HDD? Маленький загрузочный раздел?

  6. Санжар:

    Объем системного диска 50гб, свободного было 14гб стало 16гб после сжатия. Быстродействие не изменилось (слава Аллаху), но мне интересно то, что после каждого установления нового приложения объязательно сжимать папку winsxs или дефрагментировать?

    • Нет, не обязательно. Можно повторять время от времени, например месяца через три, для того чтобы сжать новые файлы обновлений. Процедура будет идти быстрее, так как уже сжатые файлы compact будет пропускать.

  7. Cih:

    Как недавно выяснили на хабре, узким местом является не скорость последовательного чтения, а запись и чтение 4k с глубиной очереди не больше 6.
    Так что, мне кажется, результаты данного теста слабо коррелируют с влиянием сжатия на производительность системы.

    • Прошу прощения, но совершенно не понял как коррелируют между собой глубина очереди диска, размер блока и ntfs-сжатие.

Написать комментарий

Subscribe without commenting