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