Skip to content

Paging 问题

Paging problem

在容量 k 的缓存中在线服务页面请求,并以缺页次数计成本。

条目类型
模型

形式陈述

接口与基准

作为在线算法,paging 的缓存最多放 k 页。请求命中成本 0;缺页则装入,并在已满时淘汰一页,成本 1。离线 Belady 淘汰未来最晚再使用的页面。

k+1 个页面循环会持续制造压力,但具体 fault 数依策略与初态;不能凭一个循环断言 LRU 等于 OPT。

直觉

缓存满时,在线策略必须为一个尚未知晓的未来选择牺牲哪一页;命中虽不付成本,却会改变 LRU 等策略对页面新鲜度的内部状态。离线 Belady 把未来最晚使用作为答案,只承担基准角色,不能成为在线淘汰动作的隐含信息。

LRU 的命中、缺页与淘汰轨迹
例子与边界

系统边界

现实缓存还有写回、预取、非均匀页面和不同容量。Resource augmentation 允许在线算法使用更大缓存,必须明确 ALG 与 OPT 两侧容量。Paging 研究在线淘汰策略;ideal-cache 模型通常假定最优替换来分析布局,问题不同。

FIFO 虽有同阶竞争界,却不具 stack property,可能出现 Belady anomaly:增大缓存反而增加 fault。相同竞争比不表示两种策略的缓存状态具有包含关系。

LRU 的状态轨迹

容量 k=3,请求 a,b,c,a,d。前三次装满缓存,a 命中后最近性次序变为 a,c,b;请求 d 时 LRU 淘汰 b,缓存为 d,a,c。FIFO 不因 a 命中改变装入队列,会淘汰最早装入的 a。相同前缀已经让两种策略状态分叉。

对序列 a,b,c,d,a,b,c,d 循环,fault 数仍须从初态逐步计算。Belady 知道未来并淘汰下一次使用最晚者,只作为离线 OPT 基准,不是 LRU 每一步的隐含行为。

推论与应用

基于 phase 的竞争分析

把请求序列切成 maximal phases,每个 phase 至多出现 k 个不同页。LRU 在一 phase 内对每个新页至多 fault 一次,故每段成本不超过 k

相邻 phases 的并集至少含 k+1 个不同页,OPT 即使跨边界安排,也至少在相应跨度内 fault 一次。对全部 phase 求和可得

LRUkOPT+O(k).

这是一项总成本比较,不表示每段或每次淘汰都与 Belady 对齐。

现实扩展边界

脏页写回、预取和不同页面成本产生 weighted caching 等变体。LRU 的 stack property 也依相同请求序列与标准单位页模型;换成带费用或可变大小对象后,需要新的算法与竞争分析。随机化版本可从标记算法继续阅读,但其对手模型与期望量词必须单独声明。

参考资料
  • Sleator, Tarjan, 1985.
  • Fiat et al., “Competitive Paging Algorithms,” J. Algorithms, 1991.
关系图谱5 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

使用的工具