FreeBSD TCP tuning and performance
Noisex
noisex at apollo.lv
Thu Dec 10 12:43:36 UTC 2009
Hi! I have a problem with TCP performance on FBSD boxes with 1Gbps net i-faces (Broadcom NetXtreme II BCM5708 1000Base-T (B2)). Currently i use FBSD 7.1 AMD64.
The test lab: 2 x (server-client) HP Proliant G5 DL360 (quad-core/8gb ram, raid 5 SAS).
For net benchmark i used nuttcp and iperf.
The servers (client-server) are in 1 VLAN.
The results on 1Gbps (down & up):
63.4375 MB / 1.00 sec = 532.1332 Mbps
64.3750 MB / 1.00 sec = 540.0426 Mbps
62.8125 MB / 1.00 sec = 526.8963 Mbps
64.5625 MB / 1.00 sec = 541.6318 Mbps
63.9375 MB / 1.00 sec = 536.3595 Mbps
63.7500 MB / 1.00 sec = 534.7566 Mbps
63.0000 MB / 1.00 sec = 528.5003 Mbps
63.5000 MB / 1.00 sec = 532.7150 Mbps
64.0000 MB / 1.00 sec = 536.8586 Mbps
63.5625 MB / 1.00 sec = 533.2452 Mbps
637.6688 MB / 10.02 sec = 533.9108 Mbps 9 %TX 9 %RX 9 host-retrans 0.67 msRTT
25.5625 MB / 1.00 sec = 214.3916 Mbps
30.8750 MB / 1.00 sec = 259.0001 Mbps
29.9375 MB / 1.00 sec = 251.1347 Mbps
27.1875 MB / 1.00 sec = 228.0669 Mbps
30.5000 MB / 1.00 sec = 255.8533 Mbps
30.2500 MB / 1.00 sec = 253.7551 Mbps
26.8125 MB / 1.00 sec = 224.9211 Mbps
30.3750 MB / 1.00 sec = 254.8047 Mbps
30.3750 MB / 1.00 sec = 254.8050 Mbps
30.0625 MB / 1.00 sec = 252.1835 Mbps
292.2155 MB / 10.02 sec = 244.6825 Mbps 10 %TX 12 %RX 0 host-retrans 0.71 msRTT
As you can see down is littlebit more than half of full link speed. And upload is only 20-25% of full link.
I tried to change a lot sysctl params but without a big results. Currenlty my entries in /etc/sysctl.conf which regarding to TCP:
#kernel tuning, tcp
kern.ipc.somaxconn=2048
kern.ipc.nmbclusters=32768
kern.ipc.maxsockbuf=8388608
net.inet.tcp.sendbuf_max=16777216
net.inet.tcp.recvbuf_max=16777216
net.inet.tcp.inflight.enable=0
net.inet.tcp.sendspace=65536
net.inet.tcp.recvspace=65536
net.inet.udp.recvspace=65536
net.inet.tcp.inflight.enable=0
net.inet.tcp.rfc1323=1
net.inet.tcp.sack.enable=1
net.inet.tcp.path_mtu_discovery=1
net.inet.tcp.sendbuf_auto=1
net.inet.tcp.sendbuf_inc=16384
net.inet.tcp.recvbuf_auto=1
net.inet.tcp.recvbuf_inc=524288
Do you have some kind suggestion what i could to change to increase the performance of TCP?
Besides when i make the benchamrks i run the sniffer to see whats happening with network..sometimes i saw that window size is 0...does it mean that server can't handle something or recieve buffer size is to small?
p.s sory for my bad english :)
Noisex
More information about the freebsd-performance
mailing list