Re: [PATCH][RF C/T/D] Unmapped page cache control - via boot parameter

From: Avi Kivity
Date: Wed Mar 17 2010 - 12:54:06 EST


On 03/17/2010 06:47 PM, Chris Webb wrote:
Avi Kivity<avi@xxxxxxxxxx> writes:

Chris, can you carry out an experiment? Write a program that
pwrite()s a byte to a file at the same location repeatedly, with the
file opened using O_SYNC. Measure the write rate, and run blktrace
on the host to see what the disk (/dev/sda, not the volume) sees.
Should be a (write, flush, write, flush) per pwrite pattern or
similar (for writing the data and a journal block, perhaps even
three writes will be needed).

Then scale this across multiple guests, measure and trace again. If
we're lucky, the flushes will be coalesced, if not, we need to work
on it.
Sure, sounds like an excellent plan. I don't have a test machine at the
moment as the last host I was using for this has gone into production, but
I'm due to get another one to install later today or first thing tomorrow
which would be ideal for doing this. I'll follow up with the results once I
have them.

Meanwhile I looked at the code, and it looks bad. There is an IO_CMD_FDSYNC, but it isn't tagged, so we have to drain the queue before issuing it. In any case, qemu doesn't use it as far as I could tell, and even if it did, device-matter doesn't implement the needed ->aio_fsync() operation.

So, there's a lot of plubming needed before we can get cache flushes merged into each other. Given cache=writeback does allow merging, I think we explained part of the problem at least.

--
error compiling committee.c: too many arguments to function

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/