linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@suse.cz>
To: Johannes Weiner <hannes@cmpxchg.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Tejun Heo <tj@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
	linux-mm@kvack.org
Subject: Re: [PATCH -v2 4/6] memcg: make sure that memcg is not offline when charging
Date: Wed, 5 Feb 2014 17:29:41 +0100	[thread overview]
Message-ID: <20140205162941.GF2425@dhcp22.suse.cz> (raw)
In-Reply-To: <20140205161940.GE2425@dhcp22.suse.cz>

On Wed 05-02-14 17:19:40, Michal Hocko wrote:
> On Wed 05-02-14 10:28:21, Johannes Weiner wrote:
[...]
> > I thought more about this and talked to Tejun as well.  He told me
> > that the rcu grace period between disabling tryget and calling
> > css_offline() is currently an implementation detail of the refcounter
> > that css uses, but it's not a guarantee.  So my initial idea of
> > reworking memcg to do css_tryget() and res_counter_charge() in the
> > same rcu section is no longer enough to synchronize against offlining.
> > We can forget about that.
> > 
> > On the other hand, memcg holds a css reference only while an actual
> > controller reference is being established (res_counter_charge), then
> > drops it.  This means that once css_tryget() is disabled, we only need
> > to wait for the css refcounter to hit 0 to know for sure that no new
> > charges can show up and reparent_charges() is safe to run, right?
> > 
> > Well, css_free() is the callback invoked when the ref counter hits 0,
> > and that is a guarantee.  From a memcg perspective, it's the right
> > place to do reparenting, not css_offline().
> 
> OK, it seems I've totally misunderstood what is the purpose of
> css_offline. My understanding was that any attempt to css_tryget will
> fail when css_offline starts. I will read through Tejun's email as well
> and think about it some more.

OK, so css_tryget fails at the time of css_offline but there is no rcu
guarantee which we rely on. This means that css_offline is of very
limitted use for us. Pages which are swapped out are not reachable for
reparent and so we still might have a lot of references to css. Whether
it makes much sense to call reparent only for the swapcache is
questionable. We are still relying on some task to release that memory
while it lives in other memcg.
-- 
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-02-05 16:29 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-04 13:28 [PATCH -v2 0/6] memcg: some charge path cleanups + css offline vs. charge race fix Michal Hocko
2014-02-04 13:28 ` [PATCH -v2 1/6] memcg: do not replicate try_get_mem_cgroup_from_mm in __mem_cgroup_try_charge Michal Hocko
2014-02-04 15:55   ` Johannes Weiner
2014-02-04 16:05     ` Michal Hocko
2014-02-05 13:49       ` Michal Hocko
2014-02-04 13:28 ` [PATCH -v2 2/6] memcg: cleanup charge routines Michal Hocko
2014-02-04 16:05   ` Johannes Weiner
2014-02-04 16:12     ` Michal Hocko
2014-02-04 16:40       ` Johannes Weiner
2014-02-04 19:11         ` Michal Hocko
2014-02-04 19:36           ` Johannes Weiner
2014-02-04 13:28 ` [PATCH -v2 3/6] memcg: mm == NULL is not allowed for mem_cgroup_try_charge_mm Michal Hocko
2014-02-04 16:05   ` Johannes Weiner
2014-02-04 13:28 ` [PATCH -v2 4/6] memcg: make sure that memcg is not offline when charging Michal Hocko
2014-02-04 16:29   ` Johannes Weiner
2014-02-05 13:38     ` Michal Hocko
2014-02-05 15:28       ` Johannes Weiner
2014-02-05 15:42         ` Tejun Heo
2014-02-05 16:19         ` Michal Hocko
2014-02-05 16:29           ` Michal Hocko [this message]
2014-02-05 16:30           ` Tejun Heo
2014-02-05 16:45           ` Johannes Weiner
2014-02-05 17:23             ` Michal Hocko
2014-02-04 13:28 ` [PATCH -v2 5/6] memcg, kmem: clean up memcg parameter handling Michal Hocko
2014-02-04 16:32   ` Johannes Weiner
2014-02-04 16:42     ` Michal Hocko
2014-02-04 13:29 ` [PATCH -v2 6/6] Revert "mm: memcg: fix race condition between memcg teardown and swapin" 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=20140205162941.GF2425@dhcp22.suse.cz \
    --to=mhocko@suse.cz \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=tj@kernel.org \
    /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;
as well as URLs for NNTP newsgroup(s).