On Mon, Feb 24, 2025 at 12:48:30PM -0800, Jakub Kicinski wrote:
With msec-long deferrals we'll flush due to jiffies change. At least that explains a bit. Could you maybe try lower timeouts than 1msec? Previously we'd just keep partially-completed packets in GRO for up to 1msec, now we'll delay all packet processing for 1msec, that's a lot.
Results again with each test run 1000 times:
gro_flush_timeout=50us napi_defer_hard_irqs=1 --> failed to GRO 0 times gro_flush_timeout=100us napi_defer_hard_irqs=1 --> failed to GRO 0 times
gro_flush_timeout=50us napi_defer_hard_irqs=0 --> failed to GRO 36 times gro_flush_timeout=100us napi_defer_hard_irqs=0 --> failed to GRO 46 times
100us with 1 defer seems to work fine and is well below the duration of a jiffy. So we'll usually be testing the "default" GRO path and only occasionally the jiffy-update path. I'll make these the numbers in the revised patch unless someone thinks otherwise.