Hat die Änderung der DisablePagingExecutive-Registrierung tatsächliche Auswirkungen?

9

In der Vergangenheit habe ich auf einer Reihe von Computern in verschiedenen Windows-Versionen (2000, XP und ohne Vista) DisablePagingExecutive aktiviert, um die Leistung zu verbessern. In jedem Fall, und ich hatte viel Gedächtnis, und besonders im aktuellen Fall. Nachdem ich diese Registrierungsoptimierung und den Neustart aktiviert habe, habe ich nach einer Weile den Task-Manager überprüft und zeige immer noch einen großen Teil des Kernels auf der Festplatte, obwohl ich 2 GB physischen Speicher frei habe.

Hat jemand diese Optimierung jemals erfolgreich eingesetzt? Je? Möglicherweise wird beim Überprüfen des Task-Managers (Registerkarte Leistung -> Abschnitt "Kernel-Speicher") die falsche Anzeige angezeigt, aber ich möchte verhindern, dass Windows alles, was es kann, auf die Festplatte überträgt, insbesondere angesichts der Menge des darin bereitgestellten Speichers Desktops in diesen Tagen. Es scheint, als ob eine Option "Seite auf Festplatte nur mit extremem Speicherdruck" vorhanden sein sollte - gibt es eine?

SqlRyan
quelle

Antworten:

13

Im Internet herrscht eine enorme Verwirrung hinsichtlich dieser Funktion. Die Einstellung wirkt sich nur auf einen Teil des Kernels aus, der als Executive bezeichnet wird, und dann nur auf die Teile, die pageable sind. Es gibt andere Teile des Kernels, die von dieser Einstellung völlig unberührt bleiben.

Kernel-Paging funktioniert genauso wie jedes andere Paging. Code und Daten, auf die häufig zugegriffen wird, werden im RAM gespeichert, während der Rest auf der Festplatte verbleibt - wo er hingehört. Das System entfernt keinen Teil des Kernels aus dem RAM, es sei denn, es hat eine bessere Verwendung dafür gefunden. Microsoft hat den Paging-Systemen eine enorme Menge an Forschung und Tests gewidmet.

Im Kontext des Kernels bedeutet "Nicht ausgelagert" Code und Daten, die unter keinen Umständen ausgelagert werden können. "Ausgelagert" bedeutet Code und Daten, die bei Bedarf ausgelagert werden können. Wie viel tatsächlich ausgelagert wird, kann der Task-Manager nicht ablesen. Ein Teil des ausgelagerten Codes wurde nie von der Festplatte gelesen, da er noch nicht benötigt wurde. Nicht auf den gesamten Kernel wird häufig zugegriffen. Sie sollten nicht erwarten, dass Paged- und Nonpaged-Nummern durch die betreffende Einstellung beeinflusst werden.

Hinweis: Wenn Code ausgelagert wird, wird er normalerweise nicht in die Auslagerungsdatei kopiert. Dies ist nicht erforderlich, da es einfach aus den Originaldateien neu geladen werden kann. Dies gilt für den meisten Code, nicht nur für das Kerenl.

Mit einer angemessenen Menge an RAM wird die Einstellung im Wesentlichen nichts bewirken. Es verhindert einfach, dass das System Daten auslagert, die es ohnehin nicht auslagern wollte.

Larry Miller
quelle
4

Ich bin mir nicht sicher, ob Sie dies erkennen, aber Seitenfehler sind der Mechanismus, mit dem Windows ausführbaren Code lädt. So wird beispielsweise eine DLL dem virtuellen Speicher zugeordnet, und dann werden Seitenfehler verwendet, um das eigentliche Laden von der Festplatte nach Bedarf durchzuführen. Die Auslagerungsdatei ist daran nicht beteiligt.

Viele Dinge, die Sie als "auf die Festplatte ausgelagert" betrachten, könnten also Dinge sein, die sich überhaupt auf der Festplatte befanden.

Will Dean
quelle
Ich habe das nicht bemerkt und es macht Sinn, obwohl ich nicht denke, dass es meine Frage beantwortet. Wenn ich das Paging des Windows-Kernels deaktiviere, warum teilt mir mein Task-Manager weiterhin mit, dass 75% davon ausgelagert sind (400 MB Kernel insgesamt mit 275 MB ausgelagert)? Dies geht auch nicht auf meine Frage ein, warum Windows so stark zu blättern scheint, wenn noch mehrere GB RAM frei sind.
SqlRyan
1
Sie lesen "ausgelagert" als "ausgelagerten beschreibbaren Speicher", während "ausgelagert" im Kontext des Kernelspeichers "ausgelagert" werden kann und "nicht ausgelagert" bedeutet, dass "nie ausgelagert" wird -aus'. Letzteres ist wichtig für die KM-Programmierung, wenn Sie Speicher benötigen, wenn das Funkrufsystem nicht funktionieren kann (z. B. Interrupt-Handler).
Will Dean
Im Zusammenhang mit den von Ihnen verwendeten Begriffen (ich bin kein Kernel-Entwickler, daher weiß ich es nicht besser) würde ich erwarten, dass diese Registrierungsänderung den gesamten Kernel als "nicht ausgelagert" markiert (was "wird" bedeutet) niemals ausgelagert werden "), und das ist nicht das, was es tut. Ich wollte nur sehen, ob andere die gleichen Erwartungen wie ich hatten oder ob ich falsch interpretierte, was diese Änderung bewirken sollte.
SqlRyan
3

Nur um eine zusätzliche Verwendung dieser Einstellung hinzuzufügen: Sie wird beim xperfStapeln benötigt .

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

Paging Executive deaktivieren

Damit die Ablaufverfolgung unter 64-Bit-Windows funktioniert, müssen Sie den Registrierungsschlüssel DisablePagingExecutive festlegen. Dies weist das Betriebssystem an, die Treiber im Kernelmodus und den Systemcode nicht auf die Festplatte zu übertragen. Dies ist eine Voraussetzung für das Abrufen von 64-Bit-Aufrufstapeln mit xperf, da das Gehen von 64-Bit-Stapeln von den Metadaten in den ausführbaren Images und in einigen Situationen von den Metadaten abhängt Der xperf-Stack-Walk-Code darf keine ausgelagerten Seiten berühren.

Eine zusätzliche Information über die Einstellung. Dieses Zitat kann über das Internet gefunden werden, ich kenne seine primäre Quelle nicht.

DisablePagingExecutive gilt nur für ntoskrnl.exe. Dies gilt nicht für win32k.sys (viel größer als ntoskrnl.exe!), Die Seiten anderer Treiber, den ausgelagerten Pool und natürlich den Dateisystem-Cache. Alle befinden sich im Kernel-Adressraum und werden auf die Festplatte ausgelagert. Auf Systemen mit wenig Speicher kann dies dazu führen, dass Anwendungscode unnötig ausgelagert wird, und die Leistung verringern. Wenn Sie mehr als genug RAM für Ihre Workload haben, schadet dies nicht, aber wenn Sie mehr als genug RAM für Ihre Workload haben, paginiert das System sowieso nicht sehr viel davon. Diese Einstellung ist beim Debuggen von Treibern hilfreich und wird im Allgemeinen nur für Server empfohlen, auf denen eine begrenzte Anzahl bekannter Anwendungen ausgeführt wird

Man kann also schlussfolgern, dass neben der xperfVerwendung der Nutzen unklar ist: Im Wesentlichen werden einige "fast zufällige" Dinge durch Paging und weitere Überlegungen eingeschränkt - was dazu führt, dass stattdessen etwas anderes häufiger ausgelagert wird.

Roland Pihlakas
quelle
2

Die Optimierung von DisablePagingExecutive beendet das Paging nicht. Sie soll verhindern, dass der "Executive" (dh der Kernel selbst) ausgelagert wird und somit das gesamte System verlangsamt, nicht nur einzelne ausgelagerte Apps.

