当物理内存不足但有足够的交换空间时,如何让 Linux OOM 杀手不杀死我的进程?
我使用 sysctl vm.overcommit_memory=2 禁用了 OOM 杀戮和过度使用。
VM 有 3 GB 的完全免费的未碎片交换空间,被 OOM 杀死的进程的最大内存使用量小于 200MB。
我知道长期交换对性能来说会很糟糕,但是我现在需要使用交换来在内存要求更高的 valgrind 下进行功能测试。
Mar 7 02:43:11 myhost kernel: memcheck-amd64- invoked oom-killer: gfp_mask=0x24002c2, order=0, oom_score_adj=0
Mar 7 02:43:11 myhost kernel: memcheck-amd64- cpuset=/ mems_allowed=0
Mar 7 02:43:11 myhost kernel: CPU: 0 PID: 3841 Comm: memcheck-amd64- Not tainted 4.4.0-x86_64-linode63 #2
Mar 7 02:43:11 myhost kernel: Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.8.2-0-g33fbe13 by qemu-project.org 04/01/2014
Mar 7 02:43:11 myhost kernel: 0000000000000000 …Run Code Online (Sandbox Code Playgroud)