Hi,
IMHO, Interrupt coalescence does not work as advertised with
the igb and e1000e drivers. Interrupt coalescence seems to not use
properly the 'rx-usecs' parameter. Moreover, when running at 100 Mb/s,
it seems to be scaled by a factor 10, resulting in huge packet
latency.
The Broadcom tg3 driver has a default time window for
interrupt coalescence of about 20 us, as per ethtool. With UDP
traffic, a 1 Gb/s, I measure a time window of around 40 us. At 100
Mb/s, I measure a time window of around 60 us in the worse case, in
other cases it's below 20 us.
The X710/i40e driver has a default time window of 25 us. With
UDP traffic, I measure a time window of around 20 us, at 10 Gb/s
(sorry, can't change speed).
Both the igb driver, the default time window for interrupt
coalescence of about 3 us, as per ethtool (see below).
With UDP traffic, at 1 Gb/s, I measure a time window of around
40 us.
At 100 Mb/s, I measure a time window of around 200-250 us (see
below).
The e1000e driver has the same behaviour as igb.
If in igb, I use ethtool to change the time window for
interrupt coalescence to 1 us (i.e., the smallest value), it does not
seem to help. With rx-usecs set to 1, at 100 Mb/s, I still measure
around 200-250 us, and at 1 Gb/s, 40 us. I.e., reducing the parameter
does not change anything.
As igb and e1000e don't seem to be using the rx-usecs
parameter properly, there seems to be no way to set interrupt
coalescence to a sensible value at 100 Mb/s (let say, 20-40 us).
So, IMHO, buggy.
Setup :
-----
Linux kernel : 4.9.82
igb driver : 5.3.5.18 & 5.4.0-k
firmware-version: 3.16, 0x800004ff, 1.304.0
e1000e driver : 3.2.6-k
firmware-version: 5.6-10
Speed is changed with :
# ethtool -s eth6 speed 100 duplex full
Speed change was validated with ethtool and running netperf
Interrupt Coal :
--------------
Default settings. With the default setting, the max int-coal
time window is supposed to be 3 usec.
# ethtool -c eth6
Coalesce parameters for eth6:
Adaptive RX: off TX: off
stats-block-usecs: 0
sample-interval: 0
pkt-rate-low: 0
pkt-rate-high: 0
rx-usecs: 3
rx-frames: 0
rx-usecs-irq: 0
rx-frames-irq: 0
tx-usecs: 0
tx-frames: 0
tx-usecs-irq: 0
tx-frames-irq: 128
rx-usecs-low: 0
rx-frame-low: 0
tx-usecs-low: 0
tx-frame-low: 0
rx-usecs-high: 0
rx-frame-high: 0
tx-usecs-high: 0
tx-frame-high: 0
rx-usecs was changed with :
# ethtool -C eth6 rx-usecs 1
Received packet log :
-------------------
I run a stream of UDP packet, each packet is 1000 byte, log of
receive times is below. In the received packet time log, I can see
groups of packets batched closely together (separated by 2 usec,
indicating a speed of 4 Gb/s, i.e. clearly coalesced), and those
groups are separated by 200-250 us.
Please find below the packet log. First column is received
time from the kernel in nanoseconds. Second column is time difference
to previous received packet, i.e. the gap between two received
packets in nanoseconds.
1524864423.932657212 ; 226658
1524864423.932659491 ; 2279
1524864423.932661023 ; 1532
1524864423.932662308 ; 1285
1524864423.932923593 ; 261285
1524864423.932927914 ; 4321
1524864423.933147424 ; 219510
1524864423.933149500 ; 2076
1524864423.933407932 ; 258432
1524864423.933412290 ; 4358
1524864423.933413758 ; 1468
1524864423.933415107 ; 1349
1524864423.933637323 ; 222216
1524864423.933639505 ; 2182
1524864423.933640854 ; 1349
1524864423.933899512 ; 258658
1524864423.934130315 ; 230803
1524864423.934132701 ; 2386
1524864423.934134096 ; 1395
1524864423.934135391 ; 1295
1524864423.934377340 ; 241949
1524864423.934381582 ; 4242
1524864423.934382997 ; 1415
1524864423.934628593 ; 245596
1524864423.934885071 ; 256478
1524864423.934886928 ; 1857
1524864423.934888129 ; 1201
1524864423.934889348 ; 1219
1524864423.934890530 ; 1182
1524864423.935107683 ; 217153
1524864423.935110140 ; 2457
1524864423.935111242 ; 1102
1524864423.935367980 ; 256738
1524864423.935371950 ; 3970
1524864423.935373136 ; 1186
1524864423.935600854 ; 227718
1524864423.935855419 ; 254565
1524864423.935857871 ; 2452
1524864423.935859196 ; 1325
1524864423.935860454 ; 1258
1524864423.935861796 ; 1342
1524864423.936087278 ; 225482
1524864423.936089122 ; 1844
1524864423.936366475 ; 277353
1524864423.936577632 ; 211157
1524864423.936580055 ; 2423
1524864423.936581466 ; 1411
1524864423.936582828 ; 1362
1524864423.936584173 ; 1345
1524864423.936848161 ; 263988
1524864423.936852586 ; 4425
1524864423.936853977 ; 1391
1524864423.937069593 ; 215616
1524864423.937071769 ; 2176
1524864423.937073050 ; 1281
1524864423.937333677 ; 260627
1524864423.937557332 ; 223655
1524864423.937561290 ; 3958
1524864423.937562748 ; 1458
1524864423.937564110 ; 1362
1524864423.937826533 ; 262423
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel® Ethernet, visit
http://communities.intel.com/community/wired