2 ms·
Among other things, GRO (receive offloading) means you can get more data off of the network card in fewer operations. Linux has receive packet steering, which
by JoshTriplett 2y ago
Among other things, GRO (receive offloading) means you can get more data off of the network card in fewer operations.
Linux has receive packet steering, which can help with getting packets from the network card to the right CPU and the right userspace thread without moving from one CPU's cache to another.
- suprjami 2y agoRPS is just software RSS. You mean Receive Flow Steering, and RFS can only control RPS, so to do it in hardware you actually mean Accelerated RFS (which requires a pretty fancy NIC these days). Even ignoring the hardware requirement, unfortunately it's not that simple. I find results vary wildly whether you should put process and softirq on the same CPU core (sharing L1 and L2) or just on the same CPU socket (sharing L3 but don't constantly blow out L1/L2). Eric Dumazet said years ago at a Netdev.conf that L1 cache sizes have really not kept up with reality. That matches my experience. QUIC doing so much in userspace adds another class of application which has a so-far uncommon design pattern. I don't think it's possible to say whether any QUIC application benefits from RFS or not.