Чому очищення диска займає стільки часу та процесора?


29

Просто питання цікавості. Очищення диска витрачає 100% одного з моїх ядер протягом тривалого часу і все ще працює. Здається, витрачаєш багато часу, особливо на очищення оновлення Windows.

Не можу зрозуміти, чому видалення файлів має бути настільки інтенсивним видом діяльності. Тим більше, що він витратив досить багато часу на обчислення того, що може видалити.

Чому очищення диска займає стільки часу та процесора? Що це робить так інтенсивно?

Два з чотирьох ядер змішані

Відповіді:


20

Windows стискає папку WinSxS, видаляючи замінені оновлення файлів, що стискають рекламу, які неможливо видалити та які не використовуються в diff. Для цього потрібна велика потужність процесора, і тому ви бачите велике використання процесора.

Ви можете проаналізувати використання процесора за допомогою xperf / WPA, щоб перевірити це.


Чи не він також обчислює заощаджений простір під час стискання найдавніших файлів (тих, що не відкрилися нещодавно)?
Джастін Голдберг

Гарне відео! Обов’язково заглянемо в цей інструмент: D
Свиш

@Svish Ви це підтвердили? Чи відповідає питання?
magicandre1981

4

Я можу підтвердити, що очищення оновлень Windows займає майже 100% використання процесора, все стосується стиснення WinSxS та реінтеграції оновлень:

Очищення Windows 100% використання процесора

Я почав очищення вперше після встановлення Windows, а на завершення 50% пішло дві години. З графіка видно, що спочатку багато читання невеликих файлів з диска (другий графік), а після 100% використання процесора для стиснення тощо.


2

