# PR #36775 完整报告

- 仓库：`sgl-project/sglang`
- 标题：CI: split JIT kernel unit tests into two partitions
- 合并时间：2026-08-29 00:32
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/36775

---

# 执行摘要

- 一句话：拆分 JIT 内核单元测试为两个分区
- 推荐动作：该 PR 是 CI 基础设施的稳健性改进，值得快速合入。对阅读者而言，值得关注 `run_suite.py` 的自动分区机制（LPT 算法），作为后续类似 CI 优化的参考。若后续仍出现超时，可考虑增加分区数量或优化测试时长估算。

# 功能与动机

JIT 内核单元测试套件在多个 runner 上间歇性达到 30 分钟步骤超时（如 action runs 33076953593 和 33130734311），而成功的运行耗时 27m59s，仅剩约两分钟余量。超时发生在不同主机上，且显示活跃的 JIT 编译。拆分套件旨在对冷 JIT 变异更稳健，同时降低墙钟延迟。

# 实现拆解

1. **定位变更入口**：修改 `.github/workflows/pr-test-jit-kernel.yml` 中的 `jit-kernel-unit-test` 作业。
2. **引入矩阵策略**：为作业添加 `strategy` 块，设置 `fail-fast: false` 和 `matrix.partition: [0, 1]`，使两个分区独立运行并分别报告结果，避免一个分区失败导致另一个分区被取消。
3. **使用自动分区器**：将运行命令更新为 `python3 run_suite.py --hw cuda --suite base-b-kernel-unit-test-1-gpu-large --auto-partition-id ${{ matrix.partition }} --auto-partition-size 2`，利用 `run_suite.py` 的 LPT（最长处理时间）自动分区功能，根据预估运行时间在各分区之间均衡测试负载。
4. **保持超时与配置**：保留每个分区的 30 分钟超时，以及作业整体的 `timeout-minutes: 240` 设置，确保即使在 JIT 编译波动情况下也有足够缓冲。
5. **验证配套**：该 PR 仅涉及 CI 配置变更，无源码或测试逻辑改动，但通过 YAML 解析、`git diff --check` 和 pre-commit 检查验证了配置正确性。

关键文件：
- `.github/workflows/pr-test-jit-kernel.yml`（模块 CI 配置；类别 infra；类型 infrastructure）: 唯一变更文件，通过引入矩阵策略和自动分区器拆分 JIT 内核单元测试，解决 CI 超时问题。

关键符号：未识别

## 关键源码片段

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

唯一变更文件，通过引入矩阵策略和自动分区器拆分 JIT 内核单元测试，解决 CI 超时问题。

```yaml
# .github/workflows/pr-test-jit-kernel.yml ( 节选 )

jit-kernel-unit-test:
  # ... 前略 ...
  strategy:
    fail-fast: false              # 一个分区失败不取消另一分区，确保两边结果都上报
    matrix:
      partition: [0, 1]           # 两个独立分区，分别跑不同测试子集
  runs-on: 1-gpu-h100
  timeout-minutes: 240
  steps:
    # ... 安装步骤略 ...
    - name: Run unit tests
      timeout-minutes: 30         # 每个分区独立 30 分钟超时，降低冷 JIT 带来的超时风险
      run: |
        cd test/
        # 使用 run_suite.py 的 LPT 自动分区器，按预估运行时间将测试均衡到两个分区
        python3 run_suite.py --hw cuda \
          --suite base-b-kernel-unit-test-1-gpu-large \
          --auto-partition-id ${{ matrix.partition }} \
          --auto-partition-size 2

```

# 评论区精华

无 review 评论或讨论。该 PR 由 Codex 生成，只有维护者 Kangyan-Zhou 在合并前触发了 '/tag-and-rerun-ci' 重新运行 CI，未发现技术争议。

- 暂无高价值评论线程

# 风险与影响

- 风险：
 1. **分区均衡风险**：自动分区器依赖注册的预估运行时间，若测试时长估算不准，可能导致分区不均衡，一个分区仍可能超时。
 2. **fail-fast 禁用影响**：禁用 fail-fast 会提高资源消耗（两个分区即使一个失败也会跑完），但能提供更完整的测试结果。
 3. **配置错误风险**：修改了命令和矩阵，若 YAML 语法错误或参数不兼容 `run_suite.py`，会导致 CI 作业无法启动。不过已通过本地检查验证。
 - 影响：用户无直接体验影响。对内部 CI 系统：JIT 内核测试作业的稳定性提升，避免因超时导致假失败，排障效率提高；两个分区并行执行，缩短了测试阶段的总墙钟时间，加快 PR 合并流程。对团队：维护者无需频繁重跑 CI。
 - 风险标记：配置变更 , 依赖自动分区估算

# 关联脉络

- 暂无明显关联 PR