Тільки щоб розпалити питання, я зробив на незмінній віртуальній машині наступні кроки:
- Завантажте SystemRescueCD та встановіть розділ Windows
- Список усіх файлів на диску до файлу журналу (менше хвилини)
- Перезавантажте Windows
- Нехай
cleanmgr
виконує свою роботу і бере до відома час (більше восьми годин)
- Перезавантажте SystemRescueCD та встановіть розділ Windows
- Перерахуйте всі файли на диску в інший файл журналу (менше хвилини)
- Скиньте назад незмінну віртуальну машину
- Перезавантажте Windows
- Зробіть 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
для кожного файлу:
- Відкрити реєстр HK *
- Порадьтеся з усіма потребами та / або зробіть деякі записи в реєстрі
- Закрити реєстр HK *
Це може зайняти цілих дві-три секунди на одну операцію, і якщо це робити одна операція на один файл, це може зайняти майже одну годину на кожну тисячу файлів ... мій кількість файлів становив трохи більше 40000 файлів, тож 40000 файлів / 8 годин обробляє один файл кожні 1,3 секунди ... з іншого боку, видалення їх за сценарієм (після того, як знають, які з них) теж занадто п'ять хвилин, тобто видалення приблизно 133 за секунду ... різниця.
Так що cleanmgr
час точно не викликається самим deletion
собою! Що ще це робить? Будь ласка, M $ покращить цю швидкість!