lkml.org 
[lkml]   [2013]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC PATCH 1/6] kernel: implement queue spinlock API
On Thu, Feb 07, 2013 at 04:03:54PM -0800, Eric Dumazet wrote:
> On Thu, 2013-02-07 at 15:58 -0800, Michel Lespinasse wrote:
>
> > No, I think that's doable. The trick would be that once a thread
> > acquires the lock, the only remaining use of the node is to receive
> > the 'next' pointer if/when another thread starts contending for the
> > lock. So if the lock state would need to distinguish between a lock
> > that is currently locked but not contended (the next value would then
> > be NULL), and a lock that is currently locked and contended (the
> > lock->next value is the node that goes after the current lock owner)
> >
>
> It adds yet another memory write to store the node pointer in the
> lock...
>
> I suspect it's going to increase false sharing.

On the other hand, compared to straight MCS, it reduces the need to
pass the node address around. Furthermore, the node pointer is likely
to be in the same cache line as the lock word itself, and finally
some architectures can do a double-pointer store.

Of course, it might well be slower, but it seems like it is worth
giving it a try.

Thanx, Paul



\
 
 \ /
  Last update: 2013-02-08 02:01    [W:1.472 / U:0.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site