Mit dem Programm verknüpften Speicher auf die Festplatte verschieben

Mit dem Programm verknüpften Speicher auf die Festplatte verschieben

Ich verwende PsSuspend, um Prozesse, die übermäßig viele CPU- oder GPU-Rechenressourcen verbrauchen, über ihre PID anzuhalten, wenn ich an etwas anderem arbeite und die CPU/GPU stattdessen daran arbeiten muss. Der Speicher dieser angehaltenen Prozesse bleibt jedoch im RAM (oder im VRAM der GPU).

Gibt es eine Möglichkeit, den Inhalt des Speichers des angehaltenen Programms auf die Festplatte zu schreiben und dann den Speicher für das Betriebssystem so freizugeben, dass der Prozess beim Fortsetzen den Speicher wieder von der Festplatte liest und normal weiterläuft? Ich möchte dies sowohl für den Systemspeicher (RAM) als auch für den Videospeicher (VRAM) erreichen. Ich glaube nicht, dass dies mit PsSuspend möglich ist, aber ich vermute, dass es mit Windows-APIs und C++ möglich sein könnte. Wenn dies nicht möglich ist, können Sie erklären, warum nicht?

Antwort1

Aushttps://stackoverflow.com/questions/49756405/do-suspended-processes-still-use-up-cpu-ram

Ein angehaltener Win32-Prozess gibt keinen Speicher frei, aber auf einem System mit wenig freiem physischem RAM können Teile der Anwendung vom RAM in die Auslagerungsdatei verschoben werden, um RAM für die Verwendung durch andere aktive Anwendungen freizugeben. SetProcessWorkingSetSize kann aufgerufen werden, um eine Reduzierung der Seiten im Arbeitssatz des Prozesses zu erzwingen.

Vielleicht können Sie stattdessen einen Docker-Container oder eine VM verwenden. Auf diese Weise können Sie den gesamten Workflow anhalten/pausieren und alle verwendeten Ressourcen freigeben.

verwandte Informationen