Переместить память, связанную с программой, на диск

Переместить память, связанную с программой, на диск

Я использую PsSuspend для приостановки процессов по их PID, которые используют чрезмерные вычислительные ресурсы CPU или GPU, когда я работаю над чем-то другим и мне нужно, чтобы CPU/GPU работали над этим. Однако память от этих приостановленных процессов остается в RAM (или VRAM GPU).

Есть ли способ записать содержимое памяти приостановленной программы на диск, а затем освободить память для операционной системы таким образом, чтобы при возобновлении процесса она считывала память с диска и продолжала работу в обычном режиме? Мне интересно добиться этого как для системной памяти (RAM), так и для видеопамяти (VRAM). Я не думаю, что это можно сделать с помощью PsSuspend, но я подозреваю, что это возможно с помощью Windows API и C++. Если это невозможно, можете ли вы объяснить, почему?

решение1

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

Приостановленный процесс Win32 не освобождает память, но в системе с небольшим объемом свободной физической оперативной памяти части приложения могут быть перемещены из оперативной памяти в файл подкачки, чтобы освободить оперативную память для использования другими активными приложениями. SetProcessWorkingSetSize может быть вызван для принудительного сокращения страниц в рабочем наборе процесса.

Возможно, вместо этого вы можете использовать Docker-контейнер или виртуальную машину, таким образом вы сможете приостановить/приостановить весь рабочий процесс и освободить все используемые ресурсы.

Связанный контент