我有一个需要大量内存的程序,例如所有物理内存的2/3。运行一段时间后,我的操作系统开始将程序交换为hdd。但是我需要程序始终保持非常快的响应,因此我需要防止对该进程进行分页。
如何防止操作系统交换一个进程?
谢谢你的帮助!
在程序开始时,调用:
mlockall(MCL_CURRENT | MCL_FUTURE);
(如果您没有该程序的源代码,则必须使用该程序来减少进程的消耗ptrace)。
ptrace
请注意,这将增加进程失败进行内存分配的机会。