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