LINUX教学:性能测试之OVN vs (ML2+OVS)
《LINUX教学:性能测试之OVN vs (ML2+OVS)》要点: 我们已经对OVN做了许多次的性能测试,但是缺少一个OVN和(ML2+OVS)的性能对比测试.我和许多人一起对比了这2种后端.本文是第一部分:控制平面的性能对比. 后面会另外发文颁布数据平面的性能对比结果. 控制平面的分歧之处ML2+OVS 控制平面是基于Openstack 的.首先有大量由Python编写的agents . Neutron server与这些agents交互式使用基于AMQP的RPC机制(本文的案例用到了最广泛使用的RabbitMQ). OVN 的控制平面使用了分布式数据库驱动的方式. 配置和状态由这2个数据库管理: OVN northbound 和 southbound databases.这2个数据库都基于OVSDB.与通过RPC接收更新的方式不同,OVN中的组件监控数据库中相关表项的变化并将最新的表项应用于当地.这些组件的详细信息可以阅读the first release of OVN 和 ovn-architecture document . OVN 没有使用任何的Neutron agents.相反,所有功能都由ovn-controller 和 OVS 流实现.好比security groups,DHCP,L3 routing和 NAT功能等. 测试环境使用的硬件和软件本次测试使用了实验室的13台机器,并分派下面的这几种角色:
硬件规格如下:
软件:
配置和测试性能测试工具为 OpenStack Rally . 我们使用 Browbeat 进行快速的安装、配置、运行测试、存储阐发和结果对比. Browbeat 中的Rally参数为: rerun: 3 上述配置定义了几种运行场景.在3个分歧的并行级别下,分别运行500次.最后,开头的"rerun: 3"意味着我们要将整个配置再运行3遍.是不是被绕晕啦,那我们拿个例子看一下 : "netcreate-boot" 场景是创立一个网络,并在这个网络上启动一个虚拟机.这个场景会按下面这样多次执行:
总共会创立4500 个虚拟机. 测试成果Browbeat 能够存储 rally 生成的测试成果.这些测试成果可以用elastic 进行查询,用Kibana显示在网页上. 接下来的几个表格分离展示 average times,95th percentile,Maximum,和 minimum times 下的 API执行性能 译者注:百分比响应光阴是比平均响应光阴更好的性能指标. 因为在数理统计学上,早就有数学家用理论证明平均值是一个非常弗成信的数据. 好比稍微几个远离置信区间的数值就可以严重影响到平均值 译者注:average是指并行度为8、16、32的场景下完成测试所需光阴的平均值
译者注:95%指4500个测试成果按从小到大排列,选择第4275个的数据(4500*0.95=4275)
译者注:Maximum是指并行度为32的场景下完成测试所需光阴
译者注:Minimum是指并行度为8的场景下完成测试所需光阴 分析从上述表格中可以看到OVN对性能提升最猛的便是"nova.boot_server".这是测试不只是衡量从Neutron加载配置所花时间,同时也衡量了提供网络功能所花的时间.(译者注:这个"server"其实便是虚拟机) 当Nova 启动一个虚拟机时,得先等待Neutron发出的端口可用变乱.收到这个变乱后,虚拟机才会被启动,启动完成时变为ACTIVE状态.ML2+OVS 和OVN 都使用这个机制.我们的测试场景测量了虚拟机变为ACTIVE状态所花时间. 在未来的测试中,我们将把这个Nova和Neutron间的同步机制关闭,再来比较ML2+OVS 和OVN的测试结果.这将确认等待Neutron申报端口可用的过程中花费了额外的时间. 我要说明一点,你不应该关闭这个同步机制.关闭这个机制的唯一原因为:不是所有的Neutron后端都支持该同步机制(ML2+OVS and OVN都支持这个同步机制 ).实施同步机制后,就能避免出现竞争状态.同时也保证在启动虚拟机之前,网络便是可用的.这个问题便是花费多长时间能让Neutron提供可用的网络. 未来将分析Neutron (ML2+OVS)在提供网络功能的过程中,到底在哪里花费了大部分的时间. 本文永远更新链接地址: 学习更多LINUX教程,请查看站内专栏,如果有LINUX疑问,可以加QQ交流《LINUX教学:性能测试之OVN vs (ML2+OVS)》。 (编辑:岳阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- LINUX教程:Linux探索之旅 | 第四部分第四课:分
- linux – 套接字选项SO_SNDLOWAT的目的是什么
- 如何在Linux上从PHP创建与WinZip兼容的AES-256加
- linux – 如何转义.gitconfig代理身份验证中的特
- 确定两个文件路径是否指向Linux/C下的同一文件?
- Sed - An Introduction and Tutorial by Bruce B
- 模拟linux网络接口上的传入数据包
- linux – 如何从yum-cron中排除软件包,而不是从手
- linux – 为什么不可能完全静态链接应用程序?
- LINUX实操:Linux文件查找命令(locate/find)