我有一个 LINUX 服务器运行一个内存占用很大的进程(某种数据库引擎)。此进程分配的内存非常大,需要将其中的一部分换出(分页)。
我想做的是将所有其他进程(或正在运行的进程的子集)的内存页面锁定在内存中,以便只有数据库进程的页面被换出。例如,我想确保我可以继续远程连接并监控机器,而不会受到交换的影响。即,我希望 sshd、X、top、vmstat 等所有页面都驻留在内存中。
在 linux 上有 mlock()、mlockall() 系统调用,它们似乎提供了正确的旋钮来进行固定。不幸的是,在我看来,我需要在每个进程中进行显式调用,并且不能从不同的进程或父进程调用 mlock()(mlock() 不是在 fork() 或 evecve() 之后继承的)。
任何帮助是极大的赞赏。提供虚拟披萨和啤酒:-)。