执行摘要
本PR新增了radix tree缓存驱逐时间的可配置性,将默认值从5分钟调整为30分钟以提升缓存命中率,并扩展token counter至mixed worker类型。变更涉及配置管理、缓存核心实现和测试覆盖,对调度性能有积极影响,需关注默认值变更的兼容性风险。
功能与动机
主要动机是解决默认驱逐时间过短导致的缓存命中率低问题。PR body指出“更新radix tree默认驱逐时间,新增用户可配置驱逐时间”,fastdeploy-bot在review中补充“原默认驱逐时间(5分钟)过短,导致缓存命中率较低”。通过支持用户自定义,增强系统灵活性和性能优化能力。
实现拆解
实现分为以下关键模块:
- 配置模块 (
config.go): 新增EvictionDurationMins字段,默认值设为30分钟,在Load函数中初始化。
- 缓存模块 (
prefill_cache_aware.go): 修改newRadixPrefixCache函数,传入evictionDuration参数,移除硬编码的5分钟默认值。
- 调度模块 (
handler.go): 传递配置并扩展SelectWorker函数,使token counter逻辑支持mixed worker类型。
- 文档与测试: 更新
router.md文档添加配置项说明;在completions_test.go中添加大量单元测试,模拟超时和挂起场景,确保功能稳健性。
评论区精华
review讨论由fastdeploy-bot主导,重点指出配置不一致问题:
“文档注释标注 default: 5,但代码中 config.go 的默认值已改为 30 分钟。”
bot建议统一默认值为30分钟或修正文档,但未明确结论;PR最终被合并,暗示作者已解决此问题,强调了配置正确性的重要性。
风险与影响
- 风险: 默认值变更可能影响现有系统缓存行为,需评估向后兼容性;延长驱逐时间可能增加内存使用,需监控性能;新增配置项若传递错误可能导致功能失效。
- 影响: 用户可自定义驱逐时间以优化缓存策略,系统缓存命中率提升可能改善性能,团队需维护新增配置和测试覆盖。
关联脉络
本PR与近期历史PR共同构成调度和缓存优化脉络:
- PR 7001(调度优化)和PR 7107(KVCache管理)均涉及类似模块,显示团队持续改进调度策略和缓存效率。
- PR 6680(调度性能优化)与本PR的token counter扩展相辅相成,共同提升系统响应能力。
这些关联表明FastDeploy在在线服务路由和调度方面进行系统性增强。
参与讨论