# PR #7152 完整报告

- 仓库：`PaddlePaddle/FastDeploy`
- 标题：[Feature] Support chunk prefill disabled in scheduler v1
- 合并时间：2026-04-03 10:18
- 原文链接：http://prhub.com.cn/PaddlePaddle/FastDeploy/pull/7152

---

# 执行摘要

- 一句话：在调度器 V1 中支持通过环境变量禁用分块预填充功能。
- 推荐动作：该 PR 值得关注，因为它触及了调度器资源分配的核心逻辑。建议精读以理解分块预填充的禁用机制如何集成到现有流程中，并思考其设计意图。重点关注：1. 环境变量驱动的特性开关设计模式；2. 条件检查在分配循环中的位置及其对控制流的影响；3. 与现有分块逻辑的交互。同时，建议补充测试以确保新分支的健壮性。

# 功能与动机

PR 标题和提交信息表明，该变更旨在“支持在调度器 V1 中禁用分块预填充”。PR body 中未提供具体动机描述，但结合代码变更分析，其目的是提供一个开关，允许在特定环境或场景下关闭分块预填充机制，可能用于调试、性能对比或处理某些边界情况。

# 实现拆解

实现方案非常集中，仅修改了 `fastdeploy/engine/sched/resource_manager_v1.py` 文件。在资源管理器的两个核心分配函数 `_allocate_decode_and_extend` 中，分别添加了相同的条件检查逻辑：当环境变量 `FD_DISABLE_CHUNKED_PREFILL` 为真且当前 token 预算（token_budget）小于请求所需的预填充 token 数（request.need_prefill_tokens）时，直接跳出循环，不再进行分块分配。这实质上是在分配流程的早期插入了一个短路条件，阻止了分块处理的执行。

关键文件：
- `fastdeploy/engine/sched/resource_manager_v1.py`（模块 Scheduler）: 这是唯一被修改的文件，包含了调度器 V1 资源管理的核心逻辑。新增的环境变量检查直接插入在资源分配的关键路径中，决定了是否禁用分块预填充功能。

关键符号：_allocate_decode_and_extend


# 评论区精华

Review 讨论非常有限。仅有 Jiang-Jia-Jun 的批准，没有留下任何评论或讨论。这表明变更被认为直接明了，或者已在其他渠道达成共识。缺乏深入讨论意味着设计权衡、潜在副作用或测试覆盖等问题未被公开探讨。

- Review 缺乏深度讨论 (other): 变更被直接接受，但可能意味着潜在问题未被充分审查。

# 风险与影响

- 风险：风险主要集中在对核心调度逻辑的修改上：1. **回归风险**：新增的条件分支可能影响原有分块预填充逻辑的稳定性，特别是在环境变量未设置或设置不当的情况下。2. **性能影响**：禁用分块预填充可能改变请求处理模式，在 token 预算紧张时可能导致请求被延迟或阻塞，需评估对吞吐量和延迟的影响。3. **测试覆盖不足**：Codecov 报告显示补丁覆盖率仅为 33.33%，有 4 行代码缺少测试覆盖，这增加了未检测到边界情况 bug 的可能性。4. **配置复杂性**：引入新的环境变量增加了系统配置的复杂度，需确保文档和运维指南同步更新。
- 影响：影响范围有限但关键：1. **对用户**：为运维人员或开发者提供了一个调优旋钮，可在特定场景下禁用分块预填充，但需谨慎使用以避免性能下降。2. **对系统**：修改了调度器 V1 资源分配的核心路径，直接影响请求的调度行为，特别是在高负载或资源受限环境下。3. **对团队**：变更涉及调度模块，需相关开发者关注；由于缺乏单元测试，可能增加后续维护负担。
- 风险标记：核心路径变更 , 缺少测试覆盖 , 环境变量依赖

# 关联脉络

- PR #7129 [Feature] Fix mixed cache-aware: 同样涉及调度器（Scheduler）模块的 bugfix 和功能调整，修改了 gateway/completions.go 文件，关注缓存感知调度策略。
- PR #7125 [Feature] Config eviction_duration: 同为调度器（Scheduler）相关功能，引入了新的配置项（缓存驱逐时间），与本 PR 引入环境变量控制行为的设计模式相似。
- PR #7001 [Feature] Support mtp overlap schedule: 涉及调度器优化（Scheduler）和性能调优（Optimization），展示了调度模块持续演进以支持新特性（如 MTP 重叠调度）。