linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@suse.cz>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>,
	David Rientjes <rientjes@google.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [RFC 1/3] memcg: notify userspace about OOM only when and action is due
Date: Wed, 15 Jan 2014 20:00:15 +0100	[thread overview]
Message-ID: <20140115190015.GA22196@dhcp22.suse.cz> (raw)
In-Reply-To: <20140115175655.GJ6963@cmpxchg.org>

On Wed 15-01-14 12:56:55, Johannes Weiner wrote:
> On Wed, Jan 15, 2014 at 04:01:06PM +0100, Michal Hocko wrote:
> > Userspace is currently notified about OOM condition after reclaim
> > fails to uncharge any memory after MEM_CGROUP_RECLAIM_RETRIES rounds.
> > This usually means that the memcg is really in troubles and an
> > OOM action (either done by userspace or kernel) has to be taken.
> > The kernel OOM killer however bails out and doesn't kill anything
> > if it sees an already dying/exiting task in a good hope a memory
> > will be released and the OOM situation will be resolved.
> > 
> > Therefore it makes sense to notify userspace only after really all
> > measures have been taken and an userspace action is required or
> > the kernel kills a task.
> > 
> > This patch is based on idea by David Rientjes to not notify
> > userspace when the current task is killed or in a late exiting.
> > The original patch, however, didn't handle in kernel oom killer
> > back offs which is implemtented by this patch.
> > 
> > Signed-off-by: Michal Hocko <mhocko@suse.cz>
> 
> OOM is a temporary state because any task can exit at a time that is
> not under our control and outside our knowledge.  That's why the OOM
> situation is defined by failing an allocation after a certain number
> of reclaim and charge attempts.
> 
> As of right now, the OOM sampling window is MEM_CGROUP_RECLAIM_RETRIES
> loops of charge attempts and reclaim.  If a racing task is exiting and
> releasing memory during that window, the charge will succeed fine.  If
> the sampling window is too short in practice, it will have to be
> extended, preferrably through increasing MEM_CGROUP_RECLAIM_RETRIES.

The patch doesn't try to address the above race because that one is
unfixable. I hope that is clear.

It just tries to reduce burden on the userspace oom notification
consumers and given them a simple semantic. Notification comes only if
an action will be necessary (either kernel kills something or user space
is expected).

E.g. consider a handler which tries to clean up after kernel handled
OOM and killed something. If the kernel could back off and refrain
from killing anything after the norification already fired up then the
userspace has no practical way to detect that (except for checking the
kernel log to search for OOM messages which might get suppressed due to
rate limitting etc.. Nothing I would call optimal).
Or do you think that such a use case doesn't make much sense and it is
an abuse of the notification interface?

> But a random task exiting a split second after the sampling window has
> closed will always be a possibility, regardless of how long it is.

Agreed and this is not what the patch is about. If the kernel oom killer
couldn't back off then I would completely agree with you here.

> There is nothing to be gained from this layering violation and it's
> mind-boggling that you two still think this is a meaningful change.
> 
> Nacked-by: Johannes Weiner <hannes@cmpxchg.org>

-- 
Michal Hocko
SUSE Labs

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2014-01-15 19:00 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-15 15:01 [RFC PATCH 0/3] memcg OOM notifications and PF_EXITING checks Michal Hocko
2014-01-15 15:01 ` [RFC 1/3] memcg: notify userspace about OOM only when and action is due Michal Hocko
2014-01-15 17:56   ` Johannes Weiner
2014-01-15 19:00     ` Michal Hocko [this message]
2014-01-15 20:30       ` Johannes Weiner
2014-01-16 14:10         ` Michal Hocko
2014-01-15 15:01 ` [RFC 2/3] memcg: do not check PF_EXITING in mem_cgroup_out_of_memory Michal Hocko
2014-01-15 15:01 ` [RFC 3/3] memcg,oom: do not check PF_EXITING and do not set TIF_MEMDIE Michal Hocko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140115190015.GA22196@dhcp22.suse.cz \
    --to=mhocko@suse.cz \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=rientjes@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox