Based on observed behavior measuring performance of dedup, I would say, some chunk of data and its associated metadata seem have approximately the same "warmness" in the cache. So when the data gets evicted, the associated metadata tends to be evicted too. So whenever you have a cache miss, instead of needing to fetch 1 thing from disk (the data) you need to fetch N things from disk (data + the metadata.)
I would say, simply giving bias to the metadata would be useful. So the metadata would tend to stay in cache, even when the data itself is evicted. Useful because the metadata is so *darn* small by comparison with the actual data... It carries a relatively small footprint in ram, but upon cache miss, it more than doubles the disk fetch penalty. If you consider the extreme bias... If the system would never give up metadata in cache until all the cached data were gone... Then it would be similar to the current primarycache=metadata, except that the system would be willing to cache data too, whenever there was available cache otherwise going to waste.
_______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss