tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: PATCH libatomic



On Fri, May 08, 2020 at 10:03:06AM +0200, Kamil Rytarowski wrote:
> On 08.05.2020 02:14, Thor Lancelot Simon wrote:
> > 
> > Not without performance penalty for every atomic operation, unless you propose
> > to do this by binary patch as is done in the kernel.
> 
> There is atomic penalty, but it is the contract and design of this (C
> and C++) feature. Atomics can be legitimately lock-free or non-lock-free
> and this is a feature.

Adding an extra test or, worse, an indirect branch before every atomic
operation makes it far worse than it has to be.  An uncontended locked
transaction on the bus may cost nothing.  An indirect branch followed
by the same transaction consumes all sorts of microarchitectural resources
will not just be slower but also impact the performance of _other_ code
too.  That's why the kernel binary-patches out lock prefixes instead of
using indirection for atomics.

Thor


Home | Main Index | Thread Index | Old Index