Здесь я написал книгу случайно. Сначала выпей кофе.
Почему очистка дискового пространства ускоряет работу компьютеров?
Это не так, по крайней мере, само по себе. Это действительно распространенный миф. Причина это распространенный миф, потому что заполнение жесткого диска часто случается в то же время , как и другие вещи , которые традиционно могли бы замедлить † ваш компьютер. Производительность твердотельных накопителей, как правило, снижается по мере заполнения накопителя, но это относительно новая проблема, уникальная для твердотельных накопителей, и она не особо заметна для обычных пользователей. Как правило, мало свободного места на диске это просто красная сельдь.
Например, такие вещи, как:
Фрагментация файла. Фрагментация файлов является проблемой † †, но нехватка свободного места, хотя определенно является одним из многих способствующих факторов, не единственная причина этого. Некоторые ключевые моменты здесь:
Вероятность фрагментации файла не связана с количеством свободного места на диске. Они связаны с размером самого большого непрерывного блока свободного пространства на диске (например, "отверстий" свободного пространства), размер которого, как оказывается, накладывает верхнюю границу. Они также связаны с тем, как файловая система обрабатывает размещение файлов (подробнее ниже). Учтите: диск, заполненный на 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 обычно незначительны для таких вещей, как загрузка приложений, загрузка компьютера и т.д.
††† Принимая нормальную файловую систему, которая не фрагментирует файлы специально.