From: Vivek Goyal <vgoyal@redhat.com>
To: Jens Axboe <jens.axboe@oracle.com>
Cc: Jeff Moyer <jmoyer@redhat.com>, "Theodore Ts'o" <tytso@mit.edu>,
linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [patch,rfc v2] ext3/4: enhance fsync performance when using cfq
Date: Thu, 8 Apr 2010 09:59:01 -0400 [thread overview]
Message-ID: <20100408135901.GA10879@redhat.com> (raw)
In-Reply-To: <20100408110045.GJ10103@kernel.dk>
On Thu, Apr 08, 2010 at 01:00:45PM +0200, Jens Axboe wrote:
> On Wed, Apr 07 2010, Jeff Moyer wrote:
> > Hi again,
> >
> > So, here's another stab at fixing this. This patch is very much an RFC,
> > so do not pull it into anything bound for Linus. ;-) For those new to
> > this topic, here is the original posting: http://lkml.org/lkml/2010/4/1/344
> >
> > The basic problem is that, when running iozone on smallish files (up to
> > 8MB in size) and including fsync in the timings, deadline outperforms
> > CFQ by a factor of about 5 for 64KB files, and by about 10% for 8MB
> > files. From examining the blktrace data, it appears that iozone will
> > issue an fsync() call, and will have to wait until it's CFQ timeslice
> > has expired before the journal thread can run to actually commit data to
> > disk.
> >
> > The approach below puts an explicit call into the filesystem-specific
> > fsync code to yield the disk so that the jbd[2] process has a chance to
> > issue I/O. This bring performance of CFQ in line with deadline.
> >
> > There is one outstanding issue with the patch that Vivek pointed out.
> > Basically, this could starve out the sync-noidle workload if there is a
> > lot of fsync-ing going on. I'll address that in a follow-on patch. For
> > now, I wanted to get the idea out there for others to comment on.
> >
> > Thanks a ton to Vivek for spotting the problem with the initial
> > approach, and for his continued review.
>
> I like the concept, it's definitely useful (and your results amply
> demonstrate that). I was thinking if there was a way in through the ioc
> itself, rather than bdi -> queue and like you are doing. But I can't
> think of a nice way to do it, so this is probably as good as it gets.
>
I think, one issue with ioc based approach will be that it will then call
yield operation on all the devices in the system where this context has ever
done any IO. With bdi based approach this call will remain limited to
a smaller set of devices.
Thanks
Vivek
next prev parent reply other threads:[~2010-04-08 13:59 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-07 21:18 [patch,rfc v2] ext3/4: enhance fsync performance when using cfq Jeff Moyer
2010-04-07 21:46 ` Vivek Goyal
2010-04-08 11:04 ` Jens Axboe
2010-04-08 14:05 ` Vivek Goyal
2010-04-08 14:09 ` Jens Axboe
2010-04-08 14:17 ` Vivek Goyal
2010-04-08 14:24 ` Jeff Moyer
2010-04-08 19:23 ` Jens Axboe
2010-04-21 20:42 ` Mike Snitzer
2010-04-21 20:52 ` Jeff Moyer
2010-04-08 11:00 ` Jens Axboe
2010-04-08 13:59 ` Vivek Goyal [this message]
2010-04-08 14:03 ` Jens Axboe
2010-04-08 14:03 ` Jeff Moyer
2010-04-08 14:06 ` Jens Axboe
2010-04-08 14:10 ` Vivek Goyal
2010-04-08 14:25 ` Jeff Moyer
2010-04-08 14:31 ` Vivek Goyal
2010-04-08 19:10 ` Jeff Moyer
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=20100408135901.GA10879@redhat.com \
--to=vgoyal@redhat.com \
--cc=jens.axboe@oracle.com \
--cc=jmoyer@redhat.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tytso@mit.edu \
/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).