La modifica del registro di DisablePagingExecutive ha effetti effettivi?


9

In un certo numero di macchine in passato, attraverso diverse versioni di Windows (2000, XP e senza Vista), ho abilitato DisablePagingExecutive per provare a migliorare le prestazioni. In ogni caso, e ho avuto un sacco di memoria, e soprattutto nel caso attuale. Tuttavia, dopo aver abilitato questa modifica e il riavvio del registro, dopo un po 'ho controllato il task manager e continuo a mostrare un grosso pezzo del kernel impaginato sul disco, anche se ho 2 GB di memoria fisica libera.

Qualcuno ha mai usato questo tweak con successo? Mai? Forse visualizzo l'indicatore errato quando controllo il task manager (scheda Prestazioni -> sezione "Memoria del kernel"), ma vorrei impedire a Windows di eseguire il paging di tutto il possibile su disco, in particolare considerando la quantità di memoria fornita in desktop in questi giorni. Sembra che dovrebbe esistere un'opzione "Non eseguire la pagina su disco a meno che non vi sia una pressione estrema della memoria" - ce n'è una?

Risposte:


13

C'è un'enorme confusione su Internet riguardo a questa funzione. L'impostazione ha effetto solo su una parte del kernel nota come executive, e quindi solo sulle porzioni che sono pagabili. Ci sono altre parti del kernel che non sono completamente interessate da questa impostazione.

Il paging del kernel funziona allo stesso modo di qualsiasi altro paging. Il codice e i dati a cui si accede frequentemente verranno conservati nella RAM, mentre il resto rimarrà sul disco, a cui appartiene. Il sistema non rimuoverà alcuna parte del kernel dalla RAM a meno che non abbia trovato un uso migliore per esso. Microsoft ha dedicato un'enorme quantità di ricerche e test ai sistemi di paging.

Nel contesto del kernel "Non di paging" significa codice e dati che non possono mai essere pagati in nessuna circostanza. "Paged" indica il codice e i dati che POSSONO essere pagati se necessario. Quanto è effettivamente impaginato IS è impossibile dire dal Task Manager. Una parte del codice che è stata pagata non è mai stata letta dal disco perché non era ancora necessaria. Non tutto l'accesso al kernel è frequente. Non ci si dovrebbe aspettare che i numeri paginati e non pagati vengano effettuati dall'impostazione in questione.

Nota: quando si esegue il paging del codice, il codice non viene normalmente copiato nel file di paging. Questo non è necessario in quanto può semplicemente essere ricaricato dai file originali. Questo vale per la maggior parte del codice, non solo per il kerenl.

Con una ragionevole quantità di RAM, l'impostazione non farà sostanzialmente nulla. Impedisce semplicemente al sistema di eseguire il paging dei dati che non ha voluto comunque effettuare il paging.


4

Non sono sicuro che te ne renda conto, ma gli errori di pagina sono il meccanismo che Windows utilizza per caricare il codice eseguibile. Quindi, ad esempio, una DLL viene mappata sulla memoria virtuale e quindi gli errori di pagina vengono utilizzati per eseguire il caricamento effettivo dal disco come richiesto. Il file di paging non è coinvolto in questo.

Quindi un sacco di ciò che pensi come "impaginato su disco" potrebbe essere roba che era sul disco in primo luogo.


Non me ne sono reso conto, e ha senso, anche se non credo che risponda alla mia domanda. Se disabilito il paging del kernel di Windows, perché il mio task manager continua a dirmi che è stato eseguito il paging del 75% di esso (totale del kernel 400 MB con paginato 275 MB)? Anche questo non risponde alla mia domanda sul perché Windows sembra sfogliare così pesantemente quando ci sono ancora più GB di RAM liberi.
SqlRyan,

1
Stai leggendo "impaginato" come "memoria scrivibile che è stata pagata", mentre nel contesto della memoria del kernel, "impaginato" significa "potrebbe essere impaginato" e "non impaginato" significa "non verrà mai impaginato" -su'. Quest'ultimo è importante per la programmazione KM quando è necessaria memoria in circostanze in cui il sistema di paging non può funzionare (gestori di interrupt, ad esempio).
Will Dean,

Nel contesto dei termini che stai usando (non sono uno sviluppatore del kernel, quindi non ne so di meglio), mi aspetto che questa modifica del registro segnerà l'intero kernel come "non paginato" (che significa " mai essere sfogliato "), e non è quello che fa. Volevo solo vedere se gli altri avevano le mie stesse aspettative, o se stavo interpretando male ciò che questo cambiamento avrebbe dovuto fare.
SqlRyan,

