Re: Large write = large latency for small writes

From: David Rees
Date: Tue Mar 17 2009 - 18:30:19 EST


On Tue, Mar 17, 2009 at 3:09 PM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> On Tue, 2009-03-17 at 13:19 -0700, David Rees wrote:
>> I have a simple test case which demonstrates the huge increase in
>> write latency that occurs for small writes when a large disk
>> saturating write is also in progress [3]:
>>
>> dd if=/dev/zero of=/tmp/bigfile bs=1M count=10000 conv=fdatasync &
>> sleep 10
>> time dd if=/dev/zero of=/tmp/smallfile bs=4k count=1 conv=fdatasync
>>
>> On a handful of systems I have access to, it took anywhere from 6-45
>> seconds for the small write to complete.  Others in the bug have
>> reproduced this across a number of filesystems (ext3, reiserfs, ext4).
>> xfs in particular seems to handle this test case better than the
>> others.  As do systems which can sustain high write speeds.
>
> How does it fare without the fdatasync?
>
> That is, is it the sync that's taking ages, or the ditry?

It's the fdatasync that takes ages. Without fdatasync the small write
finishes in an instant. In the test I just ran, it took 65 seconds
for the small write to complete with the fdatasync and 0.0001 seconds
without it. I think this is also why ext4 and xfs seem to handle the
problem a bit better than ext3/reiserfs.

Which is why I initially thought it was a NFS issue as I didn't see
too many bad delays when working directly on the server during
sustained server write load, only when working over NFS which mounts
sync by default.

-Dave
--
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/