Дізнавшись більше про комп’ютери та те, як вони працюють, ви час від часу натрапляєте на щось, що, здається, не має сенсу. Маючи це на увазі, чи справді спорожнення дискового простору пришвидшує роботу комп’ютерів? Сьогоднішня публікація запитань SuperUser містить відповідь на спантеличене запитання читача.
Сьогоднішня сесія запитань і відповідей надійшла до нас люб’язно від SuperUser - підрозділу Stack Exchange, угруповання веб-сайтів із питань та відповідей на основі спільноти.
Знімок екрану надано пісок (Flickr) .
Питання
Читач SuperUser Remi.b хоче знати, чому спорожнення дискового простору, здається, пришвидшує роботу комп’ютера:
Я переглядав багато відео і тепер розумію, як комп’ютери працюють трохи краще. Я розумію, що таке RAM, про енергонезалежну та енергонезалежну пам’ять, а також про процес обміну. Я також розумію, чому збільшення оперативної пам'яті пришвидшує роботу комп'ютера.
Я не розумію, чому очищення місця на диску, здається, пришвидшує роботу комп'ютера. Це справді пришвидшує роботу комп’ютера? Якщо так, то чому це робить?
Чи це пов’язано з пошуком місця в пам’яті для збереження речей або з переміщенням речей навколо, щоб зробити досить довгий безперервний простір, щоб щось зберегти? Скільки вільного місця слід залишити вільним на жорсткому диску?
Чому, здається, спорожнення дискового простору пришвидшує роботу комп’ютера?
Відповідь
Співавтор SuperUser Джейсон С має для нас відповідь:
"Чому спорожнення дискового простору пришвидшує роботу комп'ютерів?"
Це не робить, принаймні не самостійно. Це справді поширений міф. Причина, через яку це поширений міф, полягає в тому, що заповнення жорсткого диска часто відбувається одночасно з іншими речами, які традиційно можуть уповільнити роботу комп'ютера (A) . Продуктивність твердотільних накопичувачів, як правило, погіршується в міру заповнення, але це відносно нова проблема, унікальна для твердотільних накопичувачів, і насправді не помітна для випадкових користувачів. Як правило, мало вільного місця на диску - це просто оселедець.
Наприклад, такі речі:
1. Фрагментація файлів. Проблемою є фрагментація файлів (B) , але брак вільного місця, хоча, безумовно, є одним із багатьох факторів, що сприяють, не єдина причина цього. Деякі ключові моменти тут:
- Шанси фрагментації файлу є ні пов'язані з кількістю вільного місця, що залишається на диску. Вони пов’язані з розміром найбільшого суміжного блоку вільного простору на накопичувачі (тобто «дірок» вільного простору), що становить кількість вільного простору трапляється ставити верхню межу . Вони також пов'язані з тим, як файлова система обробляє розподіл файлів ( докладніше нижче ). Розглянемо: Накопичувач, який заповнений на 95 відсотків з усім вільним простором в одному суцільному блоці, має нульові відсотки шансів фрагментувати новий файл (C) (і можливість фрагментування доданого файлу не залежить від вільного місця). Накопичувач, заповнений на п’ять відсотків, але з рівномірним розподілом даних по диску, має дуже високі шанси на фрагментацію.
- Майте на увазі, що фрагментація файлів впливає лише на продуктивність, коли здійснюється доступ до фрагментованих файлів . Розглянемо: У вас хороший, дефрагментований привід, який все ще має багато вільних «дірок». Поширений сценарій. Все працює гладко. Зрештою, ви дійдете до точки, коли більше не залишиться великих блоків вільного простору. Ви завантажуєте величезний фільм, файл в кінцевому підсумку сильно фрагментований. Це не сповільнить роботу вашого комп’ютера . Усі файли ваших програм і такі, що раніше були в порядку, не стануть раптово фрагментованими. Це може змусити завантажувати відео довше (хоча типові швидкості передачі фільмів настільки низькі в порівнянні зі швидкістю зчитування з жорсткого диска, що це, швидше за все, буде непомітним), і це може вплинути на продуктивність, пов’язану з введенням / виводом, під час завантаження фільму, але крім цього, нічого не змінюється.
- Хоча фрагментація файлів, безумовно, є проблемою, часто ефекти пом'якшуються за допомогою буферизації та кешування ОС та апаратного рівня. Запізнілі записи, читання вперед, стратегії типу попередньо витягувач у Windows тощо, все допомагає зменшити наслідки фрагментації. Як правило, ні насправді відчувати значний вплив, поки фрагментація не стане серйозною (я навіть наважусь сказати, що поки ваш файл підкачки не фрагментований, ви, мабуть, цього ніколи не помітите).
2. Інший приклад - індексація пошуку. Скажімо, у вас увімкнено автоматичне індексування та ОС, яка не справляється з цим витончено. Оскільки ви зберігаєте все більше індексованого вмісту на своєму комп’ютері (документи та ін.), Індексування може тривати довше і довше і може почати впливати на сприйману швидкість вашого комп’ютера під час роботи, як при введенні / виведенні, так і при використанні центрального процесора . Це не пов’язано з вільним простором, це пов’язано з кількістю вмісту, який можна індексувати. Однак нестача вільного місця поєднується із зберіганням більшої кількості вмісту, отже, виникає хибне зв’язок.
3. Антивірусне програмне забезпечення (аналогічно прикладу індексації пошуку). Скажіть, що у вас встановлено антивірусне програмне забезпечення для фонового сканування вашого диска. Оскільки у вас стає все більше сканованого вмісту, пошук вимагає більше ресурсів вводу-виводу та процесора, можливо, заважаючи вашій роботі. Знову ж таки, це пов’язано з кількістю вмісту, який можна сканувати. Більший вміст часто дорівнює менше вільного місця, але брак вільного місця не є причиною.
4. Встановлене програмне забезпечення. Скажімо, у вас встановлено багато програмного забезпечення, яке завантажується під час завантаження комп’ютера, тим самим сповільнюючи час запуску. Це сповільнюється, оскільки завантажується багато програмного забезпечення. Однак встановлене програмне забезпечення займає місце на жорсткому диску. Таким чином, вільний простір на жорсткому диску зменшується одночасно з цим, і знову можна легко встановити помилкове з'єднання.
5. Багато інших прикладів у цьому напрямку, які, взявши разом, з'являються тісно пов’язати брак вільного місця з нижчими показниками.
Вищезазначене ілюструє ще одну причину того, що це такий поширений міф: Хоча брак вільного місця не є прямою причиною уповільнення роботи, видалення різних програм, видалення індексованого або відсканованого вмісту тощо (але не завжди; поза сферою ця відповідь) знову підвищує продуктивність з причин, не пов’язаних із кількістю вільного місця, що залишилося. Але це також природно звільняє місце на жорсткому диску. Отже, знову ж таки, очевидний (але хибний) зв’язок між “більшим вільним простором” та “швидшим комп’ютером” може бути встановлений.
Розглянемо: Якщо у вас машина працює повільно через велику кількість встановленого програмного забезпечення тощо, клонуйте жорсткий диск (точно) на більший жорсткий диск, а потім розширте розділи, щоб отримати більше вільного місця, машина чарівно не прискориться. Завантажується одне і те ж програмне забезпечення, ті самі файли все одно фрагментовані однаковими способами, той самий індексатор пошуку все ще працює, нічого не змінюється, незважаючи на наявність більше вільного місця.
"Чи є це щось спільне з пошуком місця в пам'яті для збереження речей?"
Ні, це не є. Тут варто відзначити дві дуже важливі речі:
1. Ваш жорсткий диск не шукає, де можна розмістити речі. Ваш жорсткий диск дурний. Це нічого. Це великий блок адресованого сховища, який наосліп розміщує речі там, де ваша ОС про це говорить, і читає все, що від нього запитують. Сучасні накопичувачі мають складні механізми кешування та буферизації, розроблені навколо передбачення того, що ОС буде запитувати на основі досвіду, який ми отримали з часом (деякі диски навіть знають про файлову систему, яка на них є), але по суті, подумайте про ваш диск просто як велика німа цегла пам’яті з випадковими функціями бонусної продуктивності.
2. Ваша операційна система також не шукає місця, де можна покласти речі. Пошук немає. Для вирішення цієї проблеми докладено багато зусиль, оскільки це дуже важливо для продуктивності файлової системи. Спосіб фактичної організації даних на вашому диску визначається вашим файлова система . Наприклад, FAT32 (старі DOS та ПК з Windows), NTFS (пізніші версії Windows), HFS + (Mac), ext4 (деякі системи Linux) та багато інших. Навіть поняття "файл" і "каталог" є лише продуктами типових файлових систем - жорсткі диски нічого не знають про таємничих звірів, які називаються файлів . Деталі виходять за рамки цієї відповіді. Але по суті, у всіх поширених файлових системах є способи відстеження, де доступний простір знаходиться на диску, так що пошук вільного місця в звичайних обставинах (тобто файлові системи в хорошому стані) є непотрібним. Приклади:
- NTFS має головна таблиця файлів , що включає спеціальні файли $ Bitmap тощо, а також безліч метаданих, що описують накопичувач. По суті, він відстежує, де знаходяться наступні вільні блоки, щоб нові файли могли записуватись безпосередньо у вільні блоки, не вимагаючи кожного разу сканувати диск.
- Інший приклад: Ext4 має те, що називається розподілювач растрових зображень , покращення порівняно з ext2 та ext3, що в основному допомагає йому безпосередньо визначати, де знаходяться вільні блоки, замість сканування списку вільних блоків. Ext4 також підтримує затримка виділення , тобто буферизація даних в оперативній пам'яті ОС перед тим, як записати їх на диск, щоб прийняти кращі рішення щодо того, куди їх помістити, щоб зменшити фрагментацію.
- Багато інших прикладів.
"Або з рухомими речами, щоб зробити досить довгий безперервний простір, щоб щось заощадити?"
Ні. Цього не відбувається, принаймні не з жодною відомою мені файловою системою. Файли в кінцевому підсумку фрагментовані.
Називається процес «переміщення речей навколо, щоб скласти досить довгий суміжний простір для збереження чогось» дефрагментація . Це не відбувається, коли файли записуються. Це трапляється під час запуску дефрагментатора диска. У нових версіях Windows це, принаймні, відбувається автоматично за розкладом, але це ніколи не викликається написанням файлу.
Можливість уникати Переміщення подібних речей є ключовим фактором для продуктивності файлової системи, і тому відбувається фрагментація і чому дефрагментація існує як окремий крок.
"Скільки вільного місця слід залишити вільним на жорсткому диску?"
Відповісти на це складніше запитання (і ця відповідь вже перетворилася на невеличку книжку).
Емпіричні правила:
1. Для всіх типів накопичувачів:
- Найголовніше, залиште достатньо вільного місця для вам ефективно користуватися комп’ютером . Якщо у вас не вистачає місця для роботи, вам знадобиться більший привід.
- Багато інструментів дефрагментації диска вимагають мінімальної кількості вільного місця (я думаю, що для Windows потрібно 15 відсотків, найгірший випадок). Вони використовують цей вільний простір для тимчасового зберігання фрагментованих файлів, оскільки інші речі переставляються.
- Залиште місце для інших функцій ОС. Наприклад, якщо на вашому комп'ютері недостатньо фізичної оперативної пам'яті, а у вас увімкнена віртуальна пам'ять із файлом сторінки з динамічним розміром, вам потрібно буде залишити достатньо місця для максимального розміру файлу сторінки. Або якщо у вас є ноутбук, який ви перейшли в режим глибокого сну, вам буде потрібно достатньо вільного місця для файлу стану сплячого режиму. Такі речі.
2. SSD-специфічний:
- Для оптимальної надійності (і в меншій мірі продуктивності) твердотільні накопичувачі потребують вільного місця, яке, не вдаючись до надто деталей, вони використовують для розповсюдження даних навколо диска, щоб уникнути постійного запису в одне і те ж місце (що їх зношує) . Ця концепція залишення вільного простору називається надмірне забезпечення . Важливо, але в багатьох твердотільних накопичувачах вже існує обов'язковий надмірно наданий простір . Тобто накопичувачі часто мають на кілька десятків ГБ більше, ніж вони повідомляють ОС. Нижчі накопичувачі часто вимагають від’їзду вручну без розділів місця, але для приводів з обов’язковим ОП, не потрібно залишати вільний простір . Тут важливо відзначити, що надмірно забезпечений простір часто береться лише з нерозділеного простору . Отже, якщо ваш розділ займає весь ваш диск, і ви залишаєте на ньому вільний простір, це ні завжди рахувати. Багато разів ручне надмірне забезпечення вимагає зменшення вашого розділу, щоб він був меншим за розмір накопичувача. Докладніше див. У посібнику користувача вашого SSD. TRIM, збір сміття та ін. Також мають наслідки, але вони виходять за рамки цієї відповіді.
Особисто я зазвичай захоплюю більший диск, коли у мене залишається близько 20-25 відсотків вільного місця. Це не пов’язано з продуктивністю, це просто те, що коли я перейду до цього моменту, я сподіваюся, що незабаром у мене, можливо, не вистачить місця для даних, і настав час отримати більший диск.
Більш важливим, ніж перегляд вільного простору, є переконання, що запланована дефрагментація ввімкнена там, де це доречно (не на твердотільних накопичувачах), щоб ви ніколи не дійшли до того моменту, коли вона стає досить жахливою, щоб впливати на вас.
Є останнє, про що варто згадати. В одній з інших відповідей тут згадується, що напівдуплексний режим SATA заважає одночасно читати та писати. Хоча це правда, це значно спрощується і здебільшого не пов’язано з проблемами продуктивності, які тут обговорюються. Що це просто означає, що дані не можуть передаватися в обидві сторони на дроті в той самий час. Однак у SATA є досить складна специфікація включаючи крихітні максимальні розміри блоків (приблизно 8 кБ на блок на дроті, я думаю), черги операцій читання та запису тощо, і не виключає запису в буфери, що відбуваються під час читання, чергування операцій тощо.
Будь-яке блокування, яке трапляється, буде спричинене конкуренцією за фізичні ресурси, як правило, пом'якшеною великою кількістю кеш-пам'яті. Дуплексний режим SATA тут майже не має значення.
(A) "Уповільнення" - це широке поняття. Тут я використовую це для позначення речей, які або пов'язані з введенням / виводом (тобто, якщо ваш комп'ютер сидить там, хрустячи цифри, вміст жорсткого диска не впливає), або пов'язаний з процесором і конкуруючий з дотично пов'язаними речами, які мають високий Використання центрального процесора (тобто антивірусного програмного забезпечення, що сканує тони файлів).
(B) На твердотільні накопичувачі впливає фрагментація, оскільки швидкість послідовного доступу, як правило, швидша, ніж довільний доступ, незважаючи на те, що твердотільні накопичувачі не стикаються з тими ж обмеженнями, що й механічний пристрій (навіть тоді відсутність фрагментації не гарантує послідовний доступ через вирівнювання зносу тощо). Однак практично у кожному сценарії загального користування це не є проблемою. Різниця в продуктивності через фрагментацію твердотільних накопичувачів, як правило, незначна для таких речей, як завантаження програм, завантаження комп'ютера тощо.
(C) Припускаючи розумну файлову систему, яка спеціально не фрагментує файли.
Не забудьте прочитати решту жвавих дискусій у SuperUser за посиланням нижче!
Є що додати до пояснення? Звук у коментарях. Хочете прочитати більше відповідей від інших досвідчених користувачів Stack Exchange? Ознайомтесь із повним обговоренням тут .