[CFT] Improved ZFS metaslab code (faster write speed)

Andriy Gapon avg at icyb.net.ua
Sat Aug 28 08:20:25 UTC 2010

on 28/08/2010 04:24 jhell said the following:
> The modified patch from avg@ (portion patch) is:
> #ifdef _KERNEL
>                 if (arc_reclaim_needed()) {
>                         needfree = 0;
>                         wakeup(&needfree);
>                 }
> #endif
> 	I still moved that down to below _KERNEL for the obvious reasons.  But
> when I was using the original patch with if (needfree) I noticed a
> performance degradation after ~12 hours of use with and without UMA
> turned on. So far with ~48 hours of testing with the top half of that
> being with the above change, I have not seen more degradation of

This is quite unexpected.
needfree should be checked as the very first thing in arc_reclaim_needed()
[unless you have patched it locally].  So if needfree is 1 then
arc_reclaim_needed() should also return 1.  But the converse is not true,
arc_reclaim_needed() may return 1 even if needfree is zero.

So if your testing results are conclusive then it must mean that some extra
wakeups on needfree are needed.  I.e. needfree is zero, so there shouldn't be
anything waiting on it (see arc_lowmem) and no notification should be needed,
but issuing somehow does make difference,

Andriy Gapon

More information about the freebsd-current mailing list