martedì 28 marzo 2017

Disattivare prefetch e superfetch in Windows 10 (fino alla versione v1709 Fall Creators Update)

AGGIORNAMENTO del 20/11/2018: a seguito di modifiche apportate da Microsoft in Windows 10 v1803 (Aprile 2018) e v1809 (Ottobre 2018) si è reso necessario aggiornare questo articolo rispetto alla prima stesura: oltre a questo articolo dovete consultare l'aggiornamento dedicato Disabilitare il superfetch (ed il prefetch) in Windows 10 (per versioni 1803 e successive)
Il prefetch ed il superfetch sono tecnologie progettate per aumentare le prestazioni di Windows. Tuttavia, le opinioni sia degli utenti che degli esperti (o presunti tali) sulla loro reale efficacia (soprattutto sul superfetch) sono contrastanti e soprattutto non sono applicabili a tutte le possibili situazioni d'uso. L'introduzione degli SSD (Solid State Drive) ha messo d'accordo tutti: queste funzionalità devono essere disattivate, e ci sono ottimi motivi per farlo anche sugli hard-disk convenzionali (HDD). 
A prescindere da tutte le considerazioni che faremo nel seguito, si sottolinea che
prefetch e superfetch devono essere sempre disattivati se nel computer è installato (almeno) un SSD al fine di evitare l'usura delle celle di memoria flash del dispositivo. 
Se vi interessa più in dettaglio il funzionamento di prefetch e superfetch potete leggere il precedente articolo dedicato a Windows XP/Vista/7/8/8.1 (su Windows 10 funzionano esattamente allo stesso modo), mentre in questa sede ci limitiamo a riassumere i fatti fondamentali.

Chiavi di registro

Per configurare le tecnologie di prefetch e superfetch bisogna aprire il registro di configurazione di Windows: dai collegamenti rapidi selezionare "Esegui" e digitare regedit.
Portarsi al percorso
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters\
ed impostare opportunamente le chiavi EnablePrefetcher e EnableSuperfetch
Prefetch e Superfetch - Windows 10

Prefetch

Il prefetch memorizza nella cartella \Windows\Prefetch una serie di file con informazioni riguardanti i file di boot di Windows e delle applicazioni più usate. Tali informazioni vengono usate per velocizzare l'avvio del sistema e delle applicazioni e sono di aiuto anche a tool come il deframmentatore dischi.
Per modificare le impostazioni di prefetch:
  • aprire il registro di configurazione di Windows e portarsi al percorso precedentemente menzionato;
  • modificare il valore della chiave EnablePrefetcher con uno dei valori consentiti (personalmente vi suggerisco di impostarlo a 0 -zero- sempre e comunque).
Se avete installato Windows 10 da zero su un SSD la chiave EnablePrefetcher dovrebbe essere impostata a 0 (zero) e dovete lasciarla così (in ogni caso meglio controllare), altrimenti il valore predefinito è 3 ma vi suggerisco di cambiarlo: personalmente non ho riscontrato alcun aumento di prestazioni mantenendo il prefetch abilitato, per cui ho preferito disabilitarlo impostandolo a 0. Se volete mantenerlo abilitato (ma solo nel caso che non abbiate nessun SSD) vi suggerisco di farlo solo per il boot, impostando il valore 2.
Riassumendo: impostare EnablePrefetcher al valore 0 sempre nel caso abbiate un SSD, mentre se avete solo HDD va bene sia il valore 0 che 2.
I valori possibili per EnablePrefetcher sono:
  • 0 - disabilita il prefetch (predefinito e corretto se Windows 10 è installato da zero su un SSD)
  • 1 - prefetch abilitato solo per il lancio di applicazioni
  • 2 - prefetch abilitato solo per il boot
  • 3 - prefetch abilitato sia per il boot che per il lancio di applicazioni (predefinito e da cambiare se Windows 10 è installato da zero su un HDD)

Superfetch

Il superfetch è un'evoluzione del prefetch. Analogamente al prefetch, usa la cartella \Windows\Prefetch per memorizzare una serie di file; diversamente dal prefetch, non si tratta solo di riferimenti ma di intere porzioni di applicazioni da precaricare ai successivi avvii del sistema. Operando in questo modo, il superfetch vorrebbe usare più efficacemente la memoria (RAM) di sistema secondo il principio "la RAM libera/inutilizzata è RAM sprecata". Sebbene qualunque "esperto" sia pronto a giurare che si tratta di una tecnologia bellissima, alla prova dei fatti il superfetch si è dimostrato più dannoso che utile: è un meccanismo estremamente invasivo perché per funzionare deve spostare continuamente su disco centinaia di megabyte di dati (cosa deleteria per gli SSD). Quando è in funzione su computer dotati solo di HDD, il disco rigido è costretto a lavorare furiosamente e di continuo, rendendo spesso il sistema inutilizzabile o rallentandolo in modo inaccettabile. Per questo motivo il mio suggerimento è di disabilitare sempre e comunque il meccanismo di superfetch.
Per modificare le impostazioni di superfetch:
  • aprire il registro di configurazione di Windows e portarsi al percorso precedentemente menzionato;
  • modificare il valore della chiave EnableSuperfetch con uno dei valori consentiti (personalmente vi suggerisco di impostarlo a 0 -zero- sempre e comunque).
Se avete installato Windows 10 da zero su un SSD la chiave EnableSuperfetch dovrebbe essere impostata a 0 (zero) e dovete lasciarla così (in ogni caso meglio controllare), altrimenti il valore predefinito è 3 ma vi suggerisco di cambiarlo immediatamente in 0.
Riassumendo: impostare EnableSuperfetch al valore 0 sempre e comunque.
I valori possibili per la sottochiave EnableSuperfetch sono:
  • 0 - disabilita il superfetch (predefinito e corretto se Windows 10 è installato da zero su un SSD)
  • 1 - superfetch abilitato solo per il lancio di applicazioni
  • 2 - superfetch abilitato solo per il boot
  • 3 - superfetch abilitato sia per il boot che per il lancio di applicazioni (predefinito e da cambiare immediatamente in 0 se Windows 10 è installato da zero su un HDD)
In aggiunta occorre disabilitare il servizio "Ottimizzazione avvio" (nelle versioni in Inglese di Windows tale servizio si chiama proprio "Superfetch"):
  1. dai collegamenti rapidi selezionare "Esegui" e digitare services.msc 
  2. individuare il servizio "Ottimizzazione avvio" ed impostarlo come Disabilitato, premere Applica e OK;
  3. chiudere il tool di configurazione servizi 
Ottimizzazione avvio - Windows 10

Per finire

Dopo aver riconfigurato prefetch e superfetch e disabilitato il servizio "Ottimizzazione Avvio" bisogna riavviare Windows 10. Se, come suggerito, avete impostato entrambe le chiavi EnablePrefetcher e EnableSuperfetch a 0, potete andare nella cartella \Windows\Prefetch e cancellare tutti i file in essa contenuti (è inutile cancellare la sottocartella interna ReadyBoot perché verrebbe ricreata). Se invece una qualsiasi delle 2 chiavi di registro è diversa da 0 è inutile cancellare i file interni a \Windows\Prefetch perché verrebbero ricreati.

POTREBBE INTERESSARTI ANCHE…