3

Solo per aggiungere un ulteriore uso di questa impostazione: è necessario per xperf camminare in pila.

http://blogs.msdn.com/b/pigscanfly/archive/2009/08/06/stack-walking-in-xperf.aspx

Disabilita il paging esecutivo

Affinché la traccia funzioni su Windows a 64 bit, è necessario impostare la chiave del Registro di sistema DisablePagingExecutive. Questo dice al sistema operativo di non eseguire il paging dei driver in modalità kernel e del codice di sistema su disco, il che è un prerequisito per ottenere stack di chiamate a 64 bit usando xperf, perché lo stack walking a 64 bit dipende dai metadati nelle immagini eseguibili e in alcune situazioni il Il codice walk stack xperf non è autorizzato a toccare le pagine paginate.

Un'ulteriore informazione sull'impostazione. Questa citazione può essere trovata su Internet, non conosco la sua fonte principale.

DisablePagingExecutive si applica solo a ntoskrnl.exe. Non si applica a win32k.sys (molto più grande di ntoskrnl.exe!), Alle porzioni di paging di altri driver, al pool di paging e ovviamente alla cache del file system. Tutti che vivono nello spazio degli indirizzi del kernel e sono paginati su disco. Su sistemi con memoria insufficiente, questo può forzare il paging inutile del codice dell'applicazione e ridurre le prestazioni. Se disponi di RAM più che sufficiente per il tuo carico di lavoro, sì, questo non danneggerà, ma di nuovo, se hai RAM più che sufficiente per il tuo carico di lavoro, il sistema non esegue comunque il paging di gran parte di quella roba. Questa impostazione è utile durante il debug dei driver e generalmente consigliata per l'uso solo su server che eseguono un set limitato di applicazioni ben note

Quindi si può concludere che, oltre xperfall'utilizzo, il suo vantaggio è oscuro: essenzialmente limita alcune cose "quasi casuali" dal paging e da ulteriori riflessioni - di conseguenza, invece, viene eseguito il paging di qualcos'altro più spesso.


2

La modifica di DisablePagingExecutive non interrompe il paging, il suo scopo era quello di impedire che "Executive" (ovvero il kernel stesso) venisse impaginato e causando così il rallentamento dell'intero sistema, non solo le singole app paginate.

È possibile provare a disabilitare completamente il paging rimuovendo tutti i file di paging in Proprietà del sistema (o in HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ PagingFiles). Questo funziona bene per me, ma le cose diventano piuttosto spiacevoli quando si esaurisce la memoria fisica e per eseguire il debug degli errori STOP è necessario disporre di un file di paging.


Sono in esecuzione senza file di paging per alcuni giorni e funziona abbastanza bene, Windows 7 offre in realtà suggerimenti di app che richiedono fame di memoria da uccidere quando inizia a esaurirsi.
Froosh,

1

I componenti a livello di sistema, come kernel, executive e driver di dispositivo, possono allocare memoria da due pool. Questi sono il pool di paging, che può essere eseguito il paging a discrezione dei gestori di memoria, e il pool non di paging che deve rimanere sempre nella RAM. Lo sviluppatore decide in base alle sue esigenze quale pool verrà utilizzato. Si consiglia di utilizzare il pool di paging ogni volta che ciò è possibile in quanto ciò consente al gestore della memoria di sistema la massima flessibilità. Entrambi i pool sono di dimensioni limitate e in particolare nei sistemi a 32 bit questi limiti possono rappresentare un problema. Il pool di paging è considerevolmente più grande. Se il pool non di paging fosse utilizzato eccessivamente, si potrebbe raggiungere il limite di dimensione e ciò causerebbe alcuni gravi problemi di sistema.

Gli elementi etichettati in Task Manager come memoria del kernel "Paged" e "Non paged" mostrano le allocazioni di questi pool. Non ha assolutamente nulla a che fare con lo stato dinamico di quanta memoria viene effettivamente paginata. La voce del Registro di sistema "DisablePagingExceutive" influenza lo stato di paging dinamico di una parte del pool di paging, pertanto i suoi effetti non verranno mai mostrati da ask Manager.


1

