プログラムに関連付けられたメモリをディスクに移動する

プログラムに関連付けられたメモリをディスクに移動する

私は、他の作業中に CPU/GPU を代わりにその作業に使用させる必要があるときはいつでも、PsSuspend を使用して、CPU または GPU の計算リソースを過剰に使用しているプロセスを PID で一時停止しています。ただし、一時停止されているこれらのプロセスのメモリは、RAM (または GPU の VRAM) に残されます。

中断されたプログラムのメモリの内容をディスクに書き込み、その後オペレーティング システム用にメモリを解放して、プロセスが再開されたときにディスクからメモリを再度読み込んで通常どおり続行する方法はありますか? システム メモリ (RAM) とビデオ メモリ (VRAM) の両方でこれを実現することに興味があります。PsSuspend ではこれができないと思いますが、Windows API と C++ では可能ではないかと思います。これが不可能な場合は、その理由を説明していただけますか?

答え1

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

中断された Win32 プロセスはメモリを解放しませんが、空き物理 RAM が少ないシステムでは、アプリケーションの一部を RAM からページ ファイルに移動して、他のアクティブなアプリケーションが使用できるように RAM を解放できます。SetProcessWorkingSetSize を呼び出して、プロセスのワーキング セット内のページを強制的に削減できます。

代わりに Docker コンテナまたは VM を使用することもできます。そうすれば、ワークフロー全体を一時停止/一時停止し、使用されているすべてのリソースを解放できます。

関連情報