Re: [linux-next:master] [lockref] d042dae6ad: unixbench.throughput -33.7% regression
From: Linus Torvalds
Date: Thu Jun 27 2024 - 12:57:40 EST
On Thu, 27 Jun 2024 at 09:32, Linus Torvalds
<torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> getdent subtest:
> +4.1 lockref_put_return
> +5.7 lockref_get_not_dead
> +68.0 native_queued_spin_lock_slowpath
For this getdents load, the main call chains that terminate in the
queued spinlock case seem to be
.lockref_get_not_dead.__legitimize_path.try_to_unlazy_next.lookup_fast
.lockref_get_not_dead.__legitimize_path.try_to_unlazy.lookup_fast
.lockref_get_not_dead.__legitimize_path.try_to_unlazy.link_path_walk
.dput.terminate_walk.path_openat.do_filp_open
which is interesting because I would have expected the readdir() code
itself to show up.
But the proc_pident_readdir profiles have all gone down, presumably
because there's just much fewer of them. That part shows no spinlock
in the profile at all.
WTH is that benchmark doing? The only readdir that shows up is for
what looks like some /proc filesystem thing.
Linus