Ubuntu:迫使进程进入交换或进入内存

我现在正在Ubuntu上解决以下问题:是否可以指定一个进程只能在RAM中运行(即不允许交换)还是仅在交换部分中反向运行? 我的意思是这个过程应该被系统杀死,而不是使用其他types的内存

这对我来说很重要,因为我应该比较更多algorithm的运行时间,并且我必须确保所有进程都运行在RAM中或交换部分中。

不,除非一个进程获取内存并使用mlock绑定这个内存,否则没有保证的方法来确保它不会交换。

交换用于匿名脏页面。 它没有固定的文件系统支持或来源,所以没有程序可以从交换开始。

除非应用程序调用内存,否则使用mlock()绑定内存,则可以进行交换。 您可以尝试通过不使用交换文件或交换分区来消除整个“进入交换”理论,但这不是一个真正推荐的方法。

如果在这个时候掉期,那么可能没有一个好的方法来杀死一个进程。 然而,编写一个微小的deamon应该是相当容易的。 你的脚本需要做什么:

  1. 确定所有相关的进程ID
  2. 对于每个ID,请参阅/ proc / $ {PROCESS_ID} / smaps的“交换:”字段
  3. 如果这些字段的总和大于0,则终止进程

这可能不是一个好的解决scheme,但它可能比没有好。 有关的讨论可以在linuxquestions.orgfind。 对于手动监视进程,可以通过“top”来显示使用了多less交换(在顶部,点击“f”并显示SWAP字段)。 心连心