知识卡片
软性调度窗口与硬性deadline的双轨调度
内容
每个 Scrub 任务同时带两个时间约束:sched_time 是期望的调度时间,实际触发时还要看当前时间是否落在配置的低峰时间段内、系统近 1/5/15 分钟负载是否够低,条件不满足就往后推迟;但 deadline 是硬性上限,一旦超过这个时间点,不管系统负载多高、是否在允许的时间窗口内,都必须强制执行。这是”尽量友好、但绝不能无限拖延”的调度策略:平时优先照顾系统整体性能,把非紧急的后台任务安排到系统空闲时段;但如果任务被持续推迟超出了可接受的上限,说明”照顾性能”已经开始损害”数据完整性”这个更高优先级的目标,此时必须让位。软约束负责优化体验,硬约束负责兜住底线,两者缺一不可。
参考来源
《Ceph源码分析》第12章《Ceph一致性检查》