2 ms·
Reupping my assertion that kernel network protocol stacks are painfully obsolete in a world of containers, namespaces, and virtual machines. Default parameters
by jeffbee 2y ago
Reupping my assertion that kernel network protocol stacks are painfully obsolete in a world of containers, namespaces, and virtual machines. Default parameters are trying to balance competing interests, none of which will be relevant to your use case. Userspace protocol stacks are more aligned with the end-to-end principle. QUIC is a convenient compromise that moves most of the complexity up into the application while still benefitting from the kernel UDP stack with relatively fewer knobs.
- electricshampo1 2y agoOn prod servers I see a bunch of frontend stalls & code misses in the L2 for the kernel tcp stack; having each process statically embed its own network stack may make that worse (though using dynamic shared quic lib for ex. in userspace shared across multiple processes partially addresses that but with other tradeoffs). Of course depending on usecase etc the benefit from first-order network behavior improvements is almost certainly more important than the second-order cache pollution effects of replicated/seperate network stacks.
- jeffbee 2y agoWhen using a userspace stack you can (and should!) optimize your program during and after link to put hot code together on same/nearby lines and pages. You cannot do this or anything approximating this between an application and the Linux kernel. When Linux is built the linker doesn't know which parts of its sprawling network stack are hot or cold.
- 01HNNWZ0MV43FF 2y agoI wonder how far we are from "Birth and death of JavaScript" making such a thing possible