Sie können versuchen, das Paging vollständig zu deaktivieren, indem Sie alle Auslagerungsdateien in den Systemeigenschaften (oder in HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ PagingFiles) entfernen. Dies funktioniert gut für mich, aber die Dinge werden ziemlich unangenehm, wenn Ihnen der physische Speicher ausgeht und Sie eine Auslagerungsdatei benötigen, um STOP-Fehler zu debuggen.

Froosh
quelle
Ich habe ein paar Tage lang keine Auslagerungsdatei ausgeführt und es funktioniert ziemlich gut. Windows 7 bietet tatsächlich Vorschläge für speicherhungrige Apps, die beendet werden sollen, wenn sie langsam zur Neige gehen.
Froosh
1

Komponenten auf Systemebene, wie Kernel-, Executive- und Gerätetreiber, können Speicher aus zwei Pools zuweisen. Dies sind der ausgelagerte Pool, der nach Ermessen des Speichermanagers ausgelagert werden kann, und der nicht ausgelagerte Pool, der jederzeit im RAM verbleiben muss. Der Entwickler entscheidet nach seinen Bedürfnissen, welcher Pool verwendet wird. Es wird empfohlen, den ausgelagerten Pool nach Möglichkeit zu verwenden, da dies dem Systemspeichermanager maximale Flexibilität ermöglicht. Beide Pools sind von begrenzter Größe und insbesondere in 32-Bit-Systemen können diese Grenzen ein Problem darstellen. Der ausgelagerte Pool ist erheblich größer. Wenn der nicht ausgelagerte Pool übermäßig verwendet würde, könnte die Größenbeschränkung erreicht werden, was einige schwerwiegende Systemprobleme verursachen würde.

Die im Task-Manager als "Paged" - und "Non Paged" -Kernelspeicher gekennzeichneten Elemente zeigen die Zuordnungen dieser Pools an. Es hat absolut nichts mit dem dynamischen Zustand zu tun, wie viel Speicher tatsächlich ausgelagert wird. Der Registrierungseintrag "DisablePagingExceutive" beeinflusst den dynamischen Paging-Status eines Teils des Paged Pools, sodass die Auswirkungen von ask Manager niemals angezeigt werden.

Larry Miller
quelle
1

Wenn Sie eine Änderung an einer Systemeinstellung vornehmen, müssen Sie diese oder die entsprechenden Informationen verstehen, um zu wissen, welche Art von Ergebnissen eine Änderung der Systemeinstellung bewirkt, bei der die Ergebnisse positiv, neutral oder negativ sein können System Geschwindigkeit.

Sie können "Ressourcenmonitor" in Windows öffnen. Gehen Sie zum Suchwerkzeug und suchen Sie nach "Ressourcenmonitor". Oder öffnen Sie das Befehlswerkzeug run (ich gehe davon aus, dass jeder, der dies liest, weiß, wie das geht) und geben Sie 'resmon' ein.

Verwenden Sie dieses Tool, um alle Arten von Systemaktivitäten zu überwachen, z. B. CPU-Aktivität, Speicheraktivität und Festplattenaktivität. Wenn Sie mit den Informationen, die der Ressourcenmonitor enthält, noch nicht vertraut sind, lesen Sie sie ein wenig, da Sie mit ihnen vertraut sein müssen, um Tests durchzuführen, mit denen Sie die Art der Ergebnisse messen können, die eine Änderung an einer Systemeinstellung bewirkt.

Die Grundidee ist, dass Sie 'Resource Monitor' ausführen, wenn Ihr Computersystem bestimmte Aufgaben ausführt, um die leistungsbezogenen Ergebnisse zu messen, die durch eine Änderung der Systemeinstellungen erzielt werden. Führen Sie Aufgaben aus, die die Systemressourcen verwenden, deren Leistung Sie testen möchten. Beispielsweise gibt es Aufgaben, mit denen der Prozessor, der RAM-Speicher, die Festplatte (n), die Grafikprozessoreinheit oder ein Netzwerkgerät getestet werden können. Verwenden Sie Google, um herauszufinden, wie Sie die Leistung der zu testenden Computerressourcen testen können.

