Prhub

#23208 [CI] Partition stage-a-test-cpu into 4 matrix shards

原始 PR 作者 Kangyan-Zhou 合并时间 2026-04-20 13:07 文件变更 2 提交数 1 评论 5 代码增减 +7 / -3

执行摘要

将 CPU 测试套件拆分为 4 个并行分区,解决执行时间接近超时的问题。

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

该PR是典型的CI优化变更,实现简洁且复用现有机制。建议关注LPT分区策略的实际效果,以及后续是否需要对其他测试套件进行类似拆分。

讨论亮点

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

实现拆解

  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 工作流 modified 4.13
.claude/skills/ci-workflow-guide/SKILL.md 文档 modified 1.72

关键源码片段

.github/workflows/pr-test.yml configuration

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

# 在 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 指定期望完成的分片数量

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

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

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论