On Thu, Aug 01, 2024 at 11:35:05AM +0200, Peter Zijlstra wrote: > On Wed, Jul 31, 2024 at 02:42:56PM -0700, Andrii Nakryiko wrote: > > This patch switches uprobes SRCU usage to RCU Tasks Trace flavor, which > > is optimized for more lightweight and quick readers (at the expense of > > slower writers, which for uprobes is a fine tradeof) and has better > > performance and scalability with number of CPUs. > > > > Similarly to baseline vs SRCU, we've benchmarked SRCU-based > > implementation vs RCU Tasks Trace implementation. > > Yes, this one can be the trace flavour, the other one for the retprobes > must be SRCU because it crosses over into userspace. But you've not yet > done that side. > > Anyway, I think I can make the SRCU read_{,un}lock() smp_mb() > conditional, much like we have for percpu_rwsem and trace rcu, but I > definitely don't have time to poke at that in the foreseeable future :( You most certainly can, but all of the approaches that I know of have sharp edges in one place or another. There were extensive unrecorded and unminuted discussion of this about five years ago, and I have been reconstituting those neurons to document what is feasible. None of which were useful for the use cases back then, whose performance requirements could not be met by unsafe srcu_read_lock() and srcu_read_unlock() with smp_mb() removed, and others of which really wanted CPU stall warnings. But it is of course possible that newer use cases might benefit. Who knows? I haven't gotten very far, but it is on my list. Thanx, Paul