[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Tue, 5 Apr 2011 02:12:15 +0800
From: Wu Fengguang <fengguang.wu@...el.com>
To: Vivek Goyal <vgoyal@...hat.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>, Jan Kara <jack@...e.cz>,
Christoph Hellwig <hch@....de>,
Trond Myklebust <Trond.Myklebust@...app.com>,
Dave Chinner <david@...morbit.com>,
Theodore Ts'o <tytso@....edu>,
Chris Mason <chris.mason@...cle.com>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Mel Gorman <mel@....ul.ie>, Rik van Riel <riel@...hat.com>,
KOSAKI Motohiro <kosaki.motohiro@...fujitsu.com>,
Greg Thelen <gthelen@...gle.com>,
Minchan Kim <minchan.kim@...il.com>,
Andrea Righi <arighi@...eler.com>,
Balbir Singh <balbir@...ux.vnet.ibm.com>,
linux-mm <linux-mm@...ck.org>,
"linux-fsdevel@...r.kernel.org" <linux-fsdevel@...r.kernel.org>,
LKML <linux-kernel@...r.kernel.org>
Subject: async write IO controllers
Hi Vivek,
To explore the possibility of an integrated async write cgroup IO
controller in balance_dirty_pages(), I did the attached patches.
They should serve it well to illustrate the basic ideas.
It's based on Andrea's two supporting patches and a slightly
simplified and improved version of this v6 patchset.
root@fat ~# cat test-blkio-cgroup.sh
#!/bin/sh
mount /dev/sda7 /fs
rmdir /cgroup/async_write
mkdir /cgroup/async_write
echo $$ > /cgroup/async_write/tasks
# echo "8:16 1048576" > /cgroup/async_write/blkio.throttle.read_bps_device
dd if=/dev/zero of=/fs/zero1 bs=1M count=100 &
dd if=/dev/zero of=/fs/zero2 bs=1M count=100 &
2-dd case:
root@fat ~# 100+0 records in
100+0 records out
104857600 bytes (105 MB) copied100+0 records in
100+0 records out
, 11.9477 s, 8.8 MB/s
104857600 bytes (105 MB) copied, 11.9496 s, 8.8 MB/s
1-dd case:
root@fat ~# 100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 6.21919 s, 16.9 MB/s
The patch hard codes a limit of 16MiB/s or 16.8MB/s. So the 1-dd case
is pretty accurate, and the 2-dd case is a bit leaked due to the time
to take the throttle bandwidth from its initial value 16MiB/s to
8MiB/s. This could be compensated by some position control in future,
so that it won't leak in normal cases.
The main bits, blkcg_update_throttle_bandwidth() is in fact a minimal
version of bdi_update_throttle_bandwidth(); blkcg_update_bandwidth()
is also a cut-down version of bdi_update_bandwidth().
Thanks,
Fengguang
View attachment "blk-cgroup-nr-dirtied.patch" of type "text/x-diff" (1920 bytes)
View attachment "writeback-io-controller.patch" of type "text/x-diff" (5135 bytes)
Powered by blists - more mailing lists