Тільки щоб розпалити питання, я зробив на незмінній віртуальній машині наступні кроки:

  1. Завантажте SystemRescueCD та встановіть розділ Windows
  2. Список усіх файлів на диску до файлу журналу (менше хвилини)
  3. Перезавантажте Windows
  4. Нехай cleanmgrвиконує свою роботу і бере до відома час (більше восьми годин)
  5. Перезавантажте SystemRescueCD та встановіть розділ Windows
  6. Перерахуйте всі файли на диску в інший файл журналу (менше хвилини)
  7. Скиньте назад незмінну віртуальну машину
  8. Перезавантажте Windows
  9. Зробіть FOR / F ..., щоб видалити такі файли в командному рядку адміністратора (cmd) і врахуйте час (менше п'яти хвилин)

Зауважте, що я перезавантажився на Linux SystemRescueCd лише для того, щоб мати змогу перелічити всі файли, також ті, які переглядав Window, а також зробити такий список якнайшвидше (відсутність перевірки acl тощо).

Також зауважте, що cleanmgrя вважаю лише час після закінчення пошуку (сам пошук також занадто шість годин).

Таким чином, видалення файлів не є шийкою чаші (самому видаленню потрібно лише п’ять хвилин, але cleanmgrпотрібно більше восьми годин).

Самостійне видалення може пройти так швидко, оскільки хостом є Linux, що швидкість викликана лише тому, що Linux кешує всі записи у файл фіксованого розміру, який використовується як диск на віртуальній машині (24GiB), а оскільки у мене є 64GiB ОЗУ, і я дозволяю Windows 16GiB йому не потрібно використовувати SWAP, ані PAGEFILE.SYS; Крім того, Linux може вмістити повний файл в оперативній пам’яті (я тестував цей файл в оперативній пам'яті і час видалення йшов багато, але cleanmgrчас не падає).

Так, якщо я поставив віртуальний диск повністю на оперативну пам’ять, cleanmgrчас не падає, але якщо я маніпулятивно видаляю файли, цей час зменшується лише трохи (кеш запису Linux чудово, коли у вас 64GiB оперативної пам’яті).

Моя конфігурація для тестів:

  • Хост: Linux 64bit distro над апаратним забезпеченням, основним компонентом якого є AMD Deca Core 5GHz з 64GiB оперативної пам’яті та контролером Sata Raid0 з двома жорсткими дисками VelociRaptor WD (здатний підтримувати комбіновану секвенціальну швидкість запису близько 1GiB / s та 4K випадкове записування 300MiB / s); вартість> десять тисяч євро
  • Гість: Windows 10 Home з 16GiB оперативної пам’яті та віртуальним диском 24GiB

Test1: наявність віртуального диска 24GiB на фізичних жорстких дисках Test2: наявність віртуального диска 24GiB на хості оперативної пам'яті Linux

Я боюся, що cleanmgrщось робить у реєстрі Windows для кожного видаленого ним файлу (доступ до реєстру дуже низький).

Моніторів у мене було:

  • Використання процесора на хості Linux і в Windows Guest (більшість часу між 0% і 1%, при щупах 5%, не більше)
  • Використання жорсткого диска на хості Linux (близько 0%, коли cleanmgrвін працював, з щуками 2%), кеш диска Linux справді чудовий, уникаючи надсилання даних на реальний диск
  • Використання жорсткого диска для гостя Windows (більшість часу від 2% до 15% під час cleanmgrроботи, з щуками 28%)

Так чітко cleanmgrробиться багато непомітної роботи, можливо, час сну? Можливо, ні, якщо це прискорення реєстру, ЦП для цього не враховується моніторами Windows, жорсткий диск на цьому не використовується (реєстр знаходиться в оперативній пам'яті) і т.д., і кожен доступ до реєстру може зайняти більше секунди. Спробуйте власну програму отримати доступ до реєстру, відкривши реєстр і закривши його на кожну дію, порівняно з тим, щоб HK * відкривався ... це велика різниця.

Отже, якщо cleanmgrдля кожного файлу:

  1. Відкрити реєстр HK *
  2. Порадьтеся з усіма потребами та / або зробіть деякі записи в реєстрі
  3. Закрити реєстр HK *

Це може зайняти цілих дві-три секунди на одну операцію, і якщо це робити одна операція на один файл, це може зайняти майже одну годину на кожну тисячу файлів ... мій кількість файлів становив трохи більше 40000 файлів, тож 40000 файлів / 8 годин обробляє один файл кожні 1,3 секунди ... з іншого боку, видалення їх за сценарієм (після того, як знають, які з них) теж занадто п'ять хвилин, тобто видалення приблизно 133 за секунду ... різниця.

Так що cleanmgrчас точно не викликається самим deletionсобою! Що ще це робить? Будь ласка, M $ покращить цю швидкість!


1
Це не відповідь на початкове запитання. Якщо у вас є нове запитання, будь ласка, задайте власне запитання (посилаючись на це на контекст, якщо воно допомагає).
DavidPostill

Чому ви не використали монітор процесу ( docs.microsoft.com/en-us/sysinternals/downloads/procmon ) для аналізу дій реєстру Windows тощо?
кібернард

* i m mutable sp.
StingyJack

2

Один із способів зменшити цю проблему та трохи прискорити фазу «Очищення Windows Update» «Очищення диска» - це тимчасово встановити більш високий пріоритет процесу TiWorker.exe протягом тривалості так званої «очищення».

На панелі "Деталі" менеджера завдань знайдіть TiWorker.exeі клацніть правою кнопкою миші, щоб показати спливаюче меню. Для "Встановити пріоритет" виберіть "Над нормою". Для мене це збільшило TiWorkerактивність процесора - від усереднення приблизно 16% - до повного потенціалу 25% (на чотирьохядерній машині).

введіть тут опис зображення

Окрім мізерного прискорення - і, можливо, гарного відчуття виконання - це забезпечує, мало що можна зробити, оскільки, мабуть, "Windows Update Cleanup" кодується таким чином, що з незрозумілої причини, йде з файлу за файлом, що робить загальну роботу жахливо пов'язаною з диском.

А також, знайте, що процес, швидше за все, не завис, і дійсно завершиться колись. Щоб перевірити це (і ще більше відволікати себе під час цього докучливого часу очікування), ви можете перевірити розділ «Активність диска» у «Моніторі ресурсів» (запустіть «resmon.exe»).


Дуже приємна швидкість!
суб'єктивіст

1

Видалення 20 файлів розміром 5 Мб займе більше часу для видалення, ніж 10 файлів розміром 64 Мб. Це відбувається тому , що , коли система видаляє файли, які не дійсно видалити їх (як порожній простір на диску , може бути виготовлено з «шуму» біт) , але тільки переписує передня частина , яка говорить: «запускає файл тут» з маренням , а потім він із задоволенням замінить цю та наступні частини пізніше, коли ви захочете використовувати пробіл. Насправді видалення - це те саме, що писати інакше.

Річ із очищенням диска - це те, що він очищає, як правило, багато МОЛЬКО невеликих файлів (Інтернет-файли cookie, тимчасові файли тощо). Як такий, він робить набагато більше запису на диск, ніж багато інших речей, і може зайняти стільки ж часу, як встановлення чогось нового, завдяки гучності, записаної на диск.


Оригінальне питання спеціально задається щодо очищення диска
liljoshu

0

Ще одне слово попередження: частина того, що займає час, полягає в тому, що при очищенні WinSxS очищення диска спочатку має видалити багато файлів. Тож використання диска фактично збільшується за першу частину очищення!


-2

Ще один спосіб прискорити процес - запустити очищення диска приблизно 5 хв. Зупиніть його, потім перезапустіть його, і він проскочить в один раз! Крім того, попередньо розмикання або оптимізація вашого жорсткого диска / SSD пришвидшить роботу, просто не забудьте після очищення знову знеструмлювати / Optz.


Будь-ласка, не дефрагментуйте свій SSD, він зносить цикли читання і запису і майже не має ніякого посилення.
Nordlys Jeger

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.