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