知识卡片

随机化触发避免deep_scrub扎堆

专业/工作 · 516.a.2

内容

是否要在这次调度里顺带升级成 [[Scrub与deep-scrub的轻重两级检查|deep-scrub]],除了”距离上次 deep-scrub 是否已经超过间隔时间”这个确定性条件外,还叠加了一个随机数判断:每次都以配置的概率抛一次骰子决定是否提前触发。如果只靠固定间隔,大量在相近时间创建、配置相同的 PG 会趋向于在同一时间窗口集中触发 deep-scrub,造成瞬时资源冲击;加入随机化因素后,即使一批 PG 的固定周期完全相同,实际触发时间也会被打散,从”整齐劃一的洪峰”变成”分散的小波”。这是分布式系统里对付大量同构任务共振问题的常见手法——在确定性调度上叠加受控的随机扰动来打散负载尖峰。

参考来源

《Ceph源码分析》第12章《Ceph一致性检查》