我目前正在尝试使用QEMU / KVM为虚拟化环境中的虚拟机创建高效的动态内存分配。
我的最后一个问题是,当访客虚拟机的内存几乎用完时,它将使用OOM Killer并阻止任何没有足够内存的工作。但是这样做是当计算机的内存几乎用完时,我的算法将从其他来宾虚拟机中获取一些可用内存,并将其分配给需要它的计算机。
所以我禁用了swap,ksm没有运行,最后一件事是OOM杀手正在杀死其他程序。
我已经阅读并搜索了禁用OOM杀手,但发现禁用它是一个坏主意。
所以现在问这里是否有一种方法可以将OOM Killer延迟1或2秒,并使进程运行,因为我的算法已经为机器分配了内存。
或者即使没有内存,进程也可以运行并分配内存,因此我的算法将为该计算机分配内存。
最佳答案
oom_adj的可能值范围是-17至+15。分数越高,OOM杀手会杀死相关的进程。如果oom_adj设置为-17,则不考虑杀死OOM。
有关更多参考,link 1,link 2
关于linux - 是否可以延迟Linux OOM Killer并运行我的进程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42717991/