Обзоры Обзоры 13.10.2003 в 21:00 comment

Дефрагментация – польза или вред?

author avatar
https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://itc.ua/wp-content/themes/ITC_6.0/images/no-avatar.svg

ITC.UA

автор

В этом мире живут
как бы по инерции…
К. Моррис

На самом деле вопрос можно поставить даже шире. Была ли вообще данная проблема актуальна где-либо за пределами мира DOS и ее "производных" (включая Windows 95/98/Me)? Дать однозначный и исчерпывающий ответ не так-то просто. Не помогут никакие тестирования файловых систем и программ-дефрагментаторов — в лабораторных условиях очень сложно воссоздать реальные рабочие ситуации, да еще и характерные для различных областей применения компьютеров. Полагаться стоит лишь на собственный опыт, трезвый взгляд на вещи и знания конструктивных особенностей ОС, файловых систем, и, как ни странно, — аппаратного обеспечения. Начнем, пожалуй, с небольшого экскурса в историю двух "параллельных" миров — IBM PC и Apple Macintosh.


Миры, в которых мы живем. Или, точнее, жили

Для начала рассмотрим более "взрослый" и дорогой мир Apple до эпохи G3. Что мы видим? Два ключевых момента, на которые стоит обратить внимание, — это SCSI и HFS (особенно HFS+).

Одна из функций нормальных SCSI-контроллеров — буферизация команд (Command Queuing) с возможным изменением порядка их исполнения, а также оптимизация хода головок накопителя. Говоря простым языком, когда контроллеру приходят команды на чтение/запись секторов с линейными номерами 2000, 1000, 3000, он исполнит их в той последовательности, которая наиболее удобна при текущем положении головок (например, 1000, 2000, 3000).

Возможно, некоторым читателям покажется, что таким образом SCSI-контроллер берет на себя часть функций дисковой подсистемы ОС. Однако горькая правда состоит как раз в том, что буферизация команд и данных (дисковый кэш, не путать с файловым) должна быть задачей именно контроллера, но часто перекладывается на ОС — ради поддержки аппаратуры без соответствующих возможностей и "интеллекта". Всему виной некоторый сдвиг представлений в области операционных систем. Возьмем, к примеру, идею BIOS (firmware) как средство абстрагирования от подробностей функционирования оборудования и освобождения ОС от лишнего багажа драйверов. Вроде бы разумная идея, но, скажем, Windows 9x/2000/XP в вопросах ввода/вывода на BIOS не полагается. Да и любая другая операционная система, работающая в защищенном режиме процессоров семейства x86, фактически обречена на подобное положение — использовать BIOS за пределами реального режима нецелесообразно, особенно в плане производительности.

Курс Python від Mate academy.
Python дозволяє тобі не тільки розробляти сайти та займатись аналітикою даних, а ще й будувати алгоритми, тестувати програми та навіть створювати штучні інтелекти. Стань різноплановим фахівцем!
Реєстрація на курс

Файловые системы HFS/HFS+ интересны нам постольку, поскольку их программные реализации также располагают неким "интеллектом", ответственным за снижение степени фрагментации. После года интенсивной ежедневной работы на машине Apple Macintosh в области полиграфии, где файлы отличаются как большим разнообразием размеров, так и постоянно изменяемым содержимым, степень фрагментации файловой системы HFS+ оставалась незначительной, а производительность (субъективно) не падала вовсе. Программа-дефрагментатор на этой машине была запущена единственный раз — из любопытства, а никак не по необходимости.

Теперь посмотрим на рынок "массовых ПК" того (а в какой-то мере и нынешнего) времени: не обремененные "интеллектом" MFM-, RLL- и IDE-контроллеры, вполне оправданно на тот момент "заточенные" под однозадачные ОС путем отсечения излишней функциональности, присущей SCSI. Файловые системы, спроектированные скорее с упором на простоту реализации, нежели на эффективность работы. Экстенсивное развитие как аппаратного, так и программного обеспечения (увеличение разрядности, емкости, пропускной способности, но не архитектуры и алгоритмов).

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

