mbox series

[v4,0/2] rcu-based inode lookup for iget*

Message ID 20240611173824.535995-1-mjguzik@gmail.com (mailing list archive)
Headers show
Series rcu-based inode lookup for iget* | expand

Message

Mateusz Guzik June 11, 2024, 5:38 p.m. UTC
I revamped the commit message for patch 1, explicitly spelling out a
bunch of things and adding bpftrace output. Please read it.

There was some massaging of lines in the include/linux/fs.h header
files. If you don't like it I would appreciate if you adjusted it
however you see fit on your own.

This adjusts the state to what was suggested by Christian.

Specific results:

ext4 (needed mkfs.ext4 -N 24000000):
before:	3.77s user 890.90s system 1939% cpu 46.118 total
after:  3.24s user 397.73s system 1858% cpu 21.581 total (-53%)

btrfs (s/iget5_locked/iget5_locked_rcu in fs/btrfs/inode.c):
before: 3.54s user 892.30s system 1966% cpu 45.549 total
after:  3.28s user 738.66s system 1955% cpu 37.932 total (-16.7%)

btrfs bottlenecks itself on its own locks here.

Benchmark info in the commit message to the first patch.

fs rundown is as follows:
- ext4 patched implicitly
- xfs does not use the inode hash
- bcachefs is out of the picture as Kent decided to implement his own
  inode hashing based on rhashtable, for now private to his fs.
- btrfs handled in the patchset

I have not looked at others.

v4:
- only provide iget5_locked_rcu
- add a btrfs ack

v3:
- export new routines with _GPL
- don't use the extern keyword
- add ilookup5_rcu to follow iget5_locked scheme

v2:
- add argument lists to new routines
- assert the inode hash lock is not held as applicable
- real btrfs patch included

Mateusz Guzik (2):
  vfs: add rcu-based find_inode variants for iget ops
  btrfs: use iget5_locked_rcu

 fs/btrfs/inode.c   |   2 +-
 fs/inode.c         | 119 ++++++++++++++++++++++++++++++++++++++-------
 include/linux/fs.h |  10 +++-
 3 files changed, 112 insertions(+), 19 deletions(-)

Comments

Christian Brauner June 12, 2024, 12:08 p.m. UTC | #1
On Tue, 11 Jun 2024 19:38:21 +0200, Mateusz Guzik wrote:
> I revamped the commit message for patch 1, explicitly spelling out a
> bunch of things and adding bpftrace output. Please read it.
> 
> There was some massaging of lines in the include/linux/fs.h header
> files. If you don't like it I would appreciate if you adjusted it
> however you see fit on your own.
> 
> [...]

Applied to the vfs.inode.rcu branch of the vfs/vfs.git tree.
Patches in the vfs.inode.rcu branch should appear in linux-next soon.

Please report any outstanding bugs that were missed during review in a
new review to the original patch series allowing us to drop it.

It's encouraged to provide Acked-bys and Reviewed-bys even though the
patch has now been applied. If possible patch trailers will be updated.

Note that commit hashes shown below are subject to change due to rebase,
trailer updates or similar. If in doubt, please check the listed branch.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git
branch: vfs.inode.rcu

[1/2] vfs: add rcu-based find_inode variants for iget ops
      https://git.kernel.org/vfs/vfs/c/d50a5495bae7
[2/2] btrfs: use iget5_locked_rcu
      https://git.kernel.org/vfs/vfs/c/4921028a9c89