[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