Neutron网络性能测试与分析(一) CVR
测试环境:网络节点运行在Intel(R) Xeon(R) CPU E5-2630 v3服务器上,网卡使用intel的万兆卡82599ES
测试仪使用本人基于dpdk编写的程序,基本上可以打满万兆卡,小包的pps在1200w左右
于是我用测试仪给openstack的虚拟机打流量,为了尽量模拟实际情况采用了200w条数据流,其中通过FIP访问虚拟机,主要想测试一下neutron网络节点的转发性能,在测试中只使用了一路numa节点,经过各种优化后,性能大约在200wpps左右,一路numa节点的cpu全部si占用率为100%,如下是使用perf top获取到的cpu被各个函数占用的情况。
15.97% [kernel] [k] ipt_do_table
8.29% [kernel] [k] ____nf_conntrack_find
6.80% [kernel] [k] fib_table_lookup
2.97% [kernel] [k] __netif_receive_skb_core
2.73% [kernel] [k] _raw_spin_lock
2.72% [kernel] [k] nf_iterate
2.23% [kernel] [k] intel_crc4_2_hash2
2.12% [kernel] [k] masked_flow_lookup
2.03% [kernel] [k] nf_nat_ipv4_fn
1.83% [kernel] [k] check_leaf.isra.
1.82% [kernel] [k] ovs_flow_mask_key
1.66% [kernel] [k] ip_finish_output
1.47% [kernel] [k] ixgbe_clean_rx_irq
1.43% [kernel] [k] ixgbe_xmit_frame_ring
考虑到已经将nf_conntrack优化到足够的快,基本上没有tuning的空间;于是我进行了第二组测试。在linux 内核协议栈中实现了一个快速的NAT方式,方法基本与nf_conntrack一样,只是不像nf_conntrack那么通用,路径那么长,锁的粒度也要比nf_conntrack小,粒度精细到哈希表中的元素,哈希算法和nf_conntrack一样。
得到的结果是230wpps,此时ovs的查询函数在iperf中显示占用了最多的cpu使用,大约在9%左右,推断出此时ovs是整个性能的瓶颈。
经过了两次对比可以看出在neutron CVR情况下,nf_conntrack和ovs流表对cpu的占用率大约在六四开。
因此估计在Intel(R) Xeon(R) CPU E5-2630 v3服务器上,两路numa节点全部使用的话,NEUTRON转发的
性能极限应该不会超过400wpps,因为性能并不会随着cpu的增加而线性的增加,随着cpu数目的增加,cpu对总线的竞争也越来越激烈,对内核的全局变量竞争也越来越激烈。
考虑到linux内核协议做NAT的路径比较长,而且nf_conntrack过于通用导致其性能不高;CVR的方式除了同网段的
虚拟机流量不走网络节点,其余全部要走网络节点;DVR的实现方式极其麻烦而且性能会更差(通过了两次的netns)
可以考虑在ovs中做NAT来提高性能,但是根据第二组测试的结果,分析其性能极限也就是在500wpps~600wpps左右
要想达到商业级的pps(1000wpps左右),以及dpdk ivshmem/vhost_user对虚拟机的性能加速,最终使用nfv+dpdk或许可以实现
Neutron网络性能测试与分析(一) CVR的更多相关文章
- openstack第四章:neutron— 网络服务
第四篇neutron— 网络服务 一.neutron 介绍: Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是 ...
- Neutron 网络基本概念
Neutron 网络基本概念 上次我们讨论了 Neutron 提供的功能,今天我们学习 Neutron 模块几个重要的概念. Neutron 管理的网络资源包括 Network,subnet 和 po ...
- Apache ab性能测试结果分析
Apache ab性能测试结果分析 测试场景:模拟10个用户,对某页发起总共100次请求. 测试命令: ab -n 100 -c 10 地址 测试报告: Server Software: 被测服务器软 ...
- Neutron网络学习
学习 Neutron 系列文章: 转http://www.cnblogs.com/sammyliu/p/4622563.html (1)Neutron 所实现的网络虚拟化 (2)Neutron Ope ...
- LoadRunner性能测试结果分析(转载)
性能测试的需求指标:本次测试的要求是验证在30分钟内完成2000次用户登录系统,然后进行考勤业务,最后退出,在业务操作过程中页面的响应时间不超过3秒,并且服务器的CPU使用率.内存使用率分别不超过75 ...
- openstack——neutron网络服务
一.neutron 介绍: Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...
- Web项目性能测试结果分析
1.测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源.数据库服务器资源等几 ...
- OpenStack核心组件-neutron网络服务
1. neutron 介绍 1.1 Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能 ...
- openstack核心组件--neutron网络服务(4)
一.neutron 介绍: Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...
随机推荐
- 【转】【Egit】如何将eclipse中的项目上传至Git
1.下载egit插件 打开Eclipse,git需要eclipse授权,通过网页是无法下载egit的安装包的.在菜单栏依次打开eclipse→help→install new software→add ...
- [Q]图框识别问题
一个CAD文件可能包含很多张(页)图,每张图通常包含在一个图框里,这个图框通常是矩形的. 打图精灵识别图框所在区域,然后打印该区域,打图精灵识别图框实际上是识别最外侧的矩形(无矩形打印见下文) 如A矩 ...
- github上前100的ios项目
1. AFNetworking 作者是 NSHipster 的博主, iOS 开发界的大神级人物, 毕业于卡内基·梅隆大学, 开源了许多牛逼的项目, 这个便是其中之一, AFNetworking ...
- java调用wsdl xfire和cxf两种方式
xfire 如下: String spID = ""; String password = ""; String accessCode = "&quo ...
- NYOJ-47 过河问题(贪心)
过河问题 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边.如果不借助手电筒的话,大家是无论如何也不敢过桥去的 ...
- EF Codefirst 初步学习(二)—— 程序管理命令 更新数据库
前提:搭建成功codefirst相关代码,参见EF Codefirst 初步学习(一)--设置codefirst开发模式 具体需要注意点如下: 1.确保实体类库程序生成成功 2.确保实体表类库不缺少 ...
- ES6 之 Set数据结构和Map数据结构 Iterator和for...of循环
ECMAScript 6 入门 Set数据结构 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. va ...
- Webpack学习笔记(二)
市面上已经存在的模块管理和打包工具并不适合大型的项目,尤其单页面 Web 应用程序.最紧迫的原因是如何在一个大规模的代码库中,维护各种模块资源的分割和存放,维护它们之间的依赖关系,并且无缝的将它们整合 ...
- Android非常有用的开源库介绍整理
Android开源库 自己一直很喜欢Android开发,就如博客副标题一样,我想做个好的App. 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 ...
- Python Data Visualization Cookbook 2.2.2
import csv filename = 'ch02-data.csv' data = [] try: with open(filename) as f://用with语句将数据文件绑定到对象f r ...