最近对Neutron Provider Network的性能简单测试了一下,并与nova-network进行了对比。
测试环境如下:
1. 1台 all in one, 1台计算节点,使用neutron provider network模式。
2. Openstack 为havana版本,使用RDO的安装包。
3. Host OS 为CentOS6.3 cisco harden版本,硬件是UCS 240,网卡为1Gbit/s。
4. 虚机机使用默认的large flavor,安装CentOS6.3 cisco harden 版本。
测试了以下情形:
VM在相同Host上,Security Group打开时,虚机之间网络拓扑大致如下:
测试结果如下, TCP throughput为3.5Gbit/s左右:
# netperf -H 10.224.148.72 -t TCP_STREAM -l 60
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.224.148.72 () 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 60.00 3507.16
VM在相同Host上,Security Group关闭时,虚机之间网络拓扑大致如下:
测试结果如下, TCP throughput为3.36Gbit/s左右:
# netperf -H 10.224.148.72 -t TCP_STREAM -l 60
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.224.148.72 () 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 60.00 3361.67
让我惊讶的是性能竟然降低了,我check了代码,发现nova的vid有以下3种情况:
防火墙打开时,就是我测试的第一种情况。
防火墙关闭,libvirt版本小于0.9.11就是我测试的第二种情况。
libvirt版本大于等于0.9.11时,libvirt直接支持openvswitch port。
我们使用的是CentOS6.3默认repo中的libvirt版本是0.9.10,因此更新了一下libvirt到0.10.2版本再次实验,拓扑如下:
测试结果如下, TCP throughput为4.85Gbit/s左右:
# netperf -H 10.224.148.72 -l 60
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.224.148.72 () 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 60.00 4854.45
在nova-network环境中做同样的实验,TCP throughput为4.34Gbit/s左右,结果如下:
# netperf -H 192.168.72.4 -l 60
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.72.4 () 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 60.00 4342.10
虚机在不同host上时,在各种情况下基本都能达到0.8-0.9Gbit/s,物理网卡流量是其瓶颈。
总结如下:
1. TCP throughput: Neutron Provider Network(SG off) > Nova-network > Neutron Provider Network(SG on)。
2. 升级libvirt版本到0.9.11以上。
3. 需要确认产线上是否需要SG,如果不需要的话可以关掉。
4. 物理网卡是不同host上虚机通信的瓶颈。
TO DO:
1. Performance和物理CPU消耗的关系。
2. GongYongSheng和一位外国朋友测试的结果与我的有出入,在使用openvswitch port的时候他们测试结果的性能要远好于我的,需要再deep dive一下看看我哪里有问题,他们测试结果如下: