通过PID告诉内核SWAP进/出一个进程

时间:2017-02-08 00:35:33

标签: c linux linux-kernel

基本上我有一个运行许多驻留服务的系统,但不是所有服务器同时运行,内存非常低。

交换的正常解决方案只提供"自动",然后"哑"根据页面的使用频率进行交换行为。但我知道在某个时间点需要哪些PID,哪些不是。

我需要的是:

  • 能够告诉内核交换特定的PID,因为我确信暂时不会使用它们。
  • 为了能够告诉内核很快就需要一个给定的交换PID,所以它应该把所有东西都放回RAM。
  • 如果可能,以上2将在后台以低优先级运行。

这个想法是:"我知道我要使用什么,所以我告诉内核要交换什么以及不交换什么。理想情况下,我永远不会有任何页面错误,我将能够有更多的空闲RAM(通过将所有不需要的东西推送到SWAP)"

我知道可以使用mlockall()将PID锁定在RAM中。但这并不是我所需要的,它可以使一个进程脱离交换状态,但它不能强制它进行交换。此外,它必须在过程中被调用,这是不方便的。

我在想,如果目前的Linux内核+模块不可能,我可能会编写一个小内核模块来暗示交换机制,这是否可行?

0 个答案:

没有答案