11-STABLE vs 11.0-RELENG test

Alexander Motin mav at FreeBSD.org
Wed Dec 7 19:08:21 UTC 2016


On 07.12.2016 15:34, Alexander Motin wrote:
> Closer look shown me the cause.  This code sorts I/Os on time, offset
> and memory address.  But time on FreeBSD (to reduce overhead) returned
> with 1ms resolution, so it does not provide reliable ordering.  Offset
> sorting used by this patch is broken by design, since io_offset field is
> always zero there, since it is used only for physical I/Os, not for
> logical.  As result, I/Os are "sorted" on memory address, that in fact
> means complete randomization of all allocations within one millisecond,
> predictably killing read performance.
> 
> Switching gethrtime() emulation from getnanouptime() to nanouptime()
> fixes the read performance, resulting:
> 		nanouptime()
> write		702
> read w/ pref	845
> read w/o pref	272
> 
> It would be good to make offset sorting really work there rather then
> just switching to high resolution time source, but that maybe quite
> invasive.  Will look more.

PS:  If somebody needs quick workaround, this loader tunable restores
both read and write speed: vfs.zfs.zio.dva_throttle_enabled=0.

-- 
Alexander Motin


More information about the freebsd-fs mailing list