Rally Gate Check

https://blueprints.launchpad.net/ceilometer/+spec/rally-gate-check

Rally 提供了对它称之为 rally-gate 任务的支持。这些任务可以自动执行一组非投票权的自定义基准测试场景,从而有效地观察更改对性能的影响。Ceilometer 的整体性能是多个系统复杂交互的结果,自动化这些系统的基准测试将节省时间并提供有用的信息。

问题描述

目前,还没有可用的 Ceilometer 性能自动化基准测试。开发人员和部署人员都希望了解代码更改是会提高还是损害性能。

提议的变更

将创建一个非投票权的 gate check 任务,针对每个 Ceilometer patchset 运行一组基准测试场景。该任务通过多个更改进行控制

  • Ceilometer 代码树中的一个 rally-scenarios 目录,其中包含一个描述 Rally 任务中要使用的 Rally 场景的 ceilometer.yaml 文件。

  • projects.yaml 的添加,将 rally-jobs 添加到 jobs 列表中。

  • zuul layout 的更新,将 gate-rally-dsvm-fake-ceilometer 添加到 openstack/ceilometer 部分的 check 列表中。

Rally 包含一套预构建的场景,可以针对 Ceilometer 运行。目前,这些场景主要通过 API 与 Ceilometer 交互。这不是一个要求。场景可以根据需要执行尽可能多或尽可能少的操作,并可以作为插件添加到 rally-scenarios 目录中。只要代码被 Rally 代码正确装饰,就可以测量这些场景。

最初,此更改将实现执行基准测试的基本结构,使用简单的 API 测试来完善和确认设置。

确认后,将创建额外的场景来测量

  • 轮询和通知代理中的延迟(将样本导入管道)。

  • 摄取延迟(将样本导入数据存储)。

后一种测量需要更复杂的场景代码,该代码负责创建和销毁虚拟机、卷和其他资源。

如果场景代码有效,则应从插件迁移到 Rally 代码库,以允许通用使用。

替代方案

替代方案包括

  • Rally 团队正在自动化性能检查,以收集历史性能数据与项目共享。这与此处提出的更改的目的类似但不相同:它可以帮助评估 Ceilometer 的整体改进,但不能评估特定的更改。

  • 将 Rally 任务用作实验性任务,仅当在 gerrit 中留下“check experimental”评论时才运行。

  • 一旦此初始规范得到实施,并且在 ceilometer 环境中验证了所涉及的原则,那么通过 Rally 实施所谓的“SLA 检查”可能是有价值的。这些检查允许一个检查任务,如果性能严重下降,可以失败。现在不这样做,是为了首先获得 Rally 的经验,并以可操作的块 compartmentalize 工作。

数据模型影响

无。

REST API 影响

无。

安全影响

无。

Pipeline 影响

无。

其他最终用户影响

一些最终用户可能能够使用基准测试信息来决定如何配置其安装。然而,他们不太可能希望从 gerrit 审查此数据。

性能/可扩展性影响

这些测试将提供一个安全网,以防止性能下降,并提供数据以识别导致问题变化的更改(如果出现性能下降)。

其他部署影响

无。

开发者影响

随着功能的添加,Rally 场景可能不足以需要更新。理想情况下,场景应该足够高级,以至于这种情况很少发生。如果发生这种情况,功能开发人员将负责更新 Rally 场景,并根据需要添加 Rally 插件。

实现

负责人

主要负责人

chdent

其他贡献者

boris-42, rediskin, sileht

持续维护者

chdent

工作项

除了上述“Proposed Solution”部分中列出的步骤之外,主要工作在于选择和/或创建必要的 Rally 任务。Rally 本身包含许多示例场景和运行器,并且在其自己的树中包含一个 gate check,其中包含几个 Ceilometer 检查,这些检查可以用作起点。

未来生命周期

如“Developer Impact”中所述,新功能可能需要新场景。

依赖项

  • Rally。

测试

该提案添加了一个新的(非投票权)gate 任务,它将充当其自身的测试。

文档影响

无。

参考资料