Qualche vantaggio o svantaggio derivante dalla rimozione di un file di paging su una macchina RAM da 8 GB?


213

Sto eseguendo Windows 7 su un dual core, x64 AMD con 8 GB di RAM.

Ho bisogno anche di un file di paging?

Rimuoverlo aiuterà o danneggerà le prestazioni?

Farebbe differenza se questo è un server o un desktop?

Windows 7 e Windows 2008 fanno la differenza con un file di paging?

Risposte:


299

Versione TL; DR: consente a Windows di gestire le impostazioni della memoria / del file di paging. Le persone della SM hanno trascorso molte più ore a pensare a questi problemi rispetto alla maggior parte di noi amministratori di sistema.

Molte persone sembrano supporre che Windows inserisca i dati nel file di paging su richiesta. Ad esempio: qualcosa richiede molta memoria e non c'è abbastanza RAM per soddisfare l'esigenza, quindi Windows inizia follemente a scrivere dati dalla RAM sul disco all'ultimo minuto, in modo che possa liberare la RAM per le nuove esigenze.

Questo non è corretto C'è altro da fare sotto il cofano. In generale, Windows mantiene un archivio di backup , il che significa che vuole vedere tutto ciò che è in memoria anche sul disco da qualche parte. Ora, quando qualcosa arriva e richiede molta memoria, Windows può cancellare la RAM molto rapidamente, perché quei dati sono già sul disco, pronti per essere impaginati nella RAM se richiesto. Quindi si può dire che gran parte di ciò che è nel file di paging è anche nella RAM; i dati sono stati inseriti preventivamente nel file di paging per accelerare le nuove richieste di allocazione della memoria.

Descrivere i meccanismi specifici coinvolti richiederebbe molte pagine (vedere il capitolo 7 di Windows Internals e notare che una nuova edizione sarà presto disponibile), ma ci sono alcune cose interessanti da notare. Innanzitutto, gran parte di ciò che è nella RAM è intrinsecamente già presente sul disco, ad esempio il codice del programma recuperato da un file eseguibile o da una DLL. Quindi questo non ha bisogno di essere scritto nel file di paging; Windows può semplicemente tenere traccia di dove sono stati originariamente recuperati i bit. In secondo luogo, Windows tiene traccia di quali dati nella RAM vengono utilizzati più frequentemente e quindi cancella dalla RAM quei dati che sono andati più a lungo senza essere accessibili.

La rimozione completa del file di paging può causare un maggiore blocco del disco. Immagina uno scenario semplice in cui alcune app vengono avviate e richiedono l'80% della RAM esistente. Ciò costringerebbe l'attuale codice eseguibile a uscire dalla RAM, forse anche al codice del sistema operativo. Ora ogni volta che quelle altre app - o il sistema operativo stesso (!!) hanno bisogno di accedere a quei dati, il sistema operativo deve cercarle dall'archivio di backup su disco, portando a un notevole thrashing. Perché senza file di paging che fungono da archivio di backup per i dati transitori, le uniche cose che possono essere paginate sono eseguibili e DLL che avevano archivi di backup intrinseci per cominciare.

Esistono ovviamente molti scenari di risorse / utilizzo. Non è impossibile che tu abbia uno degli scenari in cui non ci sarebbero effetti negativi dalla rimozione del file di paging, ma questi sono la minoranza. Nella maggior parte dei casi, la rimozione o la riduzione del file di paging comporterà una riduzione delle prestazioni in scenari di utilizzo delle risorse di picco.

Alcuni riferimenti:

dmo ha notato un recente post di Eric Lippert che aiuta a comprendere la memoria virtuale (sebbene sia meno correlato alla domanda). Lo sto mettendo qui perché sospetto che alcune persone non scorreranno verso il basso fino ad altre risposte - ma se lo trovi prezioso, devi votare un voto, quindi usa il link per arrivarci!


25
Per Jeff e Joel: fa rima con "anatre"
quux

2
Su Solaris era / è ancora più coinvolto. Il file di scambio è specchiato in un disco ram come tmpfs, quindi la memoria è sempre quasi piena - ma è apparentemente dimostrabile che questa è la strategia ottimale.
Martin Beckett,

2
Ho creduto a lungo che, invece di consentire a Windows di gestire la dimensione del mio file di pagina, dovrei impostarlo su un importo fisso (ad esempio minimo 2 GB, massimo 2 GB), perché lasciarlo crescere e ridursi può causare problemi di frammentazione. È una buona idea o dovrei seguire la tua prima riga e lasciare che Windows gestisca tutto?
John Fouhy,

2
@Mehrdad: Perché non vuoi mantenere libero il 50% della tua RAM. Certo, potresti farlo, ma perderesti il ​​50% della RAM fisica che potresti utilizzare come cache del disco per i dati attivi. La RAM libera è un segno di inefficienza, è come i camion FedEx in un deposito invece che sulla strada. Significa che non stai spostando più merci possibile perché stai impiegando troppo tempo a caricare e scaricare.
David Schwartz,

2
@Mehrdad: il problema è che, senza file di paging, ci sono molti dati che devono essere conservati nella RAM, anche se probabilmente non saranno mai accessibili. Si consideri, ad esempio, qualsiasi memoria allocata da un processo avviato all'avvio del sistema ma che offre un servizio che non verrà utilizzato per giorni. Il sistema non può provare che i dati non saranno accessibili e non ha altro posto che la RAM per conservarli. Quindi la cache del disco si restringe mentre i dati sono conservati nella RAM a cui non si accede da giorni.
David Schwartz,

80

Eric Lippert ha recentemente scritto un post sul blog che descrive come Windows gestisce la memoria. In breve, il modello di memoria di Windows può essere pensato come un archivio su disco in cui la RAM funge da cache per migliorare le prestazioni.


47

Come vedo dalle altre risposte, sono l'unico che ha disabilitato il file di paging e non me ne sono mai pentito. Grande :-)

Sia a casa che al lavoro ho Vista 64-bit con 8 GB di RAM. Entrambi hanno il file di paging disabilitato. Al lavoro non è niente di insolito avere poche istanze di Visual Studio 2008, Virtual PC con Windows XP, 2 istanze di SQL Server e Internet Explorer 8 con molte schede che lavorano insieme. Raramente raggiungo l'80% della memoria.

Uso anche il sonno ibrido ogni giorno (letargo con sonno) senza problemi.

Ho iniziato a sperimentarlo con Windows XP con 2 GB di RAM e ho visto davvero la differenza. L'esempio classico è stato quando le icone nel Pannello di controllo hanno smesso di mostrarsi una dopo l'altra, ma tutte in una volta. Anche il tempo di avvio di Firefox / Thunderbird è aumentato notevolmente. Tutto ha iniziato a funzionare immediatamente dopo aver fatto clic su qualcosa. Purtroppo 2 GB erano troppo piccoli per l'utilizzo delle mie applicazioni (Visual Studio 2008, Virtual PC e SQL Server), quindi l'ho abilitato nuovamente.

Ma in questo momento con 8 GB non voglio tornare indietro e abilitare il file di paging.

Per quelli che dicono casi estremi prendi questo dai miei tempi di Windows XP.
Quando si tenta di caricare una tabella pivot di grandi dimensioni in Excel da una query SQL, Excel 2000 aumenta l'utilizzo della memoria piuttosto rapidamente.
Quando il file di paging è disabilitato, attendi un po ', quindi Excel esploderà e dopo il sistema cancellerà tutta la memoria.
Quando hai abilitato il file di paging, aspetti qualche istante e quando noterai che qualcosa non va, non puoi fare quasi nulla con il tuo sistema. Il tuo HDD funziona come l'inferno e anche se in qualche modo riesci a eseguire Task Manager (dopo pochi minuti di attesa) e uccidi excel.exedevi aspettare qualche minuto fino a quando il sistema non carica tutto indietro dal file di paging.
Come ho visto in seguito, Excel 2003 gestisce la stessa tabella pivot senza problemi con il file di pagina disabilitato, quindi non si è trattato di un "problema di set di dati troppo grande".

Quindi, a mio avviso, un file di pagina disabilitato a volte ti protegge anche da applicazioni scritte male.

In breve: se sei a conoscenza dell'utilizzo della memoria, puoi disabilitarlo in sicurezza.

Modifica: voglio solo aggiungere che ho installato Windows Vista SP2 senza problemi.


3
Ho disabilitato il mio file di paging e me ne sono pentito nel momento in cui ho usato davvero la mia memoria. Quindi sii felice di avere più memoria del necessario.
Sam,

7
+1, "anch'io" :-). Stessa storia: memoria da 8 GB, Vista x64, con Visual Studio con ReSharper + SQL Server Express + IIS + 1-2 macchine virtuali (ognuna con 1500 MB di memoria) + un sacco di utility - non ha mai avuto problemi.
Milano Gardian,

21
Adoro il modo in cui tutti dicono "Microsoft ha passato molte ore a pensare a questo problema, quindi non scherzare con esso", ma ignora completamente le esperienze del mondo reale. Ho il file di paging disabilitato da XP e non me ne sono mai pentito. È come se il computer avesse ricevuto un'iniezione di fantastico.
AngryHacker,

4
È pratica piuttosto standard disabilitare il paging sui server che iSCSI si avvia, il paging sulla SAN sarebbe evidentemente lento. Devi solo guardare il tuo utilizzo della memoria e stare lontano dal massimo.
Chris S,

6
-1 Non vedo riferimenti in questa risposta. In realtà ho avuto un arresto anomalo del sistema perché il file di paging era disabilitato e la memoria del mio pool paged era piena. Tuttavia, il mio utilizzo della memoria fisica era solo a 2 GB ...
Tamara Wijsman il

34

È possibile che si desideri eseguire alcune misurazioni per comprendere come il proprio sistema utilizza la memoria prima di apportare modifiche al file di paging. Oppure (se si desidera ancora apportare modifiche), prima e dopo tali modifiche.

Perfmon è lo strumento per questo; non Task Manager. Un contatore di chiavi è Memoria - Inserimento pagine / sec . Ciò specificamente mostrare principali errori di pagina, quelle in cui è necessaria una lettura dal disco prima di un processo può continuare. Gli errori delle pagine morbide (che sono la maggior parte degli elementi rappresentati nel contatore predefinito Errori di pagina / sec ; consiglio di ignorare quel contatore!) Non sono realmente un problema; mostrano semplicemente gli elementi letti normalmente dalla RAM.

Grafico perfmon http://g.imagehost.org/0383/perfmon-paging.png

Sopra è un esempio di un sistema senza preoccupazioni, per quanto riguarda la memoria. Molto occasionalmente si verifica un picco di guasti gravi, che non possono essere evitati, poiché i dischi rigidi sono sempre più grandi della RAM. Ma il grafico è sostanzialmente piatto a zero. Quindi il sistema operativo esegue il paging dal backing store molto raramente.

Se viene visualizzato un grafico Memoria - Pagine di input / sec che è molto più appuntito di questo, la risposta corretta è l'utilizzo della memoria inferiore (eseguire meno programmi) o aggiungere RAM. La modifica delle impostazioni del file di paging non cambierebbe il fatto che al sistema sia richiesta più memoria di quella effettiva.

Un comodo contatore aggiuntivo da monitorare è PhysicalDisk - Media. Lunghezza della coda (tutte le istanze). Questo mostrerà quanto le tue modifiche influenzano l'utilizzo del disco stesso. Un sistema ben educato mostrerà questa media del contatore a 4 o meno per mandrino .


1
boccheggia qualcuno che fa di tutto per dimostrare come ispezionare il file di scambio. eccezionale.
CG

1
Link morto all'immagine. Ha bisogno di riparazioni.
Kinokijuf,

Sì, "ImageHost.org è chiuso"
Peter Mortensen,

34

Ho eseguito il mio box Vista x64 da 8 GB senza un file di paging per anni, senza problemi.

I problemi sono sorti quando ho davvero usato la mia memoria!

