So steuern Sie die RAM / Swap-Nutzung

18

Gibt es eine Möglichkeit (Anwendung), die RAM / Swap-Nutzungsrichtlinie auf Anwendungsebene zu steuern?

Ich habe einige Anwendungen, die ich ständig verwende, und ich möchte, dass sie die ganze Zeit im RAM bleiben. Es gibt auch Anwendungen, die ich nur sehr selten verwende und die möglicherweise bei Bedarf zum Austauschen verwendet werden. Ich weiß, dass standardmäßig konfigurierte Fenster die beste Leistung bringen sollten, aber ich möchte prüfen, ob ich mehr bekommen kann :).

Ich benutze Windows 7.

Darqer
quelle
2
+1. Ich interessiere mich für eine Methode, die für XP funktioniert.
Xavierjazz

Antworten:

9

Ja, es gibt: das Programm ruft die VirtualLock- Funktion auf:

Von einem Prozess gesperrte Seiten verbleiben im physischen Speicher, bis der Prozess sie entsperrt oder beendet. Es wird garantiert, dass diese Seiten nicht in die Auslagerungsdatei geschrieben werden, während sie gesperrt sind.

Ich glaube, dass die SetProcessWorkingSetSize- Funktion auch hilfreich sein könnte.


Für diese Leute denken , ich bin ein Ketzer noch was darauf hindeutet , dass dies könnte nützlich sein:

Beachten Sie, dass es möglicherweise gültige Gründe für das Sperren von Seiten im Speicher gibt. Ein gültiger Grund könnte sein, dass der Benutzer einen CD-Brenner ausführt und der CD-Brenner ständig ausblättert und daher einen Pufferunterlauf verursacht, wodurch ein Untersetzer erstellt wird. In diesem Fall ist es gültig, die Speicherpuffer so zu sperren, dass sie nicht ausgelagert werden, auch wenn der Rest des Computers dadurch langsamer wird, da dies immer noch besser ist, als dem Benutzer einen Untersetzer zu geben. Es kann auch andere triftige Gründe geben. Mein Punkt ist, dass es in der Regel nicht empfohlen wird, Seiten im Speicher zu sperren. Es gibt jedoch noch gültige Situationen, und ich glaube nicht, dass das Töten der Idee dem OP hier helfen würde.


Update: Werfen Sie einen Blick auf Process Hacker ‚s Reduce Working SetMenüoption.

Mehrdad
quelle
Wenn Sie dieses Bit aus dem Artikel zitieren, wird es möglicherweise in den Kontext gestellt: "Das Sperren von Seiten im Speicher kann die Leistung des Systems beeinträchtigen, indem der verfügbare Arbeitsspeicher verringert und das System gezwungen wird, andere wichtige Seiten in die Auslagerungsdatei auszutauschen ein Limit für die maximale Anzahl von Seiten, die ein Prozess sperren kann. Dieses Limit ist absichtlich klein, um schwerwiegende Leistungseinbußen zu vermeiden. " (Meine Betonung)
1
@Randolph: Ich habe es nie empfohlen , ich habe nur erwähnt, dass es, anders als die meisten anderen Leute zu denken scheinen, möglich ist . Ich persönlich hasse es, dem OP zu sagen, "Lass uns deine Idee töten" - ich denke, das OP hat verstanden, dass er das nicht tun sollte, aber wenn er es immer noch will, denke ich, dass er das Recht hat zu wissen, wie es geht. (Es gibt einen Grund , warum sie diese Funktionen erstellt haben, und ich bin nicht die Person, die beurteilt, ob das OP sie verwenden sollte oder nicht.)
Mehrdad
Es gibt eine Menge Code in Windows, der aus Gründen der Abwärtskompatibilität übrig geblieben ist. Wenn es einen Grund dafür gibt, wäre es das. Man könnte es mit der Funktion "Verkleinern" in SQL Server vergleichen, die unter keinen Umständen verwendet werden sollte, jedoch aus Kompatibilitätsgründen aktiviert wurde. Windows 7 ist ein modernes Betriebssystem mit ordnungsgemäßer Speicherverwaltung, und die Auslagerungsdatei sollte nicht gelöscht werden. Programme sollten auch nicht versuchen, außerhalb der "Regeln" im Speicher zu bleiben. Es ist eine sehr schlechte Übung und kann zu einem instabilen und / oder unbrauchbaren System führen.
1
@Randolph: (Ich sehe, Sie haben die Analogie aufgegeben.:]) Erstellen Sie ein winziges Programm (sollte nicht mehr als ~ 10 Zeilen umfassen), um den anderen Prozess zu öffnen und aufzurufen SetProcessWorkingSetSize. Das ist ein Weg. Wenn Sie natürlich nicht wissen, was das bedeutet, weil Sie kein Entwickler sind, können Sie natürlich nicht viel tun. Aber es ist immer noch möglich und zu sagen, dass es unmöglich ist, ist immer noch falsch. Es erfordert nur mehr Wissen, als das OP haben könnte.
Mehrdad
1
@Randolph, Sie können verschiedene Freeware-Apps herunterladen, mit denen alle ausgeführten Apps in die Auslagerungsdatei gelangen (indem Sie in jedem Prozess SetProcessWorkingSetSize aufrufen).
Chris O
5

