[PATCH] xfs: improve metadata I/O merging in the elevator
Dave Chinner
david at fromorbit.com
Sun Nov 15 21:50:19 CST 2009
On Thu, Nov 12, 2009 at 02:09:31PM -0500, Christoph Hellwig wrote:
> I had the patch below from Dave in my queue for a while, but previously
> couldn't really reproduce his numbers. After some discussions of the
> bio types I've reteseted it again and can see constant improvements when
> using cfq on my large array box with it (5-10% for the sequential create
> workloads), but still nothing on deadline. Given that people also want
> it for better marking in blktrace it might be time to put it in.
>
> Comments?
Definitely should be done, but....
It looks like the patch you posted isn't quite doing what was
intended - async write buffers are being classified as WRITE, not
WRITE_META. That means we get more write combining in the elevator
(performance increase) like with WRITE_META, but don't get the
faster dispatch (latency reduction) by using the META queue to keep
the metadata writeback separate from the bulk data writeback.
That may be why deadline is not showing any improvement...
FWIW, the original patch here:
http://oss.sgi.com/archives/xfs/2008-01/msg00630.html
uses WRITE_META, but it looks like you've taken bits of this
patch:
http://oss.sgi.com/archives/xfs/2008-01/msg00653.html
and added the log buffer marking to this patch and accidentally
dropped the WRITE_META marking. i.e. this:
> + } else if (bp->b_flags & _XBF_RUN_QUEUES) {
> + ASSERT(!(bp->b_flags & XBF_READ_AHEAD));
> + bp->b_flags &= ~_XBF_RUN_QUEUES;
> + rw = (bp->b_flags & XBF_WRITE) ? WRITE : READ_META;
I think should be:
+ rw = (bp->b_flags & XBF_WRITE) ? WRITE_META : READ_META;
Cheers,
Dave.
--
Dave Chinner
david at fromorbit.com
More information about the xfs
mailing list