Re: [patch 1/2] mm, memcg: avoid oom notification when current needsaccess to memory reserves

From: David Rientjes
Date: Thu Jan 09 2014 - 19:01:27 EST


On Thu, 9 Jan 2014, Andrew Morton wrote:

> > I'm not sure why this was dropped since it's vitally needed for any sane
> > userspace oom handler to be effective.
>
> It was dropped because the other memcg developers disagreed with it.
>

It was acked-by Michal.

> I'd really prefer not to have to spend a great amount of time parsing
> argumentative and repetitive emails to make a tie-break decision which
> may well be wrong anyway.
>
> Please work with the other guys to find an acceptable implementation.
> There must be *something* we can do?
>

We REQUIRE this behavior for a sane userspace oom handler implementation.
You've snipped my email quite extensively, but I'd like to know
specifically how you would implement a userspace oom handler described by
Section 10 of Documentation/cgroups/memory.txt without this patch?

Are you suggesting that userspace is supposed to wait for successive
wakeups over some arbitrarily defined period of time to determine whether
memory freeing (i.e. a process in the exit() path or with a pending
SIGKILL making forward progress to free its memory) can be done or whether
it needs to do something to free memory? If not, how else is userspace
supposed to know that it should act?

How do you prevent unnecessary oom killing if the userspace oom handler
wakes up and kills something concurrent with the process triggering the
notification getting access to memory reserves, exiting, and freeing its
memory? Userspace just killed a process unnecessarily. This is the exact
reason why the kernel oom killer doesn't do a damn thing in these
conditions, because it's NOT ACTIONABLE by the oom killer, a process
simply needs to exit.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/