From 94520ca4626c7b01340473bccdaa3ed038a85a8f Mon Sep 17 00:00:00 2001 From: Prakash Surya Date: Fri, 3 Jan 2014 11:40:52 -0800 Subject: Prune metadata from ghost lists in arc_adjust_meta To maintain a strict limit on the metadata contained in the arc, while preventing the arc buffer headers from completely consuming the "arc_meta_used" space, we need to evict metadata buffers from the arc's ghost lists along with the regular lists. This change modifies arc_adjust_meta such that it more closely models the adjustments made in arc_adjust. "arc_meta_used" is used similarly to "arc_size", and "arc_meta_limit" is used similarly to "arc_c". Testing metadata intensive workloads (e.g. creating, copying, and removing millions of small files and/or directories) has shown this change to make a dramatic improvement to the hit rate maintained in the arc. While I think there is still room for improvement, this is a big step in the right direction. In addition, zpl_free_cached_objects was made into a no-op as I'm not yet sure how to properly implement that function. Signed-off-by: Prakash Surya Signed-off-by: Brian Behlendorf Issue #2110 --- include/sys/arc.h | 1 - 1 file changed, 1 deletion(-) (limited to 'include/sys/arc.h') diff --git a/include/sys/arc.h b/include/sys/arc.h index 9d68d3b43..5c8c1c1a3 100644 --- a/include/sys/arc.h +++ b/include/sys/arc.h @@ -160,7 +160,6 @@ void arc_freed(spa_t *spa, const blkptr_t *bp); void arc_set_callback(arc_buf_t *buf, arc_evict_func_t *func, void *private); int arc_buf_evict(arc_buf_t *buf); -void arc_adjust_meta(int64_t adjustment, boolean_t may_prune); void arc_flush(spa_t *spa); void arc_tempreserve_clear(uint64_t reserve); int arc_tempreserve_space(uint64_t reserve, uint64_t txg); -- cgit v1.2.3