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 任务,它将充当其自身的测试。
文档影响¶
无。
参考资料¶
一个现有的相关 patchset: https://review.openstack.org/#/c/132649/