Changing status to "Confirmed". I don't think there are any relevant
logs for this issue. Here's some anecdotal evidence, though:
# dmesg | grep oom-killer
[1389379.248406] apt-mirror invoked oom-killer: gfp_mask=0x26000c0, order=2,
oom_score_adj=0
[1399428.772409] chrome invoked oom-killer: gfp_mask=0x26000c0, order=2,
oom_score_adj=300
[1421778.653435] java invoked oom-killer: gfp_mask=0x26000c0, order=2,
oom_score_adj=0
[1464982.048253] sh invoked oom-killer: gfp_mask=0x26000c0, order=2,
oom_score_adj=0
[1479431.535969] postgres invoked oom-killer: gfp_mask=0x26000c0, order=2,
oom_score_adj=-900
[1508936.131513] mount invoked oom-killer: gfp_mask=0x24040c0, order=3,
oom_score_adj=0
[1526250.556039] java invoked oom-killer: gfp_mask=0x26000c0, order=2,
oom_score_adj=0
# cat /proc/uptime
1551384.55 11908654.03
So in the ~7 hours since changing these sysctls, the oom-killer hasn't
run, whereas it was running regularly before that.
** Changed in: linux (Ubuntu)
Status: Incomplete => Confirmed
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1666683
Title:
Default VM overcommit sysctls in Ubuntu lead to unnecessary oom-killer
invocation
Status in linux package in Ubuntu:
Confirmed
Bug description:
On my system, running a couple of LXD containers and VMs (16 GB RAM,
16 GB swap) seems to cause the kernel oom-killer to be frequently
triggered.
In order to try to resolve this, first I tried limiting the memory my
containers were allowed to use, such as by using:
lxc config set <container> limits.memory 1024GB
... and restarting the containers for good measure. However, this
didn't resolve the problem.
After looking deeper into what might trigger the oom-killer even
though I seemed to have plenty of memory free, I found out that the
kernel VM overcommit can be tuned with the `vm.overcommit_memory`
sysctl.
The default for value of `vm.overcommit_memory`, 0, uses a heuristic
to determine whether or not requested memory is available. According
to the `man 5 proc`, if the value is set to zero:
"""
calls of mmap(2) with MAP_NORESERVE are not checked, and the
default check is very weak, leading to the risk of getting a
process "OOM-killed".
"""
Which seems to describe exactly my problem. However, upon setting this
value to 2, many of my open programs immediately aborted with out-of-
memory errors. This is because the default value for
`vm.overcommit_ratio` only allows the usage of 50% of the system's
total (memory + swap).
I then found the following answer on Server Fault:
http://serverfault.com/a/510857/15268
The answers to this question seem to make a good case that the
overcommit_ratio should be set to 100.
In summary, I think the following sysctl values should be the new
defaults:
vm.overcommit_memory = 2
vm.overcommit_ratio = 100
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1666683/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp