Summer of Code: Extending Multi-Processing (MP) support
Matthew Dillon
dillon at apollo.backplane.com
Mon Apr 28 09:51:11 PDT 2008
:Alright! Time to get going :)
:
:First order of business: questionnaire
:
:As you might have guessed, my main motivation with working on
:parallelizing parts of the kernel is an academic / recreational one as
:opposed to an "applied interest" one. Given that, I probably have a
:naive view on what would be most "useful" to begin and focus on...
:Therefore, what I would like to know, is what specific subsystems anyone
:would like to see prioritized, and why?
:
:--
:Robert Luciani
The network stack is the best-defined area because everything is threaded,
but if you are looking for a more personal area to work on I would say
the LWP vs PROC APIs are the place to go.
Last year we got a light weight process (LWP) threading abstraction.
Essentially one has a struct proc 'process' abstraction, but each thread
running under that process has its own 'struct lwp' abstraction.
MP access to LWPs are localized and do not need to be locked, but MP
access to the underlying struct proc is not MP safe. In addition, many
of the kernel APIs used in that part of the code are not yet MP safe.
Making struct proc access MP safe (by adding appropriate spin locks or
lockmgr locks or lwkt_token locks) would allow us to push the MP lock
further into the code. It would be a big deal.
Another area that really needs MP help, but is a *LOT* more difficult,
is the VFS API (the VOP interface). I do not think it would be a good
project because it will take a huge amount of work to get those APIs
MP safe.
-Matt
Matthew Dillon
<dillon at backplane.com>
More information about the Kernel
mailing list