Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ab47664 authored by Dave Chinner's avatar Dave Chinner Committed by Al Viro
Browse files

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: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 0e1fdafd
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -317,6 +317,12 @@ or bottom half).
	the VM is trying to reclaim under GFP_NOFS conditions, hence this
	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
is a pointer to a "struct inode_operations" which describes the methods that
can be performed on individual inodes.
+1 −0
Original line number Diff line number Diff line
@@ -182,6 +182,7 @@ static struct super_block *alloc_super(struct file_system_type *type)

		s->s_shrink.seeks = DEFAULT_SEEKS;
		s->s_shrink.shrink = prune_super;
		s->s_shrink.batch = 1024;
	}
out:
	return s;