From: Li Zefan <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
To: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
Cc: cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
cl-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCHSET v2 cgroup/for-3.11] cgroup: convert cgroup_subsys_state refcnt to percpu_ref
Date: Thu, 13 Jun 2013 14:04:47 +0800 [thread overview]
Message-ID: <51B960FF.7070604@huawei.com> (raw)
In-Reply-To: <1371096298-24402-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
On 2013/6/13 12:04, Tejun Heo wrote:
> Hello,
>
> The changes from the last take[L] are,
>
> * Rebased on top of further percpu-refcount updates.
>
> * 0003: Broken patch description updated.
>
> * 0004: Stupid list_del_init() conversions from the last decade
> dropped.
>
> * 0005: Typo fix.
>
> * 0011: percpu_ref_init() error handling fixed. Premature and
> duplicate base css ref puts fixed.
>
> This patchset does a lot of cleanup and then updates css
> (cgroup_subsys_state) refcnt to use the new percpu reference counter.
> A css (cgroup_subsys_state) is how each cgroup is represented to a
> controller. As such, it can be used in hot paths across the various
> subsystems different controllers are associated with.
>
> One of the common operations is reference counting, which up until now
> has been implemented using a global atomic counter and can have
> significant adverse impact on scalability. For example, css refcnt
> can be gotten and put multiple times by blkcg for each IO request.
> For highops configurations which try to do as much per-cpu as
> possible, the global frequent refcnting can be very expensive.
>
> In general, given the various hugely diverse paths css's end up being
> used from, we need to make it cheap and highly scalable. In its
> usage, css refcnting isn't very different from module refcnting.
>
> This patchset contains the following 11 patches.
>
> 0001-cgroup-remove-now-unused-css_depth.patch
> 0002-cgroup-consistently-use-cset-for-struct-css_set-vari.patch
> 0003-cgroup-bring-some-sanity-to-naming-around-cg_cgroup_.patch
> 0004-cgroup-use-kzalloc-instead-of-kmalloc.patch
> 0005-cgroup-clean-up-css_-try-get-and-css_put.patch
> 0006-cgroup-rename-CGRP_REMOVED-to-CGRP_DEAD.patch
> 0007-cgroup-drop-unnecessary-RCU-dancing-from-__put_css_s.patch
> 0008-cgroup-remove-cgroup-count-and-use.patch
> 0009-cgroup-reorder-the-operations-in-cgroup_destroy_lock.patch
> 0010-cgroup-split-cgroup-destruction-into-two-steps.patch
> 0011-cgroup-use-percpu-refcnt-for-cgroup_subsys_states.patch
>
> 0001-0007 are cleanups, many of them cosmetic. They clean up the code
> paths which are related with the refcnting changes. If you're only
> interested in the precpu usage, you can probably skip these.
>
> 0008-0010 updates the cgroup destruction path so that percpu refcnting
> can be used.
>
> 0011 updates css refcnting to use percpu_ref.
>
> This patchset is on top of
>
> cgroup/for-3.11 d5c56ced77 ("cgroup: clean up the cftype array for the base cgroup files")
> + [1] percpu/review-percpu-ref-tryget
>
> and available in the following git branch.
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-css-percpu-ref
>
> diffstat follows. Thanks.
>
> include/linux/cgroup.h | 87 ++---
> kernel/cgroup.c | 723 ++++++++++++++++++++++++++-----------------------
> 2 files changed, 420 insertions(+), 390 deletions(-)
>
Acked-by: Li Zefan <lizefan-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
WARNING: multiple messages have this Message-ID (diff)
From: Li Zefan <lizefan@huawei.com>
To: Tejun Heo <tj@kernel.org>
Cc: <containers@lists.linux-foundation.org>,
<cgroups@vger.kernel.org>, <koverstreet@google.com>,
<linux-kernel@vger.kernel.org>, <cl@linux-foundation.org>
Subject: Re: [PATCHSET v2 cgroup/for-3.11] cgroup: convert cgroup_subsys_state refcnt to percpu_ref
Date: Thu, 13 Jun 2013 14:04:47 +0800 [thread overview]
Message-ID: <51B960FF.7070604@huawei.com> (raw)
In-Reply-To: <1371096298-24402-1-git-send-email-tj@kernel.org>
On 2013/6/13 12:04, Tejun Heo wrote:
> Hello,
>
> The changes from the last take[L] are,
>
> * Rebased on top of further percpu-refcount updates.
>
> * 0003: Broken patch description updated.
>
> * 0004: Stupid list_del_init() conversions from the last decade
> dropped.
>
> * 0005: Typo fix.
>
> * 0011: percpu_ref_init() error handling fixed. Premature and
> duplicate base css ref puts fixed.
>
> This patchset does a lot of cleanup and then updates css
> (cgroup_subsys_state) refcnt to use the new percpu reference counter.
> A css (cgroup_subsys_state) is how each cgroup is represented to a
> controller. As such, it can be used in hot paths across the various
> subsystems different controllers are associated with.
>
> One of the common operations is reference counting, which up until now
> has been implemented using a global atomic counter and can have
> significant adverse impact on scalability. For example, css refcnt
> can be gotten and put multiple times by blkcg for each IO request.
> For highops configurations which try to do as much per-cpu as
> possible, the global frequent refcnting can be very expensive.
>
> In general, given the various hugely diverse paths css's end up being
> used from, we need to make it cheap and highly scalable. In its
> usage, css refcnting isn't very different from module refcnting.
>
> This patchset contains the following 11 patches.
>
> 0001-cgroup-remove-now-unused-css_depth.patch
> 0002-cgroup-consistently-use-cset-for-struct-css_set-vari.patch
> 0003-cgroup-bring-some-sanity-to-naming-around-cg_cgroup_.patch
> 0004-cgroup-use-kzalloc-instead-of-kmalloc.patch
> 0005-cgroup-clean-up-css_-try-get-and-css_put.patch
> 0006-cgroup-rename-CGRP_REMOVED-to-CGRP_DEAD.patch
> 0007-cgroup-drop-unnecessary-RCU-dancing-from-__put_css_s.patch
> 0008-cgroup-remove-cgroup-count-and-use.patch
> 0009-cgroup-reorder-the-operations-in-cgroup_destroy_lock.patch
> 0010-cgroup-split-cgroup-destruction-into-two-steps.patch
> 0011-cgroup-use-percpu-refcnt-for-cgroup_subsys_states.patch
>
> 0001-0007 are cleanups, many of them cosmetic. They clean up the code
> paths which are related with the refcnting changes. If you're only
> interested in the precpu usage, you can probably skip these.
>
> 0008-0010 updates the cgroup destruction path so that percpu refcnting
> can be used.
>
> 0011 updates css refcnting to use percpu_ref.
>
> This patchset is on top of
>
> cgroup/for-3.11 d5c56ced77 ("cgroup: clean up the cftype array for the base cgroup files")
> + [1] percpu/review-percpu-ref-tryget
>
> and available in the following git branch.
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-css-percpu-ref
>
> diffstat follows. Thanks.
>
> include/linux/cgroup.h | 87 ++---
> kernel/cgroup.c | 723 ++++++++++++++++++++++++++-----------------------
> 2 files changed, 420 insertions(+), 390 deletions(-)
>
Acked-by: Li Zefan <lizefan@huawei.com>
next prev parent reply other threads:[~2013-06-13 6:04 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-13 4:04 [PATCHSET v2 cgroup/for-3.11] cgroup: convert cgroup_subsys_state refcnt to percpu_ref Tejun Heo
2013-06-13 4:04 ` Tejun Heo
[not found] ` <1371096298-24402-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2013-06-13 4:04 ` [PATCH 01/11] cgroup: remove now unused css_depth() Tejun Heo
2013-06-13 4:04 ` Tejun Heo
2013-06-13 4:04 ` [PATCH 02/11] cgroup: consistently use @cset for struct css_set variables Tejun Heo
2013-06-13 4:04 ` Tejun Heo
2013-06-13 4:04 ` Tejun Heo
2013-06-13 4:04 ` [PATCH 03/11] cgroup: bring some sanity to naming around cg_cgroup_link Tejun Heo
2013-06-13 4:04 ` Tejun Heo
2013-06-13 4:04 ` [PATCH 04/11] cgroup: use kzalloc() instead of kmalloc() Tejun Heo
2013-06-13 4:04 ` Tejun Heo
2013-06-13 4:04 ` [PATCH 05/11] cgroup: clean up css_[try]get() and css_put() Tejun Heo
2013-06-13 4:04 ` [PATCH 06/11] cgroup: rename CGRP_REMOVED to CGRP_DEAD Tejun Heo
2013-06-13 4:04 ` Tejun Heo
2013-06-13 4:04 ` [PATCH 07/11] cgroup: drop unnecessary RCU dancing from __put_css_set() Tejun Heo
2013-06-13 4:04 ` Tejun Heo
2013-06-13 4:04 ` [PATCH 08/11] cgroup: remove cgroup->count and use Tejun Heo
2013-06-13 4:04 ` [PATCH 09/11] cgroup: reorder the operations in cgroup_destroy_locked() Tejun Heo
2013-06-13 4:04 ` Tejun Heo
2013-06-13 4:04 ` [PATCH 10/11] cgroup: split cgroup destruction into two steps Tejun Heo
2013-06-13 4:04 ` [PATCH 11/11] cgroup: use percpu refcnt for cgroup_subsys_states Tejun Heo
2013-06-13 6:04 ` Li Zefan [this message]
2013-06-13 6:04 ` [PATCHSET v2 cgroup/for-3.11] cgroup: convert cgroup_subsys_state refcnt to percpu_ref Li Zefan
[not found] ` <51B960FF.7070604-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2013-06-13 17:56 ` Tejun Heo
2013-06-13 17:56 ` Tejun Heo
[not found] ` <20130613175627.GC10799-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2013-06-14 2:41 ` Tejun Heo
2013-06-14 2:41 ` Tejun Heo
2013-06-13 17:56 ` Tejun Heo
2013-06-13 4:04 ` [PATCH 05/11] cgroup: clean up css_[try]get() and css_put() Tejun Heo
2013-06-13 4:04 ` [PATCH 08/11] cgroup: remove cgroup->count and use Tejun Heo
2013-06-13 4:04 ` [PATCH 10/11] cgroup: split cgroup destruction into two steps Tejun Heo
2013-06-13 4:04 ` [PATCH 11/11] cgroup: use percpu refcnt for cgroup_subsys_states Tejun Heo
[not found] ` <1371096298-24402-12-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2013-06-13 23:16 ` Kent Overstreet
2013-06-13 23:16 ` Kent Overstreet
2013-06-14 12:55 ` Michal Hocko
2013-06-14 12:55 ` Michal Hocko
2013-06-14 12:55 ` Michal Hocko
[not found] ` <20130614125539.GC10084-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-06-14 14:15 ` Glauber Costa
2013-06-14 14:15 ` Glauber Costa
2013-06-14 14:15 ` Glauber Costa
[not found] ` <20130614141510.GA19021-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2013-06-14 14:22 ` Michal Hocko
2013-06-14 14:22 ` Michal Hocko
2013-06-14 13:20 ` Michal Hocko
2013-06-14 13:20 ` Michal Hocko
[not found] ` <20130614132026.GD10084-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-06-14 22:31 ` Tejun Heo
2013-06-14 22:31 ` Tejun Heo
2013-06-14 22:31 ` Tejun Heo
[not found] ` <20130614223125.GD6593-9pTldWuhBndy/B6EtB590w@public.gmane.org>
2013-06-15 5:35 ` Tejun Heo
2013-06-15 5:35 ` Tejun Heo
[not found] ` <20130615053522.GA7017-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org>
2013-06-15 5:39 ` Tejun Heo
2013-06-15 5:39 ` Tejun Heo
2013-06-15 6:31 ` Tejun Heo
2013-06-15 6:31 ` Tejun Heo
2013-06-17 13:27 ` Michal Hocko
2013-06-17 13:27 ` Michal Hocko
[not found] ` <20130617132744.GB5018-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2013-06-17 17:16 ` Tejun Heo
2013-06-17 17:16 ` Tejun Heo
2013-06-17 17:16 ` Tejun Heo
2013-06-17 13:27 ` Michal Hocko
2013-06-15 5:35 ` Tejun Heo
2013-06-14 13:20 ` 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=51B960FF.7070604@huawei.com \
--to=lizefan-hv44wf8li93qt0dzr+alfa@public.gmane.org \
--cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=cl-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=koverstreet-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@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.