Ooooh you approved #222 but closed this one... :)

> I would consider a simpler semantic change like "evict blocks in L2ARC 
> first". 

This is exactly what this change does with `arc_evict_l2_first = B_TRUE ` :)
It will prefer buffers which are already in L2ARC, but if it does not found 
such enough buffers to reach the target, it will then continue with other 
buffers (...).

> the change is too risky to take as-is

(...) So there is no risk at all compared to the current behaviour, as it is 
the current behaviour + a preference in buffers to choose.

The step above `arc_evict_l2_only = B_TRUE`, disabled by default (so set to 
`B_FALSE`), is for advertised users who want more than simply **preferring** 
buffers which are already in L2ARC.
It allows to **only** evict buffers which are already in L2ARC. Of course, if 
it can't find such buffers at all, it will then evict other buffers up to the 
given target, to avoid memory pressure.
It's then a more aggressive setting, but fitted with a security valve.

> With sufficient testing

In production on 3 backup & storage servers for a year now with :
`arc_evict_l2_only = B_TRUE` : the more aggressive setting ;
`primarycache=metadata` & `primarycache=all` : I tested both ;
`secondarycache=metadata` : it gives even more work to the algorithm to find 
buffers !

This change gives a very nice and constant performance improvement, [as show in 
the bug report](https://www.illumos.org/issues/7361).

In addition is is quite small in size.

Did I manage to convince you ? :)

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openzfs/openzfs/pull/189#issuecomment-324660376
------------------------------------------
openzfs-developer
Archives: 
https://openzfs.topicbox.com/groups/developer/discussions/T122a323c2623f54c-M707a596cf617fbd7b5f71a8e
Powered by Topicbox: https://topicbox.com

Reply via email to