是否可以延迟Linux OOM杀手并运行我的流程?

时间:2017-03-10 12:03:04

标签: linux memory memory-management out-of-memory real-time

我目前正在尝试使用QEMU / KVM为虚拟化环境中的虚拟机创建高效的动态内存分配。

我的最后一个问题是当来宾虚拟机几乎耗尽内存时,它将使用OOM Killer并防止任何工作没有足够的内存。但是我正在做的是当机器几乎耗尽内存时,我的算法会从其他来宾虚拟机中获取一些空闲内存并将其分配给需要它的机器。

所以我禁用了 swap ksm 没有运行,最后的事情是 OOM杀手正在杀死其他程序。

我已阅读并搜索禁用OOM杀手,我发现禁用它的坏主意。

所以现在问这里是否有一种方法可以延迟OOM Killer 1或2秒并让进程运行,因为我的算法已经为机器分配了内存。

或者即使没有内存,进程也可以运行并分配内存,因此我的算法将为该机器分配内存。

2 个答案:

答案 0 :(得分:1)

oom_adj的可能值范围为-17到+15。分数越高,相关过程就越有可能被OOM杀手杀死。如果oom_adj设置为-17,则不会考虑该进程进行OOM查杀。

了解更多参考资料link 1link 2

答案 1 :(得分:0)

echo -1000>的/ proc / yourPID / oom_score_adj
这将使oom杀手跳过你的过程。