All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Rientjes <rientjes@google.com>
To: Yafang Shao <laoar.shao@gmail.com>
Cc: Michal Hocko <mhocko@kernel.org>,
	 Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>,
	 Andrew Morton <akpm@linux-foundation.org>,
	 Johannes Weiner <hannes@cmpxchg.org>,
	Linux MM <linux-mm@kvack.org>
Subject: Re: [PATCH v2] memcg, oom: check memcg margin for parallel oom
Date: Wed, 15 Jul 2020 10:30:51 -0700 (PDT)	[thread overview]
Message-ID: <alpine.DEB.2.23.453.2007151024350.2788464@chino.kir.corp.google.com> (raw)
In-Reply-To: <CALOAHbDpoFzR-jeDbTLUzQSE-nU+F3BXNLXJgX-07EUJq6+woA@mail.gmail.com>

On Wed, 15 Jul 2020, Yafang Shao wrote:

> > > If it is the race which causes this issue and we want to reduce the
> > > race window, I don't know whether it is proper to check the memcg
> > > margin in out_of_memory() or  do it before calling do_send_sig_info().
> > > Because per my understanding, dump_header() always takes much more
> > > time than select_bad_process() especially if there're slow consoles.
> > > So the race might easily happen when doing dump_header()  or dumping
> > > other information, but if we check the memcg margin after dumping this
> > > oom info, it would be strange to dump so much oom logs without killing
> > > a process.
> > >
> >
> > Absolutely correct :)  In my proposed patch, we declare dump_header() as
> > the "point of no return" since we don't want to dump oom kill information
> > to the kernel log when nothing is actually killed.  We could abort at the
> > very last minute, as you mention, but I think that may have an adverse
> > impact on anything that cares about that log message.
> 
> How about storing the memcg information in oom_control when the memcg
> oom is triggered, and then show this information in dump_header() ?
> IOW, the OOM info really shows the memcg status when oom occurs,
> rather than the memcg status when this info is printed.
> 

We actually do that too in our kernel but for slightly other reasons :)  
It's pretty interesting how a lot of our previous concerns with memcg oom 
killing have been echoed by you in this thread.  But yes, we store vital 
information about the memcg at the time of the first oom event when the 
oom killer is disabled (to allow userspace to determine what the best 
course of action is).

But regardless of whether we present previous data to the user in the 
kernel log or not, we've determined that oom killing a process is a 
serious matter and go to any lengths possible to avoid having to do it.  
For us, that means waiting until the "point of no return" to either go 
ahead with oom killing a process or aborting and retrying the charge.

I don't think moving the mem_cgroup_margin() check to out_of_memory() 
right before printing the oom info and killing the process is a very 
invasive patch.  Any strong preference against doing it that way?  I think 
moving the check as late as possible to save a process from being killed 
when racing with an exiter or killed process (including perhaps current) 
has a pretty clear motivation.


  reply	other threads:[~2020-07-15 17:30 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-14 13:57 [PATCH v2] memcg, oom: check memcg margin for parallel oom Yafang Shao
2020-07-14 14:05 ` Michal Hocko
2020-07-14 14:30 ` Chris Down
2020-07-14 18:46 ` David Rientjes
2020-07-15  1:44   ` Yafang Shao
2020-07-15  2:44     ` David Rientjes
2020-07-15  3:10       ` Yafang Shao
2020-07-15  3:18         ` David Rientjes
2020-07-15  3:31           ` Yafang Shao
2020-07-15 17:30             ` David Rientjes [this message]
2020-07-16  2:38               ` Yafang Shao
2020-07-16  7:04                 ` David Rientjes
2020-07-16 11:53                   ` Yafang Shao
2020-07-16 12:21                     ` Michal Hocko
2020-07-16 13:09                       ` Tetsuo Handa
2020-07-16 19:53                     ` David Rientjes
2020-07-17  1:35                       ` Yafang Shao
2020-07-17 19:26                         ` David Rientjes
2020-07-18  2:15                           ` Yafang Shao
2020-07-16  5:54               ` Tetsuo Handa
2020-07-16  6:11                 ` Michal Hocko
2020-07-16  7:06                   ` David Rientjes
2020-07-16  6:08               ` Michal Hocko
2020-07-16  6:56                 ` David Rientjes
2020-07-16  7:12                   ` Michal Hocko
2020-07-16 20:04                     ` David Rientjes
2020-07-28 18:04                   ` Johannes Weiner
2020-07-15  6:56         ` 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=alpine.DEB.2.23.453.2007151024350.2788464@chino.kir.corp.google.com \
    --to=rientjes@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=laoar.shao@gmail.com \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=penguin-kernel@i-love.sakura.ne.jp \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.