После обновления Windows 10 Fall Creators экземпляр svchost.exe постоянно использует процессорное время

10

После установки Windows 10 Fall Creators Update у меня есть svchost.exeпроцесс, который постоянно использует около 14% процессорного времени:

график загрузки процессора

Этот svchost.exeэкземпляр отвечает за размещение трех сервисов:

Базовый модуль фильтрации, CoreMessaging, брандмауэр Защитника Windows

Время ЦП расходуется потоком внутри этого процесса, который Process Hacker не может отнести ни к одной из этих трех служб:

снимок экрана с Process Hacker

Учитывая, что эти три службы считаются критическими системными службами, с ними трудно что-либо делать. Эти службы не могут быть остановлены или отключены services.msc, и завершение процесса запускает bugcheck ( CRITICAL_PROCESS_DIED). Отключение брандмауэра Защитника Windows через пользовательский интерфейс настроек не снижает загрузку ЦП.

У меня нет идей. Что может быть причиной этого? Как я могу отладить это дальше? Есть ли обходной путь, чтобы остановить эти службы?


Обновление: после некоторой отладки с помощью @HelpingHand мы изолировали это для службы брандмауэра Защитника Windows. Process Monitor показывает, что он постоянно обращается к реестру:

скриншот из Process Monitor

CSV-экспорт записи Process Monitor, отфильтрованной по этому процессу, доступен здесь .

Я все еще ищу способ остановить это поведение.


Обновление 2: анализ с помощью анализатора производительности Windows показывает, что большая часть времени ЦП расходуется кодом из rpcrt4.dll:

скриншот из анализатора производительности Windows

fefrei
источник
1
Если вы запустите следующие 2 команды в командной строке администратора и перезапустите; если есть, то какой процесс svchost вызывает высокую Sc config BFE type= ownSc config MpsSvc type= own
загрузку
1
Поскольку у вас уже есть Process Hacker, если вы обнаружите процесс svchost, на котором размещается BFE, например. Если дважды щелкнуть имя службы на вкладке «Службы», а затем просмотреть вкладку «Безопасность», я бы подумал, что администраторы могут изменить права конфигурации. Вышесказанное работает для меня.
HelpingHand
1
Может быть, теперь вы можете запустить Process Monitor с его фильтром по этому PID. Посмотрите, что появляется.
HelpingHand
1
Так же и на моем компьютере. TBH, я думаю, что вам лучше всего установить инструменты Windows Performance Toolkit - docs.microsoft.com/en-us/windows-hardware/test/wpt . По сути, вы будете использовать Windows Performance Recorder для захвата файла трассировки и Windows Performance Analyzer для его анализа. На сайте channel9.msdn.com/Shows/Defrag-Tools есть несколько хороших шоу.
HelpingHand
1
не сортировать по модулю. удалить этот столбец. также отслеживать события RPC. скачайте этот файл , запустите WPRUI.exe, нажмите «Добавить профиль», выберите загруженный WPRP, выберите «Профиль использования ЦП» и «Профиль использования сети» в разделе «Пользовательские измерения». нажмите на старт и захватить использование в течение 30 с. теперь посмотрите, какой PID имеет высокую загрузку процессора и в общем фильтре графиков / таблиц событий для exe-файлов с высокой интенсивностью использования и событиями RPC, и посмотрите, какое действие rpc выполнено
magicandre1981

Ответы:

11

Как оказалось, это было связано с общим подключением к Интернету (ICS).

Далее я хотел бы описать, как я пришел к такому выводу в надежде, что он поможет другим людям с подобными проблемами.


Первым шагом является определение службы, вызывающей проблемы. Хотя собственный диспетчер задач Windows также научился делать это недавно, я использовал Process Hacker, который также может редактировать конфигурацию службы.

Двойной щелчок svchost.exeэкземпляра- нарушителя и выбор вкладки « Служба » показывает, какие службы работают внутри этого процесса:

Свойства svchost.exe (1688)

svchost.exeможет одновременно размещать множество служб Windows, что затрудняет определение того, какая служба вызывает проблемы. Хотя последние версии Windows 10 обычно изолируют сервисы при наличии достаточного объема ОЗУ , некоторые сервисы все еще совместно используют процесс.

Это такой случай, и самый простой способ определить, какая служба вызывает проблемы, - это разделить их.

Process Hacker может сделать это. На вкладке « Сервис » его главного окна мы можем настроить, может ли сервис совместно использовать процесс:

MpsSvc Свойства

По крайней мере, две из трех подозрительных служб должны быть настроены как собственные процессы, чтобы обеспечить их разделение в будущем.

