# PR #23208 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[CI] Partition stage-a-test-cpu into 4 matrix shards
- 合并时间：2026-04-20 13:07
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/23208

---

# 执行摘要

- 一句话：将 CPU 测试套件拆分为 4 个并行分区，解决执行时间接近超时的问题。
- 推荐动作：该 PR 是典型的 CI 优化变更，实现简洁且复用现有机制。建议关注 LPT 分区策略的实际效果，以及后续是否需要对其他测试套件进行类似拆分。

# 功能与动机

PR body 明确指出：测试套件已增长到约 1219 秒的预估测试时间，涵盖 115 个注册测试；单任务运行接近 10 分钟的步骤超时限制。需要通过分区来缓解时间压力。

# 实现拆解

1. **修改 CI 工作流配置**：在 `.github/workflows/pr-test.yml` 中，为 `stage-a-test-cpu` 作业添加 `strategy.matrix.partition: [0, 1, 2, 3]`，并在 `run_suite.py` 调用中传递 `--auto-partition-id ${{ matrix.partition }} --auto-partition-size 4` 参数，实现 4 个并行分区的自动划分。
2. **更新等待作业配置**：在同一文件中，将 `wait-for-stage-a.jobs` 中的 `stage-a-test-cpu` 条目从字符串改为 `{"prefix": "stage-a-test-cpu", "expected_count": 4}`，确保等待逻辑能轮询所有 4 个分片。
3. **同步更新文档**：在 `.claude/skills/ci-workflow-guide/SKILL.md` 中，将 `stage-a-test-cpu` 的分区数从 1 更新为 4，保持文档与实际配置一致。

关键文件：
- `.github/workflows/pr-test.yml`（模块 CI 工作流；类别 infra；类型 configuration）: 核心变更文件，定义了 CI 工作流的分区配置和等待逻辑。
- `.claude/skills/ci-workflow-guide/SKILL.md`（模块 文档；类别 docs；类型 documentation）: 配套文档更新，保持 CI 工作流指南与实际配置同步。

关键符号：未识别

## 关键源码片段

### `.github/workflows/pr-test.yml`

核心变更文件，定义了 CI 工作流的分区配置和等待逻辑。

```yaml
# 在 stage-a-test-cpu 作业定义中添加矩阵分区
stage-a-test-cpu:
  runs-on: ubuntu-latest
  timeout-minutes: 240
  strategy:
    fail-fast: false
    matrix:
      partition: [0, 1, 2, 3]  # 将作业拆分为 4 个并行分区
  steps:
    - name: Run test suite
      run: |
        cd test/
        # 通过 --auto-partition-id 和 --auto-partition-size 参数实现自动分区
        python3 run_suite.py --hw cpu --suite stage-a-test-cpu \
          --auto-partition-id ${{ matrix.partition }} \
          --auto-partition-size 4 \
          $CONTINUE_ON_ERROR_FLAG

# 更新等待作业配置，确保能轮询所有 4 个分片
wait-for-stage-a:
  jobs: '["stage-a-test-1-gpu-small", {"prefix": "stage-a-test-cpu", "expected_count": 4}]'
  # 注意：prefix 匹配作业名前缀，expected_count 指定期望完成的分片数量

```

# 评论区精华

本次 PR 没有 review 评论，从提交历史和 PR body 看，作者直接实施了变更并提供了测试运行链接作为验证。

- 暂无高价值评论线程

# 风险与影响

- 风险：
 1. **分区负载不均衡风险**：虽然使用 LPT 自动分区机制，但若测试时间预估不准确，可能导致某些分区仍超时。
 2. **等待逻辑错误风险**：`wait-for-stage-a.jobs` 配置更新后，若 `expected_count` 与实际分区数不匹配，可能导致等待提前结束或无限等待。
 3. **环境依赖风险**：分区后每个作业独立运行，若测试间有隐式依赖或共享状态，可能引入竞态条件。
- 影响：
 1. **对 CI 系统的影响**：显著缩短 stage-a-test-cpu 套件的整体执行时间，降低超时风险，提升 CI 流水线的可靠性。
 2. **对开发团队的影响**：减少因测试超时导致的 CI 失败，加快 PR 验证周期。
 3. **对系统的影响**：纯基础设施变更，不影响运行时功能或性能。
 - 风险标记：分区负载不均衡 , 等待逻辑配置风险

# 关联脉络

- PR #23130 [AMD]Fix AMD multimodal-gen-test-2-gpu timeout by adding partition for standalone test: 类似的分区优化，通过增加分区解决测试超时问题。
- PR #23120 ci: run weekly est_time update on Monday using p90 of last 15 runs: 涉及 CI 测试时间估算优化，与本 PR 关注的测试执行时间管理相关。
- PR #23201 fix(ci): repair path filters regressed by #21482: 同属 CI 基础设施修复和优化范畴。