From: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
To: Michal Hocko <mhocko@kernel.org>
Cc: linux-mm@kvack.org, Johannes Weiner <hannes@cmpxchg.org>,
David Rientjes <rientjes@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH 2/2] memcg: do not report racy no-eligible OOM tasks
Date: Tue, 23 Oct 2018 00:12:48 +0900 [thread overview]
Message-ID: <2deec266-2eaf-f754-ae94-d290f10c79ec@i-love.sakura.ne.jp> (raw)
In-Reply-To: <20181022134315.GF18839@dhcp22.suse.cz>
On 2018/10/22 22:43, Michal Hocko wrote:
> On Mon 22-10-18 22:20:36, Tetsuo Handa wrote:
>> I mean:
>>
>> mm/memcontrol.c | 3 +-
>> mm/oom_kill.c | 111 +++++---------------------------------------------------
>> 2 files changed, 12 insertions(+), 102 deletions(-)
>
> This is much larger change than I feel comfortable with to plug this
> specific issue. A simple and easy to understand fix which doesn't add
> maintenance burden should be preferred in general.
>
> The code reduction looks attractive but considering it is based on
> removing one of the heuristics to prevent OOM reports in some case it
> should be done on its own with a careful and throughout justification.
> E.g. how often is the heuristic really helpful.
I think the heuristic is hardly helpful.
Regarding task_will_free_mem(current) condition in out_of_memory(),
this served for two purposes. One is that mark_oom_victim() is not yet
called on current thread group when mark_oom_victim() was already called
on other thread groups. But such situation disappears by removing
task_will_free_mem() shortcuts and forcing for_each_process(p) loop
in __oom_kill_process().
The other is that mark_oom_victim() is not yet called on any thread groups when
all thread groups are exiting. In that case, we will fail to wait for current
thread group to release its mm... But it is unlikely that only threads which
task_will_free_mem(current) returns true can call out_of_memory() (note that
task_will_free_mem(p) returns false if p->mm == NULL).
I think it is highly unlikely to hit task_will_free_mem(p) condition
in oom_kill_process(). To hit it, the candidate who was chosen due to
the largest memory user has to be already exiting. However, if already
exiting, it is likely the candidate already released its mm (and hence
no longer the largest memory user). I can't say such race never happens,
but I think it is unlikely. Also, since task_will_free_mem(p) returns false
if thread group leader's mm is NULL whereas oom_badness() from
select_bad_process() evaluates any mm in that thread group and returns
a thread group leader, this heuristic is incomplete after all.
>
> In principle I do not oppose to remove the shortcut after all due
> diligence is done because this particular one had given us quite a lot
> headaches in the past.
>
next prev parent reply other threads:[~2018-10-22 15:13 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-22 7:13 [RFC PATCH 0/2] oom, memcg: do not report racy no-eligible OOM Michal Hocko
2018-10-22 7:13 ` [RFC PATCH 1/2] mm, oom: marks all killed tasks as oom victims Michal Hocko
2018-10-22 7:58 ` Tetsuo Handa
2018-10-22 8:48 ` Michal Hocko
2018-10-22 9:42 ` Tetsuo Handa
2018-10-22 10:43 ` Michal Hocko
2018-10-22 10:56 ` Tetsuo Handa
2018-10-22 11:12 ` Michal Hocko
2018-10-22 11:16 ` [RFC PATCH v2 " Michal Hocko
2018-10-22 7:13 ` [RFC PATCH 2/2] memcg: do not report racy no-eligible OOM tasks Michal Hocko
2018-10-22 11:45 ` Tetsuo Handa
2018-10-22 12:03 ` Michal Hocko
2018-10-22 13:20 ` Tetsuo Handa
2018-10-22 13:43 ` Michal Hocko
2018-10-22 15:12 ` Tetsuo Handa [this message]
2018-10-23 1:01 ` Tetsuo Handa
2018-10-23 11:42 ` Michal Hocko
2018-10-23 12:10 ` Michal Hocko
2018-10-23 12:33 ` Tetsuo Handa
2018-10-23 12:48 ` Michal Hocko
2018-10-26 14:25 ` Johannes Weiner
2018-10-26 19:25 ` Michal Hocko
2018-10-26 19:33 ` Michal Hocko
2018-10-27 1:10 ` Tetsuo Handa
2018-11-06 9:44 ` Tetsuo Handa
2018-11-06 12:42 ` Michal Hocko
2018-11-07 9:45 ` Tetsuo Handa
2018-11-07 10:08 ` Michal Hocko
2018-12-07 12:43 ` Tetsuo Handa
2018-12-12 10:23 ` Tetsuo Handa
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=2deec266-2eaf-f754-ae94-d290f10c79ec@i-love.sakura.ne.jp \
--to=penguin-kernel@i-love.sakura.ne.jp \
--cc=akpm@linux-foundation.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.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