Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Mar 2010 19:50:38 +0400
From:      rihad <rihad@mail.ru>
To:        freebsd-net@freebsd.org
Subject:   ixgbe input errors at high data rates
Message-ID:  <4B99114E.7060909@mail.ru>

next in thread | raw e-mail | index | archive | help
Hi, our Intel 10 GigE cards are finally here, identified as
<Intel(R) PRO/10GbE PCI-Express Network Driver, Version - 1.3.3>
with the driver ixgbe-1.3.3 off the CD-ROM.
One card is used for input, the other for output, doing traffic limiting 
(dummynet) and accounting in between.
At data rates of about 700-1000 mbps netstat -i shows many Input errors 
on ix0 at a rate of 10-20K per second :(

top -HS:
CPU:  1.3% user,  0.0% nice, 25.2% system, 14.1% interrupt, 59.3% idle
Mem: 1047M Active, 2058M Inact, 466M Wired, 126M Cache, 214M Buf, 239M Free
Swap: 2048M Total, 2048M Free

   PID USERNAME   PRI NICE   SIZE    RES STATE  C   TIME   WCPU COMMAND
    32 root       -68    -     0K    16K CPU3   3 460:56 100.00% irq258: ix0
    33 root       -68    -     0K    16K CPU7   7 143:14 100.00% ix0 rxq
    13 root       171 ki31     0K    16K RUN    5 574:39 93.65% idle: cpu5
    12 root       171 ki31     0K    16K RUN    6 507:08 88.33% idle: cpu6
    14 root       171 ki31     0K    16K CPU4   4 424:04 80.37% idle: cpu4
    18 root       171 ki31     0K    16K CPU0   0 395:34 75.00% idle: cpu0
    16 root       171 ki31     0K    16K RUN    2 433:10 70.21% idle: cpu2
   700 root       -68    -     0K    16K -      2 292:19 56.64% dummynet
    17 root       171 ki31     0K    16K CPU1   1 399:02 50.39% idle: cpu1
    37 root       -68    -     0K    16K CPU1   1 196:19 39.50% ix1 rxq
    11 root       171 ki31     0K    16K RUN    7 510:39 14.79% idle: cpu7
    36 root       -68    -     0K    16K WAIT   5  36:36  8.64% irq260: ix1
    19 root       -32    -     0K    16K CPU6   6  36:52  5.08% swi4: 
clock sio


Turning dummynet off (by short-circuiting the IPFW rule "allow ip from 
any to any" before the "pipe tablearg") doesn't eliminate the input 
errors. Turning ip.fastfowarding off (see below) doesn't help either 
(why would it), only this time "swi" is chewing up the CPU time instead 
of "irq". Are we hitting the CPU core limits here? It's a dual cpu 
quad-core Intel(R) Xeon(R) CPU E5410 @ 2.33GHz (Dell PowerEdge 2950).
Shouldn't this $2.5K expensive card have decently-sized hardware buffers 
to prevent any overruns?

Some custom settings:
kern.hz=4000
net.inet.ip.fastforwarding=1
kern.ipc.nmbclusters=111111
net.inet.ip.dummynet.io_fast=1
net.isr.direct=0
net.inet.ip.intr_queue_maxlen=5000
hw.intr_storm_threshold=8000 #as suggested by the ixgbe-1.3.3 docs

FreeBSD 7.1 kernel built with DEVICE_POLLING, even though it isn't used. 
Should I nonetheless recompile without it? I heard the mere existence of 
DEVICE_POLLING affects some cards' performance.

Thanks for any tips.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B99114E.7060909>