vfs: increase shrinker batch size
Now that the per-sb shrinker is responsible for shrinking 2 or more caches, increase the batch size to keep econmies of scale for shrinking each cache. Increase the shrinker batch size to 1024 objects. To allow for a large increase in batch size, add a conditional reschedule to prune_icache_sb() so that we don't hold the LRU spin lock for too long. This mirrors the behaviour of the __shrink_dcache_sb(), and allows us to increase the batch size without needing to worry about problems caused by long lock hold times. To ensure that filesystems using the per-sb shrinker callouts don't cause problems, document that the object freeing method must reschedule appropriately inside loops. Signed-off-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
0e1fdafd93
commit
8ab47664d5
@ -317,6 +317,12 @@ or bottom half).
|
|||||||
the VM is trying to reclaim under GFP_NOFS conditions, hence this
|
the VM is trying to reclaim under GFP_NOFS conditions, hence this
|
||||||
method does not need to handle that situation itself.
|
method does not need to handle that situation itself.
|
||||||
|
|
||||||
|
Implementations must include conditional reschedule calls inside any
|
||||||
|
scanning loop that is done. This allows the VFS to determine
|
||||||
|
appropriate scan batch sizes without having to worry about whether
|
||||||
|
implementations will cause holdoff problems due to large scan batch
|
||||||
|
sizes.
|
||||||
|
|
||||||
Whoever sets up the inode is responsible for filling in the "i_op" field. This
|
Whoever sets up the inode is responsible for filling in the "i_op" field. This
|
||||||
is a pointer to a "struct inode_operations" which describes the methods that
|
is a pointer to a "struct inode_operations" which describes the methods that
|
||||||
can be performed on individual inodes.
|
can be performed on individual inodes.
|
||||||
|
@ -182,6 +182,7 @@ static struct super_block *alloc_super(struct file_system_type *type)
|
|||||||
|
|
||||||
s->s_shrink.seeks = DEFAULT_SEEKS;
|
s->s_shrink.seeks = DEFAULT_SEEKS;
|
||||||
s->s_shrink.shrink = prune_super;
|
s->s_shrink.shrink = prune_super;
|
||||||
|
s->s_shrink.batch = 1024;
|
||||||
}
|
}
|
||||||
out:
|
out:
|
||||||
return s;
|
return s;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user