强制进程页面打开

我开始了4个进程,进行繁重的计算。 该机器有4个完整核心,每个进程都是单线程的,所以它们不会竞争CPU。 但是,我意识到他们需要更多的内存比物理存在于这个系统(16GB)。 现在他们分配的地址空间大约是20GB,所以每个地址空间都有一部分被换出来了。

所以我决定暂停这些进程之一,并且我想把它的内存页交换,所以物理内存只能用于其他三个进程。 我认为这将最终发生,而三个活着的进程将尝试访问换出的页面。 但是我想强制它使计算不必等待IO。

我的问题:

  1. 是否有可能强制暂停进程的内存去交换? (所以当活着的进程将做新的分配时,不会有IO)

  2. 是否有可能迫使一个活着的进程内存回到内存?

这是Debian SID。

您可以暂停其中一个进程,例如将debugging器附加到进程。

gdb process_executable process_pid 

并让Linux调度程序完成剩下的工作。 当前三个进程终止时,您可以分离debugging器以恢复第四个进程。

你可以通过向进程发出SIGSTOP来达到同样的目的:

  kill -stop process_pid 

  kill -cont process_pid 

在资源可用时恢复。 将来,您可能会考虑使用一些工作计划程序(如转矩)来根据资源需求半自动地安排进程。

编辑:我没有注意到原来的问题,并错过了暂停过程不是一个问题。 问题是,简单地移动页面交换和返回需要很长时间。