Após a atualização dos criadores de queda do Windows 10, uma instância svchost.exe está constantemente usando o tempo da CPU

10

Desde a instalação da Atualização de Criadores de Queda do Windows 10, tenho um svchost.exeprocesso que utiliza constantemente cerca de 14% do tempo da CPU:

gráfico de utilização da CPU

Esta svchost.exeinstância é responsável por hospedar três serviços:

Mecanismo de filtragem básica, CoreMessaging, Firewall do Windows Defender

O tempo da CPU é consumido por um encadeamento dentro desse processo que o Process Hacker não pode atribuir a nenhum desses três serviços:

captura de tela do Process Hacker

Dado que esses três serviços são considerados serviços críticos do sistema, é difícil fazer algo sobre eles. Esses serviços não podem ser interrompidos ou desativados services.msce o encerramento do processo aciona uma verificação de bug ( CRITICAL_PROCESS_DIED). Desabilitar o Firewall do Windows Defender através da interface do usuário de configurações não reduz o uso da CPU.

Estou sem idéias. O que poderia estar causando isso? Como posso depurar isso ainda mais? Existe uma solução alternativa para interromper esses serviços?


Atualização: após algumas depurações com @HelpingHand , isolamos isso no serviço Windows Defender Firewall. O Process Monitor mostra que está constantemente acessando o registro:

captura de tela do Process Monitor

Uma exportação CSV de uma captura do Process Monitor, filtrada para esse processo, está disponível aqui .

Eu ainda estou procurando uma maneira de parar esse comportamento.


Atualização 2: a análise com o Windows Performance Analyzer mostra que a maior parte do tempo da CPU é consumida pelo código de rpcrt4.dll:

captura de tela do Windows Performance Analyzer

fefrei
fonte
1
Se você executar os 2 comandos a seguir em um prompt de administrador e reiniciar; se for o caso, cujo processo svchost está causando a alta CPU então: Sc config BFE type= ownentãoSc config MpsSvc type= own
HelpingHand
1
Como você já possui o Process Hacker, se você encontrar o processo svchost que hospeda o BFE, por exemplo. Se você clicar duas vezes no nome do serviço na guia Serviços e exibir a guia Segurança, eu pensaria que os Administradores teriam direitos de configuração modificados. O acima funciona para mim.
precisa
1
Talvez agora você possa executar o Process Monitor com ele filtrado para esse PID. Veja o que aparece.
HelpingHand
1
Isso acontece no meu computador também. TBH, acho que sua melhor aposta é instalar as ferramentas do Windows Performance Toolkit - docs.microsoft.com/en-us/windows-hardware/test/wpt . Basicamente, você usará o Windows Performance Recorder para capturar um arquivo de rastreamento e o Windows Performance Analyzer para analisá-lo. channel9.msdn.com/Shows/Defrag-Tools tem alguns bons programas.
precisa
1
não classifique por módulo. remova esta coluna. Também rastreie os eventos de RPC. baixe esse arquivo , execute o WPRUI.exe, clique em adicionar perfil, selecione o WPRP baixado, selecione Perfil de uso da CPU e perfil de uso da rede em Medidas personalizadas. clique em Iniciar e capture o uso por 30 anos. agora olhar que PID tem o alto uso da CPU e em eventos genéricos filtro gráfico / tabela para o exe com o alto uso e eventos RPC e olhar qual a ação rpc são feitas
magicandre1981

Respostas:

11

Como se vê, isso estava relacionado ao compartilhamento de conexão com a Internet (ICS).

A seguir, gostaria de descrever como cheguei a essa conclusão na esperança de ajudar outras pessoas com problemas semelhantes.


O primeiro passo é identificar o serviço que está causando problemas. Embora o Gerenciador de tarefas do Windows também tenha aprendido a fazer isso recentemente, usei o Process Hacker, que também pode editar a configuração de um serviço.

Clicar duas vezes na svchost.exeinstância incorreta e selecionar a guia Serviço mostra quais serviços estão sendo executados dentro desse processo:

Propriedades de svchost.exe (1688)

svchost.exepode hospedar muitos serviços do Windows ao mesmo tempo, dificultando a identificação de qual serviço está causando problemas. Embora as versões recentes do Windows 10 normalmente isolem serviços quando há RAM suficiente disponível , alguns serviços ainda compartilham um processo.

Nesse caso, e a maneira mais fácil de identificar qual serviço está causando problemas é separá-los.

O Process Hacker pode fazer isso. Na guia Serviço das janelas principais , podemos configurar se um serviço pode compartilhar um processo:

Propriedades de MpsSvc

Pelo menos dois dos três serviços suspeitos precisam ser configurados como Processo próprio para garantir que eles sejam separados no futuro.

Aparentemente, o Windows Defender não gosta de usuários que se intrometam na configuração de seus serviços; portanto, para alterar com êxito essa configuração, eu precisava

  • conceda ao grupo Administradores acesso total a esse serviço,
  • desativar o serviço,
  • reinicie para que o serviço seja interrompido (não pode ser parado separadamente),
  • altere o tipo de serviço para Próprio processo e reative o serviço (defina-o como Início automático ) e
  • reinicie uma última vez para aplicar essas alterações.

Depois disso, o infrator svchost.exehospeda apenas um único serviço, portanto, temos um suspeito:

Firewall do Windows Defender (MpsSvc)

Para analisar o que está acontecendo dentro do serviço de firewall, usaremos a ferramenta Windows Performance Recorder e Windows Performance Analyzer, parte do Windows ADK .

Começaremos registrando alguns dados. Enquanto o suspeito svchost.exeestiver jogando em segundo plano, baixe esse arquivo , adicione-o como um perfil, configure o Windows Performance Recorder assim e inicie uma gravação:

Windows Performance Recorder: verifique a triagem de primeiro nível e o perfil de uso da CPU

Deixe a gravação correr por 30 segundos ou mais e salve a gravação. Após salvar, clique em Abrir no WPA para abri-lo imediatamente para análise.

É aqui que as coisas começam a se tornar complicadas. No meu caso, eu precisava de uma dica de @ magicandre1981 para procurar no lugar certo, em Atividade do sistemaEventos genéricos . Lá, o número de eventos de RPC parecia suspeito:

46.918 eventos Microsoft-Windows-RPC

Em detalhes, o Firewall do Windows Defender svchost.exeestava aparecendo bastante no lado do servidorwin:Start e nos win:Stopeventos:

RpcServerCall

O próximo passo foi descobrir quem enviou essas chamadas de RPC. Ao olhar no lado do cliente, outra svchost.exeinstância parecia suspeita:

RpcClientCall

Na verdade, o Process Hacker não conseguiu detectar um serviço em execução nesse processo, o que também estava causando a carga da CPU de forma consistente:

Nome do grupo de serviços: netsvcs

Nesse caso, o Gerenciador de tarefas do Windows conseguiu identificar o serviço:

Compartilhamento de conexão com a Internet (ICS)

De fato, o serviço ficou parado no estado Inicial . Eu o desativei desde que não preciso, e a carga da CPU voltou ao normal após a próxima reinicialização.


Gostaria de expressar minha gratidão a @HelpingHand e @ magicandre1981, cuja ajuda nos comentários tornou isso possível.


Como foi descoberto posteriormente na postagem do TenForums , a redefinição do Firewall do Windows Defender corrige esse problema.

fefrei
fonte
@ HelpingHand: o que acontece se alguém desativar os Internet Connection Sharing (ICS)serviços? O ponto de acesso WiFi não será mais uma opção?
Llinfeng
Isso é um pouco mais fácil no Process Explorer. Se você clicar com o botão direito do mouse em "svchost.exe", que está utilizando uma quantidade constante de processador (meu caso era 5% constante) e clicar na guia "Serviços", você verá quais serviços estão sendo executados nesse svchost. Eu tinha apenas um neste caso, o ICS. Da mesma forma, meu compartilhamento de conexão com a Internet ficou parado no estado inicial. Indo para "Firewall e proteção de rede", fui capaz de clicar em "Restaurar firewalls para o padrão" - isso corrigiu meu problema instantaneamente.
Howard Lince III
@ Howard: Considere-se com sorte - uma das principais complicações para mim foram três serviços que compartilham a instância problemática svchost.exe, dificultando a identificação do serviço que está causando isso. Não sei por que eles não compartilharam um processo host em sua instância.
Fefrei 03/04
2

É mais simples: tive sucesso redefinindo as configurações do Firewall do Windows (principalmente se houver um pico relacionado na carga da CPU) usando estas instruções: -

A redefinição do Firewall do Windows Defender para as configurações padrão resolveu o problema.

Para fazer isso, abra Configurações -> Atualização e segurança -> Windows Defender -> Abra o Windows Defender Security Center -> Proteção de firewall e rede -> Restaurar configurações padrão do firewall

Espero que isso ajude e funcione para outra pessoa ... Parece um problema bastante difundido.

Mohamad Osama
fonte
1
De fato, isso também funcionou para mim, como mencionei no final da minha resposta. Obrigado por espelhar as etapas aqui!
fefrei 11/0318
0

No meu caso, depois de tentar várias correções malsucedidas (incluindo algumas das sugestões acima, por exemplo, redefinir o Firewall do Windows), desabilitei o "Serviço de Política de Diagnóstico" e o hogging da CPU finalmente cessou. Esta pode não ser a solução ideal, mas não parece ser um serviço crítico. Veja como desativá-lo:

  1. Abra "Configuração do sistema" ('msconfig.exe') como administrador
  2. Guia Geral: escolha "Inicialização seletiva"
  3. Guia Serviços: desmarque "Serviço de política de diagnóstico"
  4. Reinicie o Windows

Agradeço ao canal do YouTube de Ranga Rajesh Kumar por me indicar essa solução.

Philly Dee
fonte