如何让 OOM Killer 更加被动

如何让 OOM Killer 更加被动

我可以在使用旧版 2.6.x 内核的 VPS 上编译具有 1 GiB RAM 的程序。但是当我尝试在具有 1.1 GiB RAM 和 3.9.x 内核的 VPS 上编译该程序时,编译器总是被 OOM Killer 杀死。

如何让 OOM 更加被动?

答案1

您不会更改 OOM 杀手 - 这是有原因的。但您应该做的是减少内存过量使用。默认情况下,这是 50%(请参阅 /proc/sys/vm/过量承诺比率) 来处理程序试图索取比其实际需要更多的内存的情况。但是,如果您编写的程序只索取其所需的内存量(或者您正在运行从不执行 gc 的 JVM,因为它们不知道系统内存紧张),那么 OOM Killer 就会开始收割东西。

答案2

如果您的 FS 上有足够的空间,您可以通过以下方式向您的 VM 添加临时交换空间:

# fallocate -l 4g /SWAP
# mkswap /SWAP
# swapon /SWAP

但请记住,如果您的系统正在积极交换,编译将不会是一个快速的过程。

相关内容