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