跳转到主要内容

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)

images/flows.png

可选,当可用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生成的列图表示例

images/genchart-sample.png

限制和注意事项

VMTP仅在套接字/TCP/UDP级别测量单个流量的性能(在虚拟机或原生中)。因此,测量的数字反映了大多数应用程序将看到的内容。

它不是用于从虚拟机内部测量驱动程序级别数据路径性能的(例如绕过内核TCP堆栈并直接写入virtio),有更好的工具可以处理此类测量。

VMTP附带预先构建的二进制文件,可以在大多数x86_64 Linux虚拟机上运行(这是计算节点的绝大多数) - 请参阅许可证。在具有不同CPU架构的计算节点上运行VMTP需要为正确目标重新构建这些二进制文件。

许可证

VMTP根据Apache License 2.0许可,并附带以下Linux x86_64二进制文件以方便使用

nuttcp 和 iperf 的重新分发受各自许可证的约束。请在进一步分发 VMTP 之前确保您已阅读并理解每个许可证。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

vmtp-2.5.0.tar.gz (516.8 kB 查看哈希值)

上传时间 源代码

构建分发

vmtp-2.5.0-py2.py3-none-any.whl (188.1 kB 查看哈希值)

上传时间 Python 2 Python 3

支持