The socket code is designed to be mostly multithreaded on a
uniprocessor. Since day 1 its been the case that two processes can
share a socket and one might page fault while copying sk_buff
data. If we are going to thread this further then for most
protocols we are looking at the same routines for a lot of the
work. Ultimately (probably post 2.2) most of the protocol
processing will be in the user context and a couple of kernel
threads.
Here is something I learned from talking to people who have done this
before: "Parallelism is 10 times more important for the in-user
context processing than for the packet soft interrupt processing".
So, this is where we should concentrate at least our initial
fine-granularity efforts.
Later,
David "Sparc" Miller
davem@caip.rutgers.edu