Dopo Windows 10 Fall Creators Update, un'istanza svchost.exe utilizza costantemente il tempo della CPU


10

Dall'installazione di Windows 10 Fall Creators Update, ho un svchost.exeprocesso che utilizza costantemente circa il 14% del tempo della CPU:

grafico dell'utilizzo della CPU

Questa svchost.exeistanza è responsabile dell'hosting di tre servizi:

Base Filtering Engine, CoreMessaging, Windows Defender Firewall

Il tempo della CPU è consumato da un thread all'interno di quel processo che Process Hacker non può attribuire a nessuno di questi tre servizi:

screenshot da Process Hacker

Dato che questi tre servizi sono considerati servizi di sistema critici, è difficile fare qualcosa al riguardo. Questi servizi non possono essere arrestati o disabilitati da services.msc, e la chiusura del processo attiva un controllo errori ( CRITICAL_PROCESS_DIED). La disabilitazione di Windows Defender Firewall tramite l'interfaccia utente delle impostazioni non riduce l'utilizzo della CPU.

Sono senza idee. Che cosa potrebbe causare questo? Come posso eseguire il debug di questo? Esiste una soluzione alternativa per interrompere questi servizi?


Aggiornamento: dopo un po 'di debug con @HelpingHand , lo abbiamo isolato al servizio Windows Defender Firewall. Process Monitor mostra che accede costantemente al registro:

screenshot da Process Monitor

Un'esportazione CSV di un'acquisizione di Process Monitor, filtrata su tale processo, è disponibile qui .

Sto ancora cercando un modo per fermare quel comportamento.


Aggiornamento 2: l' analisi con Windows Performance Analyzer mostra che la maggior parte del tempo della CPU viene consumato dal codice proveniente da rpcrt4.dll:

screenshot da Windows Performance Analyzer


1
Se si eseguono i seguenti 2 comandi in un prompt di amministrazione e si riavvia; se presente, quale processo svchost sta causando la CPU alta allora: Sc config BFE type= ownalloraSc config MpsSvc type= own
HelpingHand

1
Dato che hai già Process Hacker, ad esempio se trovi il processo svchost che ospita BFE. Se fai doppio clic sul nome del servizio nella scheda servizi, quindi visualizzi la scheda sicurezza, avrei pensato che gli amministratori avrebbero modificato i diritti di configurazione. Quanto sopra funziona per me.
HelpingHand,

1
Forse ora puoi eseguire Process Monitor con il filtro filtrato su quel PID. Guarda cosa si presenta.
HelpingHand,

1
Lo fa anche sul mio computer. TBH, penso che la soluzione migliore sia installare gli strumenti di Windows Performance Toolkit - docs.microsoft.com/en-us/windows-hardware/test/wpt . In sostanza, utilizzerai Windows Performance Recorder per acquisire un file di traccia e Windows Performance Analyzer per analizzarlo. channel9.msdn.com/Shows/Defrag-Tools ha alcuni buoni spettacoli su questi.
HelpingHand,

1
non ordinare per modulo. rimuovi questa colonna. traccia anche gli eventi RPC. scarica questo file , esegui WPRUI.exe, fai clic su aggiungi profilo, seleziona il WPRP scaricato, seleziona Profilo utilizzo CPU e Profilo utilizzo rete in Misurazioni personalizzate. fai clic su Start e acquisisci l'utilizzo per 30 secondi. ora guarda quale PID ha un elevato utilizzo della cpu e nel filtro grafico / tabella degli eventi generici per l'exe con l'uso elevato e gli eventi RPC e guarda quale azione rpc viene eseguita
magicandre1981

Risposte:


11

A quanto pare, questo era legato alla condivisione della connessione Internet (ICS).

Di seguito, vorrei descrivere come sono arrivato a questa conclusione nella speranza che aiuti altre persone con problemi simili.


Il primo passo è identificare il servizio che causa problemi. Mentre il Task Manager di Windows ha anche imparato a farlo recentemente, ho usato Process Hacker che può anche modificare la configurazione di un servizio.

Facendo doppio clic sull'istanza incriminata svchost.exee selezionando la scheda Servizio viene mostrato quali servizi sono in esecuzione all'interno di quel processo:

svchost.exe (1688) Proprietà

svchost.exepuò ospitare molti servizi Windows contemporaneamente, rendendo difficile identificare quale servizio sta causando problemi. Mentre le versioni recenti di Windows 10 isolano in genere i servizi quando è disponibile sufficiente RAM , alcuni servizi condividono comunque un processo.

In questo caso, il modo più semplice per identificare quale servizio sta causando problemi è separarli.

Process Hacker può farlo. Nella scheda Servizio della sua finestra principale , possiamo configurare se un servizio può condividere un processo:

Proprietà MpsSvc

Almeno due dei tre servizi sospetti devono essere configurati come proprio processo per assicurarsi che siano separati in futuro.

Apparentemente, a Windows Defender non piacciono gli utenti che si intromettono nella configurazione del suo servizio, quindi per cambiare con successo questa impostazione, avevo bisogno di

  • concedere al gruppo Administrators l' accesso completo a tale servizio,
  • disabilitare il servizio,
  • riavviare in modo che il servizio venga arrestato (non può essere arrestato separatamente),
  • cambiare il tipo di servizio in Proprio processo e riattivare il servizio (impostarlo su Avvio automatico ) e
  • riavviare un'ultima volta per applicare queste modifiche.

Successivamente, l'autore del reato svchost.exeospita solo un singolo servizio, quindi abbiamo un sospettato:

Windows Defender Firewall (MpsSvc)

Per analizzare cosa sta succedendo all'interno del servizio firewall, utilizzeremo Windows Performance Recorder e lo strumento Windows Performance Analyzer, parte di Windows ADK .

Inizieremo registrando alcuni dati. Mentre il sospetto si svchost.exesta muovendo in background, scarica questo file , aggiungilo come profilo, imposta Windows Performance Recorder in questo modo e avvia una registrazione:

Registratore di prestazioni di Windows: selezionare Triage di primo livello e Profilo di utilizzo della CPU

Lasciare funzionare la registrazione per circa 30 secondi, quindi salvare la registrazione. Dopo il salvataggio, fai clic su Apri in WPA per aprirlo immediatamente per l'analisi.

Questo è dove le cose iniziano a diventare difficili. Nel mio caso, avevo bisogno di un suggerimento da @ magicandre1981 per cercare nel posto giusto, in Attività di sistemaEventi generici . Lì, il numero di eventi RPC sembrava sospettosamente alto:

46.918 eventi Microsoft-Windows-RPC

Eseguendo il drill down, Windows Defender Firewall svchost.exesi presentava molto sul lato Serverwin:Start e degli win:Stopeventi:

RpcServerCall

Il passo successivo è stato scoprire chi ha inviato queste chiamate RPC. Guardando sul lato client, un'altra svchost.exeistanza sembrava sospetta:

RpcClientCall

Infatti, Process Hacker non è stato in grado di rilevare un servizio in esecuzione all'interno di quel processo, che causava anche un carico costante della CPU:

Nome del gruppo di servizi: netsvcs

In questo caso, Task Manager di Windows è riuscito a identificare il servizio:

Condivisione connessione Internet (ICS)

In effetti, il servizio è stato bloccato in partenza Stato. L'ho disabilitato poiché non ne ho bisogno e il caricamento della CPU è tornato alla normalità dopo il successivo riavvio.


Vorrei esprimere la mia gratitudine per @HelpingHand e @ magicandre1981, il cui aiuto nei commenti ha reso possibile tutto ciò.


Come è stato scoperto in seguito nel post di TenForums , il ripristino di Windows Defender Firewall risolve questo problema.


@HelpingHand: cosa succede se si disabilitano i Internet Connection Sharing (ICS)servizi? L'hotspot WiFi non sarà più un'opzione?
llinfeng,

Questo è leggermente più semplice in Process Explorer. Se fai clic con il pulsante destro del mouse su "svchost.exe" che utilizza una quantità di processore costante (il mio caso era costante del 5%) e fai clic sulla scheda "Servizi", vedrai quali servizi sono in esecuzione in questo svchost. Ne ho avuto solo uno in questo caso, ICS. Allo stesso modo la mia condivisione della connessione Internet era bloccata in uno stato iniziale. Andando su "Protezione firewall e rete" sono stato in grado di fare clic su "Ripristina firewall predefiniti" - questo ha risolto immediatamente il mio problema.
Howard Lince III,

@Howard: considerati fortunato - una delle principali complicazioni per me sono state tre servizi che condividono l'istanza problematica di svchost.exe, rendendo difficile identificare il servizio che causa questo. Non sono sicuro del perché non abbiano condiviso un processo host nella tua istanza.
fefrei,

2

È più semplice, ho avuto successo ripristinando le impostazioni di Windows Firewall (in particolare se c'è un picco relativo nel carico della CPU) usando queste istruzioni: -

Il ripristino di Windows Defender Firewall alle impostazioni predefinite ha risolto il problema.

Per fare ciò apri Impostazioni -> Aggiornamento e sicurezza -> Windows Defender -> Apri Windows Defender Security Center -> Protezione firewall e rete -> Ripristina impostazioni predefinite firewall

Spero che questo aiuti e funzioni per qualcun altro ... Sembra un problema abbastanza diffuso.


1
In effetti, questo ha funzionato anche per me, come ho già detto in fondo alla mia risposta. Grazie per aver rispecchiato i passaggi qui!
fefrei

0

Nel mio caso, dopo aver provato varie correzioni non riuscite (inclusi alcuni dei suggerimenti sopra riportati, ad esempio il ripristino di Windows Firewall), ho disabilitato il "Servizio criteri di diagnostica" e il hogging della CPU è finalmente cessato. Questa potrebbe non essere la soluzione ideale, ma non sembra essere un servizio critico. Ecco come disabilitarlo:

  1. Apri "Configurazione di sistema" ('msconfig.exe') come amministratore
  2. Scheda Generale: scegli "Avvio selettivo"
  3. Scheda Servizi: deseleziona "Servizio criteri diagnostici"
  4. Riavvia Windows

Grazie al canale YouTube di Ranga Rajesh Kumar per avermi indicato questa soluzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.