22

Просто вопрос любопытства. Очистка диска уже довольно долго расходует 100% одного из моих ядер. Кажется, тратит много времени, особенно на Windows Update Cleanup.

Не могу понять, почему удаление файлов должно быть такой интенсивной деятельностью. Тем более что он уже потратил довольно много времени на подсчет того, что можно удалить.

Почему очистка диска занимает так много времени и ресурсов процессора? Что он делает так интенсивно?

Два из четырех ядер максимально

7 ответов7

16

Windows сжимает папку WinSxS, удаляя замененные обновления и сжимая файлы, которые нельзя удалить и которые не используются в diff-файлах. Это требует много ресурсов процессора и поэтому вы видите высокую загрузку процессора.

Вы можете проанализировать использование ЦП с помощью xperf/WPA, чтобы убедиться в этом.

4

Я могу подтвердить, что очистка обновлений Windows занимает почти 100% загрузки ЦП, все дело в сжатии WinSxS и реинтеграции обновлений:

Windows Cleanup 100% загрузка процессора

Я начал чистку в первый раз после установки Windows, и мне потребовалось 2 часа, чтобы завершить 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 кэширует все записи в файл фиксированного размера, который используется в качестве диска на виртуальной машине (24 ГБ), и поскольку у меня 64 ГБ RAM и я позволю Windows 16GiB не нужно использовать SWAP, ни PAGEFILE.SYS; Кроме того, Linux может хранить весь файл в оперативной памяти (я проверял этот файл в оперативной памяти, и время удаления прошло очень много, но время cleanmgr не уменьшается).

Да, если я помещаю виртуальный диск полностью в оперативную память, время cleanmgr не уменьшается , но если я вручную удаляю файлы, это время уменьшается немного (кэш записи Linux прекрасно работает, когда на нем 64 ГБ ОЗУ).

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

  • Хост: Linux 64-битный дистрибутив на оборудовании, основными частями которого являются AMD Deca Core 5 ГГц с 64 ГБ ОЗУ и контроллер Sata Raid0 с двумя жесткими дисками WD VelociRaptor (способный поддерживать комбинированную скорость последовательной записи около 1 ГБ / с и 4K случайной записи 300MiB / с); стоимость составляет> десять тысяч евро
  • Гость: Windows 10 Home с 16 ГБ оперативной памяти и виртуальным диском 24 ГБ

Тест1: Наличие виртуального диска 24GiB на физических жестких дисках Тест2: Наличие виртуального диска 24GiB в оперативной памяти хоста Linux

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

Мониторы у меня были:

  • Загрузка ЦП на хосте Linux и на гостевой Windows (чаще всего от 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

Один из способов смягчить эту проблему и немного ускорить этап "Очистка Центра обновления Windows" "Очистки диска" - это временно установить более высокий приоритет для процесса TiWorker.exe на время действия так называемой "очистки".

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

Помимо незначительного ускорения - и, возможно, хорошего чувства выполненного долга - это обеспечивает, что мало что можно сделать, поскольку очевидно, что "Очистка Центра обновления Windows" кодируется таким образом, что по неизвестной причине происходит от файла к файлу, делая всю работу ужасно привязанной к диску.

А также, знайте, что процесс, скорее всего, не завис, и действительно когда-нибудь завершится. Чтобы проверить это (и еще больше отвлечь себя во время этого раздражающего времени ожидания), вы можете проверить раздел «Активность диска» в Resource Monitor (запустите «resmon.exe»).

1

Удаление 20 файлов размером 5 МБ займет больше времени, чем удаление 10 файлов размером 64 МБ. Это происходит потому, что когда система удаляет файлы, она на самом деле не удаляет их (так как пустое место на диске может быть сделано из "шумовых" битов), а просто перезаписывает переднюю часть, которая говорит: "Файл начинается здесь" с бредом, а затем он с радостью перезапишет эту и следующие части позже, когда вы захотите использовать пространство. На самом деле удаление - это то же самое, что и запись в противном случае.

Что касается очистки диска, это то, что он очищает, как правило, много маленьких файлов (интернет-куки, временные файлы и т.д.). Таким образом, он выполняет гораздо больше операций записи на диск, чем многие другие, и может занимать столько же времени, сколько и установка чего-то нового, из-за того, что том записывается на диск.

0

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

-1

Другой способ ускорить процесс - запустить очистку диска примерно на 5 минут. Остановите это, затем перезапустите это, и это быстро пронесется! Кроме того, дефрагментация или оптимизация вашего жесткого диска / твердотельного накопителя заранее ускорит процесс, просто не забудьте снова де-фрагментировать / отключить его после очистки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .