Protocol Implementation: An Engineering Approach To Computer Networking
Protocol Implementation: An Engineering Approach To Computer Networking
How much to put in user space, and how much in kernel space?
tradeoff between
software engineering
customizability
security
performance
Single-context
Tasks
Upcalls
Monolithic in kernel
Monolithic in user space
Per-process in user space
Interfaces
Single-context
Tasks
Upcalls
Single context
Tasks
Upcalls
Protocol implementation
Some numbers
10 Kbps 400 ms
100 Kbps, 40 ms
1 Mbps, 4 ms
100 Mbps, 40 µs
User-to-kernel context switch ~40 µs
Copying the packet ~25 µs
Checksum in software ~40 µs
Scheduling delays ~150 µs (depends on workload)
Interrupt handling ~10-50 µs (depends on the bus)
Protocol processing ~15 -100 µs (depends on protocol
complexity)
Rules of thumb
Optimize common case
Watch out for bottlenecks
Fine tune inner loops
Choose good data structures
Beware of data touching
Minimize # packets sent
Send largest packets possible
Cache hints
Use hardware
Exploit application properties