Tre settimane fa, ho iniziato a modificare file di immagini di grandi dimensioni (~ 2 GB) in Photoshop. Una sessione di editing ha mangiato tutta la mia memoria. Problema: non sono stato in grado di salvare il mio lavoro poiché Photoshop ha bisogno di più memoria per salvare il file!

E poiché era lo stesso Photoshop, che stava esaurendo tutta la memoria, non potevo nemmeno liberare memoria chiudendo i programmi (beh, l'ho fatto, ma era troppo poco per essere di aiuto).

Tutto quello che ho potuto fare è stato eliminare il mio lavoro, abilitare il mio file di paging e ripetere tutto il mio lavoro - a causa di ciò ho perso molto lavoro e non posso raccomandare di disabilitare il file di paging.

Sì, funzionerà alla grande per la maggior parte del tempo. Ma nel momento in cui si rompe potrebbe essere doloroso.


7
dovresti risparmiare più spesso: D per ridurre al minimo i danni
alexandrul il

1
facile da dire, quando il salvataggio richiede diversi minuti, questa è una pita.
Sam,

Siamo tutti contenti se usi software più complessi, ma a volte un "crash" finisce per allinearsi con "Oh merda, non ho salvato da un po '".
Damon,

19

Mentre le risposte qui trattano abbastanza bene l'argomento, consiglierò comunque questa lettura:

http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx

Parla della dimensione della PF quasi alla fine:

Alcuni ritengono che non avere un file di paging produca prestazioni migliori, ma in generale, avere un file di paging significa che Windows può scrivere pagine nell'elenco modificato (che rappresentano pagine a cui non si accede attivamente ma che non sono state salvate su disco) sul file di paging, rendendo tale memoria disponibile per scopi più utili (processi o cache dei file). Quindi, sebbene possano esserci alcuni carichi di lavoro che funzionano meglio senza file di paging, in generale avere uno significherà che sarà disponibile più memoria utilizzabile per il sistema (non importa se Windows non sarà in grado di scrivere dump di crash del kernel senza un file di paging di dimensioni grandi abbastanza per tenerli).

Mi piacciono molto gli articoli di Mark.


+1, semplice per il collegamento Mark Russinovich. Vale la pena sottolineare che win7 fa anche apparire una notifica per indicare che non sarà possibile "rintracciare i problemi di sistema" se si disabilita il file di scambio.
CG

13

La migliore risposta a cui riesco a pensare è che con un carico normale potresti non usare gli 8 GB, ma sono i carichi inaspettati in cui potresti avere problemi.

Con un file di paging, il sistema funzionerà almeno lentamente una volta iniziato a colpire la pagina. Ma se rimuovi il file di paging morirà (da quello che so).

Inoltre, 8 GB sembrano molti adesso, ma pochi anni dopo potrebbe essere considerata la quantità minima di memoria per un sacco di software.

Ad ogni modo, consiglierei di conservare almeno un piccolo file di paging; ma altri, per favore, correggimi se sono fuori base.


4
Andrei un po 'oltre e non limiterei il file di paging. Non sta davvero migliorando le cose. Lascia che Windows lo faccia ... lo sanno meglio.
Michael Haren,

1
Ho appena provato a utilizzare Media Player Classic per caricare un file mkv da 6 GB. Mi ha esaurito la memoria RAM e il file di paging. Sono tornato al VLC abbastanza velocemente. +1 per il "non sai mai cosa ti imbatterai". Alla fine MPC si è bloccato e la mia RAM è stata ripristinata, ma cosa succede se si ottiene una DLL nel software di terze parti con una perdita di memoria? Avrai molto più chilometraggio se hai un po 'di memoria su disco per aiutarti.
mpbloch,

1
Inoltre, qual è il vantaggio di avere 8 GB se devi vivere nella paura costante di usarlo davvero ?!
David Schwartz,

"Mantieni almeno un piccolo file di paging" mi sembra un po 'strano dato che non è chiaro come lo userà Windows. Ad esempio, potrebbe schiacciarlo ancora di più di un file di paging più grande che offre più spazio - immagino, ma fintanto che non vi è alcuna fonte affidabile su questo prenderei in considerazione che i piccoli consigli sui file di paging potrebbero essere dannosi e raccomanderei invece una pratica standard.
mafu,

6

Non hai menzionato se si tratta di un'edizione a 64 bit di Windows, ma credo di si.

Il file di paging serve molte cose, tra cui la generazione di un dump della memoria in caso di BSoD (Blue Screen of Death).

Se non si dispone di un file di paging, Windows non sarà in grado di eseguire il paging su disco se la memoria non è sufficiente. Potresti pensare che con 8 GB non raggiungerai quel limite. Ma potresti avere programmi scadenti che perdono memoria nel tempo.

Penso che non ti lascerà andare in letargo / standby senza un file di paging (ma non ci ho ancora provato).

Windows 7/2008 / Vista non modifica l'utilizzo del file di paging.

Ho visto una spiegazione di Mark Russinovich (Microsoft Fellow) che spiega che Windows può essere più lento senza file di pagina rispetto a un file di pagina (anche con molta RAM). Ma non riesco a ritrovare la causa principale.

Spazio su disco insufficiente? Terrei un minimo di 1 GB per poter avere un dump del kernel in caso di un BSoD.


Intendi questo? blogs.technet.com/markrussinovich/archive/2008/11/17/… In tal caso, il suo consiglio è scadente. Dice che il file di paging aumenterà le prestazioni perché se darebbe più ram ad altre app. È vero, se non hai molto ariete. Ma se hai più che sufficiente, il file di paging non è mai più veloce.
Pirolistico il

era in un video interno con Salomon. Aveva a che fare con il pool di pagine del kernel
Mathieu Chateau,

Non puoi pubblicare una "risposta" quando non ne hai idea: ho un laptop Windows Vista a 32 bit con 4 GB di RAM e lo metto sempre in standby. Puoi almeno limitarti a fornire risposte a domande a cui conosci effettivamente le risposte?
PP.

Cosa ha cercato di dire PP: Il processo di ibernazione utilizza un file separato dal file di scambio, quindi questo non è un problema in questo caso.
mafu,

Pirolistico, probabilmente è troppo tardi per vederlo, ma capovolgi la tua affermazione e formulala come una domanda: quando il file di paging rallenta qualcosa? Una buona risposta a ciò proverebbe la tua teoria.
quux

5

Ho disabilitato il mio file di paging (8 GB su un laptop x86) e ho avuto due problemi anche con 2500 MB gratuiti:

  1. Errore ASP.NET durante il tentativo di attivazione del servizio WCF : controllo dei gate di memoria non riuscito perché la memoria libera (399.556.608 byte) è inferiore al 5% della memoria totale. Di conseguenza, il servizio non sarà disponibile per le richieste in arrivo. Per risolvere questo problema, ridurre il carico sulla macchina o regolare il valore di minFreeMemoryPercentageToActivateService sull'elemento di configurazione serviceHostingEnvironment.

    Abbastanza come 3,7 GB è inferiore al 5% di 8 GB che non saprò mai !!

  2. Come chiudere i programmi per prevenire la perdita di informazioni : quando si utilizza il 75% della mia RAM, viene visualizzata una finestra di dialogo che mi dice di chiudere i programmi. Puoi disabilitarlo con una modifica del registro (o eventualmente disabilitando il "Servizio criteri di diagnostica").

Alla fine ho deciso di riaccenderlo. Windows semplicemente chiaro e semplice non è mai stato progettato per essere utilizzato senza un file di paging. È ottimizzato per l'esecuzione con il paging, non senza. Se hai intenzione di utilizzare più del 75% della tua memoria e non vuoi fare confusione con il tuo registro, allora potrebbe non essere adatto a te.


1
L'errore ASP.NET mi sembra forse un problema a 32 bit, ma se il numero fornito è corretto (399556608 = 399.556.608), allora l'errore è corretto - ~ 400 MB è circa il 5% di 8 GB.
fencepost,

@fencepost buona cattura - deve averlo letto come kb per qualche motivo. strano
Simon,

5

L'unica persona che può dirti se i tuoi server o workstation "necessitano" di un file di paging sei tu , con un uso attento del monitor delle prestazioni o come si chiama in questi giorni. Quali applicazioni sono in esecuzione, quale uso stanno vedendo, e qual è il più alto possibile, l'utilizzo della memoria si potrebbe potenzialmente vedere?

Vale forse la pena compromettere la stabilità per risparmiare una piccola quantità di denaro su dischi rigidi più piccoli?

Cosa succede quando scarichi una patch molto grande, ad esempio un service pack. Se il servizio di installazione decide che ha bisogno di più memoria di quanto pensassi di decomprimere la patch, e allora? Se il tuo antivirus (giustamente) decide di scansionare questo pacchetto molto grande, quale tipo di memoria avrà bisogno mentre decomprime e scansiona questo file di patch - spero che il file di archivio di patch non contenga alcun archivio stesso, perché sarebbe assolutamente figure dell'uso della memoria del delitto .

Quello che posso dirti è che la rimozione del file di paging ha una probabilità molto maggiore di danneggiare che aiutare. Non riesco a vedere un motivo per cui non ne avresti avuto uno - sono sicuro che potrebbero esserci alcuni casi specialistici in cui mi sbaglio su quello, ma questa è un'altra area.


2

La tua memoria totale disponibile è il tuo file di paging + memoria effettiva.

La domanda chiave è se l'utilizzo di memoria totale previsto per tutte le app e l'utilizzo del sistema operativo si avvicinano a 8 GB. Se l'utilizzo medio di mem è di 2 GB e l'utilizzo massimo di memoria è di soli 4 GB, avere un file di paging è inutile. Se l'utilizzo della memoria massima è più vicino a 6-7 Gb o maggiore di è una buona idea avere un file di paging.

PS: non dimenticare di consentire la crescita in futuro!


Non intendi la memoria totale potenzialmente disponibile? La maggior parte dei sistemi di paginazione mantiene copie di pagine di istantanee.
Jé Queue,

Si noti che esiste anche la memoria del pool di paging, che può esaurirsi anche se si utilizzano solo 2 GB di memoria fisica.
Tamara Wijsman,

2

Sembra che molte persone fortemente limitate abbiano un'opinione su questo argomento, ma in realtà non hanno mai provato a far funzionare il proprio computer senza un file di paging.

Pochi, se non quasi nessuno, ci hanno provato. Ancor meno sembrano sapere come Windows tratta il file di paging. Non si "riempie" solo quando si esaurisce la RAM fisica. Scommetto che molti di voi non sapevano nemmeno che la vostra RAM "gratuita" viene utilizzata come cache di file!

È possibile ottenere enormi miglioramenti delle prestazioni disabilitando il file di paging. Il tuo sistema sarà più suscettibile agli errori di memoria insufficiente (e sai come rispondono le tue applicazioni in quello scenario - per la maggior parte il sistema operativo ha appena terminato l'applicazione). I tempi di avvio da standby o lunghi periodi di inattività saranno molto più rapidi.

Se Microsoft effettivamente ti consentisse di impostare un'opzione per cui il file di paging viene utilizzato SOLO quando la RAM fisica è esaurita (e tutti i buffer di file sono stati scartati), penso che ci sarebbe poco da guadagnare disabilitando il file di paging.


La disabilitazione del file di paging comporta un peggioramento delle prestazioni, non si vedrà alcun miglioramento delle prestazioni dall'introduzione del carico di memoria. L'uso del file di paging solo quando hai memoria
insufficiente

-3

Questo è un antidoto, ma eseguiamo un Terminal Server Windows Server 2003 per circa 20 utenti, con 10-15 di accesso alla volta e 8 GB di RAM. Non eseguiamo un file di paging e il nostro server funziona più velocemente di prima. Questa ovviamente non è una soluzione per tutto, ma abbiamo corso in questo modo per due anni ormai e non ho avuto problemi di cui sono a conoscenza.


1
Hai dei problemi ma non li noti, considera come un aumento del carico di memoria può rallentare la richiesta simultanea. Abilitare il file di paging rende questi momenti più scattanti ...
Tamara Wijsman,
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.