10

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

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

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

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

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

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

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

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


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

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

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

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


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

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

2 ответа2

9

Как оказалось, это было связано с общим подключением к Интернету (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 события

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

RpcServerCall

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

RpcClientCall

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

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

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

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

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


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


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

3

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

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

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

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

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