From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Andrea Righi <righi.andrea@gmail.com>
Cc: Paul Menage <menage@google.com>,
Balbir Singh <balbir@linux.vnet.ibm.com>,
Gui Jianfeng <guijianfeng@cn.fujitsu.com>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
agk@sourceware.org, akpm@linux-foundation.org, axboe@kernel.dk,
baramsori72@gmail.com, Carl Henrik Lunde <chlunde@ping.uio.no>,
dave@linux.vnet.ibm.com, Divyesh Shah <dpshah@google.com>,
eric.rannaud@gmail.com, fernando@oss.ntt.co.jp,
Hirokazu Takahashi <taka@valinux.co.jp>,
Li Zefan <lizf@cn.fujitsu.com>,
matt@bluehost.com, dradford@bluehost.com, ngupta@google.com,
randy.dunlap@oracle.com, roberto@unbit.it,
Ryo Tsuruta <ryov@valinux.co.jp>,
Satoshi UCHIDA <s-uchida@ap.jp.nec.com>,
subrata@linux.vnet.ibm.com, yoshikawa.takuya@oss.ntt.co.jp,
Nauman Rafique <nauman@google.com>,
fchecconi@gmail.com, paolo.valente@unimore.it,
containers@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/7] io-throttle controller infrastructure
Date: Tue, 21 Apr 2009 07:03:23 -0700 [thread overview]
Message-ID: <20090421140323.GA6642@linux.vnet.ibm.com> (raw)
In-Reply-To: <20090421125829.GD13699@linux>
On Tue, Apr 21, 2009 at 02:58:30PM +0200, Andrea Righi wrote:
> On Mon, Apr 20, 2009 at 09:15:24PM -0700, Paul E. McKenney wrote:
> > > > How does the above lock relate to the iot->lock called out in the comment
> > > > headers in the earlier functions? Hmmm... Come to think of it, I don't
> > > > see an acquisition of iot->lock anywhere.
> > > >
> > > > So, what is the story here?
> > >
> > > As said before, only the comment in struct iothrottle is correct, we use
> > > cgroup_lock() to protect iot->list, so there's no need to introduce
> > > another lock inside struct iothrottle.
> > >
> > > And the other comments about iot->lock must be fixed.
> >
> > Sounds good!
> >
> > So this code is compiled into the kernel only when cgroups are defined,
> > correct? Otherwise, cgroup_lock() seems to be an empty function.
>
> Right, from init/Kconfig:
>
> config CGROUP_IO_THROTTLE
> bool "Enable cgroup I/O throttling"
> depends on CGROUPS && RESOURCE_COUNTERS && EXPERIMENTAL
> ...
Fair enough!
> > > > > +int iothrottle_set_page_owner(struct page *page, struct mm_struct *mm)
> > > > > +{
> > > > > + struct iothrottle *iot;
> > > > > + unsigned short id = 0;
> > > > > +
> > > > > + if (iothrottle_disabled())
> > > > > + return 0;
> > > > > + if (!mm)
> > > > > + goto out;
> > > > > + rcu_read_lock();
> > > > > + iot = task_to_iothrottle(rcu_dereference(mm->owner));
> > > >
> > > > Given that task_to_iothrottle() calls task_subsys_state(), which contains
> > > > an rcu_dereference(), why is the rcu_dereference() above required?
> > > > (There might well be a good reason, just cannot see it right offhand.)
> > >
> > > The first rcu_dereference() is required to safely get a task_struct from
> > > mm_struct. The second rcu_dereference() inside task_to_iothrottle() is
> > > required to safely get the struct iothrottle from task_struct.
> >
> > Why not put the rcu_dereference() down inside task_to_iothrottle()?
>
> mmmh... it is needed only when task_struct is taken from mm->owner,
> task_to_iothrottle(current) for example works fine without the
> rcu_dereference(current).
OK... But please note that rcu_dereference() is extremely lightweight,
a couple orders of magnitude cheaper than an uncontended lock. So there
is almost no penalty for using it on the task_to_iothrottle() path.
Thanx, Paul
next prev parent reply other threads:[~2009-04-21 14:03 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-18 21:38 [PATCH 0/7] cgroup: io-throttle controller (v14) Andrea Righi
2009-04-18 21:38 ` [PATCH 1/7] io-throttle documentation Andrea Righi
2009-04-18 21:38 ` [PATCH 2/7] res_counter: introduce ratelimiting attributes Andrea Righi
2009-04-21 0:15 ` KAMEZAWA Hiroyuki
2009-04-21 9:55 ` Andrea Righi
2009-04-21 10:16 ` Balbir Singh
2009-04-21 14:17 ` Andrea Righi
2009-04-21 10:19 ` KAMEZAWA Hiroyuki
2009-04-21 10:13 ` Balbir Singh
2009-04-21 11:16 ` Andrea Righi
2009-04-18 21:38 ` [PATCH 3/7] page_cgroup: provide a generic page tracking infrastructure Andrea Righi
2009-04-24 2:11 ` Gui Jianfeng
2009-04-24 8:31 ` Andrea Righi
2009-04-24 9:14 ` Gui Jianfeng
2009-04-26 17:19 ` Andrea Righi
2009-04-18 21:38 ` [PATCH 4/7] io-throttle controller infrastructure Andrea Righi
2009-04-20 17:59 ` Paul E. McKenney
2009-04-20 21:22 ` Andrea Righi
2009-04-21 4:15 ` Paul E. McKenney
2009-04-21 12:58 ` Andrea Righi
2009-04-21 14:03 ` Paul E. McKenney [this message]
2009-04-18 21:38 ` [PATCH 5/7] kiothrottled: throttle buffered (writeback) IO Andrea Righi
2009-04-23 7:53 ` Gui Jianfeng
2009-04-23 10:25 ` Andrea Righi
2009-04-24 6:36 ` Gui Jianfeng
2009-04-18 21:38 ` [PATCH 6/7] io-throttle instrumentation Andrea Righi
2009-04-18 21:38 ` [PATCH 7/7] export per-task io-throttle statistics to userspace Andrea Righi
-- strict thread matches above, loose matches on Subject: below --
2009-05-03 11:36 [PATCH 0/7] cgroup: io-throttle controller (v16) Andrea Righi
2009-05-03 11:36 ` [PATCH 4/7] io-throttle controller infrastructure Andrea Righi
2009-05-05 0:51 ` Paul E. McKenney
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=20090421140323.GA6642@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=agk@sourceware.org \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=balbir@linux.vnet.ibm.com \
--cc=baramsori72@gmail.com \
--cc=chlunde@ping.uio.no \
--cc=containers@lists.linux-foundation.org \
--cc=dave@linux.vnet.ibm.com \
--cc=dpshah@google.com \
--cc=dradford@bluehost.com \
--cc=eric.rannaud@gmail.com \
--cc=fchecconi@gmail.com \
--cc=fernando@oss.ntt.co.jp \
--cc=guijianfeng@cn.fujitsu.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=matt@bluehost.com \
--cc=menage@google.com \
--cc=nauman@google.com \
--cc=ngupta@google.com \
--cc=paolo.valente@unimore.it \
--cc=randy.dunlap@oracle.com \
--cc=righi.andrea@gmail.com \
--cc=roberto@unbit.it \
--cc=ryov@valinux.co.jp \
--cc=s-uchida@ap.jp.nec.com \
--cc=subrata@linux.vnet.ibm.com \
--cc=taka@valinux.co.jp \
--cc=yoshikawa.takuya@oss.ntt.co.jp \
/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;
as well as URLs for NNTP newsgroup(s).