如何防止一个程序/进程的分页?

dan*_*dan 16 c++ linux paging swapfile

我有一个需要大量内存的程序,比如所有物理内存的2/3.在一些运行时之后,我的操作系统开始将程序交换到hdd.但我需要程序一直响应非常快,所以我需要阻止该进程的分页.

如何防止操作系统交换一个进程?

谢谢你的帮助!

caf*_*caf 8

在程序开始时,请致电:

mlockall(MCL_CURRENT | MCL_FUTURE);
Run Code Online (Sandbox Code Playgroud)

(如果您没有该程序的源代码,则必须使用此方法ptrace来解决该过程).

请注意,这将增加进程失败的内存分配机会.

  • "贬低"一个过程意味着让它喝醉,与它一起聚会等... :) (2认同)

sle*_*ske 6

好吧,有锁定内存的mlock(告诉内核它可能没有被换出),但这意味着相对少量的内存,并且需要修改程序.

另一个选择可能是调整Linux的"swappiness",即它更换页面的倾向.请看这里有趣的讨论.但是,每个过程都不​​可能.

我不知道任何针对您的问题的每个进程解决方案.