From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tejun Heo Subject: [PATCHSET cgroup/for-3.11] cgroup: convert cgroup_subsys_state refcnt to percpu_ref Date: Wed, 12 Jun 2013 14:03:05 -0700 Message-ID: <1371070996-20613-1-git-send-email-tj@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer; bh=89Zk7i1FeDHrSA9obXIq445g1dV24Mc+O5VgmS2NiVc=; b=TNL2P0frnEu63sKUYywSwF6zMPEaI0S2tBZOur6JtBUh+8JX9BCiB0Plubd38zFynG 2xdn3D9RtOxG8cPp3UIj/9eZ6lCOiNIE0WcFuFWmgQJOz0Wwo3WC6P/eLN62LmM3sTxv WKKl2rJ+sVSpub43cOoKhCp29XfOn0ifhUP2B4vqXFSgpvpcYzOaC25Iw3NVKW9lBYa9 lawmGs6dRW6mrpDjViz9JucYHEpMYtanAM0ILo1mdERxvduOgba6pU4EkLO/XKn9qyEi gJU9ELQarH9G55PlLwo5ANAEatCFjZnb62H+2RuZJNrnvH9QoJ1LpY7EUxuj4ISqh1oQ 6yPw== List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: lizefan-hv44wF8Li93QT0dZR+AlfA@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 Hello, 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-and-list_del_init.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 | 710 +++++++++++++++++++++++++------------------------ 2 files changed, 406 insertions(+), 391 deletions(-) -- tejun [1] http://thread.gmane.org/gmane.linux.kernel/1507258