Messages in this thread | | | Date | Thu, 7 Feb 2013 19:48:33 -0800 | Subject | Re: [RFC PATCH 1/6] kernel: implement queue spinlock API | From | Michel Lespinasse <> |
| |
On Thu, Feb 7, 2013 at 4:40 PM, Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote: > On Thu, Feb 07, 2013 at 04:03:54PM -0800, Eric Dumazet wrote: >> 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.
Right. Another nice point about this approach is that there needs to be only one node per spinning CPU, so the node pointers (both tail and next) might be replaced with CPU identifiers, which would bring the spinlock size down to the same as with the ticket spinlock (which in turns makes it that much more likely that we'll have atomic stores of that size).
-- Michel "Walken" Lespinasse A program is never fully debugged until the last user dies.
| |