From: Li Zefan <lizf@cn.fujitsu.com>
To: Colin Cross <ccross@android.com>
Cc: linux-kernel@vger.kernel.org, Paul Menage <menage@google.com>,
containers@lists.linux-foundation.org
Subject: Re: [PATCH] cgroup: Convert synchronize_rcu to call_rcu in cgroup_attach_task
Date: Tue, 23 Nov 2010 16:14:24 +0800 [thread overview]
Message-ID: <4CEB77E0.10202@cn.fujitsu.com> (raw)
In-Reply-To: <1290398767-15230-1-git-send-email-ccross@android.com>
12:06, Colin Cross wrote:
> The synchronize_rcu call in cgroup_attach_task can be very
> expensive. All fastpath accesses to task->cgroups that expect
> task->cgroups not to change already use task_lock() or
> cgroup_lock() to protect against updates, and, in cgroup.c,
> only the CGROUP_DEBUG files have RCU read-side critical
> sections.
>
> sched.c uses RCU read-side-critical sections on task->cgroups,
> but only to ensure that a dereference of task->cgroups does
> not become invalid, not that it doesn't change.
>
Other cgroup subsystems also use rcu_read_lock to access task->cgroups,
for example net_cls cgroup and device cgroup.
I don't think the performance of task attaching is so critically
important that we have to use call_rcu() instead of synchronize_rcu()?
> This patch adds a function put_css_set_rcu, which delays the
> put until after a grace period has elapsed. This ensures that
> any RCU read-side critical sections that dereferenced
> task->cgroups in sched.c have completed before the css_set is
> deleted. The synchronize_rcu()/put_css_set() combo in
> cgroup_attach_task() can then be replaced with
> put_css_set_rcu().
>
> Also converts the CGROUP_DEBUG files that access
> current->cgroups to use task_lock(current) instead of
> rcu_read_lock().
>
What for? What do we gain from doing this for those debug
interfaces?
> Signed-off-by: Colin Cross <ccross@android.com>
>
> ---
>
> This version fixes the problems with the previous patch by
> keeping the use of RCU in cgroup_attach_task, but allowing
> cgroup_attach_task to return immediately by deferring the
> final put_css_reg to an rcu callback.
>
> include/linux/cgroup.h | 4 +++
> kernel/cgroup.c | 58 ++++++++++++++++++++++++++++++++++++++----------
> 2 files changed, 50 insertions(+), 12 deletions(-)
next prev parent reply other threads:[~2010-11-23 8:12 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-21 2:00 [PATCH] cgroup: Remove RCU from task->cgroups Colin Cross
[not found] ` <1290304824-22722-1-git-send-email-ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org>
2010-11-21 23:02 ` Colin Cross
2010-11-21 23:02 ` Colin Cross
2010-11-22 4:06 ` [PATCH] cgroup: Convert synchronize_rcu to call_rcu in cgroup_attach_task Colin Cross
[not found] ` <1290398767-15230-1-git-send-email-ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org>
2010-11-23 8:14 ` Li Zefan
2010-11-24 1:24 ` Paul Menage
2010-11-23 8:14 ` Li Zefan [this message]
[not found] ` <4CEB77E0.10202-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2010-11-23 8:58 ` Colin Cross
2010-11-23 8:58 ` Colin Cross
2010-11-23 20:22 ` Colin Cross
[not found] ` <AANLkTimjpW6NZ6fEiVi0VzjkpQGVob4=VHsohXUiDQkJ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-11-23 20:22 ` Colin Cross
2010-11-24 1:24 ` Paul Menage
[not found] ` <AANLkTi=4-OgPUugnUBaqSU3oC=3wxTjAsOB_Ais3Or+i-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-11-24 1:43 ` [PATCH] cgroup: Remove call to synchronize_rcu " Colin Cross
2010-11-24 1:43 ` Colin Cross
2010-11-24 2:29 ` Colin Cross
2011-01-22 1:17 ` Bryan Huntsman
2011-01-22 2:04 ` Colin Cross
[not found] ` <4D3A3024.9040402-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2011-01-22 2:04 ` Colin Cross
[not found] ` <1290563018-2804-1-git-send-email-ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org>
2010-11-24 2:29 ` Colin Cross
2011-01-22 1:17 ` Bryan Huntsman
2011-01-28 1:17 ` Bryan Huntsman
2011-01-28 1:17 ` Bryan Huntsman
2010-11-24 2:06 ` [PATCH] cgroup: Convert synchronize_rcu to call_rcu " Li Zefan
2010-11-24 2:06 ` Li Zefan
2010-11-24 2:10 ` Colin Cross
2010-11-24 5:37 ` [PATCH 1/2] cgroup: Set CGRP_RELEASABLE when adding to a cgroup Colin Cross
2010-11-24 23:54 ` Paul Menage
[not found] ` <AANLkTimFqJ+qPidS_81DKd7ExSxDG7GNi0gjcUEEq_7j-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-11-25 0:11 ` Colin Cross
2010-11-25 0:11 ` Colin Cross
2010-11-25 0:18 ` Colin Cross
[not found] ` <AANLkTimwvP2Ey1gJ6AbbFNtDKjGZt4cwqL=08nGBa_PT-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-11-25 0:18 ` Colin Cross
2010-11-25 0:21 ` Paul Menage
2010-11-25 0:21 ` Paul Menage
[not found] ` <AANLkTimJA52-GTM=AzS+tkOugrsi6Keh0_j87vK1BkGv-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-03 3:07 ` Colin Cross
2010-12-03 3:07 ` Colin Cross
2010-12-17 0:54 ` Paul Menage
2010-12-17 1:12 ` Colin Cross
[not found] ` <AANLkTinZarXbEyb1xfJWjG4gN2qhTVTXTdso4Cym5M9T-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-17 1:12 ` Colin Cross
[not found] ` <AANLkTim67fLN+PYz-P0TM0QRmvQKP80tyXSNKNSZhFZ2-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-17 0:54 ` Paul Menage
[not found] ` <1290577024-12347-1-git-send-email-ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org>
2010-11-24 23:54 ` Paul Menage
2011-01-28 1:17 ` Bryan Huntsman
2011-01-28 1:17 ` Bryan Huntsman
[not found] ` <4D42192C.9000701-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2011-01-28 1:30 ` Paul Menage
2011-01-28 1:30 ` Paul Menage
2011-01-28 1:48 ` Michael Bohan
[not found] ` <AANLkTin7B51maXHRH+FNmZ14bmWmEp9P2=2QTNqgq_Fi-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-01-28 1:48 ` Michael Bohan
[not found] ` <AANLkTi=6nwDCdzDz7E2EaAw2pf3KUVjmKMRqGfz5zVhP-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-11-24 5:37 ` Colin Cross
2010-11-24 5:37 ` [PATCH 2/2] cgroup: Remove call to synchronize_rcu in cgroup_attach_task Colin Cross
2010-11-24 5:37 ` Colin Cross
2011-01-28 1:17 ` Bryan Huntsman
[not found] ` <1290577024-12347-2-git-send-email-ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org>
2011-01-28 1:17 ` Bryan Huntsman
[not found] ` <4CEC7329.7070909-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2010-11-24 2:10 ` [PATCH] cgroup: Convert synchronize_rcu to call_rcu " Colin Cross
2010-11-24 18:58 ` Paul Menage
2010-11-24 18:58 ` Paul Menage
[not found] ` <AANLkTikx6d0_VFtZ4zWQucRCf=vFt7N2M6=0jpnKasEE-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-11-22 4:06 ` Colin Cross
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=4CEB77E0.10202@cn.fujitsu.com \
--to=lizf@cn.fujitsu.com \
--cc=ccross@android.com \
--cc=containers@lists.linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=menage@google.com \
/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.