# PR #22274 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[AMD] CI Job Monitor: fix queue time, utilization, and summary metrics
- 合并时间：2026-04-17 13:03
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/22274

---

# 执行摘要

- 一句话：修复 CI 任务监控脚本中的队列时间、利用率和摘要指标计算错误。
- 推荐动作：对于负责 CI 基础设施或监控的工程师，值得精读以了解如何正确处理 GitHub Actions API 数据并优化监控脚本；重点关注使用 runner_name 作为状态区分器的设计决策和参数化时间窗口的可配置性改进。

# 功能与动机

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

# 实现拆解

1. **修复队列时间计算**：在 `scripts/ci/utils/query_job_status.py` 中，修改 `_queue_time_seconds` 和 `calculate_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”列，并计数 `neutral` 和 `stale` 结论，解决 Total ≠ sum of columns 的错误。
4. **性能优化**：预编译 runner 标签正则表达式 `_RUNNER_LABEL_ALT_RE`，避免在排序操作中重复编译，提升脚本效率。
5. **配套调整**：在 `fetch_all_jobs_snapshot` 函数中添加无标签任务的排除跟踪，确保数据收集完整性。

关键文件：
- `scripts/ci/utils/query_job_status.py`（模块 CI 脚本；类别 infra；类型 infrastructure；符号 _runner_label_sort_key, _queue_time_seconds, analyze_busy_periods, analyze_queue_distribution）: 唯一变更文件，包含所有修复逻辑，涉及队列时间计算、利用率快照和摘要指标的核心函数。

关键符号：_runner_label_sort_key, _queue_time_seconds, analyze_busy_periods, analyze_queue_distribution, analyze_utilization_snapshots, _count_at_time


# 评论区精华

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

- 预编译正则表达式优化性能 (performance): 作者采纳，在模块级别添加了预编译的 `_RUNNER_LABEL_ALT_RE` 正则表达式。
- 参数化利用率快照窗口提升可配置性 (design): 作者修改函数签名，添加 `hours` 参数，确保利用率快照尊重用户输入。

# 风险与影响

- 风险：风险较低，主要影响 CI 监控脚本的数据准确性，不涉及核心业务逻辑或生产代码。如果计算错误持续，可能导致团队基于不准确队列时间和利用率数据的决策偏差，但无安全、性能回归或兼容性问题。脚本变更仅限于 AMD CI 监控流程，影响范围可控。
- 影响：对 CI 监控系统有直接改进，提升队列时间、利用率和摘要指标的报告准确性，帮助团队更好地理解 CI 资源使用情况和瓶颈。影响范围仅限于使用该监控脚本的 AMD CI 流程，对用户和系统其他部分无影响。
- 风险标记：监控数据准确性

# 关联脉络

- PR #22948 [AMD] Qwen3.5 MXFP4 breaks after shared expert fusion is enabled: 同为 AMD 相关的 bugfix PR，涉及特定硬件环境的修复，但领域不同（模型 vs CI 监控）。