On Thu, Aug 1, 2024 at 2:35 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> 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. Yep, working on it at the moment. I'm trying to avoid task_work but keep main logic as unaware of parallel timer callback as possible. Will post patches once I have everything figured out and tested. And yes, I think I'll stick to SRCU for uretprobes parts, as you said. > > 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 :( Who knows, maybe we can convince Paul McKenney to help :) But regardless, mmap_lock is going to be a much bigger win if we can avoid it in the hot path, so let's see how far we can get with TYPESAFE_BY_RCU approach that's being discussed.