我想知道是否可以将特定进程的页面带入主内存,或者为给定进程或进程类设置参数以使其不会被换出。
答案1
您可以通过读取某个进程的所有内存页面来取消交换。
通常这会有点繁重(阅读/proc/…/maps
以了解分配的页面在哪里,然后从中读取这些页面/proc/…/mem
— 浏览man proc
以了解更多详细信息),但幸运的是,有一个程序已经可以做到这一点:gcore
。它的目标是转储核心文件,并在此过程中gcore
需要读取所有内存。由于我们实际上对核心文件不感兴趣,我们可以要求它将其存储在/dev/null
(核心文件可能很大,因此将它们写入磁盘会使速度慢得多)。示例:
gcore 22382 -o /dev/null