Тільки щоб розпалити питання, я зробив на незмінній віртуальній машині наступні кроки:
- Завантажте 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 $ покращить цю швидкість!