Сегодня речь пойдет о процессе дефрагментации дисков в Windows 7. Перед тем, как перейти к обсуждению нововведений в Windows 7, давайте немного поговорим о том, что такое фрагментация.
В ряду различных устройств хранения информации, наполняющих канал связи между жестким диском и процессором, жесткий диск является, пожалуй, менее скоростным по сравнению с другими устройствами и обладает более высокой латентностью. Показатели времени чтения/записи для жестких дисков измеряются в миллисекундах (как правило, 2-5 мс). Кажется, что быстро, но пока не сравнишь с циклом процессора с тактовой частотой в 2 ГГц, составляющим 10 нс, после которых информации оказывается в L1-кэше.
Эта брешь в производительности в течение двух последних десятилетий только лишь увеличивалась.

Рис.1 Увеличение производительности процессоров и дисков в последние годы

Рис.2 Улучшения производительности за счет различных технологий
Увеличению общей производительности системы ввода/вывода посвящена масса исследований, приведших к появлению двух принципов, которым ОС пытается соответствовать:
- Выполнять меньше операций ввода/вывода, то есть минимизировать количество обращений на чтение/запись на диск
- При возникновении запроса на ввод/вывод передать данные большими порциями.
- При любом запросе на ввод/вывод в дело вступают различные программные и аппаратные компоненты, выполняющие этот запрос. В этом и состоит причина высокой латентности, то есть времени, необходимого для его выполнения. Пользователи часто сталкиваются с латентностью при чтении информации, ведущей к возникновению чувства неудовлетворенности.
- Перемещение механических элементов также вносит свою лепту в латентность. Для жестких дисков «время вращения» (время, необходимое для поворота диска в нужное положение под головку) и «время поиска» (время, необходимое для перемещения головки к нужному трэку на диске) являются двумя основными характеристиками, влияющими на латентность. Чтение или запись больших объемов данных позволяет нивелировать эти характеристики. Другими словами, время, необходимое для передачи единицы информации, уменьшается.
Так каким же образом может помочь дефрагментация? Процедура дефрагментации позволяет размещать данные на жестком диске более оптимально и обладает следующими преимуществами:
- Весь логически связанный и ранее фрагментированный контент будет размещен по соседству
- Все свободное пространство также будет объединено, чтобы новый контент, записываемый на диск, был размещен более эффективно

Рис. 3 Схема дефрагментации диска
В течением времени необходимость в дефрагментации лишь увеличивалась, поскольку исторически фрагментация была проблемой, которая оказывала серьезное влияние на производительность. На рассвете компьютерной эры, когда объемы дисков измерялись мегабайтами, они заполнялись гораздо быстрее, чем сейчас, поэтому фрагментация случалась гораздо чаще. Кэши памяти были весьма ограничены и отзывчивость системы в значительной степени зависела от производительности дисковой системы. Это привело к тому, что пользователям приходилось запускать процедуру дефрагментации еженедельно или даже чаще! Сегодня доступность дисков высокой емкости частично решила проблему фрагментации. Да и память стала более настолько доступной, что ее, как правило, достаточно для кэширования активно используемых данных. Все это вместе с изменениями в стратегии распределения данных, кэшированием и функциями предварительной выборки помогает увеличить общую отзывчивость системы. И хотя разрыв между скоростями процессора и диска продолжает увеличиваться, а фрагментация никуда не исчезает, программные и аппаратные технологии позволяют Windows нивелировать влияние фрагментации на производительность и увеличивают отзывчивость системы.
Как же оценивать фрагментацию на базе существующих программного и аппаратного обеспечений? Первый вопрос может звучать так: настолько часто случается фрагментация и какие имеет масштабы? 500 Гб информации с 1% фрагментацией – это вовсе не одно и то же, что 500 Гб с 50% фрагментацией. Во-вторых, каковы реальные потери производительности от фрагментации на современных программном и аппаратном обеспечениях? Очень немногие сегодня помнят различные продукты, появлявшиеся в течение последних двух десятилетий и предлагавшие различные технологии увеличения производительности (например, дефрагментацию оперативной памяти, сжатие диска и т.д.), большая часть которых потеряла смысл ввиду преимуществ современных приложений и устройств.
Степень и масштаб фрагментации на обычных домашних компьютерах сильно разнится в зависимости от объемов применяемых дисков, заполнения дискового пространства и схем его использования. Другими словами, однозначного ответа нет. Количественное выражение влияния фрагментации на производительность ‑ вопрос весьма интересный, хотя его очень трудно рассчитать. Более-менее правдоподобная оценка потерь производительности от фрагментации требует следующего:
- Доступности системы, которая с течением времени аккумулировала фрагментацию по типичной схеме использования. Но, как отмечено выше, нет единой схемы использования. Так, к примеру, частота и масштабы фрагментации компьютера, используемого исключительно для доступа к Интернету, будут существенно отличаться от таковых для файлового сервера.
- Выбора корректных тестовых приложений, измеряющих дисковую производительность при первом и последующих запусках приложения.
- Многократного повторения статистически значимых измерений.
В Windows XP любой файл, разбитый на несколько элементов, считается фрагментированным. В Windows Vista в случае, если фрагменты достаточно велики, все по-другому – алгоритм дефрагментации был изменен так, чтобы игнорировать фрагменты файла объемом более 64 Мб. В результате утилиты для дефрагментации в XP и Vista будут сообщать о различной степени фрагментации одного и того же тома. Какой результат считать правильным? Перед тем, как ответить на этот вопрос, нужно понять, почему процедура дефрагментации в Vista была изменена. В Vista мы проанализировали влияние дефрагментации и определили, что наибольшую выгоду от дефрагментации можно получить, когда фрагменты файлов объединены в довольно большие скопления. Влияние латентности диска в таком случае выглядит незначительно в сравнении с латентностью, связанной с последовательным чтением файла. Это значит, что существует такая точка, а точнее объем, после которого объединять фрагменты файла не имеет смысла. На самом деле, это оказывает негативное влияние на производительность. Например, для дефрагментации фрагментов объемом 64 Мб и более требуется значительное количество операций ввода/вывода, что противоречит одному из принципов, о которых говорилось выше, и файловая система нагружается поиском протяженных участков свободного пространства. В таком сценарии, когда небольшая фрагментация файлов не оказывает влияния на производительность, правильным ответом будет ничего не предпринимать!
Следует особо отметить, что несмотря на то, что понять концепцию фрагментации и ее влияния достаточно просто, на деле все оказывается гораздо сложнее, поскольку ее реальное влияние требует всеобъемлющей оценки системы. Отличия в реализации между Windows XP и Vista отражают оценку типичного программного и аппаратного обеспечений, используемых пользователями. В разговоре о дефрагментации важно понимать, что есть огромное количество факторов, которые влияют на отзывчивость системы и которые должны приниматься в расчет.
Механизм и сама процедура дефрагментации в Windows 7 основаны на кропотливом анализе влияния на отзывчивость системы.
В Windows Vista мы избавились ото всех элементов интерфейсов, которые информировали пользователя о статусе дефрагментации. Мы получили массу негативных отзывов по поводу этого решения, поэтому оценив все за и против, мы создали для дефрагментации новый графический интерфейс! В результате в Windows 7 вы можете наблюдать за процессом дефрагментации. Более того, при необходимости процедуру дефрагментации можно безопасно приостановить. Нижеприведенные снимки экранов иллюстрируют простоту наблюдения:

Рис. 4. Управление дефрагментацией

Рис. 5. Задание времени выполнения дефрагментации
Среди остальных изменений, скрытых в глубинах Windows 7, следует отметить следующие:
- Дефрагментация в Windows 7 носит всеобъемлющий характер – многие файлы, которые в Windows Vista и более ранних версиях Windows по каким-либо причинам не могли быть перемещены, теперь могут быть дефрагментированы. В частности, это касается различных файлов с метаданными NTFS. Возможность перераспределения файлов с метаданными NTFS выгодна еще и тем, что освобождает некоторое пространство на диске, поскольку позволяет системе упаковывать системные файлы и файлы метаданными более плотно.
- При обнаружении твердотельных дисков Windows автоматически отключает дефрагментацию на нем. Природа SSD-дисков такова, что дефрагментация им попросту не нужна, а в большинстве случаев и вредна, потому что сокращает срок работы.
- По умолчанию дефрагментация на Windows Server 2008 R2 отключена. Принимая во внимание неоднородность рабочих нагрузок на сервер, дефрагментация должна включаться и настраиваться исключительно администратором, понимающим эти рабочие нагрузки.
Раджив и Мэтт
Источник: E7Blog