Jeffrey Hsu and Matt Dillon’s network changes are being committed – the first third is in, according to a commit by Matt.
Matt describes the plan thusly:
“Basically the goal of this work is to isolate and serialize PCBs in specific threads in order to (A) not have to lock them and (B) improve cache locality for ISR processing loops as well as for data. Isolating a network PCB means dealing with the points where the PCB talks to other parts of the system. There are three points where this happens:
- incoming packets go through preprocessing (e.g. IP) before
being routed to the target protocol & PCB (e.g. TCP and UDP).- user syscalls operate on PCBs
- timers and such initiate work related to particular PCBs”
I wish I knew what a PCB was.
Each socket’s protocol state is maintained in a data structure called a Protocol Control Block (PCB). TCP maintains a table of the active PCBs in the system. A PCB is created when a socket is created, either as a result of a system call, or as a result of a new connection being established.
http://www.cs.rice.edu/CS/Systems/Web-measurement/paper/node3.html (6th paragraph)