On Wed, Mar 4, 2026 at 5:03 PM Peter Zijlstra <[email protected]> wrote:
>
> On Wed, Mar 04, 2026 at 03:46:49PM +0800, Yafang Shao wrote:
> > Introduce mutex_lock_nospin(), a helper that disables optimistic spinning
> > on the owner for specific heavy locks. This prevents long spinning times
> > that can lead to latency spikes for other tasks on the same runqueue.
>
> This makes no sense; spinning stops on need_resched().
Hello Peter,
The condition to stop spinning on need_resched() relies on the mutex
owner remaining unchanged. However, when multiple tasks contend for
the same lock, the owner can change frequently. This creates a
potential TOCTOU (Time of Check to Time of Use) issue.
mutex_optimistic_spin
owner = __mutex_trylock_or_owner(lock);
mutex_spin_on_owner
// the __mutex_owner(lock) might get a new owner.
while (__mutex_owner(lock) == owner)
We observed high CPU pressure in production when this scenario occurred.
Below are the benchmark results when running 10 concurrent tasks:
for i in `seq 0 9`; do
time cat /sys/kernel/debug/tracing/available_filter_functions
> /dev/null &
done
- before this patch
real 0m4.636s user 0m0.001s sys 0m3.773s
real 0m5.157s user 0m0.001s sys 0m4.362s
real 0m5.205s user 0m0.000s sys 0m4.538s
real 0m5.212s user 0m0.001s sys 0m4.700s
real 0m5.246s user 0m0.001s sys 0m4.501s
real 0m5.254s user 0m0.003s sys 0m4.335s
real 0m5.260s user 0m0.003s sys 0m4.525s
real 0m5.267s user 0m0.004s sys 0m4.482s
real 0m5.273s user 0m0.002s sys 0m4.215s
real 0m5.285s user 0m0.003s sys 0m4.373s
- after this patch
real 0m4.733s user 0m0.002s sys 0m0.511s
real 0m4.740s user 0m0.001s sys 0m0.509s
real 0m4.862s user 0m0.001s sys 0m0.513s
real 0m4.884s user 0m0.000s sys 0m0.507s
real 0m4.888s user 0m0.003s sys 0m0.513s
real 0m4.888s user 0m0.000s sys 0m0.511s
real 0m4.886s user 0m0.003s sys 0m0.508s
real 0m4.952s user 0m0.000s sys 0m0.513s
real 0m4.973s user 0m0.001s sys 0m0.510s
real 0m5.042s user 0m0.002s sys 0m0.515s
The results show that system time dropped dramatically from ~4.5
seconds to ~0.5 seconds, confirming that the patch can help reduce the
issue.
Please correct me if I've misunderstood anything.
--
Regards
Yafang