From: Wu Fengguang <fengguang.wu@intel.com>
To: Jens Axboe <jens.axboe@oracle.com>
Cc: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
linux-mm@kvack.org
Subject: Re: [PATCH] readahead:add blk_run_backing_dev
Date: Wed, 20 May 2009 10:51:23 +0800 [thread overview]
Message-ID: <20090520025123.GB8186@localhost> (raw)
In-Reply-To: <20090518175259.GL4140@kernel.dk>
On Mon, May 18, 2009 at 07:53:00PM +0200, Jens Axboe wrote:
> On Mon, May 18 2009, Hisashi Hifumi wrote:
> > Hi.
> >
> > I wrote a patch that adds blk_run_backing_dev on page_cache_async_readahead
> > so readahead I/O is unpluged to improve throughput.
> >
> > Following is the test result with dd.
> >
> > #dd if=testdir/testfile of=/dev/null bs=16384
> >
> > -2.6.30-rc6
> > 1048576+0 records in
> > 1048576+0 records out
> > 17179869184 bytes (17 GB) copied, 224.182 seconds, 76.6 MB/s
> >
> > -2.6.30-rc6-patched
> > 1048576+0 records in
> > 1048576+0 records out
> > 17179869184 bytes (17 GB) copied, 206.465 seconds, 83.2 MB/s
> >
> > Sequential read performance on a big file was improved.
> > Please merge my patch.
> >
> > Thanks.
> >
> > Signed-off-by: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
> >
> > diff -Nrup linux-2.6.30-rc6.org/mm/readahead.c linux-2.6.30-rc6.unplug/mm/readahead.c
> > --- linux-2.6.30-rc6.org/mm/readahead.c 2009-05-18 10:46:15.000000000 +0900
> > +++ linux-2.6.30-rc6.unplug/mm/readahead.c 2009-05-18 13:00:42.000000000 +0900
> > @@ -490,5 +490,7 @@ page_cache_async_readahead(struct addres
> >
> > /* do read-ahead */
> > ondemand_readahead(mapping, ra, filp, true, offset, req_size);
> > +
> > + blk_run_backing_dev(mapping->backing_dev_info, NULL);
> > }
> > EXPORT_SYMBOL_GPL(page_cache_async_readahead);
>
> I'm surprised this makes much of a difference. It seems correct to me to
> NOT unplug the device, since it will get unplugged when someone ends up
> actually waiting for a page. And that will then kick off the remaining
> IO as well. For this dd case, you'll be hitting lock_page() for the
> readahead page really soon, definitely not long enough to warrant such a
> big difference in speed.
The possible timing change of this patch is (assuming readahead size=100):
T0 read(100), which triggers readahead(200, 100)
T1 read(101)
T2 read(102)
...
T100 read(200), find_get_page(200) => readahead(300, 100)
lock_page(200) => implicit unplug
The readahead(200, 100) submitted at time T0 *might* be delayed to the
unplug time of T100.
But that is only a possibility. In normal cases, the read(200) would
be blocking and there will be a lock_page(200) that will immediately
unplug device for readahead(300, 100).
Thanks,
Fengguang
WARNING: multiple messages have this Message-ID (diff)
From: Wu Fengguang <fengguang.wu@intel.com>
To: Jens Axboe <jens.axboe@oracle.com>
Cc: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
linux-mm@kvack.org
Subject: Re: [PATCH] readahead:add blk_run_backing_dev
Date: Wed, 20 May 2009 10:51:23 +0800 [thread overview]
Message-ID: <20090520025123.GB8186@localhost> (raw)
In-Reply-To: <20090518175259.GL4140@kernel.dk>
On Mon, May 18, 2009 at 07:53:00PM +0200, Jens Axboe wrote:
> On Mon, May 18 2009, Hisashi Hifumi wrote:
> > Hi.
> >
> > I wrote a patch that adds blk_run_backing_dev on page_cache_async_readahead
> > so readahead I/O is unpluged to improve throughput.
> >
> > Following is the test result with dd.
> >
> > #dd if=testdir/testfile of=/dev/null bs=16384
> >
> > -2.6.30-rc6
> > 1048576+0 records in
> > 1048576+0 records out
> > 17179869184 bytes (17 GB) copied, 224.182 seconds, 76.6 MB/s
> >
> > -2.6.30-rc6-patched
> > 1048576+0 records in
> > 1048576+0 records out
> > 17179869184 bytes (17 GB) copied, 206.465 seconds, 83.2 MB/s
> >
> > Sequential read performance on a big file was improved.
> > Please merge my patch.
> >
> > Thanks.
> >
> > Signed-off-by: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
> >
> > diff -Nrup linux-2.6.30-rc6.org/mm/readahead.c linux-2.6.30-rc6.unplug/mm/readahead.c
> > --- linux-2.6.30-rc6.org/mm/readahead.c 2009-05-18 10:46:15.000000000 +0900
> > +++ linux-2.6.30-rc6.unplug/mm/readahead.c 2009-05-18 13:00:42.000000000 +0900
> > @@ -490,5 +490,7 @@ page_cache_async_readahead(struct addres
> >
> > /* do read-ahead */
> > ondemand_readahead(mapping, ra, filp, true, offset, req_size);
> > +
> > + blk_run_backing_dev(mapping->backing_dev_info, NULL);
> > }
> > EXPORT_SYMBOL_GPL(page_cache_async_readahead);
>
> I'm surprised this makes much of a difference. It seems correct to me to
> NOT unplug the device, since it will get unplugged when someone ends up
> actually waiting for a page. And that will then kick off the remaining
> IO as well. For this dd case, you'll be hitting lock_page() for the
> readahead page really soon, definitely not long enough to warrant such a
> big difference in speed.
The possible timing change of this patch is (assuming readahead size=100):
T0 read(100), which triggers readahead(200, 100)
T1 read(101)
T2 read(102)
...
T100 read(200), find_get_page(200) => readahead(300, 100)
lock_page(200) => implicit unplug
The readahead(200, 100) submitted at time T0 *might* be delayed to the
unplug time of T100.
But that is only a possibility. In normal cases, the read(200) would
be blocking and there will be a lock_page(200) that will immediately
unplug device for readahead(300, 100).
Thanks,
Fengguang
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2009-05-20 2:51 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-18 9:38 [PATCH] readahead:add blk_run_backing_dev Hisashi Hifumi
2009-05-18 17:53 ` Jens Axboe
2009-05-19 0:44 ` Hisashi Hifumi
2009-05-19 10:05 ` Hisashi Hifumi
2009-05-20 0:55 ` Hisashi Hifumi
2009-05-20 2:51 ` Wu Fengguang [this message]
2009-05-20 2:51 ` Wu Fengguang
2009-05-21 6:01 ` Hisashi Hifumi
2009-05-21 6:01 ` Hisashi Hifumi
2009-05-22 1:05 ` Wu Fengguang
2009-05-22 1:05 ` Wu Fengguang
2009-05-22 1:44 ` Hisashi Hifumi
2009-05-22 1:44 ` Hisashi Hifumi
2009-05-22 2:33 ` Wu Fengguang
2009-05-22 2:33 ` Wu Fengguang
2009-05-26 23:42 ` Andrew Morton
2009-05-26 23:42 ` Andrew Morton
2009-05-27 0:25 ` Hisashi Hifumi
2009-05-27 0:25 ` Hisashi Hifumi
2009-05-27 0:25 ` Hisashi Hifumi
2009-05-27 2:09 ` Wu Fengguang
2009-05-27 2:09 ` Wu Fengguang
2009-05-27 2:21 ` Hisashi Hifumi
2009-05-27 2:21 ` Hisashi Hifumi
2009-05-27 2:35 ` KOSAKI Motohiro
2009-05-27 2:35 ` KOSAKI Motohiro
2009-05-27 2:36 ` Andrew Morton
2009-05-27 2:36 ` Andrew Morton
2009-05-27 2:38 ` Hisashi Hifumi
2009-05-27 2:38 ` Hisashi Hifumi
2009-05-27 3:55 ` Wu Fengguang
2009-05-27 3:55 ` Wu Fengguang
2009-05-27 4:06 ` KOSAKI Motohiro
2009-05-27 4:06 ` KOSAKI Motohiro
2009-05-27 4:36 ` Wu Fengguang
2009-05-27 4:36 ` Wu Fengguang
2009-05-27 6:20 ` Hisashi Hifumi
2009-05-27 6:20 ` Hisashi Hifumi
2009-05-28 1:20 ` Hisashi Hifumi
2009-05-28 1:20 ` Hisashi Hifumi
2009-05-28 2:23 ` KOSAKI Motohiro
2009-05-28 2:23 ` KOSAKI Motohiro
2009-06-01 1:39 ` Hisashi Hifumi
2009-06-01 1:39 ` Hisashi Hifumi
2009-06-01 1:39 ` Hisashi Hifumi
2009-06-01 2:23 ` KOSAKI Motohiro
2009-06-01 2:23 ` KOSAKI Motohiro
2009-05-27 2:36 ` Wu Fengguang
2009-05-27 2:36 ` Wu Fengguang
2009-05-27 2:47 ` Hisashi Hifumi
2009-05-27 2:47 ` Hisashi Hifumi
2009-05-27 2:57 ` Wu Fengguang
2009-05-27 2:57 ` Wu Fengguang
2009-05-27 3:06 ` Hisashi Hifumi
2009-05-27 3:06 ` Hisashi Hifumi
2009-05-27 3:26 ` KOSAKI Motohiro
2009-05-27 3:26 ` KOSAKI Motohiro
2009-06-01 2:37 ` Wu Fengguang
2009-06-01 2:37 ` Wu Fengguang
2009-06-01 2:51 ` Hisashi Hifumi
2009-06-01 2:51 ` Hisashi Hifumi
2009-06-01 3:02 ` Wu Fengguang
2009-06-01 3:02 ` Wu Fengguang
2009-06-01 3:06 ` KOSAKI Motohiro
2009-06-01 3:06 ` KOSAKI Motohiro
2009-06-01 3:07 ` Hisashi Hifumi
2009-06-01 3:07 ` Hisashi Hifumi
2009-06-01 4:30 ` Wu Fengguang
2009-06-01 4:30 ` Wu Fengguang
2009-05-27 2:07 ` Wu Fengguang
2009-05-27 2:07 ` Wu Fengguang
2009-05-20 1:07 ` KOSAKI Motohiro
2009-05-20 1:07 ` KOSAKI Motohiro
2009-05-20 1:43 ` Hisashi Hifumi
2009-05-20 1:43 ` Hisashi Hifumi
2009-05-20 2:52 ` Wu Fengguang
2009-05-20 2:52 ` Wu Fengguang
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=20090520025123.GB8186@localhost \
--to=fengguang.wu@intel.com \
--cc=akpm@linux-foundation.org \
--cc=hifumi.hisashi@oss.ntt.co.jp \
--cc=jens.axboe@oracle.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.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.