On Sockets and System Calls: Minimizing Context Switches for the Socket API
summary
Implements exposed socket buffers (shared per-socket memory with two lockless queues) and pins the user-space network stack to its own core in NewtOS; nonblocking calls resolve in user space and failing calls cost about 140 cycles, avoiding kernel crossings. Measured on a 12-core AMD 1.9GHz with a 10Gb Intel NIC using liteweb: legacy NewtOS ~5k req/s, Linux ~11k req/s, fast sockets up to ~45k req/s for persistent connections. Limits: fork breaks shared mappings; paper gives the 99% figure and microbench numbers.
AI-written summary · about
chapters (14)
- 0:00Intro
- 0:27POSIX Socket API
- 2:15Socket API - current solutions
- 3:34System Calls Overhead
- 4:25Socket API-event-driven servers
- 8:11Signaling - how does it work?
- 10:44Mapping exposed socket buffers
- 12:34Newtos - a multiserver system
- 14:13NewtOS network stack
- 15:18Multiserver systems - the cost of system calls
- 16:42Evaluation - testbed
- 20:11Limitations
- 21:16Related work
- 22:07Conclusions
related talks
20mNetKernel: Making Network Stack Part of the Virtualized Infrastructure
47mSpeedrun through Splicing Sockets with Sockmap
31mA Practical, Research‑Backed Introduction To Cloud‑Native Kernel‑Bypass Networking
24mSpeedrun Through Splicing Sockets with Sockmap
25mShenango: Achieving High CPU Efficiency for Latency-sensitive Datacenter Workloads
01h 01mStructured Networking
26mTCP Socket Lookup Degradation and per-Netns Ehash
15mThe nanoPU: A Nanosecond Network Stack for Datacenters
