Bei VirtualLock wird die Quote in Eile nicht erreicht, auch wenn Sie dem Benutzer eine Berechtigung erteilen (standardmäßig enthält die Sicherheitsrichtlinieneinstellung "Seiten im Speicher sperren" keine Einträge (nicht einmal admin)).
Wenn Sie dies konfigurieren, müssen Sie auch "Speicherkontingente für einen Prozess anpassen" festlegen.
Diese Frage ist ein wenig mehrdeutig, welchen Teil des VM-Speicherplatzes möchten Sie nicht auslagern? Heap/Stack/Module? ...?
Insgesamt eine Lösung, die ich in der Vergangenheit verwendet hatte, ist eine DLL mit einem großen Abschnitt zu erstellen, der READ + WRITE, nicht bewegbar war, Sie können es auch als EXECUTE und SHARED markieren, aber dann würde ich HeapCreate in den Abschnitt dieses Moduls, so dass ich es als Heap verwenden kann.
Sie können die genauen Bits nachschlagen here, IMAGE_SCN_MEM_NOT_PAGED
sieht aus wie es den Trick tun würde.
Wenn Sie alle Ihre Module und Abschnitte mit diesem Bit markieren, wird der Windows-Modullader keine spezifischen Benutzerkontingente berechnen oder erfordern, dass die Richtlinieneinstellungen auf jedem System geändert werden, auf dem Sie den Code bereitstellen. Sie müssen eine spezielle Shim-Codierung einprogrammieren, um Zugang zu den HEAPs zu erhalten, die Sie auch in diesen NON_PAGEABLE-DLLs erstellen.
Es ist ein bisschen Arbeit, aber es funktionierte für mich in der Vergangenheit, ich hatte die zusätzliche Anforderung, Speicher an mehrere Prozesse zu teilen, die an der gleichen Adresse basierte.
Ich würde denken, die einfachste Sache zu versuchen wäre, Ihre Seite Datei vollständig zu deaktivieren. Aber vorher, wenn Sie Vista/2008 + OS verwenden, kann der Wechsel, den Sie sehen, auf Superfetch zurückzuführen sein, der Ihr System proaktiv mit der Annahme "anpas- sen" könnte, dass Sie in naher Zukunft die eine oder andere Anwendung verwenden müssen. Einige andere einfache Aufgaben wären, unbenutzte Dienste wie die Suche zu stoppen, die große Mengen von Dateien indizieren könnten. Sie sollten auch in Ihren "Task Scheduler" gehen, der Systemaufgaben konfiguriert. Standardmäßig sind auf den meisten Systemen einige Dutzend voreingestellt Aktionen, die alle Dr. Watson-Dumps an MS weiterleiten, defragmentieren Sie Ihr Laufwerk und eine Reihe anderer möglicherweise äußerst speicherintensiven Typ Operationen.
Sie könnten etwas detaillierter antworten, um bessere Antworten zu erhalten ... aber ein anderer Vorschlag wäre, einfach ein großes Solid-State-Laufwerk zu kaufen und dieses ausschließlich zum Tausch zu verwenden, achten Sie darauf, dass sich diese im Laufe der Zeit verschlechtern eine Größe aufgrund fehlerhafter Blockzuordnungen, die bei allen vorhandenen SSD-Technologien üblich sind.
ich auf einem Codeplex-Projekt vor kurzem kam "non-paged clr host" genannt, von ihrer Seite:
Umsetzung Von einer Umsetzung Sicht des nicht ausgelagerten CLR-Host verwendet den SetProcessWorkingSetSize, SetProcessWorkingSetSizeEx (unter Windows Server 2003 und höher) und VirtualLock APIs zu ensu Re, dass Speicher von ihm zugewiesen ist in physischen Speicher gesperrt. Beachten Sie, dass die oben genannten APIs tut nichtGarantie mit absoluter Sicherheit , dass kein Paging auftreten wird; stattdessen minimiert die Chancen davon zu sehr außergewöhnliche Szenarien auftreten. In einigen Belastungstests haben wir durchgeführt, auch , wenn das System als Ganzes durch einen Mangel an physischem Speicher in Beschlag genommen wurde, keine Seite Fehler im Prozess beobachtet wurden den nicht ausgelagerten CLR-Host verwenden.
Windows-bewegt Seiten von Prozessdatensätzen arbeiten auf einer zuletzt zugegriffenen Basis. Im Allgemeinen liefert dies gute Ergebnisse, aber bestimmte Anwendungsfälle können eine Kontrolle erfordern. Bevor Sie dies tun, lesen Sie Windows Internals (um mit zu beginnen), um besser zu verstehen, was Sie versuchen zu tun. – Richard
Ich zweite den Kommentar. In den meisten Fällen führt der Versuch, den Windows-Speichermanager zu überlisten, zu einer schlechteren Leistung. –
Schlüsselfrage: Warum ist das ("beweglicher Teil des Prozessspeichers zur Auslagerungsdatei") sowieso ein Problem? – Stobor