На данный момент, разумеется, заметен некоторый "интеллектуальный ренессанс" и в мире PC — то, что было "выброшено" раньше, начинает изобретаться заново. Стандарт ATA/ATAPI, например, все больше походит на "старичка" SCSI, происходит постепенное избавление от примитивных файловых систем FAT16/32 (справедливости ради нужно отметить, что их периодически пытались подправить в конкретных реализациях, скажем VFAT, но больших дивидендов это не приносило). Возможно, подобная "эволюционная петля" выглядит неплохо с финансовой точки зрения, но не с точки зрения пользователей.


День сегодняшний

Курс Python від Mate academy.
Python дозволяє тобі не тільки розробляти сайти та займатись аналітикою даних, а ще й будувати алгоритми, тестувати програми та навіть створювати штучні інтелекти. Стань різноплановим фахівцем!
Реєстрація на курс

А что происходит в мире многозадачных и многопользовательских ОС?

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

Однако в многозадачной среде характер работы с накопителями даже не "пахнет" детерминизмом. В середине чтения одним процессом одного файла, другому процессу вполне может понадобиться другой (не исключено, что и на противоположном конце диска). Соответственно не исключена ситуация, когда фрагментация окажется как раз во благо. Не случайно в среде администраторов Unix достаточно давно бытует не совсем ортодоксальное мнение о том, что фрагментация файловой системы порядка 25% немного повышает производительность при одновременной работе нескольких приложений, интенсивно и хаотично использующих дисковую подсистему.

Однако, кроме приведенных теоретических размышлений, существуют и практические исследования. В частности, их проводила достаточно авторитетная организация NSTL (National Software Testing Labs). Вроде бы ее отчеты однозначно свидетельствуют в пользу дефрагментации — во всяком случае для Windows NT/2000/XP/2003 и NTFS. В одном из них даже приводятся результаты некоторых замеров производительности на основе приложений для серверов и рабочих станций. Чаще всего упоминаются "Excel Benchmark", "Outlook Benchmark" — т. е. "однозадачные" тесты, не дающие, как говорилось выше, адекватной картины.

Встречается также "Exchange Benchmark", один раз упоминается "SQL Server test". По результатам исследований Outlook/Exchange прогнозируется прирост быстродействия от 5,9% до 55,6%. Касательно серверных тестов вообще приведена довольно размытая фраза: "Дефрагментация на сервере улучшила производительность на 80%. Для SQL-сервера, в некоторых случаях, эффект достигал 100%". К сожалению, не приводится ни методика тестирования, ни даже какой именно показатель подразумевается под термином "производительность сервера".


Выводы

Итак, что мы имеем в результате? Автор может предложить лишь собственное субъективное мнение, которое ни в коем случае не претендует на звание истины.

Сегодня уже есть целый ворох дефрагментаторов для различных ОС и файловых систем и регулярно появляются новые. Собственно поводом к написанию данной статьи послужил выпуск программы O&O Defrag Linux. Конечно, судить о конкретных достоинствах и недостатках по бета-версии некорректно, но, как мы попытались объяснить выше, вопрос стоит гораздо шире — зачем вообще нужен дефрагментатор в системе, где выгода от его использования практически неуловима? Да, дефрагментация и в Linux может оказаться полезной в случае однопользовательской "однозадачной" настольной системы, особенно работающей с потоковыми данными. Но даже в этом случае вполне можно положиться на собственные механизмы "умной" файловой системы, со своей стороны помогая ей избегать фрагментации: оставлять достаточно свободного места на диске, хранить редактируемые данные в отдельном разделе и пр.

Подобные программы существуют постольку, поскольку на них есть спрос. Спрос же частично объясняется тем, что пользователи привыкли к тому, что подобные приложения необходимы для нормальной работы компьютера. Кроме того, некоторым подсознательно нравится, когда умное (с их точки зрения) ПО сообщает, что с компьютером все в порядке. Уровень интеллекта и диапазон возможностей среднего современного дефрагментатора значительно ниже, чем у аналогичной разработки эпохи DOS (кто-то вспомнит старый добрый Norton SpeedDisk и будет прав). Сегодня подобные программы (отнюдь не только дефрагментаторы) существуют больше как антидот от болезней пользователя, нежели компьютера.

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

Продолжается конкурс авторов ИТС. Напиши статью о развитии игр, гейминг и игровые девайсы и выигрывай профессиональный игровой руль Logitech G923 Racing Wheel, или одну из низкопрофильных игровых клавиатур Logitech G815 LIGHTSYNC RGB Mechanical Gaming Keyboard!


Loading comments...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: