On Fri, Oct 13, 2017 at 08:35:55AM +0200, Michal Hocko wrote: > On Thu 12-10-17 15:03:12, Johannes Weiner wrote: > > All I'm saying is that, when the syscall-context fails to charge, we > > should do mem_cgroup_oom() to set up the async OOM killer, let the > > charge succeed over the hard limit - since the OOM killer will most > > likely get us back below the limit - then mem_cgroup_oom_synchronize() > > before the syscall returns to userspace. > > OK, then we are on the same page now. Your initial wording didn't > mention async OOM killer. This makes more sense. Although I would argue > that we can retry the charge as long as out_of_memory finds a victim. > This would return ENOMEM to the pathological cases where no victims > could be found.
I think that's much worse because it's even harder to test and verify your applications against. If syscalls can return -ENOMEM on OOM, they should do so reliably.