Hi

I have bought two lab systems for testing 10Gbit and have some issues with
10Gbit performance.
Note: I have the devices triple-booting FreeBSD, Linux and OpenBSD and can get
about 9.4Gbits/sec with Linux iperf using iperf -t 60

I have read and updated kernel to latest snapshot
OpenBSD 5.2 (GENERIC.MP) #362: Sun Jul 22 14:10:40 MDT 2012
   dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 17169907712 (16374MB)
avail mem = 16690479104 (15917MB)

also tried GENERIC-nonMP - gave worse performance

Current performance, a little better than 5.1
root@xpc02:root# tcpbench -u 10.0.10.30
Elapsed:        1000 Mbps:    1841.437 Peak Mbps:    1841.437 Tx PPS:  156372
Elapsed:        2000 Mbps:    1841.901 Peak Mbps:    1841.901 Tx PPS:  156411
Elapsed:        3000 Mbps:    1839.553 Peak Mbps:    1841.901 Tx PPS:  156212

root@xpc03:root# tcpbench -n 4 -s
 elapsed_ms          bytes         mbps   bwidth
        999       92113072      737.642   27.54%
        999       98731880      790.646   29.52%
        999       72763448      582.690   21.75%
        999       70892632      567.709   21.19%
Conn:   4 Mbps:     2678.687 Peak Mbps:     2678.687 Avg Mbps:      669.672
       2000       65977576      527.821   18.87%
       1999      107496584      860.834   30.75%
       1999       67310912      539.026   19.25%
       1999      108839944      871.591   31.13%
Conn:   4 Mbps:     2799.272 Peak Mbps:     2799.272 Avg Mbps:      699.818

OTOH it seems to be very stable, even running over longer periods :-)
Better stable than fast :-)

Basic specs

Shuttle SX58H7 Pro Barebone, using SX58 chipset - has x8 PCI-E slot
Dual port 10Gbit Intel 10GbE SFP+ (82599)
cpu0: Intel(R) Core(TM) i7 CPU 960 @ 3.20GHz, 3200.46 MHz
spdmem0 at iic0 addr 0x50: 4GB DDR3 SDRAM PC3-10600
spdmem1 at iic0 addr 0x51: 4GB DDR3 SDRAM PC3-10600
spdmem2 at iic0 addr 0x52: 4GB DDR3 SDRAM PC3-10600
spdmem3 at iic0 addr 0x54: 4GB DDR3 SDRAM PC3-10600, BIOS overclocking memory
a bit up to 1333MHz


Current tuning, apart from kernel defaults:
and also modified /etc/sysctl somewhat - most changes below are from
https://calomel.org/network_performance.html:
hlk@xpc02:hlk$ grep -v "^#" /etc/sysctl.conf
net.inet6.icmp6.rediraccept=1   # 1=Accept IPv6 ICMP redirects (for hosts)
kern.pool_debug=0               # 0=Disable pool corruption checks (faster)
machdep.allowaperture=2         # See xf86(4)

ddb.panic=0                    # do not enter ddb console on kernel panic,
reboot if possible
kern.bufcachepercent=90        # Allow the kernel to use up to 90% of the RAM
for cache (default 10%)
machdep.allowaperture=2        # Access the X Window System (if you use X on
the system)
net.inet.ip.forwarding=1       # Permit forwarding (routing) of packets
through the firewall
net.inet.ip.ifq.maxlen=512     # Maximum allowed input queue length
(256*number of physical interfaces)
net.inet.ip.mtudisc=0          # TCP MTU (Maximum Transmission Unit) discovery
off since our mss is small enough
net.inet.tcp.rfc3390=2         # RFC3390 increasing TCP's Initial Congestion
Window to 14600 for SPDY
net.inet.tcp.mssdflt=1440      # maximum segment size (1440 from scrub pf.conf
match statement)
net.inet.udp.recvspace=131072 # Increase UDP "receive" buffer size. Good for
200Mbit without packet drop.
net.inet.udp.sendspace=131072 # Increase UDP "send" buffer size. Good for
200Mbit without packet drop.

I have a more detailed pastebin at: http://pastebin.com/iNpk3DgV

The devices are NOT intended for production and I will be happy to allow
access to these systems, only requirement is that you have IPv6 (I am moving
these systems around a bit, and NAT sucks)
- email me your SSH public key and I will create an account.

I have this week until saturday dedicated for working on this and other
related projects, so contact me if you want to join. Skype: kramshoej, EFnet:
hlkv6, freenode: hlkv6



Current cabling is using direct attach copper cable, I only have direct attach
cables, but multiple switches, did not make any significant difference.

I got a Force10 switch to report the following in testing, so the hardware
looks fine:
force10-2#sh interfaces Tengigabitethernet 0/0 | grep Mbits
    Input 35.00 Mbits/sec,      62616 packets/sec, 0.45% of line-rate
    Output 9869.00 Mbits/sec,     812987 packets/sec, 99.90% of line-rate


The main steps for getting FreeBSD tuned were:

kern.ipc.nmbclusters=262144
kern.ipc.nmbjumbop=262144
sysctl hw.intr_storm_threshold=9000 - note I see LOTS and lots of interrupts,
so maybe some

/boot/loader.conf
ixgbe_load="YES"
hw.ixgbe.txd=4096
hw.ixgbe.rxd=4096
- this made a huge difference

Killing xhci  from kernel, was using lots of interrupts, buggy driver?




Best regards

Henrik

--
Henrik Lund Kramshøj, Follower of the Great Way of Unix
h...@kramse.org h...@solidonetworks.com
+45 2026 6000 cand.scient CISSP
http://solidonetworks.com/ Network Security is a business enabler

Reply via email to