From: Andrea Righi <righi.andrea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
Cc: randy.dunlap-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org,
menage-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
chlunde-om2ZC0WAoZIXWF+eFR7m5Q@public.gmane.org,
eric.rannaud-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
balbir-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org,
fernando-gVGce1chcLdL9jVzuh4AOg@public.gmane.org,
dradford-cT2on/YLNlBWk0Htik3J/w@public.gmane.org,
agk-9JcytcrH/bA+uJoB2kUjGw@public.gmane.org,
subrata-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org,
axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
dave-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org,
matt-cT2on/YLNlBWk0Htik3J/w@public.gmane.org,
roberto-5KDOxZqKugI@public.gmane.org,
ngupta-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org
Subject: Re: [PATCH 0/9] cgroup: io-throttle controller (v13)
Date: Fri, 17 Apr 2009 11:37:44 +0200 [thread overview]
Message-ID: <20090417093744.GA8689@linux> (raw)
In-Reply-To: <20090416152433.aaaba300.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
On Thu, Apr 16, 2009 at 03:24:33PM -0700, Andrew Morton wrote:
> On Tue, 14 Apr 2009 22:21:11 +0200
> Andrea Righi <righi.andrea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > Objective
> > ~~~~~~~~~
> > The objective of the io-throttle controller is to improve IO performance
> > predictability of different cgroups that share the same block devices.
>
> We should get an IO controller into Linux. Does anyone have a reason
> why it shouldn't be this one?
>
> > Respect to other priority/weight-based solutions the approach used by
> > this controller is to explicitly choke applications' requests
>
> Yes, blocking the offending application at a high level has always
> seemed to me to be the best way of implementing the controller.
>
> > that
> > directly or indirectly generate IO activity in the system (this
> > controller addresses both synchronous IO and writeback/buffered IO).
>
> The problem I've seen with some of the proposed controllers was that
> they didn't handle delayed writeback very well, if at all.
>
> Can you explain at a high level but in some detail how this works? If
> an application is doing a huge write(), how is that detected and how is
> the application made to throttle?
The writeback writes are handled in three steps:
1) track the owner of the dirty pages
2) detect writeback IO
3) delay writeback IO that exceeds the cgroup limits
For 1) I barely used the bio-cgroup functionality. The bio-cgroup use
the page_cgroup structure to store the owner of each dirty page when the
page is dirtied. At this point the actual owner of the page can be
retrieved looking at current->mm->owner (i.e. in __set_page_dirty()),
and its bio_cgroup id is stored into the page_cgroup structure.
Then for 2) we can detect writeback IO placing a hook,
cgroup_io_throttle(), in submit_bio():
unsigned long long
cgroup_io_throttle(struct bio *bio, struct block_device *bdev, ssize_t bytes);
If the IO operation is a write we look at the owner of the pages
involved (from bio) and we check if we must throttle the operation. If
the owner of that page is "current", we throttle the current task
directly (via schedule_timeout_killable()) and we just return 0 from
cgroup_io_throttle() after the sleep.
3) If the owner of the page must be throttled and the current task is
not the same task, e.g., it's a kernel thread (current->flags &
(PF_KTHREAD | PF_FLUSHER | PF_KSWAPD)), then we assume it's a writeback
IO and we immediately return the amount of jiffies that the real owner
should sleep.
void submit_bio(int rw, struct bio *bio)
{
...
if (bio_has_data(bio)) {
unsigned long sleep = 0;
if (rw & WRITE) {
count_vm_events(PGPGOUT, count);
sleep = cgroup_io_throttle(bio,
bio->bi_bdev, bio->bi_size);
} else {
task_io_account_read(bio->bi_size);
count_vm_events(PGPGIN, count);
cgroup_io_throttle(NULL, bio->bi_bdev, bio->bi_size);
}
...
if (sleep && !iothrottle_make_request(bio, jiffies + sleep))
return;
}
generic_make_request(bio);
...
}
Since the current task must not be throttled here, we set a deadline
jiffies + sleep and we add this request in a rbtree via
iothrottle_make_request().
This request will be dispatched ansychronously by a kernel thread -
kiothrottled() - using generic_make_request() when the deadline will
expire. There's a lot of space for optimizations here, i.e. use many
threads per block device, workqueue, slow-work, ...
In the old version (v12) I simply throttled writeback IO in
balance_dirty_pages_ratelimited_nr() but this obviously leads to bursty
writebacks. In v13 the writeback IO is hugely more smooth.
>
> Does it add new metadata to `struct page' for this?
struct page_cgroup
>
> I assume that the write throttling is also wired up into the MAP_SHARED
> write-fault path?
>
mmmh.. in case of writeback IO we account and throttle requests for
mm->owner. In case of synchronous IO (read/write) we always throttle the
current task in submit_bio().
>
>
> Does this patchset provide a path by which we can implement IO control
> for (say) NFS mounts?
Honestly I didn't looked at all at this. :) I'll check, but in principle
adding the cgroup_io_throttle() hook in the opportune NFS path is enough
to provide IO control also for NFS mounts.
-Andrea
WARNING: multiple messages have this Message-ID (diff)
From: Andrea Righi <righi.andrea@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: menage@google.com, balbir@linux.vnet.ibm.com,
guijianfeng@cn.fujitsu.com, kamezawa.hiroyu@jp.fujitsu.com,
agk@sourceware.org, axboe@kernel.dk, baramsori72@gmail.com,
chlunde@ping.uio.no, dave@linux.vnet.ibm.com, dpshah@google.com,
eric.rannaud@gmail.com, fernando@oss.ntt.co.jp,
taka@valinux.co.jp, lizf@cn.fujitsu.com, matt@bluehost.com,
dradford@bluehost.com, ngupta@google.com,
randy.dunlap@oracle.com, roberto@unbit.it, ryov@valinux.co.jp,
s-uchida@ap.jp.nec.com, subrata@linux.vnet.ibm.com,
yoshikawa.takuya@oss.ntt.co.jp,
containers@lists.linux-foundation.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/9] cgroup: io-throttle controller (v13)
Date: Fri, 17 Apr 2009 11:37:44 +0200 [thread overview]
Message-ID: <20090417093744.GA8689@linux> (raw)
In-Reply-To: <20090416152433.aaaba300.akpm@linux-foundation.org>
On Thu, Apr 16, 2009 at 03:24:33PM -0700, Andrew Morton wrote:
> On Tue, 14 Apr 2009 22:21:11 +0200
> Andrea Righi <righi.andrea@gmail.com> wrote:
>
> > Objective
> > ~~~~~~~~~
> > The objective of the io-throttle controller is to improve IO performance
> > predictability of different cgroups that share the same block devices.
>
> We should get an IO controller into Linux. Does anyone have a reason
> why it shouldn't be this one?
>
> > Respect to other priority/weight-based solutions the approach used by
> > this controller is to explicitly choke applications' requests
>
> Yes, blocking the offending application at a high level has always
> seemed to me to be the best way of implementing the controller.
>
> > that
> > directly or indirectly generate IO activity in the system (this
> > controller addresses both synchronous IO and writeback/buffered IO).
>
> The problem I've seen with some of the proposed controllers was that
> they didn't handle delayed writeback very well, if at all.
>
> Can you explain at a high level but in some detail how this works? If
> an application is doing a huge write(), how is that detected and how is
> the application made to throttle?
The writeback writes are handled in three steps:
1) track the owner of the dirty pages
2) detect writeback IO
3) delay writeback IO that exceeds the cgroup limits
For 1) I barely used the bio-cgroup functionality. The bio-cgroup use
the page_cgroup structure to store the owner of each dirty page when the
page is dirtied. At this point the actual owner of the page can be
retrieved looking at current->mm->owner (i.e. in __set_page_dirty()),
and its bio_cgroup id is stored into the page_cgroup structure.
Then for 2) we can detect writeback IO placing a hook,
cgroup_io_throttle(), in submit_bio():
unsigned long long
cgroup_io_throttle(struct bio *bio, struct block_device *bdev, ssize_t bytes);
If the IO operation is a write we look at the owner of the pages
involved (from bio) and we check if we must throttle the operation. If
the owner of that page is "current", we throttle the current task
directly (via schedule_timeout_killable()) and we just return 0 from
cgroup_io_throttle() after the sleep.
3) If the owner of the page must be throttled and the current task is
not the same task, e.g., it's a kernel thread (current->flags &
(PF_KTHREAD | PF_FLUSHER | PF_KSWAPD)), then we assume it's a writeback
IO and we immediately return the amount of jiffies that the real owner
should sleep.
void submit_bio(int rw, struct bio *bio)
{
...
if (bio_has_data(bio)) {
unsigned long sleep = 0;
if (rw & WRITE) {
count_vm_events(PGPGOUT, count);
sleep = cgroup_io_throttle(bio,
bio->bi_bdev, bio->bi_size);
} else {
task_io_account_read(bio->bi_size);
count_vm_events(PGPGIN, count);
cgroup_io_throttle(NULL, bio->bi_bdev, bio->bi_size);
}
...
if (sleep && !iothrottle_make_request(bio, jiffies + sleep))
return;
}
generic_make_request(bio);
...
}
Since the current task must not be throttled here, we set a deadline
jiffies + sleep and we add this request in a rbtree via
iothrottle_make_request().
This request will be dispatched ansychronously by a kernel thread -
kiothrottled() - using generic_make_request() when the deadline will
expire. There's a lot of space for optimizations here, i.e. use many
threads per block device, workqueue, slow-work, ...
In the old version (v12) I simply throttled writeback IO in
balance_dirty_pages_ratelimited_nr() but this obviously leads to bursty
writebacks. In v13 the writeback IO is hugely more smooth.
>
> Does it add new metadata to `struct page' for this?
struct page_cgroup
>
> I assume that the write throttling is also wired up into the MAP_SHARED
> write-fault path?
>
mmmh.. in case of writeback IO we account and throttle requests for
mm->owner. In case of synchronous IO (read/write) we always throttle the
current task in submit_bio().
>
>
> Does this patchset provide a path by which we can implement IO control
> for (say) NFS mounts?
Honestly I didn't looked at all at this. :) I'll check, but in principle
adding the cgroup_io_throttle() hook in the opportune NFS path is enough
to provide IO control also for NFS mounts.
-Andrea
next prev parent reply other threads:[~2009-04-17 9:37 UTC|newest]
Thread overview: 208+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-14 20:21 [PATCH 0/9] cgroup: io-throttle controller (v13) Andrea Righi
2009-04-14 20:21 ` [PATCH 4/9] support checking of cgroup subsystem dependencies Andrea Righi
2009-04-14 20:21 ` [PATCH 5/9] io-throttle controller infrastructure Andrea Righi
[not found] ` <1239740480-28125-1-git-send-email-righi.andrea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-04-14 20:21 ` [PATCH 1/9] io-throttle documentation Andrea Righi
2009-04-14 20:21 ` Andrea Righi
[not found] ` <1239740480-28125-2-git-send-email-righi.andrea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-04-17 1:24 ` KAMEZAWA Hiroyuki
2009-04-17 17:39 ` Vivek Goyal
2009-04-17 17:39 ` Vivek Goyal
2009-04-17 23:12 ` Andrea Righi
2009-04-19 13:42 ` Vivek Goyal
2009-04-19 13:42 ` Vivek Goyal
[not found] ` <20090419134201.GF8493-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-04-19 15:47 ` Andrea Righi
2009-04-19 15:47 ` Andrea Righi
2009-04-20 21:28 ` Vivek Goyal
2009-04-20 21:28 ` Vivek Goyal
2009-04-20 22:05 ` Andrea Righi
2009-04-21 1:08 ` Vivek Goyal
2009-04-21 1:08 ` Vivek Goyal
2009-04-21 8:37 ` Andrea Righi
2009-04-21 14:23 ` Vivek Goyal
2009-04-21 14:23 ` Vivek Goyal
[not found] ` <20090421142305.GB22619-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-04-21 18:29 ` Vivek Goyal
2009-04-21 18:29 ` Vivek Goyal
[not found] ` <20090421182958.GF22619-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-04-21 21:36 ` Andrea Righi
2009-04-21 21:36 ` Andrea Righi
2009-04-21 21:28 ` Andrea Righi
2009-04-21 21:28 ` Andrea Righi
[not found] ` <20090421010846.GA15850-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-04-21 8:37 ` Andrea Righi
[not found] ` <20090420212827.GA9080-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-04-20 22:05 ` Andrea Righi
2009-04-19 13:54 ` Vivek Goyal
2009-04-19 13:54 ` Vivek Goyal
[not found] ` <20090417173955.GF29086-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2009-04-17 23:12 ` Andrea Righi
2009-04-17 1:24 ` KAMEZAWA Hiroyuki
2009-04-17 1:56 ` Li Zefan
[not found] ` <49E7E1CF.6060209-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2009-04-17 10:25 ` Andrea Righi
2009-04-17 10:25 ` Andrea Righi
2009-04-17 10:41 ` Andrea Righi
2009-04-17 10:41 ` Andrea Righi
2009-04-17 11:35 ` Fernando Luis Vázquez Cao
2009-04-17 11:35 ` Fernando Luis Vázquez Cao
2009-04-20 9:38 ` Ryo Tsuruta
[not found] ` <20090420.183815.226804723.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2009-04-20 15:00 ` Andrea Righi
2009-04-20 15:00 ` Andrea Righi
2009-04-27 10:45 ` Ryo Tsuruta
2009-04-27 10:45 ` Ryo Tsuruta
2009-04-27 12:15 ` Ryo Tsuruta
[not found] ` <20090427.194533.183037823.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2009-04-27 12:15 ` Ryo Tsuruta
2009-04-27 21:56 ` Andrea Righi
2009-04-27 21:56 ` Andrea Righi
2009-04-20 9:38 ` Ryo Tsuruta
[not found] ` <20090417102417.88a0ef93.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-17 1:56 ` Li Zefan
2009-04-17 7:34 ` Gui Jianfeng
2009-04-17 9:55 ` Andrea Righi
2009-04-17 7:34 ` Gui Jianfeng
[not found] ` <49E8311D.5030901-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2009-04-17 7:43 ` KAMEZAWA Hiroyuki
2009-04-17 7:43 ` KAMEZAWA Hiroyuki
[not found] ` <20090417164351.ea85012d.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-17 9:29 ` Gui Jianfeng
2009-04-17 9:29 ` Gui Jianfeng
2009-04-17 9:55 ` Andrea Righi
2009-04-14 20:21 ` [PATCH 2/9] res_counter: introduce ratelimiting attributes Andrea Righi
2009-04-14 20:21 ` Andrea Righi
2009-04-14 20:21 ` [PATCH 3/9] bio-cgroup controller Andrea Righi
2009-04-14 20:21 ` Andrea Righi
2009-04-15 2:15 ` KAMEZAWA Hiroyuki
[not found] ` <20090415111528.b796519a.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-15 9:37 ` Andrea Righi
2009-04-15 13:07 ` Andrea Righi
2009-04-15 9:37 ` Andrea Righi
2009-04-15 12:38 ` Ryo Tsuruta
2009-04-15 12:38 ` Ryo Tsuruta
2009-04-15 13:23 ` Andrea Righi
2009-04-15 23:58 ` KAMEZAWA Hiroyuki
[not found] ` <20090416085814.8b6d077f.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-16 10:42 ` Andrea Righi
2009-04-16 10:42 ` Andrea Righi
2009-04-16 12:00 ` Ryo Tsuruta
2009-04-16 12:00 ` Ryo Tsuruta
2009-04-17 0:04 ` KAMEZAWA Hiroyuki
2009-04-17 9:44 ` Andrea Righi
[not found] ` <20090417090451.5ad9022f.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-17 9:44 ` Andrea Righi
2009-04-17 0:04 ` KAMEZAWA Hiroyuki
2009-04-15 23:58 ` KAMEZAWA Hiroyuki
[not found] ` <20090415.213850.226770691.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2009-04-15 13:23 ` Andrea Righi
2009-04-15 13:07 ` Andrea Righi
2009-04-16 22:29 ` Andrew Morton
2009-04-17 0:20 ` KAMEZAWA Hiroyuki
[not found] ` <20090417092040.1c832c69.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-17 0:44 ` Andrew Morton
2009-04-17 0:44 ` Andrew Morton
[not found] ` <20090416174428.6bb5da21.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-04-17 1:44 ` Ryo Tsuruta
2009-04-17 1:50 ` Balbir Singh
2009-04-17 1:44 ` Ryo Tsuruta
[not found] ` <20090417.104432.193700511.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2009-04-17 4:15 ` Andrew Morton
2009-04-17 4:15 ` Andrew Morton
2009-04-17 7:48 ` Ryo Tsuruta
[not found] ` <20090416211514.038c5e91.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-04-17 7:48 ` Ryo Tsuruta
2009-04-17 1:50 ` Balbir Singh
[not found] ` <20090416152937.b2188370.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-04-17 0:20 ` KAMEZAWA Hiroyuki
2009-04-17 9:40 ` Andrea Righi
2009-04-17 9:40 ` Andrea Righi
[not found] ` <1239740480-28125-4-git-send-email-righi.andrea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-04-15 2:15 ` KAMEZAWA Hiroyuki
2009-04-16 22:29 ` Andrew Morton
2009-04-17 1:49 ` Takuya Yoshikawa
2009-04-17 10:22 ` Balbir Singh
2009-04-17 1:49 ` Takuya Yoshikawa
2009-04-17 2:24 ` KAMEZAWA Hiroyuki
[not found] ` <20090417112433.085ed604.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-17 7:22 ` Ryo Tsuruta
2009-04-17 7:22 ` Ryo Tsuruta
2009-04-17 8:00 ` KAMEZAWA Hiroyuki
[not found] ` <20090417170016.5c7268f1.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-17 8:48 ` KAMEZAWA Hiroyuki
2009-04-17 8:48 ` KAMEZAWA Hiroyuki
2009-04-17 8:51 ` KAMEZAWA Hiroyuki
[not found] ` <20090417174854.07aeec9f.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-17 8:51 ` KAMEZAWA Hiroyuki
[not found] ` <20090417.162201.183038478.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2009-04-17 8:00 ` KAMEZAWA Hiroyuki
2009-04-17 11:27 ` Block I/O tracking (was Re: [PATCH 3/9] bio-cgroup controller) Fernando Luis Vázquez Cao
2009-04-17 11:27 ` Fernando Luis Vázquez Cao
[not found] ` <49E8679D.8010405-gVGce1chcLdL9jVzuh4AOg@public.gmane.org>
2009-04-17 22:09 ` Andrea Righi
2009-04-17 22:09 ` Andrea Righi
[not found] ` <49E7E037.9080004-gVGce1chcLdL9jVzuh4AOg@public.gmane.org>
2009-04-17 2:24 ` [PATCH 3/9] bio-cgroup controller KAMEZAWA Hiroyuki
2009-04-17 7:32 ` Ryo Tsuruta
2009-04-17 7:32 ` Ryo Tsuruta
2009-04-17 10:22 ` Balbir Singh
[not found] ` <20090417102214.GC3896-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2009-04-20 11:35 ` Ryo Tsuruta
2009-04-20 11:35 ` Ryo Tsuruta
[not found] ` <20090420.203540.104031006.ryov-jCdQPDEk3idL9jVzuh4AOg@public.gmane.org>
2009-04-20 14:56 ` Andrea Righi
2009-04-20 14:56 ` Andrea Righi
2009-04-21 11:39 ` Ryo Tsuruta
2009-04-21 11:39 ` Ryo Tsuruta
2009-04-21 15:31 ` Balbir Singh
2009-04-21 15:31 ` Balbir Singh
2009-04-14 20:21 ` [PATCH 4/9] support checking of cgroup subsystem dependencies Andrea Righi
2009-04-14 20:21 ` [PATCH 5/9] io-throttle controller infrastructure Andrea Righi
2009-04-14 20:21 ` [PATCH 6/9] kiothrottled: throttle buffered (writeback) IO Andrea Righi
2009-04-14 20:21 ` Andrea Righi
2009-04-14 20:21 ` [PATCH 7/9] io-throttle instrumentation Andrea Righi
2009-04-14 20:21 ` Andrea Righi
2009-04-14 20:21 ` [PATCH 8/9] export per-task io-throttle statistics to userspace Andrea Righi
2009-04-14 20:21 ` Andrea Righi
2009-04-14 20:21 ` [PATCH 9/9] ext3: do not throttle metadata and journal IO Andrea Righi
2009-04-14 20:21 ` Andrea Righi
2009-04-17 12:38 ` Theodore Tso
2009-04-17 12:50 ` Jens Axboe
2009-04-17 14:39 ` Andrea Righi
2009-04-21 0:18 ` Theodore Tso
2009-04-21 8:30 ` Andrea Righi
2009-04-21 14:06 ` Theodore Tso
2009-04-21 14:06 ` Theodore Tso
2009-04-21 14:31 ` Andrea Righi
2009-04-21 16:35 ` Theodore Tso
2009-04-21 17:23 ` Balbir Singh
2009-04-21 17:46 ` Theodore Tso
[not found] ` <20090421174620.GD15541-3s7WtUTddSA@public.gmane.org>
2009-04-21 18:14 ` Balbir Singh
2009-04-21 18:14 ` Balbir Singh
2009-04-21 19:14 ` Theodore Tso
[not found] ` <20090421191401.GF15541-3s7WtUTddSA@public.gmane.org>
2009-04-21 20:49 ` Andrea Righi
2009-04-22 3:30 ` Balbir Singh
2009-04-21 20:49 ` Andrea Righi
2009-04-22 0:33 ` KAMEZAWA Hiroyuki
[not found] ` <20090422093349.1ee9ae82.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-22 1:21 ` KAMEZAWA Hiroyuki
2009-04-22 1:21 ` KAMEZAWA Hiroyuki
2009-04-22 10:22 ` Andrea Righi
2009-04-23 0:05 ` KAMEZAWA Hiroyuki
2009-04-23 1:22 ` Theodore Tso
[not found] ` <20090423012254.GZ15541-3s7WtUTddSA@public.gmane.org>
2009-04-23 2:54 ` KAMEZAWA Hiroyuki
2009-04-23 2:54 ` KAMEZAWA Hiroyuki
[not found] ` <20090423115419.c493266a.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-23 4:35 ` Theodore Tso
2009-04-23 4:35 ` Theodore Tso
2009-04-23 9:44 ` Andrea Righi
2009-04-23 12:17 ` Theodore Tso
[not found] ` <20090423121745.GC2723-3s7WtUTddSA@public.gmane.org>
2009-04-23 12:27 ` Theodore Tso
2009-04-23 12:27 ` Theodore Tso
2009-04-23 21:13 ` Andrea Righi
2009-04-23 21:13 ` Andrea Righi
2009-04-24 0:26 ` KAMEZAWA Hiroyuki
2009-04-24 0:26 ` KAMEZAWA Hiroyuki
2009-04-23 12:17 ` Theodore Tso
[not found] ` <20090423043547.GB2723-3s7WtUTddSA@public.gmane.org>
2009-04-23 4:58 ` Andrew Morton
2009-04-23 4:58 ` Andrew Morton
[not found] ` <20090422215825.f83e1b27.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-04-23 5:37 ` KAMEZAWA Hiroyuki
2009-04-23 5:37 ` KAMEZAWA Hiroyuki
2009-04-23 9:44 ` Andrea Righi
2009-04-24 5:14 ` Balbir Singh
2009-04-24 5:14 ` Balbir Singh
[not found] ` <20090423090535.ec419269.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-23 1:22 ` Theodore Tso
2009-04-23 10:03 ` Andrea Righi
2009-04-23 10:03 ` Andrea Righi
2009-04-23 0:05 ` KAMEZAWA Hiroyuki
[not found] ` <20090422102153.9aec17b9.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2009-04-22 10:22 ` Andrea Righi
2009-04-22 0:33 ` KAMEZAWA Hiroyuki
2009-04-22 3:30 ` Balbir Singh
[not found] ` <20090421181429.GO19637-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2009-04-21 19:14 ` Theodore Tso
[not found] ` <20090421172317.GM19637-SINUvgVNF2CyUtPGxGje5AC/G2K4zDHf@public.gmane.org>
2009-04-21 17:46 ` Theodore Tso
[not found] ` <20090421163537.GI19186-3s7WtUTddSA@public.gmane.org>
2009-04-21 17:23 ` Balbir Singh
2009-04-21 16:35 ` Theodore Tso
[not found] ` <20090421140631.GF19186-3s7WtUTddSA@public.gmane.org>
2009-04-21 14:31 ` Andrea Righi
2009-04-24 15:10 ` Balbir Singh
2009-04-24 15:10 ` Balbir Singh
[not found] ` <20090421001822.GB19186-3s7WtUTddSA@public.gmane.org>
2009-04-21 8:30 ` Andrea Righi
2009-04-21 0:18 ` Theodore Tso
[not found] ` <20090417125004.GY4593-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>
2009-04-17 14:39 ` Andrea Righi
[not found] ` <20090417123805.GC7117-3s7WtUTddSA@public.gmane.org>
2009-04-17 12:50 ` Jens Axboe
[not found] ` <1239740480-28125-10-git-send-email-righi.andrea-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2009-04-17 12:38 ` Theodore Tso
2009-04-16 22:24 ` [PATCH 0/9] cgroup: io-throttle controller (v13) Andrew Morton
2009-04-16 22:24 ` Andrew Morton
[not found] ` <20090416152433.aaaba300.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-04-17 9:37 ` Andrea Righi [this message]
2009-04-17 9:37 ` Andrea Righi
2009-04-30 13:20 ` Alan D. Brunelle
2009-04-30 13:20 ` Alan D. Brunelle
2009-05-01 11:11 ` Andrea Righi
[not found] ` <49F9A5BA.9030100-VXdhtT5mjnY@public.gmane.org>
2009-05-01 11:11 ` Andrea Righi
-- strict thread matches above, loose matches on Subject: below --
2009-04-14 20:21 Andrea Righi
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=20090417093744.GA8689@linux \
--to=righi.andrea-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=agk-9JcytcrH/bA+uJoB2kUjGw@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org \
--cc=balbir-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
--cc=chlunde-om2ZC0WAoZIXWF+eFR7m5Q@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=dave-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
--cc=dradford-cT2on/YLNlBWk0Htik3J/w@public.gmane.org \
--cc=eric.rannaud-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=fernando-gVGce1chcLdL9jVzuh4AOg@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=matt-cT2on/YLNlBWk0Htik3J/w@public.gmane.org \
--cc=menage-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=ngupta-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=randy.dunlap-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org \
--cc=roberto-5KDOxZqKugI@public.gmane.org \
--cc=subrata-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@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.