On 07/03/2012 11:06 PM, Phillip Susi wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 07/03/2012 10:36 PM, Zheng Liu wrote:
Actually the workload needs to flush the data after writting a small
random bits. This workload is met in our product system at Taobao.
Thus, the application has to wait this write to be done. Certainly if
we don't flush the data, the problem won't happen but there is a risk
that we could loss our data.
Ohh, I see now... you want lots of small, random, synchronous writes. Then I think the only way to avoid the metadata overhead is with the unsafe stale data patch. More importantly, this workload is going to have terrible performance no matter what the fs does, because even with all of the blocks initialized, you're still doing lots of seeking and not allowing the IO elevator to help. Maybe the application can be redesigned so that it does not generate such pathological IO?
Or is this another case of userspace really needing access to barriers rather than using the big hammer of fsync?
Is there any technical reason why a barrier flag can't be added to the aio interface?
For reasonably sized files, you might just as well really write out the full
file with "write" (do pre-allocation the old fashioned way).
Performance of course depends on the size of the file, but for a 1GB file you
can do this in a few seconds and prevent fragmentation and totally eliminate the
performance of flipping extents.
How large is the file you need to pre-allocate? How long does the job typically
run (minutes? hours? days?) :)
ric
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html