S24:FIFO、Priority 与 Fair-Share 的策略比较
调度策略决定有限 serving 容量先服务谁、等待多久以及谁可能被饿死;低平均延迟、公平、优先级与吞吐通常不能同时最大化。
内容类型:预习教材(不代表已完成)
日期:2026-12-16
阶段:P2 · AI Systems Engineering 90
总路线:Day 114 / 360
周次 / 节奏:W4 · 周三引导练习
状态:教材已备;学习未完成
主题:scheduling、priority、fairness、starvation
一句话定义
调度策略决定有限 serving 容量先服务谁、等待多久以及谁可能被饿死;低平均延迟、公平、优先级与吞吐通常不能同时最大化。
学习目标
- 能在同一 fixture 上比较 FIFO 与 priority 或 fair-share 中的一种策略。
- 能定义请求级、租户级和 token/工作量级公平的差别。
- 能观察 priority inversion、starvation 与 head-of-line blocking。
- 能提出 aging、quota、weighted fair queue 等缓解思路,但保持实现轻量。
核心知识
FIFO 按到达顺序,规则透明,但长请求会阻塞后来短请求。Priority 允许高风险或交互请求优先,却可能让低优先级永久等待;若任务不可抢占,已经运行的长低优先级请求仍会阻塞高优先级,形成一种 priority inversion。Fair-share 在租户间分配服务份额,可避免大租户独占,但实现需估计工作量并维护状态。
公平的分母很重要:每租户相同请求数不等于相同 token/compute;长上下文请求消耗更多 KV 与 prefill。按 token 配额更接近资源,却可能惩罚合法复杂任务。Weighted fair share 可按服务等级、风险或付费权重分配,但权重是一项治理决策,不是纯技术参数。
Scheduler 还需处理取消、超时、最大等待和 aging。Aging 随等待时间提高优先级,降低 starvation。Admission 应在无法满足硬约束时提前拒绝,而不是让请求在队列中无限等待。
机制与推导
可定义优先级分数:
[ score_i=basePriority_i+\alpha\cdot wait_i-\beta\cdot estimatedWork_i ]
这只是教学形式:α 控制 aging,β 偏好短作业。Estimated work 误差会影响公平,也可能被用户操纵。租户公平可观察服务份额 share_t = served_work_t / total_served_work 与目标权重差,而不仅是请求完成数。
比较时固定到达和 service time,报告 mean/p95 wait、每租户完成量、最大等待及是否 starvation。一个策略平均更快不代表每租户更公平。
最小练习或观察步骤
- 给 S23 fixture 增加 tenant、priority 与 estimated work 字段。
- 保持 FIFO 为 baseline,只实现 priority 或轮转 fair-share 一种策略。
- 用完全相同到达/service 输入运行两种策略。
- 比较整体 mean/p95、每租户等待、最大等待和完成工作量。
- 加一串持续高优先级请求,观察低优先级是否 starvation,再写一个轻量缓解思路。
常见误区与边界
- Priority 等同紧急程度,却没有租户配额与防滥用。
- 只按完成请求数评估公平,忽略 token/工作量差异。
- 比较策略时改变了 fixture 或服务时间。
- 平均延迟降低就称所有用户体验改善。
- 在非抢占模型中假设高优先级能立即中断当前任务。
系统场景连接
欺诈实时授权、客服交互和夜间报告可能共享模型服务。全部 FIFO 会让批量长任务阻塞实时流;绝对 priority 又可能让分析任务长期无法完成。平台需把业务临界性、租户预算和最小服务份额编码成明确策略,并把实际等待/拒绝记录给后续 SLO 与 FinOps。
自检问题
- 请求数公平与计算资源公平有何不同?
- 非抢占 scheduler 中 priority inversion 怎样出现?
- Aging 能缓解什么,又可能引入什么取舍?
- 为什么 estimated work 本身可能造成新不公平?
专业课程对齐
- 阅读 vLLM 官方文档 中 scheduler、priority scheduling 或 serving 配置相关内容,观察真实调度器维护 sequence 状态与 token budget 的方式。
- 阅读 MIT 6.5840 的并发、负载和容错课程视角,连接单节点策略与分布式 worker 失效后的再调度问题。
- 阅读 Stanford CS329S 的 ML system design 和 responsible deployment 主题,把公平定义连接到业务用户与运营目标。
深入学习提示
用同一组请求画 Gantt 图,策略差异会比汇总数字更直观。对“公平”写出主体、资源与时间窗口,例如“每租户每分钟获得目标 token 份额”。再构造反例:短请求优化降低总体均值,却让一个重要长请求超时。调度没有价值中立的唯一答案,能力在于说明目标和牺牲。
学后填写区
- 选择比较的两种策略:
- 公平的具体定义:
- 整体与分租户观察:
- starvation 反例:
- 一个仍需业务决定的权重: