Perché i tempi di avvio sono più rapidi su Windows 8? [chiuso]


28

Alcune persone hanno fatto benchmark confrontando Windows 8 con Windows 7. Molte funzionalità non migliorano, ma costantemente, il tempo di avvio è migliore.

Perché Windows 8 si avvia più velocemente rispetto a Windows 7? È una questione di servizi e, di conseguenza, possiamo modificare Windows 7 per avere lo stesso tempo di avvio?


1
Il membro "User" risponde di seguito è il motivo principale, ma sì hanno ridotto i servizi che si caricano con Windows un po 'da W7, il che aiuta anche.
Moab,

1
C'era ancora meno tempo per installare app ...; P
n611x007

Risposte:


37

Dal blog Building Windows 8 :

Ora ecco la differenza chiave per Windows 8: come in Windows 7, chiudiamo le sessioni utente, ma invece di chiudere la sessione del kernel, la iberniamo. Rispetto a un letargo completo, che include molte pagine di memoria utilizzate dalle app, i dati di ibernazione della sessione 0 sono molto più piccoli, il che richiede sostanzialmente meno tempo per scrivere su disco. Se non si ha familiarità con l'ibernazione, stiamo effettivamente salvando lo stato del sistema e i contenuti della memoria su un file su disco (hiberfil.sys) e quindi rileggendolo al riavvio e ripristinando i contenuti in memoria. L'uso di questa tecnica con boot ci offre un vantaggio significativo per i tempi di boot, poiché leggere il file hiber e reinizializzare i driver è molto più veloce sulla maggior parte dei sistemi (30-70% più veloce sulla maggior parte dei sistemi che abbiamo testato).

È più veloce perché il ripristino della sessione di sistema ibernata è relativamente meno lavoro rispetto all'inizializzazione completa del sistema, ma è anche più veloce perché abbiamo aggiunto una nuova funzionalità di ripresa multi-fase, che è in grado di utilizzare tutti i core in un sistema multi-core in parallelamente, per dividere il lavoro di lettura dal file hiber e decomprimerne il contenuto. Per quelli di voi che preferiscono il letargo, ciò si traduce anche in riprensioni più veloci dal letargo.

