Prhub

#22274 [AMD] CI Job Monitor: fix queue time, utilization, and summary metrics

原始 PR 作者 bingxche 合并时间 2026-04-17 13:03 文件变更 1 提交数 5 评论 7 代码增减 +286 / -91

执行摘要

修复 CI 任务监控脚本中的队列时间、利用率和摘要指标计算错误。

根据PR body,GitHub Actions在任务进入队列时设置started_at,而不是当runner真正开始处理时。对于没有runner的任务,started_at ≈ created_at,导致队列时间计算错误,需要使用runner_name作为判断任务是否被runner拾取的可靠信号以修正监控指标。

对于负责CI基础设施或监控的工程师,值得精读以了解如何正确处理GitHub Actions API数据并优化监控脚本;重点关注使用runner_name作为状态区分器的设计决策和参数化时间窗口的可配置性改进。

讨论亮点

Review中gemini-code-assist[bot]建议预编译runner标签正则表达式以优化性能,并参数化利用率快照窗口以使用CLI参数而非硬编码值。作者采纳了这些建议,在最终提交中实现了_RUNNER_LABEL_ALT_RE和修改analyze_utilization_snapshots函数签名,体现了对代码效率和可配置性的关注。

实现拆解

  1. 修复队列时间计算:在scripts/ci/utils/query_job_status.py中,修改_queue_time_secondscalculate_queue_time函数,使用runner_name区分任务状态——有runner时计算started_at - created_at,无runner且状态为queued/waiting时计算report_time - created_at并标记为“queuing”,其他情况跳过,确保队列时间准确反映实际等待。
  2. 修正利用率快照:更新analyze_utilization_snapshots函数,添加hours参数以尊重CLI的--hours参数,避免硬编码24小时窗口,并修复无runner完成任务的计数逻辑,防止产生虚假队列分钟数。
  3. 完善摘要表格:在摘要报告函数中添加“Skipped”列,并计数neutralstale结论,解决Total ≠ sum of columns的错误。
  4. 性能优化:预编译runner标签正则表达式_RUNNER_LABEL_ALT_RE,避免在排序操作中重复编译,提升脚本效率。
  5. 配套调整:在fetch_all_jobs_snapshot函数中添加无标签任务的排除跟踪,确保数据收集完整性。
文件 模块 状态 重要度
scripts/ci/utils/query_job_status.py CI 脚本 modified 6.94

关键符号

_runner_label_sort_key _queue_time_seconds analyze_busy_periods analyze_queue_distribution analyze_utilization_snapshots _count_at_time

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

预编译正则表达式优化性能 性能

gemini-code-assist[bot] 建议预编译 runner 标签正则表达式,避免在排序操作中重复编译以提升效率。

结论:作者采纳,在模块级别添加了预编译的 `_RUNNER_LABEL_ALT_RE` 正则表达式。 · 已解决

参数化利用率快照窗口提升可配置性 设计

review 反馈指出 `analyze_utilization_snapshots` 函数硬编码 24 小时窗口,应使用 CLI 参数 `--hours` 来匹配用户指定时间范围。

结论:作者修改函数签名,添加 `hours` 参数,确保利用率快照尊重用户输入。 · 已解决

风险与影响

风险较低,主要影响CI监控脚本的数据准确性,不涉及核心业务逻辑或生产代码。如果计算错误持续,可能导致团队基于不准确队列时间和利用率数据的决策偏差,但无安全、性能回归或兼容性问题。脚本变更仅限于AMD CI监控流程,影响范围可控。

对CI监控系统有直接改进,提升队列时间、利用率和摘要指标的报告准确性,帮助团队更好地理解CI资源使用情况和瓶颈。影响范围仅限于使用该监控脚本的AMD CI流程,对用户和系统其他部分无影响。

监控数据准确性

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论