Re: [PATCH] futex: Avoid hash-bucket locking for mismatched waits

Usama Arif <[email protected]>
Newsgroups org.kernel.vger.linux-kselftest,org.kernel.vger.linux-kernel
Message-ID <[email protected]>

On 07/08/2026 16:42, Thomas Gleixner wrote:
> On Wed, Aug 05 2026 at 06:28, Usama Arif wrote:
>> On Tue, 4 Aug 2026 17:07:59 +0000 Dmitry Ilvokhin <[email protected]> wrote:
>> The above data shows the significance of the patch.
>> It provides a very meaningful improvement (22.4% of time spent in futex_q_lock()
>> will be significantly optimized and will also deliver second-order effects)
>> and has no measurable impact on latency in the matching path.
>> IMHO, this patch is a free lunch.
> 
> Not really free. The user space access is not exactly cheap either
> because CLAC/STAC are memory fencing to meet the SMAP guarantees.
> 


My understanding from 86e6b1547b3d is that STAC/CLAC “end up serializing
execution on older Zen,” while Zen 5’s AC renaming “improves performance
of STAC/CLAC a lot a lot.”  Architecturally, they only change the AC bit.
They are not memory-ordering instructions like LFENCE. I am currently
testing on Zen5 which could be why I didn't see any wall-time regression
in futex_wait_timeout.c from [1].

> I've tried that lockless read/test before and gave up when a
> multi-waiter real world test case degraded by 5-10% depending on micro
> architecture.
> 


futex_wait_timeout.c [1] deliberately makes every call take the two-read path
and doesnt show any wall-time regression. The extra userspace read ofcourse
introduces additional instructions, but it is not showing up in any metric what
I thought would be the worst case in real world metrics.

The precheck adds no work while hb->lock is held, so it won't cause any more
contention.

I have been trying to coming up with some example userspace program that
would be negatively impacted by this patch and can't. I am not sure how
multi-waiter case that you described can result in 5-10% degradation
as the extra read is not showing up in wall clock time and we are not
adding more work under lock. I am currently testing on a Zen5 system.
Could you share the reproducer, thread topology, measured metric, and CPU
model on which you saw the 5–10% regression?

[1] https://lore.kernel.org/all/[email protected]/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.