[Paper] PPTAM$η$: 能源感知 CI/CD 流水线用于基于容器的应用
Source: arXiv - 2602.12081v1
概述
本文介绍了 PPTAM η,一种自动化的 CI/CD 扩展,它将在容器化微服务的标准 GitLab 流水线中注入功率和能耗测量。通过在每次提交时可视化能耗,作者展示了开发者如何开始将能耗视为与延迟和吞吐量并列的一等质量指标。
关键贡献
- 能源感知 CI/CD 流水线 – 一个 GitLab CI 插件,能够在每次构建时自动触发负载生成、容器监控以及硬件功率探针读取。
- 端到端测量框架 – 将软件指标(CPU、内存、网络)与来自插件功率计的硬件层面功率数据相结合,确保在不同提交之间得到可比的数值。
- 版本级比较 – 将每次提交的能耗和性能结果存储在可搜索的制品仓库中,使测试工程师能够即时发现回归。
- 趋势分析工具 – 可视化仪表盘绘制能耗随时间的变化,帮助研究人员研究代码异味、重构或设计模式对功耗的影响。
- 实证验证 – 对一个受 JWT 保护的 API 在四个连续提交上的案例研究,展示即使是小的代码改动也能导致能耗以可测量的百分比变化。
方法论
-
Pipeline Integration – 作者在 GitLab CI 的 YAML 文件中加入了三个新阶段:
- Load Generation – 使用轻量级流量生成器(例如
hey或wrk)对 API 发起固定的请求模式。 - Container Monitoring – 通过 Docker stats 和 Prometheus 抓取每个容器的 CPU、内存和网络计数器。
- Power Measurement – 使用 USB‑C 电源探针(例如
WattsUp?或类似设备)记录主机的实时功耗。
- Load Generation – 使用轻量级流量生成器(例如
-
Synchronization – 所有三路数据流均带时间戳并存入 SQLite/InfluxDB 时序数据库,确保能耗数据与具体负载阶段精准对应。
-
Automation & Reporting – 每次流水线运行结束后,Python 后处理程序会将原始数据聚合为每次提交的摘要(平均功率、总能量(焦耳)、延迟分位数等),并将 JSON 产物推送至 GitLab 的包注册表。
-
Validation – 作者在一个受 JWT 令牌保护的简易 Flask API 上运行该流水线,提交了四次增量改动(例如添加日志语句、重构请求处理器)。随后比较得到的能耗和性能数据,以验证可重复性。
结果与发现
| 提交 | 平均功率 (W) | 总能量 (J) | 95% 延迟 (ms) |
|---|---|---|---|
| v1.0 | 12.3 | 7380 | 112 |
| v1.1 | 12.1 | 7260 | 108 |
| v1.2 | 13.0 | 7800 | 119 (回退) |
| v1.3 | 11.8 | 7080 | 105 (改进) |
- 能量敏感性 – 单个额外的
print语句(v1.2)使平均功率提升约 7 %,总能量提升约 6 %,而延迟仅略有增长。 - 与性能的相关性 – 大多数能量变化与延迟变化相吻合,但某些优化(例如缓存)在不显著影响延迟的情况下降低了能耗,凸显了隐藏的节省。
- 可重复性 – 对同一提交运行三次产生的方差小于 2 %,证实测量设置足够稳定,可用于 CI 使用。
实际影响
- 开发者反馈循环 – 团队现在可以在合并请求上看到“能耗徽章”,防止在进入生产环境前出现意外回归。
- 成本感知的扩展 – 运维团队可以利用每次提交的能耗数据来预测 Kubernetes 集群的电力预算,从而可能降低云服务提供商的电费。
- 绿色设计工具 – 该流水线可以与静态分析工具结合,标记已知的高能耗模式,指导重构决策。
- SaaS API 基准测试 – 提供公共 API 的公司可以公布每个端点的能耗足迹,以在日益关注可持续性的市场中脱颖而出。
限制与未来工作
- 硬件依赖 – 精确的功率读数需要在主机上使用专用的功率探针;该方法在完全虚拟化的 CI 运行器或无服务器环境中可移植性较差。
- 范围仅限单主机容器 – 多节点 Kubernetes 集群会产生网络层面的功耗,而当前设置无法捕获这些功耗。
- 工作负载真实性 – 本案例研究使用合成的 HTTP 流量;未来工作应评估真实的生产追踪以及多样的微服务拓扑。
- 基线选择的自动化 – 作者计划加入统计变更检测算法,以在无需手动阈值调优的情况下自动标记显著的能耗回退。
通过将能耗感知直接嵌入 CI/CD 工作流,PPTAM η 为开发者提供了将可持续性视为可衡量、可操作的质量属性的途径——将“绿色编码”从流行词汇转变为具体的工程实践。
作者
- Alessandro Aneggi
- Xiaozhou Li
- Andrea Janes
论文信息
- arXiv ID: 2602.12081v1
- Categories: cs.SE
- Published: 2026年2月12日
- PDF: 下载 PDF