Здесь я написал книгу случайно. Сначала выпей кофе.
Почему очистка дискового пространства ускоряет работу компьютеров?
Это не так, по крайней мере, само по себе. Это действительно распространенный миф. Причина это распространенный миф, потому что заполнение жесткого диска часто случается в то же время , как и другие вещи , которые традиционно могли бы замедлить † ваш компьютер. Производительность твердотельных накопителей, как правило, снижается по мере заполнения накопителя , но это относительно новая проблема, уникальная для твердотельных накопителей, и она не особо заметна для обычных пользователей. Как правило, мало свободного места на диске это просто красная сельдь .
Например, такие вещи, как:
Фрагментация файла. Фрагментация файлов - это проблема † , но нехватка свободного места, хотя определенно является одним из многих способствующих факторов, не единственная причина этого. Некоторые ключевые моменты здесь:
Вероятность фрагментации файла не связана с количеством свободного места на диске. Они связаны с размером самого большого непрерывного блока свободного пространства на диске (например, «отверстий» свободного пространства), размер которого, как оказывается, накладывает верхнюю границу . Они также связаны с тем, как файловая система обрабатывает размещение файлов (подробнее ниже). Обратите внимание: диск, заполненный на 95% всем свободным пространством в одном непрерывном блоке, имеет 0% вероятности фрагментации нового файла ††† (и вероятность фрагментации добавленного файла не зависит от свободного места). Накопитель, заполненный на 5%, но с равномерным распределением данных по нему, имеет очень высокую вероятность фрагментации.
Помните, что фрагментация файлов влияет на производительность только при обращении к фрагментированным файлам . Подумайте: у вас есть хороший дефрагментированный диск, в котором все еще есть много «дыр». Общий сценарий. Все идет гладко. В конце концов, однако, вы попадаете в точку, где больше не осталось больших блоков свободного пространства. Вы загружаете огромный фильм, файл оказывается сильно фрагментированным. Это не замедлит ваш компьютер. Все ваши файлы приложений и тому подобное, которые ранее были в порядке, не станут внезапно фрагментированными. Это может сделать фильмзагрузка займет больше времени (хотя типичные битрейты фильма настолько низкие по сравнению со скоростью чтения жесткого диска, что, скорее всего, они будут незаметны), и это может повлиять на производительность ввода-вывода во время загрузки фильма , но кроме этого, ничего не меняется.
Хотя фрагментация файлов, безусловно, является проблемой, зачастую эффекты смягчаются буферизацией и кэшированием на уровне ОС и оборудования. Задержка записи, упреждающее чтение, такие стратегии, как предварительная выборка в Windows и т. Д., Помогают уменьшить последствия фрагментации. Вы , как правило , не на самом деле испытывают значительное влияние до тех пор , пока фрагментация становится серьезным (я бы даже рискнул сказать , что до тех пор , как файл подкачки не фрагментирован, вы , вероятно , не заметите).
Поисковая индексация является еще одним примером. Допустим, у вас включена автоматическая индексация и ОС, которая не справляется с этим корректно. По мере того, как вы сохраняете все больше индексируемого контента на своем компьютере (документы и т. Д.), Индексация может занимать все больше и больше времени и может начать влиять на воспринимаемую скорость вашего компьютера во время его работы, как при вводе-выводе, так и при использовании ЦП. , Это не связано со свободным пространством, это связано с количеством индексируемого контента, который у вас есть. Однако нехватка свободного места идет рука об руку с хранением большего количества контента, следовательно, создается ложная связь.
Антивирусное программное обеспечение. Аналогично примеру индексации поиска. Допустим, у вас установлено антивирусное программное обеспечение для фонового сканирования вашего диска. Поскольку у вас появляется все больше и больше сканируемого контента, поиск требует больше ресурсов ввода-вывода и ресурсов ЦП, возможно, мешая вашей работе. Опять же, это связано с количеством сканируемого контента, который у вас есть. Большее содержание часто означает меньше свободного места, но нехватка свободного места не является причиной.
Установленное программное обеспечение. Допустим, у вас установлено много программного обеспечения, которое загружается при загрузке компьютера, что замедляет время запуска. Это замедление происходит из-за загрузки большого количества программного обеспечения. Однако установленное программное обеспечение занимает место на жестком диске. Поэтому свободное место на жестком диске уменьшается в то же время, когда это происходит, и снова может быть легко установлено ложное соединение.
- Многие другие примеры в том же духе, которые, взятые вместе, похоже, тесно связывают недостаток свободного места с более низкой производительностью.
Вышеприведенные примеры иллюстрируют еще одну причину, по которой так распространен этот миф: хотя недостаток свободного места не является прямой причиной замедления, удаления различных приложений, удаления проиндексированного или отсканированного содержимого и т. Д. Иногда (но не всегда; выход за рамки этого ответ) снова увеличивает производительность по причинам, не связанным с количеством оставшегося свободного места. Но это также естественно освобождает место на жестком диске. Следовательно, опять же, может быть установлена очевидная (но ложная) связь между «большим количеством свободного места» и «более быстрым компьютером».
Подумайте: если у вас машина работает медленно из-за большого количества установленного программного обеспечения и т. Д., И вы точно клонируете свой жесткий диск на больший жесткий диск, а затем расширяете разделы, чтобы получить больше свободного места, машина не будет магически ускоряться вверх. То же программное обеспечение загружается, те же файлы все еще фрагментированы одинаковыми способами, тот же индексатор поиска по-прежнему работает, ничего не меняется, несмотря на наличие большего свободного места.
Это связано с поиском места в памяти, где можно что-то сохранить?
Нет. Здесь стоит отметить две очень важные вещи:
Ваш жесткий диск не ищет вокруг, чтобы найти места, чтобы положить вещи. Твой жесткий диск тупой. Ничего. Это большой блок адресного хранилища, который слепо помещает вещи туда, куда говорит ваша ОС, и читает все, что от них требуется. Современные накопители имеют сложные механизмы кэширования и буферизации, предназначенные для прогнозирования того, что ОС будет запрашивать, основываясь на опыте, который мы получили со временем (некоторые накопители даже знают о файловой системе, которая на них установлена), но, по сути, думают о Ваш диск - просто большой тупой склад с случайными дополнительными функциями производительности.
Ваша операционная система также не ищет места для размещения вещей. Здесь нет «поиска». Много усилий было потрачено на решение этой проблемы, так как она имеет решающее значение для производительности файловой системы. Способ организации данных на вашем диске определяется вашей файловой системой., Например, FAT32 (старые ПК с DOS и Windows), NTFS (позже Windows), HFS + (Mac), ext4 (некоторые Linux) и многие другие. Даже понятие «файл» и «каталог» являются просто продуктами типичных файловых систем - жесткие диски не знают о таинственных животных, называемых «файлами». Подробности выходят за рамки этого ответа. Но, по сути, все распространенные файловые системы имеют способы отслеживания, где находится свободное место на диске, так что поиск свободного места при нормальных обстоятельствах (то есть файловых системах в хорошем состоянии) не требуется. Примеры:
NTFS имеет таблицу основных файлов , которая включает в себя специальные файлы $Bitmap
и т. Д., И множество метаданных, описывающих диск. По сути, он отслеживает, где находятся следующие свободные блоки, так что новые файлы могут быть записаны непосредственно в свободные блоки без необходимости каждый раз сканировать диск.
Другой пример: у ext4 есть так называемый «распределитель растровых изображений» , улучшение по сравнению с ext2 и ext3, которое в основном помогает ему напрямую определять, где находятся свободные блоки, вместо сканирования списка свободных блоков. Ext4 также поддерживает «отложенное выделение», то есть буферизацию данных в оперативной памяти ОС перед записью их на диск, чтобы принимать лучшие решения о том, где их разместить, чтобы уменьшить фрагментацию.
Много других примеров.
или с перемещением вещей для создания достаточно длинного непрерывного пространства для сохранения чего-либо?
Нет. Этого не происходит, по крайней мере, с любой файловой системой, о которой я знаю. Файлы просто фрагментированы.
Процесс "перемещения вещей вокруг, чтобы создать достаточно длинное непрерывное пространство для сохранения чего-либо", называется дефрагментацией . Это не происходит, когда файлы пишутся. Это происходит при запуске дефрагментатора диска. По крайней мере, в новых Windows это происходит автоматически по расписанию, но никогда не запускается при записи файла.
Возможность избежать подобных действий является ключом к производительности файловой системы, и именно поэтому происходит фрагментация и почему дефрагментация существует как отдельный шаг.
Сколько свободного места на жестком диске я должен оставить свободным?
Это сложный вопрос, и этот ответ уже превратился в небольшую книгу.
Эмпирические правила:
Для всех типов дисков:
- Самое главное, чтобы у вас было достаточно свободного места для эффективного использования компьютера . Если вам не хватает места для работы, вам понадобится больший диск.
- Многие инструменты дефрагментации диска требуют минимального количества свободного места (я думаю, что для работы с Windows требуется 15% наихудшего случая) для работы. Они используют это свободное пространство для временного хранения фрагментированных файлов, так как другие элементы переставляются.
- Оставьте место для других функций ОС. Например, если на вашей машине недостаточно физической памяти, и у вас включена виртуальная память с динамически изменяемым файлом подкачки, вам нужно оставить достаточно места для максимального размера файла подкачки. Или, если у вас есть ноутбук, который вы перевели в режим гибернации, вам потребуется достаточно свободного места для файла состояния гибернации. Такие вещи.
SSD-конкретны:
- Для оптимальной надежности (и, в меньшей степени, производительности) твердотельным накопителям требуется некоторое свободное пространство, которое они, не вдаваясь в подробности, используют для распределения данных по диску, чтобы избежать постоянной записи в одно и то же место (которое изнашивает их). Эта концепция оставления свободного пространства называется избыточным выделением ресурсов . Это важно, но во многих твердотельных накопителях обязательное избыточное пространство уже существует . То есть накопители часто имеют на несколько десятков ГБ больше, чем сообщают в ОС. Диски нижнего уровня часто требуют, чтобы вы вручную оставляли неразмеченное пространство, но для дисков с обязательным OP вам не нужно оставлять свободное место . Здесь важно отметить, чтопереполненное пространство часто берется только из неразделенного пространства . Так что, если ваш раздел занимает весь ваш диск, и вы оставляете на нем немного свободного места, это не всегда считается. Во многих случаях избыточное выделение ресурсов вручную требует уменьшения размера раздела до размера диска. Проверьте руководство пользователя вашего SSD для деталей. TRIM, сборка мусора и тому подобное тоже имеют свои последствия, но они выходят за рамки этого ответа.
Лично я обычно беру больший диск, когда у меня остается около 20-25% свободного места. Это не связано с производительностью, просто когда я подойду к этому моменту, я ожидаю, что скоро у меня не хватит места для данных, и пришло время получить больший диск.
Более важным, чем наблюдение за свободным пространством, является обеспечение того, чтобы запланированная дефрагментация была включена там, где это необходимо (не на твердотельных накопителях), чтобы вы никогда не достигли точки, когда она станет достаточно страшной, чтобы повлиять на вас. Не менее важно избежать ошибочных настроек и позволить вашей ОС делать свое дело, например , не отключать предварительную выборку Windows ( кроме SSD ) и т. Д.
Есть еще одна вещь, которую стоит упомянуть. В одном из других ответов здесь упоминалось, что полудуплексный режим SATA предотвращает чтение и запись одновременно. Хотя это правда, это сильно упрощено и в основном не связано с проблемами производительности, которые здесь обсуждаются. Это просто означает, что данные не могут передаваться в обоих направлениях по проводам одновременно. Тем не менее, SATA имеет довольно сложную спецификацию, включающую крошечные максимальные размеры блоков (я думаю, около 8 КБ на блок на проводе), очереди операций чтения и записи и т. Д., И не исключает записи в буферы, происходящие во время чтения, с чередованием операции и т. д.
Любая возникающая блокировка может быть вызвана конкуренцией за физические ресурсы, обычно смягчаемые большим количеством кэша. Дуплексный режим SATA здесь практически не имеет значения.
† «Замедление» - это широкий термин. Здесь я использую его для обозначения вещей, которые либо связаны с вводом / выводом (например, если ваш компьютер сидит там, сокращая числа, содержимое жесткого диска не оказывает влияния), либо с привязкой к процессору и конкурируют с тангенциально связанными вещами, которые имеют высокая загрузка ЦП (например, антивирусное программное обеспечение сканирует тонны файлов).
†† SSD - накопители будут подвержены фрагментации , в том последовательного доступа к скорости , как правило , быстрее , чем случайный доступ, несмотря на твердотельные накопители не сталкивается с теми же ограничениями , как механическое устройство (даже тогда, отсутствие фрагментации не гарантирует последовательного доступа, из - за износа выравнивания и т.д. , как отмечает Джеймс Снелл в комментариях). Однако практически в каждом сценарии общего использования это не проблема. Различия в производительности из-за фрагментации на SSD обычно незначительны для таких вещей, как загрузка приложений, загрузка компьютера и т. Д.
††† Принимая нормальную файловую систему, которая не фрагментирует файлы специально.