udp rss hash causes low iperf perforamnce
0.1. vxlan下iperf性能问题
VXlan网络下,在两个容器(分别在两个host上)上,使用iperf进行tcp网络性能测试,带宽只能达到3.5Gb/s左右。
而两个容器所在的host机器之间是万兆网络环境,host上的网卡是ixgbe 10G网卡
0.2. 解决方法
- 发送端使用多线程参数
-P
1 | |
- 接收端IXGBE网卡RSShash使用hash(SrcIP, DstIP, SrcPort, DstPort)
1 | |
0.3. 复现方法
在容器1启用server端:
1 | |
容器2上启用client端:
1 | |
0.4. 问题分析
0.4.1. ipef压测的同时,最好情况下可以看到4Gb/sec的带宽,带宽在3G左右波动

0.4.1.1. 使用top命令在容器所在的两台host机器上查看cpu利用率。
0.4.1.2. client端cpu很空闲的

0.4.1.3. server端cpu(cpu10)被压满了

所以单进程的性能已经接近瓶颈,因此使用并发多个线程。
1 | |
压测发现性能还是3-4G左右,效果提高不明显。
top观察发现单核cpu的利用率奇高,已经被压爆了,但是其他cpu却没啥压力。
因此怀疑rsshash没做好,
1 | |
重新设置udp4的rsshash规则
1 | |
0.4.2. 测试验证
iperf client使用4个线程压测
ifperf server端看到softirqd压力分不到了4个cpu上(cpu2,6,8,10)
总的带宽达到8.38Gb/s.
0.4.3. 关于RSS可以参考这个图片及相应的解释
Packet Flow的图片
http://2.bp.blogspot.com/-WRpAha4DF68/Ul9-j0IPCgI/AAAAAAAABjs/uHU5UuKrfnw/s1600/osi_layers+(6).png)
udp rss hash causes low iperf perforamnce
https://martinbj2008.github.io/2016/10/26/2016-10-13-udp-rss-hash-cause-low-iperf-perforamnce/
