[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130409154059.GA15214@quack.suse.cz>
Date: Tue, 9 Apr 2013 17:40:59 +0200
From: Jan Kara <jack@...e.cz>
To: Kazuya Mio <k-mio@...jp.nec.com>
Cc: Jan Kara <jack@...e.cz>, akpm@...ux-foundation.org,
adilger.kernel@...ger.ca, linux-ext4@...r.kernel.org,
linux-fsdevel@...r.kernel.org
Subject: Re: bio splits unnecessarily due to BH_Boundary in ext3 direct I/O
On Mon 01-04-13 17:25:56, Kazuya Mio wrote:
> 2013/03/30 2:15, Jan Kara wrote:
> > Sorry for not getting to you earlier. So we agree in our analysis. Do you
> >agree with the attached patch? Does it help your workload?
>
> According to your two patches, direct I/O works as the following steps:
> 1. add sdio->cur_page to sdio->bio by dio_new_bio() or dio_bio_add_page()
> 2. submit sdio->bio if sdio->boudary is set
> 3. set the curret page to sdio->cur_page in submit_page_section()
>
> Only one page is submitted separately because of submitting bio before step 3.
>
> For example, we write 52KB data with O_DIRECT, it is ideal that filesystem
> submits a bio twice (48KB and 4KB). However, after applying your two patches,
> 52KB data is split into three bios (44KB, 4KB and 4KB).
Ah, thanks for pointing that out. It took me a while to get things
correct but with the attached patch (on top of the first patch), I'm
getting all the bios with maximum size. I've also checked that for direct
IO on ramdisk, I get about 3x faster IO on ext3 with both patches applied.
I also get a decent 10% speedup of dio reads on standard harddrive.
Honza
--
Jan Kara <jack@...e.cz>
SUSE Labs, CR
View attachment "0001-direct-io-Submit-bio-after-boundary-buffer-is-added-.patch" of type "text/x-patch" (2528 bytes)
Powered by blists - more mailing lists