Lockless algorithms [was Re: splxxx replacements?]
Matthew Dillon
dillon at apollo.backplane.com
Fri Nov 17 14:28:17 PST 2006
:Ok, so you're still using tokens for larger subsystems that have long execution
:paths if I understand you, right ?
:
:One of the claims about dfBSD that I found interesting was that the your use of
:token to break up long kernel paths was an incremental way of MPing the kernel.
:This is in contrast to the complete removal of Giant in a lock path for a kernel
:syscall. The question here that I've been wondering if tokens are living up to
:its claim or not ?
:
:That's really the main question I have using it as a general mechanism for MP
:work in a legacy kernel (I'm thinking about using it for another system that is
:already using a code path protection scheme).
:
:bill
Tokens have worked out very well for long code paths such as
traversing a mountlist in order to perform a filesystem sync. There
is virtually no knowledge pollution verses the mutex model where you
have to pass the held mutex down any code path that might potentially
block.
That said, we are having even MORE success with cpu localization,
allowing us to code lockless algorithms. So much success, in fact,
that many of the things I originally envisioned as using tokens now
don't use any locks at all.
Also, standard lockmgr locks have been simplified considerably and
they also now leak into some of the areas where I originally envisioned
using tokens.
The areas which still need solutions are primarily tree topology lookups
and updates. The VM page hash table, the buffer cache, and the
name cache. I am not at all convinced that RCU is the answer I
am looking for. What I do want to do is to find a general solution
that can be implemented by the red-black tree module itself rather
than by all the code that uses RB trees.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
More information about the Kernel
mailing list