[Bloat] Router congestion, slow ping/ack times with kernel 5.4.60

Jesper Dangaard Brouer brouer at redhat.com
Thu Nov 12 08:31:11 EST 2020


On Thu, 12 Nov 2020 12:26:20 +0100
"Thomas Rosenstein" <thomas.rosenstein at creamfinance.com> wrote:

> > Long-shot theory(2): The NIC driver IRQ interrupt coalesce
> > adaptive-IRQ (adj via ethtool -C) is wrong. The reason it is wrong is
> > because of TSO frames, due packet-to-byte ratio isn't taken into
> > account.  
> 
> here are the coalese parameters: (are the same for 3.10 and 5.4.60)
> 
> ethtool -c eth4
> Coalesce parameters for eth4:
> Adaptive RX: on  TX: on

Notice "Adaptive" setting is on.  My long-shot theory(2) is that this
adaptive algorithm in the driver code can guess wrong (due to not
taking TSO into account) and cause issues for 

Try to turn this adaptive algorithm off:

  ethtool -C eth4 adaptive-rx off adaptive-tx off

> stats-block-usecs: 0
> sample-interval: 0
> pkt-rate-low: 0
> pkt-rate-high: 0
> 
> rx-usecs: 32

When you run off "adaptive-rx" you will get 31250 interrupts/sec
(calc 1/(32/10^6) = 31250).

> rx-frames: 64

You likely want to reduce this.

> rx-usecs-irq: 0
> rx-frames-irq: 0
> 
> tx-usecs: 8
> tx-frames: 128

These 128 frames also seems too large.

> tx-usecs-irq: 0
> tx-frames-irq: 0
> 
[...]
> >
> > You can test theory(2) in two ways, via disabling TSO and via 
> > adjusting
> > ethtool --show-coalesce|--coalesce (-c|-C).  The --coalesce change can
> > change part of theory(1), the NIC wake-up/IRQ interval.  

What is the NIC ring size settings?

 ethtool -g eth4

-- 
Best regards,
  Jesper Dangaard Brouer
  MSc.CS, Principal Kernel Engineer at Red Hat
  LinkedIn: http://www.linkedin.com/in/brouer



More information about the Bloat mailing list