[9.3 PRE] Intel i210AT ethernet adapter MSI-X problems (igb driver)
Damian Danielecki
danieleckid at gmail.com
Sat May 17 12:40:09 UTC 2014
I am receiving as many as 30.000-40.000 interrupts per second under no
big nfs traffic.
Avg traffic is 20Mb/s, avg interrupts number on igb device is 13.000/s.
IMHO. I could compare this to similar igb adapters on other FreeBSD 9
servers and in this case should be less interrupts (lightweight
traffic conditions).
Additionally all of these interrupts occupies only one IRQ.
The interested thing is CPU usage caused by %interrupts is very small
(under 1%) so this is reason I am still able to use this ethernet
card.
# uname -a
FreeBSD nfsd.xxx.pl 9.3-PRERELEASE FreeBSD 9.3-PRERELEASE #5: Fri May
16 15:41:36 CEST 2014
root at nfsd.xxx.pl:/usr/obj/usr/src/sys/FREEBSD9 amd64
This is custom minimalist kernel.
I see in the sources of igb driver that i210 is generally supported:
/usr/src/sys/dev/e1000 # grep 'I210' * |wc -l
64
I guess mine adapter (onboard quad gigabit I210T) is not correctly
handled in the sources of the driver but system recognizes it as igb.
# dmidecode
(...)
Manufacturer: Supermicro
Product Name: X10SLM+-LN4F
(...)
# dmesg |grep igb0
igb0: <Intel(R) PRO/1000 Network Connection version - 2.3.10> port
0xc000-0xc01f mem 0xf7400000-0xf747ffff,0xf7480000-0xf7483fff irq 18
at device 0.0 on pci4
igb0: Using MSIX interrupts with 5 vectors
igb0: Ethernet address: 0c:c4:7a:01:e3:50
igb0: Bound queue 0 to cpu 0
igb0: Bound queue 1 to cpu 1
igb0: Bound queue 2 to cpu 2
igb0: Bound queue 3 to cpu 3
igb0: link state changed to UP
No device description:
#pciconf -vl
igb0 at pci0:4:0:0: class=0x020000 card=0x153315d9 chip=0x15338086
rev=0x03 hdr=0x00
vendor = 'Intel Corporation'
class = network
subclass = ethernet
Number of interrupts taken by device since system startup:
# vmstat -i
irq269: igb0:que 0 501886805 13364
irq270: igb0:que 1 40477 1
irq271: igb0:que 2 40417 1
irq272: igb0:que 3 7526720 200
irq273: igb0:link 12 0
Sample current number of interrupts with not big NFS traffic:
# systat -vm1
Interrupts
34352 total (!!!)
(...)
29937 igb0:que 0
1 igb0:que 1
1 igb0:que 2
1 igb0:que 3
1 igb0:link
As you can see above there are abnormal high numbers of interrupts and
all of them sits on que0.
sysctls untouched by me:
hw.igb.rx_process_limit: 100
hw.igb.num_queues: 4
hw.igb.header_split: 0
hw.igb.buf_ring_size: 4096
hw.igb.max_interrupt_rate: 8000
hw.igb.enable_msix: 1
hw.igb.enable_aim: 1
hw.igb.txd: 1024
hw.igb.rxd: 1024
For example this is properly working IRQ balancing on I350 Gigabit
ethernet adaptor with FreeBSD 9.2-RELEASE:
otherserver# vmstat -i
irq264: igb0:que 0 14586306636 962
irq265: igb0:que 1 12313136472 812
irq266: igb0:que 2 12400518935 818
irq267: igb0:que 3 12230694398 807
irq268: igb0:que 4 12624900681 833
irq269: igb0:que 5 12311037080 812
irq270: igb0:que 6 31682657476 2090
irq271: igb0:que 7 12203814868 805
irq272: igb0:link 77 0
Regards,
DD
More information about the freebsd-stable
mailing list