- 10G(82599EB) 网卡测试优化(总)
- 10G(82599EB) 网卡测试优化(jumbo frame, tcp win scaling)
- 10G(82599EB) 网卡测试优化(ethtool)
- 10G(82599EB) 网卡测试优化(kernel)
- 10G(82599EB) 网卡测试优化(中断处理)
- 10G(82599EB) 网卡测试优化(other)
1. 开启 jumbo frame
开启之前:
# netperf -H 192.168.10.2 -t TCP_STREAM -c -C -l 10
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.10.2 () port 0 AF_INET
Recv Send Send Utilization Service Demand
Socket Socket Message Elapsed Send Recv Send Recv
Size Size Size Time Throughput local remote local remote
bytes bytes bytes secs. 10^6bits/s % S % S us/KB us/KB
87380 16384 16384 10.00 9394.05 2.68 2.46 0.561 0.516
对于 2900, 4000/4500, 6000/6500 系列的,可以看这里。我们这里使用的是 N5K:
sw 上:
N5K(config)#policy-map type network-qos jumbo
N5K(config-pmap-nq)#class type network-qos class-default
N5K(config-pmap-c-nq)#mtu 900
N5K(config-pmap-c-nq)#exit
N5K(config-pmap-nq)#exit
N5K(config)#system qos
N5K(config-sys-qos)#service-policy type network-qos jumbo
server:
# ifconfig eth2 mtu 9000
永久写入:
# vi /etc/sysconfig/network-script/ifcfg-eth2
MTU="9000"
测试:
# ip route get 192.168.10.2
开启之后,效果十分的明显,达到了 9.9Gbps:
# netperf -H 192.168.10.2 -l 15 -c -C -t TCP_SENDFILE -f /boot/initramfs-2.6.32-220.el6.x86_64.img -f g
TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.10.2 () port 0 AF_INET
Recv Send Send Utilization Service Demand
Socket Socket Message Elapsed Send Recv Send Recv
Size Size Size Time Throughput local remote local remote
bytes bytes bytes secs. 10^9bits/s % S % S us/KB us/KB
87380 16384 16384 15.00 9.90 2.15 2.91 0.427 0.578
注意,jambo frame 是需要端到端的开启的,即 server-sw-server,只要有一方没有开启都无法实现。
2. tcp_window_scaling 对网络的影响
这个参数主要是在 tcp win size > 2^16(64Kb) 时发挥作用,默认 tcp_window_scaling 是开启的:
# cat /proc/sys/net/ipv4/tcp_window_scaling
1
# netperf -H 192.168.10.2 -P1 -l 30
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.10.2 () port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 30.00 9411.50
将 server 端的关闭:
# echo 0 > !$
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
# netperf -H 192.168.10.2 -P1 -l 30
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.10.2 () port 0 AF_INET
Recv Send Send
Socket Socket Message Elapsed
Size Size Size Time Throughput
bytes bytes bytes secs. 10^6bits/sec
87380 16384 16384 30.00 2323.36
只要有一端不开启,吞吐只能维持在 2Gbps 左右。当然,可以通过 interrupt coalescing 来部分的提高吞吐。