После обновления Windows 10 Fall Creators экземпляр svchost.exe постоянно использует процессорное время
После установки Windows 10 Fall Creators Update у меня есть svchost.exe
процесс, который постоянно использует около 14% процессорного времени:
это svchost.exe
Экземпляр отвечает за хостинг трех сервисов:
Время ЦП расходуется потоком внутри этого процесса, который Process Hacker не может отнести ни к одной из этих трех служб:
Учитывая, что эти три службы считаются критическими системными службами, с ними трудно что-либо делать. Эти службы не могут быть остановлены или отключены services.msc
и завершение процесса вызывает проверку ошибок (CRITICAL_PROCESS_DIED
). Отключение брандмауэра Защитника Windows через пользовательский интерфейс настроек не снижает загрузку ЦП.
У меня нет идей. Что может быть причиной этого? Как я могу отладить это дальше? Есть ли обходной путь, чтобы остановить эти службы?
Обновление: после некоторой отладки с помощью HelpingHand мы изолировали это для службы брандмауэра Защитника Windows. Process Monitor показывает, что он постоянно обращается к реестру:
CSV-экспорт записи Process Monitor, отфильтрованной по этому процессу, доступен здесь.
Я все еще ищу способ остановить это поведение.
Обновление 2: анализ с помощью анализатора производительности Windows показывает, что большая часть времени ЦП расходуется кодом из rpcrt4.dll
:
2 ответа
Как оказалось, это было связано с общим подключением к Интернету (ICS).
Далее я хотел бы описать, как я пришел к такому выводу в надежде, что он поможет другим людям с подобными проблемами.
Первый шаг - определить сервис, вызывающий проблемы. Хотя собственный диспетчер задач Windows также научился делать это недавно, я использовал Process Hacker, который также может редактировать конфигурацию службы.
Двойной щелчок на обидчике svchost.exe
Экземпляр и выбор вкладки Сервис показывает, какие сервисы работают внутри этого процесса:
svchost.exe
может одновременно содержать множество служб Windows, что затрудняет определение того, какая служба вызывает проблемы. Хотя последние версии Windows 10 обычно изолируют сервисы, когда доступно достаточно оперативной памяти, некоторые сервисы все еще совместно используют процесс.
Это такой случай, и самый простой способ определить, какая служба вызывает проблемы, - это разделить их.
Process Hacker может сделать это. На вкладке " Сервис " его главного окна мы можем настроить, может ли сервис совместно использовать процесс:
По крайней мере, две из трех подозрительных служб должны быть настроены как собственные процессы, чтобы обеспечить их разделение в будущем.
Судя по всему, Защитник Windows не любит, когда пользователи вмешиваются в конфигурацию своей службы, поэтому для успешного изменения этого параметра мне нужно было
- предоставить группе администраторов полный доступ к этой службе,
- отключить услугу,
- перезагрузиться, чтобы служба была остановлена (ее нельзя остановить отдельно),
- измените тип службы на " Собственный процесс" и снова включите службу (установите " Автозапуск") и
- перезагрузите в последний раз, чтобы применить эти изменения.
После этого обидчик svchost.exe
только хостинг одного сервиса, поэтому у нас есть подозрение:
Чтобы проанализировать, что происходит внутри службы брандмауэра, мы будем использовать средство регистрации производительности Windows и средство анализа производительности Windows, входящее в состав Windows ADK.
Мы начнем с записи некоторых данных. Пока подозреваемый svchost.exe
перемещается в фоновом режиме, загрузите этот файл, добавьте его в качестве профиля, настройте Windows Performance Recorder следующим образом и начните запись:
Подождите 30 секунд, а затем сохраните запись. После сохранения нажмите Открыть в WPA, чтобы сразу открыть его для анализа.
Это где вещи начинают становиться сложнее. В моем случае мне нужно было получить подсказку от @magicandre1981, чтобы найти ее в нужном месте в разделе " Системная активность" → " Общие события". Там число событий RPC выглядело подозрительно высоким:
Развертывание, брандмауэр Защитника Windows svchost.exe
было много на стороне сервера win:Start
а также win:Stop
События:
Следующим шагом было выяснение, кто послал эти вызовы RPC. Глядя в сторону клиента, другой svchost.exe
Экземпляр выглядел подозрительно:
Действительно, Process Hacker не смог обнаружить сервис, работающий внутри этого процесса, что также постоянно вызывало загрузку процессора:
В этом случае диспетчеру задач Windows удалось определить службу:
Действительно, служба застряла в начальном состоянии. Я отключил его, так как он мне не нужен, и загрузка процессора нормализовалась после следующей перезагрузки.
Я хотел бы выразить свою благодарность @HelpingHand и @magicandre1981, чья помощь в комментариях сделала это возможным.
Как позже было обнаружено в посте TenForums, сброс брандмауэра Защитника Windows устраняет эту проблему.
Это проще, я добился успеха, сбросив настройки брандмауэра Windows (особенно, если есть связанный скачок в загрузке процессора), используя следующие инструкции:-
Сброс брандмауэра Защитника Windows к настройкам по умолчанию решил проблему.
Для этого откройте Настройки -> Обновление и безопасность -> Защитник Windows -> Открыть Центр безопасности Защитника Windows -> Брандмауэр и защита сети -> Восстановить настройки брандмауэра по умолчанию
Надеюсь, что это помогает и работает для кого-то еще... Похоже, довольно распространенная проблема.
В моем случае, после попытки различных неудачных исправлений (включая некоторые из приведенных выше предложений, например, сброс брандмауэра Windows), я отключил "Службу диагностической политики", и загрузка ЦП окончательно прекратилась. Возможно, это не идеальное решение, но, похоже, оно не является критически важным. Вот как это отключить:
- Откройте "Конфигурация системы" ("msconfig.exe") с правами администратора.
- Вкладка "Общие": выберите "Выборочный запуск"
- Вкладка "Службы": снимите флажок "Служба диагностической политики"
- Перезагрузить Windows
Спасибо каналу Ранга Раджеш Кумар на YouTube, который указал мне на это решение.