Re: [RFC 3/3] oom: Do not try to sacrifice small children

From: David Rientjes
Date: Wed Jan 13 2016 - 19:43:57 EST


On Wed, 13 Jan 2016, Michal Hocko wrote:

> > The purpose of sacrificing a child has always been to prevent a process
> > that has been running with a substantial amount of work done from being
> > terminated and losing all that work if it can be avoided. This happens a
> > lot: imagine a long-living front end client forking a child which simply
> > collects stats and malloc information at a regular intervals and writes
> > them out to disk or over the network. These processes may be quite small,
> > and we're willing to happily sacrifice them if it will save the parent.
> > This was, and still is, the intent of the sacrifice in the first place.
>
> Yes I understand the intention of the heuristic. I am just contemplating
> about what is way too small to sacrifice because it clearly doesn't make
> much sense to kill a task which is sitting on basically no memory (well
> just few pages backing page tables and stack) because this would just
> prolong the OOM agony.
>

Nothing is ever too small to kill since we allow userspace the ability to
define their own oom priority. We would rather kill your bash shell when
you login rather than your sshd.