Wenn Sie beispielsweise die Systemeinstellung "Paging Executive deaktivieren" ändern, können Sie einen Test für die Computerressourcen ausführen und mithilfe des Ressourcenmonitors messen, welche Art von Ergebnissen die Änderung erzielt (falls überhaupt eine Änderung vorliegt).

Vergleichen Sie dann die Daten und prüfen Sie, ob zwischen der alten und der von Ihnen geänderten neuen Systemeinstellung signifikante Unterschiede bestehen.

Möglicherweise müssen Sie den Ressourcenmonitor nicht immer verwenden, da einige Methoden zum Testen der Systemressourcenleistung mit einer Software geliefert werden, die Sie überwacht und misst.

Der Punkt ist, dass Sie einer systematischen Methode folgen möchten, um festzustellen, ob eine Änderung die Leistung Ihres Systems in Bezug auf die Aufgaben, die der Computer ausführen soll, überhaupt beeinflusst.

Ändern Sie eine Einstellung. Testen Sie es auf Leistungsänderungen. Bestimmen Sie die Testergebnisse. Entscheiden Sie anhand der Ergebnisse, ob Sie die Einstellung wieder auf das ändern, was sie war, oder auf etwas anderes, oder lassen Sie sie dort, wo sie ist. 1) Einstellung 2) Test 3) Ergebnisse 4) Entscheidung.

Sie können diese Methode der logischen Ableitung für alle Arten von Systemeinstellungsanpassungen verwenden, einschließlich "Paging Executive deaktivieren".

Viel Spaß beim Tweaken.

WestdoX
quelle
1

Da ist viel! Von sehr guten Informationen zu diesem Beitrag war ich beeindruckt. Ich habe festgestellt, dass DisablePagingExecutive mit dem Wert eins am besten am ersten Standort des Desktops nach einer Neuinstallation einer Windows-Version von XP auf Windows 10, 32 Bit bis 64 Bit (solange genügend RAM auf Ihrem Motherboard vorhanden ist) ausgeführt wird Nachdem der Wert 1 auf DisablePagingExecutive angewendet wurde, muss der gleiche Wert auch auf LargeSystemCache angewendet werden.

Wie oben erwähnt, werden diese Optimierungen normalerweise auf Windows-Servern vorgenommen, sind aber auch beim Debuggen praktisch.

Diese Änderungen werden auf eigenes Risiko verwendet. Berücksichtigen Sie also, was alle oben erwähnt haben. Es schadet auch nicht, jeden der genannten Schlüssel zu googeln, die DisablePagingExecutive und 1 waren. Ich erinnere mich nicht, dass ich ... LargeSystemCache gesehen habe.

Stellen Sie sicher, dass Sie genug RAM haben. Nicht genügend RAM verursacht Probleme auf Ihrem System, mit denen Sie sich nicht befassen möchten, und würde wahrscheinlich einen Bluescreen (bsod) auf Ihrem System verursachen.

4 GB RAM sind das Minimum, auf das ich diese Optimierungen oben anwenden würde, und das ist, wenn Sie keine intensiven Anwendungen verwenden, die viel RAM verwenden, oder wenn Sie Spiele spielen, wenn Sie dies tun, ist es am besten, diese in Ruhe zu lassen.

(XP: mindestens 256 MB RAM)

Bevor Sie etwas in der Registrierung tun, ist es eine gute Idee, die Registrierung auf einem Speichergerät zu speichern, statt auf der Festplatte des Betriebssystems oder einem separaten Speicher jeglicher Art, damit Sie die Registrierung bei Bedarf wiederherstellen können.

Die Informationen über mir kreuzen wirklich die T's und punktieren die i's.

                    Make sure to backup your system.
Smirk24
quelle