mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-06-04 05:14:06 +03:00
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 <surya1@llnl.gov> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Issue #2110
This commit is contained in:
committed by
Brian Behlendorf
parent
1e3cb67b53
commit
94520ca462
@@ -342,7 +342,7 @@ zpl_nr_cached_objects(struct super_block *sb)
|
||||
static void
|
||||
zpl_free_cached_objects(struct super_block *sb, int nr_to_scan)
|
||||
{
|
||||
arc_adjust_meta(nr_to_scan * sizeof (znode_t), B_FALSE);
|
||||
/* noop */
|
||||
}
|
||||
#endif /* HAVE_FREE_CACHED_OBJECTS */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user