From: Li Zefan <lizefan@huawei.com>
To: Tejun Heo <tj@kernel.org>
Cc: <cgroups@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<hannes@cmpxchg.org>
Subject: Re: [PATCHSET cgroup/for-3.16] cgroup: iterate cgroup_subsys_states directly
Date: Fri, 16 May 2014 09:29:30 +0800 [thread overview]
Message-ID: <537569FA.9020801@huawei.com> (raw)
In-Reply-To: <1399671091-23867-1-git-send-email-tj@kernel.org>
On 2014/5/10 5:31, Tejun Heo wrote:
> Hello,
>
> Currently, while csses (cgroup_subsys_states) have ->parent linkage
> too, only cgroups form full tree through their ->children and
> ->sibling fields and css iterations naturally is implemented by
> iterating cgroups and then dereferencing the css for the specified
> subsystem.
>
> There are now use cases where controllers need to iterate through
> csses regardless of their online state as long as they have positive
> reference. This can't easily be achieved by iterating cgroups because
> its css pointer array needs to be cleared on offline and there may be
> multiple dying csses for a cgroup for the same subsystem and there's
> only one pointer per cgroup-subsystem pair.
>
> This patchset moves ->children and ->sibling from cgroup to css and
> link all csses in proper trees and then make css iterators walk csses
> directly instead of going through cgroups. This achieves iteration of
> all non-released csses while also simplifying the iteration
> implementation. This is also in line with the general direction of
> using csses as the primary structural component.
>
> This patchset contains the following fourteen patches.
>
> 0001-cgroup-remove-css_parent.patch
> 0002-cgroup-remove-pointless-has-tasks-children-test-from.patch
> 0003-memcg-update-memcg_has_children-to-use-css_next_chil.patch
> 0004-device_cgroup-remove-direct-access-to-cgroup-childre.patch
> 0005-cgroup-remove-cgroup-parent.patch
> 0006-cgroup-move-cgroup-sibling-and-children-into-cgroup_.patch
> 0007-cgroup-link-all-cgroup_subsys_states-in-their-siblin.patch
> 0008-cgroup-move-cgroup-serial_nr-into-cgroup_subsys_stat.patch
> 0009-cgroup-introduce-CSS_RELEASED-and-reduce-css-iterati.patch
> 0010-cgroup-iterate-cgroup_subsys_states-directly.patch
> 0011-cgroup-use-CSS_ONLINE-instead-of-CGRP_DEAD.patch
> 0012-cgroup-convert-cgroup_has_live_children-into-css_has.patch
> 0013-device_cgroup-use-css_has_online_children-instead-of.patch
> 0014-cgroup-implement-css_tryget.patch
>
> 0001-0004 are prep patches.
>
> 0005-0008 move fields from cgroup to css and link csses in tree
> structure instead of cgroups.
>
> 0009-0010 implement direct css iteration.
>
> 0011-0013 convert a cgroup based interface to a css one, which is now
> possible as both are the same in terms of the tree structure, and fix
> devcg brekage using it.
>
> 0014 implements css_tryget() which is to be used to gain access to
> offline but not-yet-released csses.
>
> This pachset is on top of
>
> b9a63d0116e8 ("Merge branch 'for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu into for-3.16")
> + [1] [PATCHSET v2 cgroup/for-3.16] cgroup: post unified hierarchy fixes and updates
> + [2] (REFRESHED) [PATCHSET cgroup/for-3.16] cgroup: implement cftype->write()
> + [3] (REFRESHED) [PATCHSET cgroup/for-3.16] cgroup: remove cgroup_tree_mutex
> + [4] [PATCHSET cgroup/for-3.16] cgroup: use css->refcnt for cgroup reference counting
>
> and available in the following git branch.
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-direct-css-iteration
>
> diffstat follows. Thanks.
>
> block/blk-cgroup.h | 2
> include/linux/cgroup.h | 122 +++++++++++---------
> kernel/cgroup.c | 257 ++++++++++++++++++++++++-------------------
> kernel/cgroup_freezer.c | 2
> kernel/cpuset.c | 2
> kernel/sched/core.c | 2
> kernel/sched/cpuacct.c | 2
> mm/hugetlb_cgroup.c | 2
> mm/memcontrol.c | 45 +++----
> net/core/netclassid_cgroup.c | 2
> net/core/netprio_cgroup.c | 2
> security/device_cgroup.c | 17 --
> 12 files changed, 251 insertions(+), 206 deletions(-)
>
Acked-by: Li Zefan <lizefan@huawei.com>
next prev parent reply other threads:[~2014-05-16 1:29 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-09 21:31 [PATCHSET cgroup/for-3.16] cgroup: iterate cgroup_subsys_states directly Tejun Heo
2014-05-09 21:31 ` [PATCH 01/14] cgroup: remove css_parent() Tejun Heo
2014-05-11 1:47 ` David Miller
2014-05-11 13:02 ` Neil Horman
2014-05-12 13:16 ` Michal Hocko
2014-05-13 18:50 ` [PATCH v2 " Tejun Heo
2014-05-09 21:31 ` [PATCH 02/14] cgroup: remove pointless has tasks/children test from mem_cgroup_force_empty() Tejun Heo
2014-05-12 14:53 ` Michal Hocko
2014-05-12 14:58 ` [PATCH] memcg: deprecate memory.force_empty knob Michal Hocko
2014-05-12 15:00 ` Tejun Heo
2014-05-12 15:20 ` Michal Hocko
2014-05-12 15:25 ` Tejun Heo
2014-05-12 15:34 ` Michal Hocko
2014-05-13 13:16 ` Johannes Weiner
2014-05-13 15:09 ` Michal Hocko
2014-05-12 14:59 ` [PATCH 02/14] cgroup: remove pointless has tasks/children test from mem_cgroup_force_empty() Tejun Heo
2014-05-12 15:21 ` Michal Hocko
2014-05-13 13:10 ` Johannes Weiner
2014-05-13 16:46 ` Tejun Heo
2014-05-13 18:51 ` [PATCH UPDATED 02/14] memcg: remove " Tejun Heo
2014-05-09 21:31 ` [PATCH 03/14] memcg: update memcg_has_children() to use css_next_child() Tejun Heo
2014-05-12 15:18 ` Michal Hocko
2014-05-13 16:53 ` [PATCH v2 " Tejun Heo
2014-05-09 21:31 ` [PATCH 04/14] device_cgroup: remove direct access to cgroup->children Tejun Heo
2014-05-13 12:56 ` Aristeu Rozanski
2014-05-14 12:52 ` Serge E. Hallyn
2014-05-09 21:31 ` [PATCH 05/14] cgroup: remove cgroup->parent Tejun Heo
2014-05-09 21:31 ` [PATCH 06/14] cgroup: move cgroup->sibling and ->children into cgroup_subsys_state Tejun Heo
2014-05-09 21:31 ` [PATCH 07/14] cgroup: link all cgroup_subsys_states in their sibling lists Tejun Heo
2014-05-09 21:31 ` [PATCH 08/14] cgroup: move cgroup->serial_nr into cgroup_subsys_state Tejun Heo
2014-05-09 21:31 ` [PATCH 09/14] cgroup: introduce CSS_RELEASED and reduce css iteration fallback window Tejun Heo
2014-05-16 16:07 ` [PATCH v2 " Tejun Heo
2014-05-09 21:31 ` [PATCH 10/14] cgroup: iterate cgroup_subsys_states directly Tejun Heo
2014-05-09 21:31 ` [PATCH 11/14] cgroup: use CSS_ONLINE instead of CGRP_DEAD Tejun Heo
2014-05-09 21:31 ` [PATCH 12/14] cgroup: convert cgroup_has_live_children() into css_has_online_children() Tejun Heo
2014-05-09 21:31 ` [PATCH 13/14] device_cgroup: use css_has_online_children() instead of has_children() Tejun Heo
2014-05-13 12:56 ` Aristeu Rozanski
2014-05-14 12:53 ` Serge E. Hallyn
2014-05-09 21:31 ` [PATCH 14/14] cgroup: implement css_tryget() Tejun Heo
2014-05-11 4:54 ` Johannes Weiner
2014-05-11 12:38 ` Tejun Heo
2014-05-16 16:07 ` [PATCH v2 " Tejun Heo
2014-05-13 16:59 ` [PATCHSET cgroup/for-3.16] cgroup: iterate cgroup_subsys_states directly Tejun Heo
2014-05-14 4:21 ` Li Zefan
2014-05-14 13:07 ` Tejun Heo
2014-05-16 1:28 ` Li Zefan
2014-05-16 1:29 ` Li Zefan [this message]
2014-05-16 16:08 ` Tejun Heo
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=537569FA.9020801@huawei.com \
--to=lizefan@huawei.com \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.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