OpenStack云的数据路径性能工具。
项目描述
VMTP是OpenStack云的数据路径性能测量工具。
功能
您是否需要一种快速、简单且可自动化的方式,从任何OpenStack云中获取VM级别或主机级别的单流吞吐量和延迟数字,并考虑各种Neutron拓扑?或者检查某些OpenStack配置选项、Neutron插件是否按预期执行,或者升级到不同的OpenStack版本是否有数据路径影响?
VMTP是一个小的Python应用程序,它将自动对任何OpenStack部署中的以下East/West流量执行ping连通性、往返时间测量(延迟)和TCP/UDP吞吐量测量
虚拟机到虚拟机同一网络(私有固定IP,流量#1)
虚拟机到虚拟机不同网络使用固定IP(与内部租户L3固定IP相同,流量#2)
虚拟机到虚拟机不同网络使用浮动IP和NAT(与跨租户L3浮动IP相同,流量#3)
可选,当有外部Linux主机用于测试南北流量时
外部主机/虚拟机下载和上传吞吐量/延迟(L3/浮动IP,流量#4和#5)
可选,当可用SSH登录任何Linux主机(原生或虚拟)时
主机到主机的进程级吞吐量/延迟(节点内和节点间)
可选,VMTP可以在吞吐量测试期间自动从云中的所有原生主机中提取CPU使用率,前提是这些主机上已安装并启用了Ganglia监控服务(gmond)。
对于与虚拟机相关的流量,VMTP将使用公开的OpenStack API自动创建必要的OpenStack资源(路由器、网络、子网、密钥对、安全组、测试虚拟机),然后安装测试工具并编排它们以收集吞吐量测量结果,然后在退出前清理所有相关资源。
请参阅使用页面以获取VMTP支持的命令行参数的说明。
在线文档
VMTP的完整文档,包括安装和用法指南,可在http://vmtp.readthedocs.io/en/latest找到
先决条件
VMTP运行在任何Python 2.X环境中(已在Linux和MacOSX上验证)。
对于原生/外部主机吞吐量
必须在目标主机上安装公钥(请参阅以下无密码SSH访问)
对于现有的原生主机吞吐量
必须配置防火墙以允许TCP/UDP端口5001和TCP端口5002
示例结果输出
VMTP将以下数据显示到stdout
Summary of results
==================
Total Scenarios: 22
Passed Scenarios: 17 [100.00%]
Failed Scenarios: 0 [0.00%]
Skipped Scenarios: 5
+----------+--------------------------------------------------+-------------------+----------------------------------------------------------------------------------+
| Scenario | Scenario Name | Functional Status | Data |
+----------+--------------------------------------------------+-------------------+----------------------------------------------------------------------------------+
| 1.1 | Same Network, Fixed IP, Intra-node, TCP | PASSED | {'tp_kbps': '19262752', 'rtt_ms': '0.38'} |
| 1.2 | Same Network, Fixed IP, Intra-node, UDP | PASSED | {128: {'tp_kbps': 243360, 'loss_rate': 0.0}, 1024: {'tp_kbps': 1790414, |
| | | | 'loss_rate': 0.0}, 8192: {'tp_kbps': 9599648, 'loss_rate': 0.0}} |
| 1.3 | Same Network, Fixed IP, Intra-node, ICMP | PASSED | {'rtt_avg_ms': '0.385', 'rtt_min_ms': '0.237', 'rtt_max_ms': '0.688', |
| | | | 'rtt_stddev': '0.156'} |
| 2.1 | Same Network, Fixed IP, Inter-node, TCP | PASSED | {'tp_kbps': '5987943', 'rtt_ms': '0.49'} |
| 2.2 | Same Network, Fixed IP, Inter-node, UDP | PASSED | {128: {'tp_kbps': 240518, 'loss_rate': 0.0}, 1024: {'tp_kbps': 1804851, |
| | | | 'loss_rate': 0.0}, 8192: {'tp_kbps': 3074557, 'loss_rate': 0.04}} |
| 2.3 | Same Network, Fixed IP, Inter-node, ICMP | PASSED | {'rtt_avg_ms': '0.601', 'rtt_min_ms': '0.507', 'rtt_max_ms': '0.846', |
| | | | 'rtt_stddev': '0.126'} |
| 3.1 | Different Network, Fixed IP, Intra-node, TCP | PASSED | {'tp_kbps': '7308597', 'rtt_ms': '0.68'} |
| 3.2 | Different Network, Fixed IP, Intra-node, UDP | PASSED | {128: {'tp_kbps': 194764, 'loss_rate': 4.88}, 1024: {'tp_kbps': 1587951, |
| | | | 'loss_rate': 3.39}, 8192: {'tp_kbps': 2666969, 'loss_rate': 0.0}} |
| 3.3 | Different Network, Fixed IP, Intra-node, ICMP | PASSED | {'rtt_avg_ms': '0.689', 'rtt_min_ms': '0.638', 'rtt_max_ms': '0.761', |
| | | | 'rtt_stddev': '0.053'} |
| 4.1 | Different Network, Fixed IP, Inter-node, TCP | PASSED | {'tp_kbps': '8487326', 'rtt_ms': '0.713333'} |
| 4.2 | Different Network, Fixed IP, Inter-node, UDP | PASSED | {128: {'tp_kbps': 200641, 'loss_rate': 0.0}, 1024: {'tp_kbps': 1198920, |
| | | | 'loss_rate': 30.54}, 8192: {'tp_kbps': 2657355, 'loss_rate': 0.0}} |
| 4.3 | Different Network, Fixed IP, Inter-node, ICMP | PASSED | {'rtt_avg_ms': '0.710', 'rtt_min_ms': '0.674', 'rtt_max_ms': '0.729', |
| | | | 'rtt_stddev': '0.025'} |
| 5.1 | Different Network, Floating IP, Intra-node, TCP | PASSED | {'tp_kbps': '7462958', 'rtt_ms': '0.676667'} |
| 5.2 | Different Network, Floating IP, Intra-node, UDP | PASSED | {128: {'tp_kbps': 188808, 'loss_rate': 2.34}, 1024: {'tp_kbps': 1513660, |
| | | | 'loss_rate': 0.0}, 8192: {'tp_kbps': 2586232, 'loss_rate': 0.0}} |
| 5.3 | Different Network, Floating IP, Intra-node, ICMP | PASSED | {'rtt_avg_ms': '0.592', 'rtt_min_ms': '0.477', 'rtt_max_ms': '0.663', |
| | | | 'rtt_stddev': '0.065'} |
| 6.1 | Different Network, Floating IP, Inter-node, TCP | PASSED | {'tp_kbps': '8486828', 'rtt_ms': '0.663333'} |
| 6.2 | Different Network, Floating IP, Inter-node, UDP | PASSED | {128: {'tp_kbps': 190434, 'loss_rate': 0.12}, 1024: {'tp_kbps': 1518300, |
| | | | 'loss_rate': 0.0}, 8192: {'tp_kbps': 2569370, 'loss_rate': 0.0}} |
| 6.3 | Different Network, Floating IP, Inter-node, ICMP | PASSED | {'rtt_avg_ms': '0.674', 'rtt_min_ms': '0.657', 'rtt_max_ms': '0.702', |
| | | | 'rtt_stddev': '0.015'} |
| 7.1 | Native Throughput, TCP | SKIPPED | {} |
| 7.2 | Native Throughput, UDP | SKIPPED | {} |
| 7.3 | Native Throughput, ICMP | SKIPPED | {} |
| 8.1 | VM to Host Uploading | SKIPPED | {} |
| 8.2 | VM to Host Downloading | SKIPPED | {} |
+----------+--------------------------------------------------+-------------------+----------------------------------------------------------------------------------+
详细结果也可以使用–json命令行参数存储在JSON格式的文件中,或者直接存储到MongoDB服务器中。请参阅example.json以获取VMTP生成的示例JSON文件。
包装的python工具genchart.py可以用于从JSON结果文件生成HTML格式的列图表,任何浏览器都可以查看。
genchart.py生成的列图表示例
限制和注意事项
VMTP仅在套接字/TCP/UDP级别测量单个流量的性能(在虚拟机或原生中)。因此,测量的数字反映了大多数应用程序将看到的内容。
它不是用于从虚拟机内部测量驱动程序级别数据路径性能的(例如绕过内核TCP堆栈并直接写入virtio),有更好的工具可以处理此类测量。
VMTP附带预先构建的二进制文件,可以在大多数x86_64 Linux虚拟机上运行(这是计算节点的绝大多数) - 请参阅许可证。在具有不同CPU架构的计算节点上运行VMTP需要为正确目标重新构建这些二进制文件。
许可证
VMTP根据Apache License 2.0许可,并附带以下Linux x86_64二进制文件以方便使用
iperf 2.0.5:BSD许可证(https://iperf.fr/license.html,从源代码构建:https://sourceforge.net/projects/iperf/files/iperf-2.0.5.tar.gz/download)
nuttcp:GPL v2许可证(http://nuttcp.net/nuttcp/beta/LICENSE,从源代码构建:http://nuttcp.net/nuttcp/beta/nuttcp-7.3.2.c)
nuttcp 和 iperf 的重新分发受各自许可证的约束。请在进一步分发 VMTP 之前确保您已阅读并理解每个许可证。
iperf 二进制分发所需的法律附件
iperf 2.0.5:从源代码构建:https://sourceforge.net/projects/iperf/files/iperf-2.0.5.tar.gz/download
(根据 iperf 许可证要求从 COPYING 文件中提取,完整的 LICENSE 文件在 legal/iperf 下提供) 版权所有 (c) 1999-2007,伊利诺伊大学董事会。保留所有权利。
Iperf 性能测试:Mark Gates Ajay Tirumala Jim Ferguson Jon Dugan Feng Qin Kevin Gibbs John Estabrook 应用网络研究国家实验室 国家高性能计算应用中心 伊利诺伊大学香槟分校 http://www.ncsa.uiuc.edu
特此授予任何获得本软件(iperf)及其相关文档文件(“软件”)副本的任何人免费权利,以无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许获得软件的个人这样做,但须遵守以下条件
源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。
二进制形式的重新分发必须在文档和/或其他与分发一起提供的材料中复制上述版权声明、本条件列表和以下免责声明。
未经伊利诺伊大学、NCSA 或其贡献者事先书面许可,不得使用其名称来批准或推广源自本软件的产品。本软件按“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和不侵犯专利权。在任何情况下,贡献者或版权所有者不对任何索赔、损害或其他责任负责,无论是在合同行为、侵权行为或其他行为中,这些索赔、损害或其他责任源自、产生于或与软件或软件的使用或其他交易有关。
nuttcp 二进制分发所需的法律附件
nuttcp 7.3.2c:GPL v2 许可证 (http://nuttcp.net/nuttcp/beta/LICENSE,从未经修改的源代码构建:http://nuttcp.net/nuttcp/beta/nuttcp-7.3.2.c) 根据nuttcp许可证要求,在此存储库中提供LICENSE文件和源代码(未经修改)的副本(在 legal/nuttcp 下)。
与二进制附件相关的感兴趣内容的摘录
1. 您可以复制和分发程序源代码的准确副本,只要您在每份副本上明确且适当地发布适当的版权声明和免责声明;保持所有提及本许可证和不存在任何保证的通知完整;并给程序的其他接收者提供本许可证和程序的副本。
(由于代码未修改,该条款不适用)
3. 您可以在符合上述第1条和第2条条款的情况下,以对象代码或可执行形式复制和分发程序(或根据第2节创建的工作)提供以下之一
a) 伴随完整的对应机器可读源代码,这些代码必须按照上述第1条和第2条条款在中通常用于软件交换的媒介上分发;或者,
链接
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
vmtp-2.5.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 357138b4aabd5b024229c3dbb290c3ffad7bd17d599d26f5af808f0f62e5e7d8 |
|
MD5 | 9038fde5d45bddc4847ea34b87088c8f |
|
BLAKE2b-256 | ab11fd43bafff8727660d7225080d4504c9697e8688c36bcca441abafd98aa13 |
vmtp-2.5.0-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 137610a9fdc0bde86cfe46768c7fcbdd2c9fa0682a550207e2a6a0c60df5dc3e |
|
MD5 | 0db0b5be9f8f2c01450b6f9da5346fe6 |
|
BLAKE2b-256 | c84879635edad1c7a9e237e397d5aca48331926e5332d1531cacafe04899eb6f |