Da sempre, l'utility Gestione attività (Task manager) di Windows mostra molteplici processi di nome svchost.exe
. La situazione è però degenerata a partire da Windows 10 1703 Creators Update: sotto Dettagli
troviamo infatti decine di istanze! È normale che Windows 10 usi moltissimi processi svchost.exe? cosa posso fare per ridurre il numero di processi svchost.exe? vediamo di fare chiarezza
Saltiamo alle conclusioni
Se non vi interessano i dettagli e volete una risposta secca, eccola qua: sì, è perfettamente normale che Windows 10 impieghi decine di istanze di svchost.exe. Se il PC non mostra malfunzionamenti, non preoccupatevi di questo aspetto.
Se volete saperne di più oppure siete determinati a ridurne il numero, continuate a leggere.
Che cos'è svchost.exe?
svchost.exe è il nome di un file eseguibile di sistema. Si tratta dell'abbreviazione di Service Host (Processo host per servizi di Windows, nella localizzazione italiana), nome che comunica la sua ragion d'essere: ospitare i servizi, ovvero quei processi (programmi) che funzionano "dietro le quinte" (in background) anche quando non vi sono utenti loggati
Volendo banalizzare al massimo: i servizi di Windows progettati per funzionare tramite svchost.exe sono scritti sottoforma di libreria dinamica (file con estensione .dll). svchost.exe si occupa di caricare al proprio "interno" questo file ed eseguire il codice contenuto.
È bene precisare che non tutti i servizi impiegano svchost.exe: molti di quelli realizzati da terze parti (penso, ad esempio, al server web Apache HTTP Server o al database MySQL) sfruttano esplicitamente un proprio eseguibile. Il vantaggio di usare svchost.exe -ed il motivo per cui pressoché la totalità dei servizi nativi di Windows si appoggiano ad esso- è che è possibile raggruppare molteplici servizi attinenti in un'unica istanza di svchost.exe: questo riduce drasticamente il consumo di RAM rispetto all'uso di processi distinti per ogni singolo servizio.
Abbiamo così chiarito un aspetto importante: il mero svchost.exe non è mai la fonte del problema. Piuttosto, il malfunzionamento deve essere ricercato nello specifica DLL associata al servizio caricato nello stesso.
Perché Windows usa decine di processi svchost.exe?
Un sistema operativo complesso come Windows deve gestire molteplici aspetti: dagli accessi al disco alle richieste di CPU passando per l'acquisizione dell'input tramite tastiera, mouse e schermo touch, fino a visualizzare gli elementi a video, vi sono decine e decine di servizi coinvolti.
Ecco dunque che, nonostante il raggruppamento, è necessario mantenere in esecuzione molteplici svchost.exe, ognuno con la responsabilità di eseguire molteplici servizi fra loro attinenti.
Gli svantaggi di raggruppare i servizi con svchost.exe
Raggruppare molteplici servizi attinenti all'interno di un'unica istanza di svchost.exe ha l'indubbio vantaggio di risparmiare memoria, ma comporta alcuni svantaggi.
Innanzitutto, in caso un servizio vada in crash e debba essere arrestato, il sistema operativo è costretto a terminare l'intero processo. Questo comporta uno stop forzato anche degli altri servizi che condividevano la stessa istanza di svchost.exe.
Inoltre, è meno immediato per l'utente capire quali servizi siano in esecuzione all'interno di una determinata istanza.
Anche la sicurezza di questo modello è migliorabile: l'intero processo svchost.exe deve infatti essere eseguito con i privilegi richiesti da ogni singolo servizio che racchiude. Questo fa sì che anche gli altri dello stesso gruppo abbiano privilegi non strettamente necessari.
Windows 10 1703 Creators Update: svchost.exe prolifera
A partire da Windows 10 1703 Creators Update, Microsoft ha preso atto del fatto che, ormai, i PC propriamente detti hanno a disposizione RAM in abbondanza. Ecco dunque che, su computer dotati di almeno 3.5 GB di RAM, il sistema operativo crea processi svchost.exe distinti per ogni servizio in esecuzione.
In altre parole, è stata abbandonata la caratteristica distintiva (il raggruppamento) pur conservando la capacità di eseguire servizi racchiusi all'interno di file .dll. Questo fa sì che venga consumata più memoria RAM rispetto all'uso "raggruppato", ma spazza via anche gli svantaggi delineati al paragrafo precedente. I vantaggi del nuovo approccio sono dunque numerosi.
Innanzitutto, se un singolo servizio va in crash, può essere arrestato individualmente, senza impattare sugli altri. Sulla generazione precedente, invece, un errore causato da un singolo servizio era sufficiente ad arrestare anche tutti quelli che facevano capo alla stessa istanza di svchost.exe.
C'è poi un vantaggio in termini di sicurezza: ogni processo può utilizzare i permessi minimi strettamente necessari, e non un "minimo comune denominatore" per tutto il gruppo.
Risulta infine più semplice per l'utente stabilire quale servizio sia responsabile per un uso anomalo di RAM e/o CPU.
È importante notare che i servizi critici di sistema rimangono raggruppati sotto un unico processo, esattamente come avveniva con la generazione precedente.
Come ridurre il numero di processi svchost.exe
La nuova modalità ha perfettamente senso ed è indubbiamente la scelta ideale, in particolar modo su PC con ampia disponibilità di memoria. Chi però fosse determinato a ridurre il numero di processi svchost.exe può ri-abilitare il raggruppamento di molteplici servizi sotto un'unica istanza tramite il Registro di sistema (valore SvcHostSplitThresholdInKB
). Sulla mia configurazione di test, sono passato da 53 svchost.exe iniziali ad appena 15
Il modo più semplice per applicare la modifica è tramite questo archivio già pronto:
» Download: Riduci numero di processi svchost.exe
Una volta scaricato, scompattarlo in una cartella a piacere, aprire il file Riduci numero di processi svchost.exe.reg
e confermare ripetutamente. Riavviare il PC per rendere effettiva la modifica.
In caso si desideri ripristinare la situazione di default basta applicare l'altra impostazione presente nell'archivio, Ripristina numero di processi svchost.exe originale (default).reg
e riavviare.
Dove si trova svchost.exe?
Considerata l'abbondanza di processi svchost.exe, parecchi malware del passato hanno cercato di passare inosservati nominando il proprio eseguibile allo stesso modo. È dunque importante conoscere il percorso esatto del "vero" svchost.exe: in caso sia presente un processo con lo stesso nome ma posizione su disco differente, si tratta di una situazione quantomeno "sospetta".
» Leggi anche: Guida definitiva: procedura TurboLab.it per rimuovere in autonomia qualsiasi malware
Il file svchost.exe si trova in due percorsi distinti:
-
C:\Windows\System32\svchost.exe
: è l'eseguibile principale, presente sia su Windows a 32 bit, sia su Windows a 64 bit -
C:\Windows\SysWOW64\svchost.exe
: è presente solo su Windows a 64 bit. Si tratta di una copia dell'svchost.exe a 32 bit, utilizzato per eseguire sotto Windows a 64 bit i servizi compilati per la piattaforma a 32 bit
» Leggi anche: Come scoprire se Windows è a 32 bit oppure 64 bit
Come scoprire quali servizi siano caricati in un'istanza di svchost.exe
A partire da Windows 10, Gestione attività è in grado di mostrare quali servizi siano caricati all'interno di un'istanza di svchost.exe: basta espandere uno degli elementi Host servizio
sotto la scheda Processi
In alternativa, possiamo affidarci ad un'utility specializzata di terze parti, come svchost viewer:
» Download: svchost viewer (sito ufficiale)
Il programma è gratuito e non necessità di installazione, ma richiede la presenza di .NET Framework 3.5.
Una volta aperto, svchost viewer ci mostra in maniera compatta la lista di tutti i processi svchost.exe e dei rispettivi servizi caricati. Una volta selezionato un determinato servizio, possiamo arrestarlo tramite la voce di menu Service control -> Stop Selected Service
.
Da Tools
– Generate Report
potete salvare la lista di tutti i servizi attivi gestiti da svchost.exe per potercela mostrare e decidere insieme se sono proprio necessari al vostro computer.
È altamente sconsigliabile “pasticciare” con i servizi di Windows e quindi devo avvertirvi di prestare la massima attenzione prima di disabilitarne alcuni. Rischiereste di non riuscire più ad avviare più il sistema operativo o disabilitare qualche funzione importante.
Se il computer dovesse andare in crash o generare qualche problema in seguito alla disabilitazione di un servizio, vi sarete resi conto che quel servizio è indispensabile. Se invece tutto continua a funzionare normalmente e avete deciso che quel servizio non vi serve, potete andare su Tools
– Windows Service Manager
per aprire la lista dei servizi.
Una volta individuato quello da disabilitare in maniera definitiva, aprite il menu del Tipo di Avvio
e impostatelo in Disabilitato
in modo che non parta all’avvio del sistema operativo.
Uno strumento alternativo per visualizzare quali servizi siano caricati da un'istanza di svchost.exe è il sempre ottimo Process Explorer:
» Leggi: Con Process Explorer gestisci al meglio i processi attivi del computer
Per quanto riguarda i tool di diagnostica avanzata, ricordiamo infine Windows Performance Toolkit: