工作集与缓存足迹
更新时间:2026-10-01。判断程序受不受缓存限制,本质是比较工作集与缓存容量。
本文要回答的问题
- 怎么知道程序“需要多大缓存才舒服”?
- 为什么性能会在某容量点突然掉下来?
一、工作集与悬崖
工作集是程序在某阶段反复访问的活跃集合。它小于缓存时命中率高;一旦超过容量,数据反复进出,命中率和性能出现陡降(cliff),而不是平滑变化。
二、画足迹曲线
逐步改变可用缓存大小,统计缺失率,得到 miss-vs-size 曲线:曲线拐点即主要工作集大小。可用性能计数器实测或缓存模拟器扫描,注意阶段性(启动/稳态)和峰值,而非只看平均。
三、常见坑
- 用总数据大小代替活跃工作集。
- 只看平均足迹忽视阶段性峰值。
- 不找拐点,盲目扩容。
小结
工作集越过容量产生性能悬崖,miss-vs-size 拐点揭示真实需求,对策是分块与冷热分离。下一篇 分块 tiling。
总结
判断程序是否受缓存限制,本质是比较“某阶段反复访问的活跃集合(工作集)”与缓存容量:工作集小于容量时命中率高,一旦越过容量,数据反复进出,命中率和性能不是平滑下降而是陡降出 cliff;逐步扫描缓存容量、画出 miss-vs-size 曲线,其拐点就是真实工作集大小,注意区分启动/稳态阶段和峰值而非只看平均,再据此用分块、冷热分离把足迹压进容量内。