Robert Milkowski wrote:
Hello Neil,

Thursday, August 10, 2006, 7:02:58 PM, you wrote:

NP> Robert Milkowski wrote:

Hello Matthew,

Thursday, August 10, 2006, 6:55:41 PM, you wrote:

MA> On Thu, Aug 10, 2006 at 06:50:45PM +0200, Robert Milkowski wrote:


btw: wouldn't it be possible to write block only once (for synchronous
IO) and than just point to that block instead of copying it again?


MA> We actually do exactly that for larger (>32k) blocks.

Why such limit (32k)?


NP> By experimentation that was the cutoff where it was found to be
NP> more efficient. It was recently reduced from 64K with a more
NP> efficient dmu-sync() implementaion.

I do not understand - why in some cases with smaller block writing
block twice could be actually faster than doing it once every time?
I definitely am missing something here...

Sorry, I wasn't very clear. This was tuned with multiple threads
doing writes (using O_DSYNC or fsync()). The ZIL dynamically allocates
blocks of size up to 128K to suit future predicted needs. If the
writes are small (say 8K) then we can fit a whole bunch (upto 15) of
the write records and embedded data in one log block.

Anyway we found for the moment that past 32K was the point at which we got
better bandwidth to immediately write the data out and just write the
block address into the log block record. Your milaege may vary...

I suspect this won't be the last time this variable will be tuned.
I would like to re-design this area to do away with the tunable,
which was not really intended for public tuning.

NP> Feel free to experiment with the dynamically changable tunable:
NP> ssize_t zfs_immediate_write_sz = 32768;

I will :)

By dynamic you mean it works right a way without any need to
umount/mount and export/import?

Correct.
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to