From: Michal Hocko <mhocko@kernel.org> To: David Rientjes <rientjes@google.com> Cc: Andrew Morton <akpm@linux-foundation.org>, Johannes Weiner <hannes@cmpxchg.org>, Vladimir Davydov <vdavydov.dev@gmail.com>, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [patch v2] mm, memcg: do not retry precharge charges Date: Fri, 13 Jan 2017 09:40:14 +0100 [thread overview] Message-ID: <20170113084014.GB25212@dhcp22.suse.cz> (raw) In-Reply-To: <alpine.DEB.2.10.1701121446130.12738@chino.kir.corp.google.com> On Thu 12-01-17 14:46:34, David Rientjes wrote: > When memory.move_charge_at_immigrate is enabled and precharges are > depleted during move, mem_cgroup_move_charge_pte_range() will attempt to > increase the size of the precharge. > > This can be allowed to do reclaim, but should not call the oom killer to > oom kill a process. It's better to fail the attach rather than oom kill > a process attached to the memcg hierarchy. This is not the case though since 3812c8c8f395 ("mm: memcg: do not trap chargers with full callstack on OOM") - 3.12. Only the page fault path is allowed to trigger the oom killer. > Prevent precharges from ever looping by setting __GFP_NORETRY. This was > probably the intention of the GFP_KERNEL & ~__GFP_NORETRY, which is > pointless as written. > > Fixes: 0029e19ebf84 ("mm: memcontrol: remove explicit OOM parameter in charge path") > Signed-off-by: David Rientjes <rientjes@google.com> Without the note about the oom killer you can add Acked-by: Michal Hocko <mhocko@suse.com> Thanks! > --- > mm/memcontrol.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -4353,9 +4353,12 @@ static int mem_cgroup_do_precharge(unsigned long count) > return ret; > } > > - /* Try charges one by one with reclaim */ > + /* > + * Try charges one by one with reclaim, but do not retry. This avoids > + * calling the oom killer when the precharge should just fail. > + */ > while (count--) { > - ret = try_charge(mc.to, GFP_KERNEL & ~__GFP_NORETRY, 1); > + ret = try_charge(mc.to, GFP_KERNEL | __GFP_NORETRY, 1); > if (ret) > return ret; > mc.precharge++; -- Michal Hocko SUSE Labs
WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@kernel.org> To: David Rientjes <rientjes@google.com> Cc: Andrew Morton <akpm@linux-foundation.org>, Johannes Weiner <hannes@cmpxchg.org>, Vladimir Davydov <vdavydov.dev@gmail.com>, cgroups@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [patch v2] mm, memcg: do not retry precharge charges Date: Fri, 13 Jan 2017 09:40:14 +0100 [thread overview] Message-ID: <20170113084014.GB25212@dhcp22.suse.cz> (raw) In-Reply-To: <alpine.DEB.2.10.1701121446130.12738@chino.kir.corp.google.com> On Thu 12-01-17 14:46:34, David Rientjes wrote: > When memory.move_charge_at_immigrate is enabled and precharges are > depleted during move, mem_cgroup_move_charge_pte_range() will attempt to > increase the size of the precharge. > > This can be allowed to do reclaim, but should not call the oom killer to > oom kill a process. It's better to fail the attach rather than oom kill > a process attached to the memcg hierarchy. This is not the case though since 3812c8c8f395 ("mm: memcg: do not trap chargers with full callstack on OOM") - 3.12. Only the page fault path is allowed to trigger the oom killer. > Prevent precharges from ever looping by setting __GFP_NORETRY. This was > probably the intention of the GFP_KERNEL & ~__GFP_NORETRY, which is > pointless as written. > > Fixes: 0029e19ebf84 ("mm: memcontrol: remove explicit OOM parameter in charge path") > Signed-off-by: David Rientjes <rientjes@google.com> Without the note about the oom killer you can add Acked-by: Michal Hocko <mhocko@suse.com> Thanks! > --- > mm/memcontrol.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -4353,9 +4353,12 @@ static int mem_cgroup_do_precharge(unsigned long count) > return ret; > } > > - /* Try charges one by one with reclaim */ > + /* > + * Try charges one by one with reclaim, but do not retry. This avoids > + * calling the oom killer when the precharge should just fail. > + */ > while (count--) { > - ret = try_charge(mc.to, GFP_KERNEL & ~__GFP_NORETRY, 1); > + ret = try_charge(mc.to, GFP_KERNEL | __GFP_NORETRY, 1); > if (ret) > return ret; > mc.precharge++; -- 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>
next prev parent reply other threads:[~2017-01-13 8:40 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-01-12 4:32 [patch] mm, memcg: do not retry precharge charges David Rientjes 2017-01-12 4:32 ` David Rientjes 2017-01-12 4:32 ` David Rientjes 2017-01-12 10:00 ` Michal Hocko 2017-01-12 10:00 ` Michal Hocko 2017-01-12 10:17 ` Michal Hocko 2017-01-12 10:17 ` Michal Hocko 2017-01-12 22:46 ` [patch v2] " David Rientjes 2017-01-12 22:46 ` David Rientjes 2017-01-13 8:40 ` Michal Hocko [this message] 2017-01-13 8:40 ` Michal Hocko 2017-01-13 10:09 ` David Rientjes 2017-01-13 10:09 ` David Rientjes 2017-01-14 16:22 ` Johannes Weiner 2017-01-14 16:22 ` Johannes Weiner 2017-01-14 16:22 ` Johannes Weiner 2017-01-15 5:42 ` David Rientjes 2017-01-15 5:42 ` David Rientjes 2017-01-15 15:19 ` Johannes Weiner 2017-01-15 15:19 ` Johannes Weiner 2017-01-16 7:35 ` Michal Hocko 2017-01-16 7:35 ` Michal Hocko 2017-01-16 7:35 ` 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=20170113084014.GB25212@dhcp22.suse.cz \ --to=mhocko@kernel.org \ --cc=akpm@linux-foundation.org \ --cc=cgroups@vger.kernel.org \ --cc=hannes@cmpxchg.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=rientjes@google.com \ --cc=vdavydov.dev@gmail.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: linkBe 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.