Эта брешь в производительности в течение двух
последних десятилетий только лишь увеличивалась.
Рис.1 Увеличение производительности процессоров и
дисков в последние годы
Рис.2 Улучшения производительности за счет
различных технологий
Вышеуказанные графики дают возможность видеть, что скорость чтения и записи не зависели от емкости дисков. В итоге, на современных дисках собрано существенное количество информации, чтение и запись которых является достаточно продолжительным. И сверхскоростные процессоры должны ждать данных, требуемых обработки.Масса исследований, посвященная увеличению производительности системы ввода/вывода, установила 2 принципа, которым стремятся соответствовать все современные ОС:
1. Уменьшить количество выполняемых операций ввода/вывода.
2.Передавать данные в крупных количествах при запросах ввода/вывода.
Проблем с пониманием правил не возникнет, благодаря их рациональности и логичности:
1. При получении запроса на ввод/вывод, начинают работать программные и аппаратные компоненты, которые выполняют данный запрос. В этом заключается проблема латентности, то есть времени, требуемого для выполнения запроса. Во время чтения информации у пользователей часто появляется чувство неудовлетворенности из-за высокой латентности.
2.Также на латентность влияет перемещение механических элементов. «Время вращения» для жестких дисков (время, необходимое для поворота диска в нужное положение под головку) и «время поиска» (время, необходимое для перемещения головки к нужному треку на диске) являются двумя основными характеристиками, влияющими на латентность. Чтение или запись больших объемов данных позволяет нивелировать эти характеристики. Иначе говоря, время, необходимое для передачи единицы информации, уменьшается.
Такие файловые системы, как NTFS призваны
соответствовать двум обозначенным правилам. Рассмотрим, к примеру,
воспроизведение композиции «Hotel California», исполненной группой «The Eagles»
(кстати, одна из моих любимых групп). Когда я впервые сохраняю mp3-файл объемом
5 Мб на диске, отформатированном под файловую систему NTFS, файловая система
начинает искать свободное место для того, чтобы разместить 5 Мб данных рядом в
одном месте. Логически связанная информация (например, содержимое одного файла
или папки), как правило, читается/записывается приблизительно в одно и то же
время. Обычно я слушаю «Hotel California» целиком, а не какую-то отдельную его
часть. В ходе трехминутного воспроизведения компьютер будет последовательно
подгружать с диска порции логически связанного контента (то есть частей файла)
до тех пор, пока воспроизведение не завершится. Если система знает, что все
порции файла расположены в одном месте, она может инициировать запросы больших
объемов информации (с предварительной буферизацией данных, которые, по мнению
системы, будут задействованы в ближайший момент времени), что позволяет
минимизировать механические перемещения головки жесткого диска и, как следствие,
сократить общий объем операций ввода/вывода.
Так почему же возникает явление фрагментации
файлов, если файловая система стремится размещать информацию последовательно?
Модификация хранящейся информации (добавление, изменение или удаление) приводит
к изменениям в размещении информации на диске и может привести к его
фрагментации. Так, к примеру, удаление файла приводит к перераспределению
пространства и вызывает появление «дыр» на карте распределения блоков. Это
явление носит название фрагментации доступного свободного пространства. С
течением времени системе становится все трудней и трудней отыскивать
последовательно расположенные свободные сектора, что ведет к фрагментации и
новой информации. Очевидно, что процедура удаления является далеко не
единственной причиной фрагментации: как говорилось выше, другие файловые
операции, такие как редактирование или добавление новой информации к уже
существующей, также приводят к возникновению этого неприятного явления.
Так
каким же образом может помочь дефрагментация? Процедура дефрагментации позволяет
размещать данные на жестком диске более оптимально и обладает следующими
преимуществами:
- Весь логически связанный и ранее
фрагментированный контент будет размещен по соседству
- Все свободное пространство также будет
объединено, чтобы новый контент, записываемый на диск, был размещен более
эффективно
Нижерасположенная диаграмма поможет
проиллюстрировать то, о чем мы говорим. Первая иллюстрация отражает идеальное
состояние диска – есть три файла (A, B и C), которые размещены в смежных
секторах; фрагментации нет. Вторая иллюстрация показывает фрагментированный диск
– порция данных, ассоциированных с файлом A, размещена не в смежном секторе (в
связи с увеличением размера файла). Третья иллюстрация показывает, как будет
выглядеть карта распределения после дефрагментации.
Рис. 3 Схема дефрагментации диска
Почти все современные файловые системы поддерживают дефрагментацию – основная разница кроется в его механизме. Конкретные реализации этого механизма отражают конкретные цели проектирования и компромиссы, на которые приходится идти. Мало верится, что физически возможно создать файловую систему общего назначения, которая не подвержена фрагментации.
С течением времени потребность в дефрагментации увеличивалась, поскольку во всей истории компьютеров фрагментация была неотьемлимой проблемой, которая негативно влияла на продуктивность роботы. В начале компьютерной эпохи, когда объемы дисков измерялись мегабайтами, они заполнялись намного быстрее, чем сейчас, поэтому проблема фрагментации возникала чаще. Кэши памяти были весьма ограничены и отзывчивость системы в значительной степени зависела от производительности дисковой системы. Это привело к тому, что пользователи были вынуждены запускать процедуру дефрагментации еженедельно или даже чаще! Прорыв в изучении компьютерных технологий на сегодняшний день предоставляет нам диски со сравнительно большим количеством памяти, что существенно решает проблему фрагментации. Да и память стала настолько доступной, что ее, как правило, достаточно для кэширования активно используемых данных. Все это вместе с изменениями в стратегии распределения данных, кэшированием и функциями предварительной выборки помогает увеличить общую отзывчивость системы. И хотя разрыв между скоростями процессора и диска продолжает увеличиваться, а фрагментация никуда не исчезает, программные и аппаратные технологии позволяют Windows нивелировать влияние фрагментации на производительность и увеличивают отзывчивость системы.
Как же оценивать фрагментацию на базе существующих программного и аппаратного обеспечений? Первый вопрос может звучать так: настолько часто случается фрагментация и какие имеет масштабы? 500 Гб информации с 1% фрагментацией – это вовсе не одно и то же, что 500 Гб с 50% фрагментацией. Во-вторых, каковы реальные потери производительности от фрагментации на современных программном и аппаратном обеспечениях? Очень немногие сегодня помнят различные продукты, появлявшиеся в течение последних двух десятилетий и предлагавшие различные технологии увеличения производительности (например, дефрагментацию оперативной памяти, сжатие диска и т.д.), существенная часть которых потеряла смысл в виду преимуществ современных приложений и устройств.
Степень и масштаб фрагментации на обычных домашних компьютерах сильно разнится в зависимости от объемов применяемых дисков, заполнения дискового пространства и схем его использования. Иначе говоря, точного ответа не существует. Количественное выражение влияния фрагментации на производительность - вопрос весьма интересный, хотя его очень трудно рассчитать. Более-менее правдоподобная оценка потерь производительности от фрагментации требует следующего:
1. Доступности системы, которая с течением времени аккумулировала фрагментацию по типичной схеме использования. Но, как отмечено выше, нет единой схемы использования. Так, к примеру, частота и масштабы фрагментации компьютера, используемого исключительно для доступа к Интернету, будут существенно отличаться от таковых для файлового сервера.
2. Выбора корректных тестовых приложений, измеряющих дисковую производительность при первом и последующих запусках приложения.
3. Многократного повторения статистически значимых измерений.
Просмотрим фрагментально всю сложность между масштабами фрагментации и полученными результатами работы системы.
В Windows XP файл считается фрагментированным, если он разбит на определенные части. В Windows Vista в случае, если фрагменты достаточно велики, все по-другому – алгоритм дефрагментации был изменен так, чтобы игнорировать фрагменты файла объемом более 64 Мб. В результате утилиты для дефрагментации в XP и Vista будут давать разные результаты в дефрагментации одного и того же тома. Какой показатель будет точнее? Перед тем, как ответить на этот вопрос, нужно понять, для чего процедура дефрагментации в Vista была изменена. В Vista мы проанализировали влияние дефрагментации и определили, что наибольшую выгоду от дефрагментации можно получить, когда фрагменты файлов объединены в довольно большие скопления. Влияние латентности диска в таком случае выглядит незначительно в сравнении с латентностью, связанной с последовательным чтением файла. Это значит, что существует такая точка, а точнее объем, после которого объединять фрагменты файла не имеет смысла. Конечно же, это отражается на результате работы системы. Например, для дефрагментации фрагментов объемом 64 Мб и более требуется значительное количество операций ввода/вывода, что противоречит одному из принципов, о которых говорилось выше, и файловая система перегружается в поиске свободного пространства. В таком сценарии, когда небольшая фрагментация файлов не влияет на производительность, правильным решением будет ничего не предпринимать!
Заметим, что, несмотря на то, что понять принцип работы фрагментации и ее влияния достаточно просто, на деле все оказывается гораздо сложнее, поскольку ее реальное влияние требует всеобъемлющей оценки системы. Отличия в реализации между Windows XP и Vista отражают оценку типичного программного и аппаратного обеспечений, используемых пользователями. Главное учесть, что в дефрагментации есть огромное количество факторов, которые влияют на отзывчивость системы и которые должны рассматриваться при оценке работы системы.
Процесс дефрагментации в Windows 7 основаны на кропотливом анализе влияния на отзывчивость системы.
В Windows Vista мы избавились ото всех элементов интерфейсов, которые информировали пользователя о процессе дефрагментации. В связи со многими жалобами по этому поводу нами был создан новый графический интерфейс. В результате в Windows 7 вы можете следить за процессом дефрагментации. Так же, при необходимости процедуру дефрагментации можно безопасно приостановить. Нижеприведенные снимки экранов иллюстрируют простоту наблюдения:
Рис. 4. Управление дефрагментацией
В Windows XP дефрагментация может быть запущена только пользователем, то есть запуск по установленному времени не доступен. Эта возможность была добавлена в Windows Vista, но представленная реализация не давала возможности выполнения одновременной дефрагментации нескольких томов. И наконец, в Windows 7 было снято это ограничение, что дает возможность увеличить продуктивность работы за счет ускорения дефрагментации. Представленные ниже иллюстрации показывают, каким образом можно планировать задачу дефрагментации нескольких дисков:
Рис. 5. Задание времени выполнения
дефрагментации
Среди усовершенствований в глубинах Windows 7, следует обратить внимание на следующие:
1. Теперь доступна дефрагментация всех файлов системы, которые в ранних версиях не могли быть дефрагментированы по каким-либо причинам. В частности, это касается различных файлов с метаданными NTFS. Возможность перераспределения файлов с метаданными NTFS выгодна еще и тем, что освобождает некоторое пространство на диске, поскольку позволяет системе упаковывать системные файлы и файлы с метаданными более плотно.
2. При обнаружении твердотельных дисков Windows автоматически отключает дефрагментацию на нем. Природа SSD-дисков такова, что дефрагментация им попросту не нужна, а в большинстве случаев и вредна, потому что уменьшает срок работы.
3. По умолчанию дефрагментация на Windows Server 2008 R2 отключена. Принимая во внимание неоднородность рабочих нагрузок на сервер, дефрагментация должна включаться и настраиваться исключительно администратором, понимающим эти рабочие нагрузки.
Лучшим решением по эксплуатации дефрагментации в Windows 7 является простое наблюдение за работой системы! Дефрагментация настроена на периодический запуск в фоне с целью минимизировать ее негативное влияние на системную производительность. Эффективное размещение данных на диске обеспечит максимальную отзывчивость системы и позволит наслаждаться бессмертным творением «The Eagles» безо всяких зависаний и замираний.