[Sheepdog] [PATCH 3/3] store: use fallocate when allocating new objects
Christoph Hellwig
hch at infradead.org
Fri Nov 11 10:59:11 CET 2011
On Fri, Nov 11, 2011 at 04:10:00AM -0500, Christoph Hellwig wrote:
> On Fri, Nov 11, 2011 at 06:06:16PM +0900, MORITA Kazutaka wrote:
> > posix_fallocate() shows very poor performance if the underlying
> > filesystem doesn't support fallocate() (e.g. ext3). How about using
> > fallocate() instead of posix_fallocate(), and if it returns
> > EOPNOTSUPP, writing SD_DATA_OBJ_SIZE bytes with one pwrite() call?
>
> At least for the samba use case (which is preallocating in 1MB chunks
> and then filling it with 64k chunks) even the dumb preallocation has
> shown benefit for ext3. I'll try to benchmark it soon and will report
> the results to you.
Numbers on my laptop with ext3 on the second dedicated test SSD,
averaged over three runs (recreated fs each time, restarted sheepdog),
all using
dd if=/dev/zero of=/dev/vdc bs=67108864 count=16 oflag=direct
note that this is on a fairly old kernel, and I manually had to mount
with -o barrier=1
With pwrite to the last sectors:
52.9MB/s for the intial write
49.0MS/s for the rewrite
With fallocate:
62.7MB/s for the initial write
54.4MB/s for the rewrite
>From this it seems even the dumb fallocate is a clear win, which matches
the Samba observations.
More information about the sheepdog
mailing list