Дефрагментация в Windows 7

Автор: Topol Среда, Май 2nd, 2012 Нет комментариев

Рубрика: Операционные системы

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

У утилиты долгая история, связанная с значительными проблемами с производительностью. Для многих она до сих пор остается загадкой. Поэтому пользователи решили, что если система не так шустра, как хотелось бы, необходимо запустить таинственный процесс дефрагментации. В Windows Vista было решено передать этот процесс автопилоту, чтобы вы навсегда позабыть о нем. На практике случилось так: если пользователь отключал на ночь компьютер, процедура дефрагментации так никогда и не запускалась. С момента выпуска Windows Vista мы получили массу отзывов пользователей, желающих знать больше о состоянии фрагментации диска, а также получить полный контроль над самим процессом дефрагментации. И в сегодняшней статье мы поговорим об изменениях, внесенных в утилиту на базе полученных отзывов. При прочтении комментариев к статьям и электронных сообщений стало очевидным, что было бы неплохо углубиться в детали процесса, а также оценить ощущаемый и реальный приросты производительности от данных изменений. В качестве авторов статьи сегодня выступили Раджив Нагар (Rajeev Nagar) и Мэтт Гарсон (Matt Garson), являющиеся программными менеджерами команды File System. — Стивен

Сегодня речь пойдет о процессе дефрагментации дисков в Windows 7. Перед тем, как перейти к обсуждению нововведений в Windows 7, давайте немного поговорим о том, что такое фрагментация.

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

Эта брешь в производительности в течение двух последних десятилетий только лишь увеличивалась.


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


Рис.2 Улучшения производительности за счет различных технологий

Графики выше показывают, что несмотря на увеличение емкости дисков, скорости чтения/записи росли совершенно непропорционально. Таким образом, на современных дисках содержится громадное количество данных, чтение/запись которых занимает довольно продолжительное время. А быстрые процессоры вынуждены простаивать в ожидании данных, которые необходимо обработать.

Увеличению общей производительности системы ввода/вывода посвящена масса исследований, приведших к появлению двух принципов, которым ОС пытается соответствовать:

  • Выполнять меньше операций ввода/вывода, то есть минимизировать количество обращений на чтение/запись на диск.
  • При возникновении запроса на ввод/вывод передать данные большими порциями.

Правила весьма логичны и рациональны, поэтому понять их просто:

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

Такие файловые системы, как NTFS призваны соответствовать двум обозначенным правилам. Рассмотрим, к примеру, воспроизведение композиции «Hotel California», исполненной группой «The Eagles» (кстати, одна из моих любимых групп). Когда я впервые сохраняю mp3-файл объемом 5 Мб на диске, отформатированном под файловую систему NTFS, файловая система начинает искать свободное место для того, чтобы разместить 5 Мб данных рядом в одном месте. Логически связанная информация (например, содержимое одного файла или папки), как правило, читается/записывается приблизительно в одно и то же время. Обычно я слушаю «Hotel California» целиком, а не какую-то отдельную его часть. В ходе трехминутного воспроизведения компьютер будет последовательно подгружать с диска порции логически связанного контента (то есть частей файла) до тех пор, пока воспроизведение не завершится. Если система знает, что все порции файла расположены в одном месте, она может инициировать запросы больших объемов информации (с предварительной буферизацией данных, которые, по мнению системы, будут задействованы в ближайший момент времени), что позволяет минимизировать механические перемещения головки жесткого диска и, как следствие, сократить общий объем операций ввода/вывода.

Так почему же возникает явление фрагментации файлов, если файловая система стремится размещать информацию последовательно? Модификация хранящейся информации (добавление, изменение или удаление) приводит к изменениям в размещении информации на диске и может привести к его фрагментации. Так, к примеру, удаление файла приводит к перераспределению пространства и вызывает появление «дыр» на карте распределения блоков. Это явление носит название фрагментации доступного свободного пространства. С течением времени системе становится все трудней и трудней отыскивать последовательно расположенные свободные сектора, что ведет к фрагментации и новой информации. Очевидно, что процедура удаления является далеко не единственной причиной фрагментации: как говорилось выше, другие файловые операции, такие как редактирование или добавление новой информации к уже существующей, также приводят к возникновению этого неприятного явления.

Так каким же образом может помочь дефрагментация? Процедура дефрагментации позволяет размещать данные на жестком диске более оптимально и обладает следующими преимуществами:

  • Весь логически связанный и ранее фрагментированный контент будет размещен по соседству
  • Все свободное пространство также будет объединено, чтобы новый контент, записываемый на диск, был размещен более эффективно.

Нижерасположенная диаграмма поможет проиллюстрировать то, о чем мы говорим. Первая иллюстрация отражает идеальное состояние диска — есть три файла (A, B и C), которые размещены в смежных секторах; фрагментации нет. Вторая иллюстрация показывает фрагментированный диск — порция данных, ассоциированных с файлом A, размещена не в смежном секторе (в связи с увеличением размера файла). Третья иллюстрация показывает, как будет выглядеть карта распределения после дефрагментации.


Рис. 3 Схема дефрагментации диска

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

В течением времени необходимость в дефрагментации лишь увеличивалась, поскольку исторически фрагментация была проблемой, которая оказывала серьезное влияние на производительность. На рассвете компьютерной эры, когда объемы дисков измерялись мегабайтами, они заполнялись гораздо быстрее, чем сейчас, поэтому фрагментация случалась гораздо чаще. Кэши памяти были весьма ограничены и отзывчивость системы в значительной степени зависела от производительности дисковой системы. Это привело к тому, что пользователям приходилось запускать процедуру дефрагментации еженедельно или даже чаще! Сегодня доступность дисков высокой емкости частично решила проблему фрагментации. Да и память стала более настолько доступной, что ее, как правило, достаточно для кэширования активно используемых данных. Все это вместе с изменениями в стратегии распределения данных, кэшированием и функциями предварительной выборки помогает увеличить общую отзывчивость системы. И хотя разрыв между скоростями процессора и диска продолжает увеличиваться, а фрагментация никуда не исчезает, программные и аппаратные технологии позволяют Windows нивелировать влияние фрагментации на производительность и увеличивают отзывчивость системы.

Как же оценивать фрагментацию на базе существующих программного и аппаратного обеспечений? Первый вопрос может звучать так: настолько часто случается фрагментация и какие имеет масштабы? 500 Гб информации с 1% фрагментацией — это вовсе не одно и то же, что 500 Гб с 50% фрагментацией. Во-вторых, каковы реальные потери производительности от фрагментации на современных программном и аппаратном обеспечениях? Очень немногие сегодня помнят различные продукты, появлявшиеся в течение последних двух десятилетий и предлагавшие различные технологии увеличения производительности (например, дефрагментацию оперативной памяти, сжатие диска и т.д.), большая часть которых потеряла смысл ввиду преимуществ современных приложений и устройств.

Степень и масштаб фрагментации на обычных домашних компьютерах сильно разнится в зависимости от объемов применяемых дисков, заполнения дискового пространства и схем его использования. Другими словами, однозначного ответа нет. Количественное выражение влияния фрагментации на производительность &

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты