测试环境:网络节点运行在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的更多相关文章

  1. openstack第四章:neutron— 网络服务

    第四篇neutron— 网络服务 一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是 ...

  2. Neutron 网络基本概念

    Neutron 网络基本概念 上次我们讨论了 Neutron 提供的功能,今天我们学习 Neutron 模块几个重要的概念. Neutron 管理的网络资源包括 Network,subnet 和 po ...

  3. Apache ab性能测试结果分析

    Apache ab性能测试结果分析 测试场景:模拟10个用户,对某页发起总共100次请求. 测试命令: ab -n 100 -c 10 地址 测试报告: Server Software: 被测服务器软 ...

  4. Neutron网络学习

    学习 Neutron 系列文章: 转http://www.cnblogs.com/sammyliu/p/4622563.html (1)Neutron 所实现的网络虚拟化 (2)Neutron Ope ...

  5. LoadRunner性能测试结果分析(转载)

    性能测试的需求指标:本次测试的要求是验证在30分钟内完成2000次用户登录系统,然后进行考勤业务,最后退出,在业务操作过程中页面的响应时间不超过3秒,并且服务器的CPU使用率.内存使用率分别不超过75 ...

  6. openstack——neutron网络服务

    一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...

  7. Web项目性能测试结果分析

    1.测试结果分析 LoadRunner性能测试结果分析是个复杂的过程,通常可以从结果摘要.并发数.平均事务响应时间.每秒点击数.业务成功率.系统资源.网页细分图.Web服务器资源.数据库服务器资源等几 ...

  8. OpenStack核心组件-neutron网络服务

    1. neutron 介绍 1.1 Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能 ...

  9. openstack核心组件--neutron网络服务(4)

    一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要 ...

随机推荐

  1. 2014年蓝桥杯预选赛 C/C++ 本科A组试题--切面条

    //主要是要找到f(n)=2*f(n-1)-1的规律. #include <stdio.h> #include <math.h> int f(int n) { if(n==0) ...

  2. error C3872: “0x3000”: 此字符不允许在标识符中使用

    主要是拷贝的程序问题,有错误的空字符. 0x3000是汉语的空格,也就是全角空格,相当于一个汉字,但你又看不见它. 你知道的,像逗号,有半角(,)和全角(,)之分的,其实空格也有. 0x3000是全角 ...

  3. background-size做自适应的背景图

    background-size做自适应的背景图 在我们做页面布局的时候往往会遇到这样的情况当我固定一个元素的尺寸,在像元素加入背景的时候发现背景图片的原始尺寸很大,当我把背景图写入时往往超过元素很大一 ...

  4. Centos 下安装Zabbix Linux 客户端

    今天在linux上安装了客户端,过程如下: (1)下载zabbix客户端软件 wget www.zabbix.com/downloads/2.0.3/zabbix_agents_2.0.3.linux ...

  5. PHP 苹果消息推送

    /* * 苹果消息推送方法 * $deviceToken 苹果设备token * $message 消息内容 */ function iosmsg_send($deviceToken,$message ...

  6. Python基础(十三)-进程&线程

    进程 定义:进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的基本单位 线程

  7. Request.UrlReferrer为空的问题

    Request.UrlReferrer为空的问题   今天在开发时遇到了一个问题,在用Request.UrlReferrer获取上一页面的地址时发现该对象为空(IE下,FF下可以得到对象),于是上网搜 ...

  8. tableView区头不显示

    不知道什么原因 如果设置tableView的样式为Group 则必须写代理 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; co ...

  9. 最近遇到的两个IE下的问题(IE兼容问题)

    最近遇到了两个IE下的兼容问题(产品目前还需要兼容IE8,所以没办法,运行效果虽然不好,但是也仍然兼容着吧) 问题描述: 1, 在更改IE窗口的时候,反应非常慢,甚至卡死 2, 在chrome运行正常 ...

  10. 一个初学者的辛酸路程-FTP-9

    前言 今天,我要描述一个FTP的故事 主要内容 嗯,今天主要以阶梯性的形式来做一个FTP项目. 第一步: 我要实现这么一个功能,一个FTP客户端,1个FTP服务端,2端建立连接以后可以进行通讯. 服务 ...