知识卡片

evict_effort按热度分位数比例调节剔除力度

专业/工作 · 244.c.4.a

内容

缓存空间紧张时该剔除多少数据,Ceph 不是简单设一个容量阈值、一超就无差别开始按 LRU 顺序剔除,而是先算出当前使用率超过 evict_target 多远(over = full − evict_target),除以剩余可用空间上限(span = 1 − evict_target),比值就是本轮的剔除力度 evict_effort;具体到单个对象要不要被剔除,还要结合该对象在整体访问热度分布直方图中的百分位——只有热度分位数低到”1 减去它的分位值”仍然小于 evict_effort 的对象才会被留下,容量压力越大,能幸免的热度门槛就越高。这是比例控制(越偏离目标越用力纠正)叠加热度感知(不是先进先出,而是按访问热度排序)的组合策略,比固定阈值和简单 LRU 都更贴近”该优先保留真正的热点数据”这个目标。

参考来源

《Ceph源码分析》第13章《Ceph自动分层存储》