Probabilmente vale la pena ricordare rapidamente come trattiamo il file hiber: se leggi questo e vai subito a fare un hiberfile.sys dir / s / ah avresti scoperto che si tratta di un file piuttosto grande su disco. Il file hiber è dimensionato per impostazione predefinita al 75% della RAM fisica. Il file è essenzialmente una riserva per i dati di ibernazione che verranno scritti mentre il sistema passa in modalità di ibernazione. In genere viene utilizzato molto meno spazio e, nel caso del nostro utilizzo ad avvio rapido, è in genere ~ 10-15% della RAM fisica ma varia in base a driver, servizi e altri fattori. Il sistema tratta anche il file hiber in modo leggermente diverso rispetto ad altri file su disco, ad esempio il servizio Volume Snapshot lo ignora (un piccolo vantaggio in termini di prestazioni. ) È possibile disabilitare l'ibernazione e recuperare questo spazio eseguendo powercfg / ibernazione da un prompt dei comandi con privilegi elevati. Tuttavia, tieni presente che, se lo fai, disabiliterai completamente l'ibernazione, incluse alcune belle funzionalità come l'avvio rapido e la sospensione ibrida, che consente ai sistemi desktop di eseguire sia una sospensione che l'ibernazione simultaneamente, quindi se si verifica una perdita di potenza puoi comunque riprendere dallo stato di ibernazione. Puoi anche eseguire powercfg / hibernate / size e specificare un valore tra 0 e 100 per la percentuale di RAM fisica da riservare per il file hiber - ma fai attenzione! Se si specifica una dimensione troppo piccola, l'ibernazione potrebbe non riuscire. In generale, consiglio di lasciarlo abilitato al valore predefinito a meno che non si stia lavorando su un sistema con spazio su disco estremamente limitato. disabiliterà completamente l'ibernazione, comprese alcune belle funzionalità come l'avvio rapido e la sospensione ibrida, che consente ai sistemi desktop di eseguire sia una sospensione che l'ibernazione simultaneamente, quindi se si verifica una perdita di potenza è ancora possibile riprendere dallo stato di ibernazione. Puoi anche eseguire powercfg / hibernate / size e specificare un valore tra 0 e 100 per la percentuale di RAM fisica da riservare per il file hiber - ma fai attenzione! Se si specifica una dimensione troppo piccola, l'ibernazione potrebbe non riuscire. In generale, consiglio di lasciarlo abilitato al valore predefinito a meno che non si stia lavorando su un sistema con spazio su disco estremamente limitato. disabiliterà completamente l'ibernazione, comprese alcune belle funzionalità come l'avvio rapido e la sospensione ibrida, che consente ai sistemi desktop di eseguire sia una sospensione che l'ibernazione simultaneamente, quindi se si verifica una perdita di potenza è ancora possibile riprendere dallo stato di ibernazione. Puoi anche eseguire powercfg / hibernate / size e specificare un valore tra 0 e 100 per la percentuale di RAM fisica da riservare per il file hiber - ma fai attenzione! Se si specifica una dimensione troppo piccola, l'ibernazione potrebbe non riuscire. In generale, consiglio di lasciarlo abilitato al valore predefinito a meno che non si stia lavorando su un sistema con spazio su disco estremamente limitato. che consente ai sistemi desktop di sospendere e ibernare contemporaneamente, quindi in caso di interruzione dell'alimentazione è possibile riprendere dallo stato di ibernazione. Puoi anche eseguire powercfg / hibernate / size e specificare un valore tra 0 e 100 per la percentuale di RAM fisica da riservare per il file hiber - ma fai attenzione! Se si specifica una dimensione troppo piccola, l'ibernazione potrebbe non riuscire. In generale, consiglio di lasciarlo abilitato al valore predefinito a meno che non si stia lavorando su un sistema con spazio su disco estremamente limitato. che consente ai sistemi desktop di sospendere e ibernare contemporaneamente, quindi in caso di interruzione dell'alimentazione è possibile riprendere dallo stato di ibernazione. Puoi anche eseguire powercfg / hibernate / size e specificare un valore tra 0 e 100 per la percentuale di RAM fisica da riservare per il file hiber - ma fai attenzione! Se si specifica una dimensione troppo piccola, l'ibernazione potrebbe non riuscire. In generale, consiglio di lasciarlo abilitato al valore predefinito a meno che non si stia lavorando su un sistema con spazio su disco estremamente limitato.


L'ibernazione del kernel non è l'intera storia. Non so cosa siano cambiati, ma anche senza l'ibernazione del kernel il mio laptop si avvia notevolmente più velocemente con Win8 rispetto a Win7 (e ho un SSD e una CPU dual-core) ... alcuni componenti devono essere stati modificati per rendere questo succede, ma non so cosa.
Mehrdad,

2
Invece di copiare e incollare una risposta, sarebbe meglio riassumere l'articolo e quindi fare riferimento a esso. Citare articoli va bene, ma non in grossi pezzi.
James Mertz,

2
L'immagine lo riassume.
Elmo,

17

Risposta breve, e in parole mie è che il tuo PC ha sessioni, la sessione 0 è riservata alla sessione del kernel o della console e la sessione 1 è normalmente la sessione degli utenti connessi. Quello che hanno fatto è prendere la funzionalità di ibernazione che abbiamo avuto in Windows per anni, che iberna tutte le sessioni e l'hanno modificata in modo da ibernare solo la sessione 0 (il kernel). Va così:

  • Si fa clic su spegnimento
  • Il PC chiude la sessione 1 (sessione utente) e scrive la sessione 0 nel file hiberfil.sys sul disco rigido.
  • Quando si avvia il PC, legge il contenuto della sessione 0 dal file hiberfil.sys e lo riporta in memoria. Quindi inizializza una nuova sessione per te.

Per rispondere alla tua seconda domanda, dato che si tratta di una modifica al kernel, non è possibile farlo su Windows 7.

Per interesse, è possibile eseguire un arresto completo (classico) utilizzando shutdown.exe dal prompt dei comandi.

shutdown /s /t 0

Se si desidera eseguire un arresto ibrido, è possibile utilizzare:

 shutdown /s /hybrid /t 0
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.