Судя по всему, Защитнику Windows не нравится, когда пользователи вмешиваются в конфигурацию своей службы, поэтому для успешного изменения этого параметра мне нужно было

  • предоставить Администраторы группы полного доступа на эту услугу,
  • отключить услугу,
  • перезагрузиться, чтобы служба была остановлена ​​(ее нельзя остановить отдельно),
  • измените тип службы на « Собственный процесс» и повторно включите службу (установите « Автозапуск» ) и
  • перезагрузите в последний раз, чтобы применить эти изменения.

После этого нарушитель svchost.exeразмещает только один сервис, поэтому у нас есть подозрение:

Брандмауэр Защитника Windows (MpsSvc)

Чтобы проанализировать, что происходит внутри службы брандмауэра, мы будем использовать средство записи производительности Windows и средство анализа производительности Windows, входящее в состав Windows ADK .

Мы начнем с записи некоторых данных. Пока подозреваемый svchost.exeперемещается в фоновом режиме, загрузите этот файл , добавьте его в качестве профиля, настройте Windows Performance Recorder следующим образом и начните запись:

Windows Performance Recorder: отметьте Triage первого уровня и профиль использования CPU

Дайте записи поработать около 30 секунд, затем сохраните запись. После сохранения нажмите Открыть в WPA, чтобы сразу открыть его для анализа.

Это где вещи начинают становиться сложнее. В моем случае мне нужно было получить подсказку от @ magicandre1981, чтобы найти ее в нужном месте в разделе « Системная активность» → « Общие события» . Там число событий RPC выглядело подозрительно высоким:

46.918 Microsoft-Windows-RPC события

Развернувшись, брандмауэр Защитника Windows svchost.exeобнаружил много на стороне сервераwin:Start и win:Stopсобытий:

RpcServerCall

Следующим шагом было выяснение, кто послал эти вызовы RPC. Если посмотреть на клиентскую сторону, другой svchost.exeэкземпляр выглядел подозрительно:

RpcClientCall

Действительно, Process Hacker не смог обнаружить службу, запущенную внутри этого процесса, что также постоянно вызывало загрузку процессора:

Название сервисной группы: netsvcs

В этом случае диспетчеру задач Windows удалось определить службу:

Общий доступ к Интернету (ICS)

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


Я хотел бы выразить свою благодарность @HelpingHand и @ magicandre1981, чья помощь в комментариях сделала это возможным.


Как было позже обнаружено в посте TenForums , сброс брандмауэра Защитника Windows устраняет эту проблему.

fefrei
источник
@HelpingHand: что произойдет, если отключить Internet Connection Sharing (ICS)услуги? Будет ли WiFi Hotspot больше не вариант?
Llinfeng
Это немного проще в Process Explorer. Если вы щелкнете правой кнопкой мыши на «svchost.exe», который использует постоянное количество процессоров (в моем случае это было 5% констант), и перейдите на вкладку «Службы», вы увидите, какие службы работают под этой svchost. У меня был только один в этом случае, ICS. Аналогично, мой общий доступ к Интернету застрял в исходном состоянии. Зайдя в «Брандмауэр и защита сети», я смог нажать «Восстановить брандмауэры по умолчанию» - это сразу решило мою проблему.
Говард Линс III,
@ Ховард: Считай, что тебе повезло - одним из осложнений мэра для меня было то, что три службы разделили проблемный случай svchost.exe, усложнив определение службы, вызывающей это. Я не уверен, почему они не использовали хост-процесс в вашем случае.
fefrei
2

Это проще, я добился успеха, сбросив настройки брандмауэра Windows (особенно, если есть связанный скачок в загрузке процессора), используя следующие инструкции: -

Сброс брандмауэра Защитника Windows к настройкам по умолчанию решил проблему.

Для этого откройте Настройки -> Обновление и безопасность -> Защитник Windows -> Открыть Центр безопасности Защитника Windows -> Брандмауэр и защита сети -> Восстановить настройки брандмауэра по умолчанию

Надеюсь, что это помогает и работает для кого-то еще ... Похоже, довольно распространенная проблема.

Мохамад Усама
источник
1
Действительно, это также сработало для меня, как я упоминал в самом низу моего ответа. Спасибо за отражение шагов здесь!
Февраль
0

В моем случае, после попытки различных неудачных исправлений (включая некоторые из приведенных выше предложений, например, сброс брандмауэра Windows), я отключил «Службу диагностической политики», и загрузка ЦП окончательно прекратилась. Возможно, это не идеальное решение, но, похоже, оно не является критически важным. Вот как это отключить:

  1. Откройте «Конфигурация системы» («msconfig.exe») как администратор
  2. Вкладка «Общие»: выберите «Выборочный запуск»
  3. Вкладка «Службы»: снимите флажок «Служба диагностической политики»
  4. Перезагрузить Windows

Спасибо каналу Ранга Раджеш Кумар на YouTube, который указал мне на это решение.

Филли Ди
источник