GRO and LRO bundle several packets into one to reduce CPU load. Depending on settings, a small game packet may wait briefly for the next packet to bundle with.
Why The NIC and kernel bundle arriving packets together for processing → Effect With hardware aggregation (LRO) or a batching wait time setting turned on, packets wait briefly for the next one → On screen A small rise in latency (usually tens of µs or less)
Tune for game traffic (turn off LRO, check the batching wait time setting), check it after other causes since the effect is usually small.
On the graph
Always high · Round-trip time within the same data center
Where to look
Check lro and gro status with ethtool -k and the device’s gro_flush_timeout sysfs setting, and compare round-trip time for small packets within the data center before and after changing them
Confirmed if
LRO is on or gro_flush_timeout is above 0, and turning it off or setting it to 0 reduces round-trip time for small packets
Ruled out if
Difference stays within a few µs after the change: not this cause
Check with
Infra tools (no game code needed)
Sources
NAPILinux kernel A large gro_flush_timeout batches more work together but adds latency under low load