Die einzige Möglichkeit, die ich gefunden habe, besteht darin, die Auslagerungsdatei zu deaktivieren. Es ist jedoch keine perfekte Lösung: Sie erhalten Fehlermeldungen, wenn Sie sich dem RAM-Limit nähern oder dieses überschreiten, und es kann sein, dass Absturzabbilder nicht richtig gespeichert werden. Schalten Sie es also wieder ein, wenn Sie Probleme beheben müssen. Abgesehen davon benutze ich Win7 seit Monaten ohne Probleme ohne Auslagerungsdatei.

Meine Erfahrung: Ich hatte dieses Problem mit einer Klaviersoftware (1 GB RAM-Verbrauch), die nach einer Weile ohne Verwendung in den Swap geworfen würde. Ein paar Stunden später eine Klaviertaste zu spielen, würde zu einem Durcheinander führen, da der Swap nicht schnell genug nachgeladen würde, damit der Sound abgespielt werden kann. (Ich würde dann meinen ganzen Arm auf jeden Schlüssel legen, um ein Nachladen zu erzwingen!)

Wenn RAM ein Problem ist, empfehle ich Ihnen, mehr zu kaufen (z. B. 8 bis 12 GB bei Windows 7 x64). Für RAM-Bewusste ist es ein Glücksfall, reichlich RAM zu haben.

Zuvor sollten Sie jedoch in Betracht ziehen, ein SSD-Laufwerk zu erwerben und Ihren Swap darauf abzulegen. Dies beschleunigt die Wiederherstellung von Auslagerungen erheblich und bietet viele weitere Systemvorteile. RAM bietet keine Vorteile, wenn es nicht verwendet wird.

mtone
quelle
3
Machen. Nicht. Löschen. Das. Seite. Datei. Je.
7
Ich habe. Gewesen. Verwenden. Win7. Mit. Seitendatei. Zum. Monate. Ohne. A. Hitch.
mtone
1
Ich benutze Win7 auch immer ohne
Auslagerungsdatei
3
@ Randolph: MS weiß, wovon sie sprechen, weil sie wissen, dass ihre Kunden nicht immer Computerprofis sind. Aber für diejenigen, die genau wissen, was die Auslagerungsdatei tut und was nicht, gibt es keinen Grund, sie zu einer Übung zu zwingen, die sie nicht brauchen.
Mehrdad
2
@Randolph: Wenn Sie ohne Sicherheitsgurt über das Tempolimit fahren, können Sie sterben und auch andere Menschen töten, ganz zu schweigen von der Erhöhung der Versicherungskosten für andere. Das Schlimmste, was passieren kann, wenn der Speicher Ihres Computers voll ist, ist, dass Sie je nach Situation ein wenig Zeit verlieren. Sehen Sie hier nicht ein wenig (sprich: viel) Falsches an der Analogie? Haben Sie auch Linux / Unix verwendet? Haben Sie jemals bemerkt, dass Sie im Gegensatz zu Windows mehr als genug Seile haben, um sich daran aufzuhängen? Die Leute benutzen sie immer noch - ist das so, als würde man unter Einfluss fahren oder so?
Mehrdad
2

Die Verwendung von Auslagerungsdateien hängt von vielen Faktoren ab. Wenn Sie viele Programme verwenden und nicht genug RAM für alle gleichzeitig haben, werden möglicherweise Teile (oder alle) in die Auslagerungsdatei ausgelagert.

Wenn Sie über 4 GB RAM verfügen und etwa 3 GB RAM verfügbar sind, weil Grafikkarten und andere Ressourcenbenutzer Teile der 4 GB blockieren, und Sie theoretisch nur einige Programme verwenden, die nicht viel Arbeitsspeicher benötigen sollte nie eine Auslagerungsdatei benötigen. Windows Vista und Windows 7 sind jedoch in Bezug auf das Austauschen von Programmen auf die Festplatte bekanntermaßen aggressiv.

Früher hatte ich eine Einstellung, die die Auslagerungsrate von Windows 7 reduzierte (Auslagerungsrate ist ein Linux-Begriff, gilt aber auch für Windows. Da es eine Registrierungseinstellung gibt, mit der die Aggressivität des Windows-Auslagerungsprozesses gebändigt werden kann, stimmt Microsoft widerwillig zu, wenn auch in einer bestimmten Hinsicht versteckte Weise), aber ich kann es nicht mehr zu finden scheinen. Auf der Suche danach bin ich hier gelandet. Die beste Alternative zu dieser Einstellung, die ich gefunden habe, besteht darin, sicherzustellen, dass Sie eine Auslagerungsdatei mit fester Größe verwenden (ich wähle 4096-4096 für 32-Bit-Betriebssysteme und 12 GB für 64-Bit-Betriebssysteme, da ich 6 GB System-RAM habe). auf einer dedizierten Partition. Mit einem freien 200-GB-Laufwerk mit 7200 U / min platziere ich alle meine Swap-Partitionen (Windows XP, 7, 7 64-Bit und verschiedene Linuxes) auf diesem Laufwerk. Es scheint für mich zu funktionieren, aber YMMV.

Paul
quelle
1

Erwähnenswert: Wenn Windows feststellt, dass Sie bestimmte Anwendungen häufig verwenden, werden diese Apps mit dem Superfetch im Speicher abgelegt, damit sie schneller geladen werden. Ich glaube, vertraue darauf, dass Windows hier seine Sache macht.

CreeDorofl
quelle