Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Instrumentalnye_sredstva_informatsionnykh_siste....docx
Скачиваний:
29
Добавлен:
28.04.2019
Размер:
3.46 Mб
Скачать
  1. Обслуживание систем

    1. Дефрагментация диска

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Схема дефрагментации диска:

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

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

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

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

  • Доступности системы, которая с течением времени аккумулировала фрагментацию по типичной схеме использования. Но, как отмечено выше, нет единой схемы использования. Так, к примеру, частота и масштабы фрагментации компьютера, используемого исключительно для доступа к Интернету, будут существенно отличаться от таковых для файлового сервера.

  • Выбора корректных тестовых приложений, измеряющих дисковую производительность при первом и последующих запусках приложения.

  • Многократного повторения статистически значимых измерений.

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

В Windows XP любой файл, разбитый на несколько элементов, считается фрагментированным. В Windows Vista в случае, если фрагменты достаточно велики, все по-другому – алгоритм дефрагментации был изменен так, чтобы игнорировать фрагменты файла объемом более 64 Мб. В результате утилиты для дефрагментации в XP и Vista будут сообщать о различной степени фрагментации одного и того же тома. Какой результат считать правильным? Перед тем, как ответить на этот вопрос, нужно понять, почему процедура дефрагментации в Vista была изменена. В Vista мы проанализировали влияние дефрагментации и определили, что наибольшую выгоду от дефрагментации можно получить, когда фрагменты файлов объединены в довольно большие скопления. Влияние латентности диска в таком случае выглядит незначительно в сравнении с латентностью, связанной с последовательным чтением файла. Это значит, что существует такая точка, а точнее объем, после которого объединять фрагменты файла не имеет смысла. На самом деле, это оказывает негативное влияние на производительность. Например, для дефрагментации фрагментов объемом 64 Мб и более требуется значительное количество операций ввода/вывода, что противоречит одному из принципов, о которых говорилось выше, и файловая система нагружается поиском протяженных участков свободного пространства. В таком сценарии, когда небольшая фрагментация файлов не оказывает влияния на производительность, правильным ответом будет ничего не предпринимать!

Следует особо отметить, что несмотря на то, что понять концепцию фрагментации и ее влияния достаточно просто, на деле все оказывается гораздо сложнее, поскольку ее реальное влияние требует всеобъемлющей оценки системы. Отличия в реализации между Windows XP и Vista отражают оценку типичного программного и аппаратного обеспечений, используемых пользователями. В разговоре о дефрагментации важно понимать, что есть огромное количество факторов, которые влияют на отзывчивость системы и которые должны приниматься в расчет.