I am able to compile a program with 1 GiB RAM on a VPS using old 2.6.x kernel. But when I tried to compile it on a VPS with 1.1 GiB RAM and 3.9.x kernel, the compiler always killed by OOM Killer.
How do I make OOM more passive?
I am able to compile a program with 1 GiB RAM on a VPS using old 2.6.x kernel. But when I tried to compile it on a VPS with 1.1 GiB RAM and 3.9.x kernel, the compiler always killed by OOM Killer.
How do I make OOM more passive?
You don't change the OOM killer - it's like that for a reason. but what you should do is reduce the memory overcommit. By default this is 50% (see /proc/sys/vm/overcommit_ratio) to handle the case where programs try to claim more memory than they ever need. But if you've got well-written programs which only claim the amount of memory they need (or you're runing JVMs which never do gc because they don't know the system is tight on memory) then the OOM Killer starts harvesting stuff.
vm.overcommit_ratio
is used iff vm.overcommit_memory == 2
, but default value is 0
: lxr.free-electrons.com/source/mm/mmap.c#L134
Jul 11, 2013 at 4:01
If you have enough space on your FS you can add temporary swap space to your VM via:
# fallocate -l 4g /SWAP
# mkswap /SWAP
# swapon /SWAP
But keep in mind that compilation won't be a fast process if your system is aggressively swapping.
mkswap /SWAP
and swapon /SWAP
?
losetup
is useless. Just create an empty file and swapon
to make it works.
-e
flag that I was using when swapping on external flash drive. Here, yes I guess it's rather useless.
Jul 12, 2013 at 7:53