Se si modifica un'impostazione di sistema, è necessario comprendere queste informazioni o l'equivalente di esse al fine di conoscere il tipo di risultati apportati da una modifica alle impostazioni di sistema, in cui i risultati potrebbero essere positivi, neutri o negativi rispetto a prestazione del sistema.

Quello che puoi fare è aprire "Monitor risorse" in Windows. Vai allo strumento di ricerca e cerca "Monitoraggio risorse". Oppure apri lo strumento di comando Esegui (suppongo che chiunque legga questo sappia come farlo) e digita 'resmon'.

Utilizzare questo strumento per monitorare tutti i tipi di attività del sistema, come l'attività della CPU, l'attività della memoria e l'attività del disco rigido. Se non hai già familiarità con le informazioni contenute in "Monitoraggio risorse", studiale un po 'perché dovrai conoscerlo per eseguire test che ti aiuteranno a misurare il tipo di risultati apportati da un'impostazione di sistema.

L'idea di base è che si esegue 'Resource Monitor' quando il sistema del computer esegue determinate attività per misurare i risultati relativi alle prestazioni apportati da una modifica delle impostazioni di sistema. Esegui attività che utilizzano le risorse di sistema di cui stai provando a testare le prestazioni. Ad esempio, ci sono attività che possono testare il processore, la memoria RAM, i dischi rigidi, l'unità di elaborazione grafica o un dispositivo di rete. Usa google per scoprire come testare le prestazioni delle risorse del computer che desideri testare.

Se, ad esempio, si apporta una modifica alle impostazioni di sistema, "Disattiva Paging Executive", è possibile eseguire un test sulle risorse del computer e utilizzare "Resource Monitor" per misurare il tipo di risultati apportati dalla modifica (se del caso).

Quindi fai un confronto tra i dati e vedi se ci sono differenze significative tra le impostazioni del vecchio sistema e le nuove impostazioni di sistema che hai modificato.

Potrebbe non essere necessario utilizzare sempre 'Monitor risorse' poiché alcuni metodi di test delle prestazioni delle risorse di sistema vengono forniti con software che monitora e misura per te.

Il punto è che vuoi seguire un metodo sistematico per vedere se una modifica fa qualcosa per le prestazioni del tuo sistema rispetto alle attività che richiedi al computer di eseguire.

Cambia un'impostazione. Provalo per il cambiamento delle prestazioni. Determinare i risultati del test. In base ai risultati, decidi se modificare l'impostazione su come era, o su qualcos'altro, o lasciarlo dove si trova. 1) Impostazione 2) Test 3) Risultati 4) Decisione.

È possibile utilizzare questo metodo di detrazione logica per tutti i tipi di regolazioni delle impostazioni di sistema, tra cui "Disabilita esecutivo paging".

Happy Tweaking.


1

Ce n'è tanto! Di ottime informazioni su questo post sono rimasto colpito. Ho notato che DisablePagingExecutive con un valore di uno viene eseguito meglio nel primo sito del desktop dopo un'installazione pulita di qualsiasi versione di Windows da XP a Windows 10, da 32 bit a 64 bit (purché ci sia abbastanza RAM sulla scheda madre) ma dopo che il valore 1 è stato applicato a DisablePagingExecutive, lo stesso valore deve essere impostato anche su LargeSystemCache.

Inoltre, come accennato in precedenza, queste modifiche vengono solitamente eseguite nei server Windows, ma sono utili anche durante il debug.

Queste modifiche vengono utilizzate a proprio rischio, quindi prendere in considerazione ciò che tutti hanno menzionato sopra, inoltre non fa male a Google ciascuna delle chiavi menzionate che erano DisablePagingExecutive e 1 che non ricordo di aver visto ... LargeSystemCache.

Assicurati di avere abbastanza ariete. Ram insufficiente causa problemi al sistema che non si desidera affrontare e probabilmente causerebbe una schermata blu (bsod) sul sistema.

4 GB di RAM saranno il minimo a cui applicherei queste modifiche sopra e questo se non usi applicazioni intense che usano molta RAM o se fai qualche gioco, se lo fai allora è meglio lasciarle da sole.

(XP: almeno 256 mb di RAM minimo)

Prima di fare qualsiasi cosa nel registro è una buona idea caricare il registro su un dispositivo di archiviazione piuttosto che sul disco rigido del sistema operativo o su una memoria separata di QUALSIASI tipo in modo da poter ripristinare il registro se necessario.

Le informazioni sopra di me attraversano davvero le T e punteggiano le i.

                    Make sure to backup your system.
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.