From: Li Zefan <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
To: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>
Cc: Glauber Costa <glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>,
linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Cgroups <cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
KAMEZAWA Hiroyuki
<kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>,
Johannes Weiner <hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org>
Subject: Re: [RFC][PATCH 2/7] memcg: don't use mem_cgroup_get() when creating a kmemcg cache
Date: Sun, 7 Apr 2013 11:32:48 +0800 [thread overview]
Message-ID: <5160E8E0.2050602@huawei.com> (raw)
In-Reply-To: <20130405134557.GG31132-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
>>> You are putting references but I do not see any single css_{try}get
>>> here. /me puzzled.
>>>
>>
>> There are two things being done in this code:
>> First, we acquired a css_ref to make sure that the underlying cgroup
>> would not go away. That is a short lived reference, and it is put as
>> soon as the cache is created.
>> At this point, we acquire a long-lived per-cache memcg reference count
>> to guarantee that the memcg will still be alive.
>>
>> so it is:
>>
>> enqueue: css_get
>> create : memcg_get, css_put
>> destroy: css_put
>>
>> If I understand Li's patch correctly, he is not touching the first
>> css_get, only turning that into the long lived reference (which was not
>> possible before, since that would prevent rmdir).
>>
>> Then he only needs to get rid of the memcg_get, change the memcg_put to
>> css_put, and get rid of the now extra css_put.
>>
>> He is issuing extra css_puts in memcg_create_kmem_cache, but only in
>> failure paths. So the code reads as:
>> * css_get on enqueue (already done, so not shown in patch)
>> * if it fails, css_put
>> * if it succeeds, don't do anything. This is already the long-lived
>> reference count. put it at release time.
>
> OK, this makes more sense now. It is __memcg_create_cache_enqueue which
> takes the reference and it is not put after this because it replaced
> mem_cgroup reference counting.
> Li, please put something along these lines into the changelog. This is
> really tricky and easy to get misunderstand.
>
Yeah, I think I'll just steal Glauber's explanation as the changelog.
> You can put my Acked-by then.
>
Thanks!
>> The code looks correct, and of course, extremely simpler due to the
>> use of a single reference.
>>
>> Li, am I right in my understanding that this is your intention?
>>
WARNING: multiple messages have this Message-ID (diff)
From: Li Zefan <lizefan@huawei.com>
To: Michal Hocko <mhocko@suse.cz>
Cc: Glauber Costa <glommer@parallels.com>,
linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>,
Cgroups <cgroups@vger.kernel.org>, Tejun Heo <tj@kernel.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Johannes Weiner <hannes@cmpxchg.org>
Subject: Re: [RFC][PATCH 2/7] memcg: don't use mem_cgroup_get() when creating a kmemcg cache
Date: Sun, 7 Apr 2013 11:32:48 +0800 [thread overview]
Message-ID: <5160E8E0.2050602@huawei.com> (raw)
In-Reply-To: <20130405134557.GG31132@dhcp22.suse.cz>
>>> You are putting references but I do not see any single css_{try}get
>>> here. /me puzzled.
>>>
>>
>> There are two things being done in this code:
>> First, we acquired a css_ref to make sure that the underlying cgroup
>> would not go away. That is a short lived reference, and it is put as
>> soon as the cache is created.
>> At this point, we acquire a long-lived per-cache memcg reference count
>> to guarantee that the memcg will still be alive.
>>
>> so it is:
>>
>> enqueue: css_get
>> create : memcg_get, css_put
>> destroy: css_put
>>
>> If I understand Li's patch correctly, he is not touching the first
>> css_get, only turning that into the long lived reference (which was not
>> possible before, since that would prevent rmdir).
>>
>> Then he only needs to get rid of the memcg_get, change the memcg_put to
>> css_put, and get rid of the now extra css_put.
>>
>> He is issuing extra css_puts in memcg_create_kmem_cache, but only in
>> failure paths. So the code reads as:
>> * css_get on enqueue (already done, so not shown in patch)
>> * if it fails, css_put
>> * if it succeeds, don't do anything. This is already the long-lived
>> reference count. put it at release time.
>
> OK, this makes more sense now. It is __memcg_create_cache_enqueue which
> takes the reference and it is not put after this because it replaced
> mem_cgroup reference counting.
> Li, please put something along these lines into the changelog. This is
> really tricky and easy to get misunderstand.
>
Yeah, I think I'll just steal Glauber's explanation as the changelog.
> You can put my Acked-by then.
>
Thanks!
>> The code looks correct, and of course, extremely simpler due to the
>> use of a single reference.
>>
>> Li, am I right in my understanding that this is your intention?
>>
--
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>
WARNING: multiple messages have this Message-ID (diff)
From: Li Zefan <lizefan@huawei.com>
To: Michal Hocko <mhocko@suse.cz>
Cc: Glauber Costa <glommer@parallels.com>, <linux-mm@kvack.org>,
LKML <linux-kernel@vger.kernel.org>,
Cgroups <cgroups@vger.kernel.org>, Tejun Heo <tj@kernel.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
Johannes Weiner <hannes@cmpxchg.org>
Subject: Re: [RFC][PATCH 2/7] memcg: don't use mem_cgroup_get() when creating a kmemcg cache
Date: Sun, 7 Apr 2013 11:32:48 +0800 [thread overview]
Message-ID: <5160E8E0.2050602@huawei.com> (raw)
In-Reply-To: <20130405134557.GG31132@dhcp22.suse.cz>
>>> You are putting references but I do not see any single css_{try}get
>>> here. /me puzzled.
>>>
>>
>> There are two things being done in this code:
>> First, we acquired a css_ref to make sure that the underlying cgroup
>> would not go away. That is a short lived reference, and it is put as
>> soon as the cache is created.
>> At this point, we acquire a long-lived per-cache memcg reference count
>> to guarantee that the memcg will still be alive.
>>
>> so it is:
>>
>> enqueue: css_get
>> create : memcg_get, css_put
>> destroy: css_put
>>
>> If I understand Li's patch correctly, he is not touching the first
>> css_get, only turning that into the long lived reference (which was not
>> possible before, since that would prevent rmdir).
>>
>> Then he only needs to get rid of the memcg_get, change the memcg_put to
>> css_put, and get rid of the now extra css_put.
>>
>> He is issuing extra css_puts in memcg_create_kmem_cache, but only in
>> failure paths. So the code reads as:
>> * css_get on enqueue (already done, so not shown in patch)
>> * if it fails, css_put
>> * if it succeeds, don't do anything. This is already the long-lived
>> reference count. put it at release time.
>
> OK, this makes more sense now. It is __memcg_create_cache_enqueue which
> takes the reference and it is not put after this because it replaced
> mem_cgroup reference counting.
> Li, please put something along these lines into the changelog. This is
> really tricky and easy to get misunderstand.
>
Yeah, I think I'll just steal Glauber's explanation as the changelog.
> You can put my Acked-by then.
>
Thanks!
>> The code looks correct, and of course, extremely simpler due to the
>> use of a single reference.
>>
>> Li, am I right in my understanding that this is your intention?
>>
next prev parent reply other threads:[~2013-04-07 3:32 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-03 9:11 [RFC][PATCH 0/7] memcg: make memcg's life cycle the same as cgroup Li Zefan
2013-04-03 9:11 ` Li Zefan
2013-04-03 9:11 ` [RFC][PATCH 1/7] memcg: use css_get in sock_update_memcg() Li Zefan
2013-04-03 9:11 ` Li Zefan
2013-04-03 12:58 ` Glauber Costa
2013-04-03 12:58 ` Glauber Costa
2013-04-03 15:29 ` Michal Hocko
2013-04-03 15:29 ` Michal Hocko
[not found] ` <20130403152934.GL16471-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-04-05 8:08 ` Glauber Costa
2013-04-05 8:08 ` Glauber Costa
2013-04-05 8:08 ` Glauber Costa
2013-04-05 13:38 ` Michal Hocko
2013-04-05 13:38 ` Michal Hocko
[not found] ` <20130405133815.GE31132-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-04-05 13:42 ` Glauber Costa
2013-04-05 13:42 ` Glauber Costa
2013-04-05 13:42 ` Glauber Costa
[not found] ` <515BF249.50607-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-04-05 5:01 ` Kamezawa Hiroyuki
2013-04-05 5:01 ` Kamezawa Hiroyuki
2013-04-05 5:01 ` Kamezawa Hiroyuki
2013-04-05 13:39 ` Michal Hocko
2013-04-05 13:39 ` Michal Hocko
2013-04-05 13:39 ` Michal Hocko
2013-04-03 9:12 ` [RFC][PATCH 2/7] memcg: don't use mem_cgroup_get() when creating a kmemcg cache Li Zefan
2013-04-03 9:12 ` Li Zefan
2013-04-03 13:05 ` Glauber Costa
2013-04-03 13:05 ` Glauber Costa
2013-04-03 15:31 ` Michal Hocko
2013-04-03 15:31 ` Michal Hocko
[not found] ` <20130403153133.GM16471-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-04-05 10:28 ` Glauber Costa
2013-04-05 10:28 ` Glauber Costa
2013-04-05 10:28 ` Glauber Costa
2013-04-05 13:45 ` Michal Hocko
2013-04-05 13:45 ` Michal Hocko
[not found] ` <20130405134557.GG31132-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-04-07 3:32 ` Li Zefan [this message]
2013-04-07 3:32 ` Li Zefan
2013-04-07 3:32 ` Li Zefan
[not found] ` <515BF275.5080408-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-04-05 5:51 ` Kamezawa Hiroyuki
2013-04-05 5:51 ` Kamezawa Hiroyuki
2013-04-05 5:51 ` Kamezawa Hiroyuki
2013-04-05 13:46 ` Michal Hocko
2013-04-05 13:46 ` Michal Hocko
2013-04-03 9:12 ` [RFC][PATCH 3/7] memcg: use css_get/put when charging/uncharging kmem Li Zefan
2013-04-03 9:12 ` Li Zefan
[not found] ` <515BF284.7060401-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-04-04 9:43 ` Michal Hocko
2013-04-04 9:43 ` Michal Hocko
2013-04-04 9:43 ` Michal Hocko
2013-04-05 10:19 ` Glauber Costa
2013-04-05 10:19 ` Glauber Costa
2013-04-05 10:19 ` Glauber Costa
[not found] ` <515EA532.4050706-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org>
2013-04-05 13:48 ` Michal Hocko
2013-04-05 13:48 ` Michal Hocko
2013-04-05 13:48 ` Michal Hocko
2013-04-05 10:19 ` Glauber Costa
2013-04-05 10:19 ` Glauber Costa
2013-04-05 10:19 ` Glauber Costa
2013-04-03 9:12 ` [RFC][PATCH 4/7] memcg: use css_get/put for swap memcg Li Zefan
2013-04-03 9:12 ` Li Zefan
2013-04-04 11:25 ` Michal Hocko
2013-04-04 11:25 ` Michal Hocko
2013-04-05 5:56 ` Kamezawa Hiroyuki
2013-04-05 5:56 ` Kamezawa Hiroyuki
2013-04-03 9:13 ` [RFC][PATCH 5/7] cgroup: make sure parent won't be destroyed before its children Li Zefan
2013-04-03 9:13 ` Li Zefan
[not found] ` <515BF2A4.1070703-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-04-04 11:37 ` Michal Hocko
2013-04-04 11:37 ` Michal Hocko
2013-04-04 11:37 ` Michal Hocko
[not found] ` <20130404113750.GH29911-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-04-04 13:53 ` Tejun Heo
2013-04-04 13:53 ` Tejun Heo
2013-04-04 13:53 ` Tejun Heo
2013-04-04 15:20 ` Michal Hocko
2013-04-04 15:20 ` Michal Hocko
[not found] ` <20130404152028.GK29911-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-04-04 15:22 ` Tejun Heo
2013-04-04 15:22 ` Tejun Heo
2013-04-04 15:22 ` Tejun Heo
2013-04-04 15:30 ` Michal Hocko
2013-04-04 15:30 ` Michal Hocko
[not found] ` <20130404152213.GL9425-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2013-04-05 8:10 ` Glauber Costa
2013-04-05 8:10 ` Glauber Costa
2013-04-05 8:10 ` Glauber Costa
2013-04-04 15:31 ` Michal Hocko
2013-04-04 15:31 ` Michal Hocko
2013-04-05 5:58 ` Kamezawa Hiroyuki
2013-04-05 5:58 ` Kamezawa Hiroyuki
2013-04-03 9:13 ` [RFC][PATCH 6/7] memcg: don't need to get a reference to the parent Li Zefan
2013-04-03 9:13 ` Li Zefan
[not found] ` <515BF2B1.9060909-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-04-04 15:34 ` Michal Hocko
2013-04-04 15:34 ` Michal Hocko
2013-04-04 15:34 ` Michal Hocko
2013-04-05 9:22 ` Kamezawa Hiroyuki
2013-04-05 9:22 ` Kamezawa Hiroyuki
2013-04-05 9:22 ` Kamezawa Hiroyuki
2013-04-03 9:14 ` [RFC][PATCH 7/7] memcg: kill memcg refcnt Li Zefan
2013-04-03 9:14 ` Li Zefan
[not found] ` <515BF2E3.4000605-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-04-04 15:35 ` Michal Hocko
2013-04-04 15:35 ` Michal Hocko
2013-04-04 15:35 ` Michal Hocko
2013-04-05 9:24 ` Kamezawa Hiroyuki
2013-04-05 9:24 ` Kamezawa Hiroyuki
2013-04-05 9:24 ` Kamezawa Hiroyuki
2013-04-03 9:19 ` [RFC][PATCH 0/7] memcg: make memcg's life cycle the same as cgroup Glauber Costa
2013-04-03 9:19 ` Glauber Costa
[not found] ` <515BF233.6070308-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-04-03 21:43 ` Tejun Heo
2013-04-03 21:43 ` Tejun Heo
2013-04-03 21:43 ` Tejun Heo
2013-04-04 12:00 ` Michal Hocko
2013-04-04 12:00 ` Michal Hocko
2013-04-04 12:00 ` Michal Hocko
2013-04-07 6:00 ` Li Zefan
2013-04-07 6:00 ` Li Zefan
[not found] ` <51610B78.7080001-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-04-07 20:21 ` Michal Hocko
2013-04-07 20:21 ` Michal Hocko
2013-04-07 20:21 ` Michal Hocko
2013-04-07 8:44 ` Li Zefan
2013-04-07 8:44 ` Li Zefan
2013-04-07 8:44 ` Li Zefan
2013-04-07 19:51 ` Michal Hocko
2013-04-07 19:51 ` Michal Hocko
[not found] ` <516131D7.8030004-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-04-08 7:18 ` Glauber Costa
2013-04-08 7:18 ` Glauber Costa
2013-04-08 7:18 ` Glauber Costa
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=5160E8E0.2050602@huawei.com \
--to=lizefan-hv44wf8li93qt0dzr+alfa@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=glommer-bzQdu9zFT3WakBO8gow8eQ@public.gmane.org \
--cc=hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org \
--cc=kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
--cc=mhocko-AlSwsSmVLrQ@public.gmane.org \
--cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.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 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.