移动设备缓存算法与轻量级运行时引擎解析
1. WAC算法设计与评估
在设计WAC(Workload-Aware Cache)算法时,充分考虑了典型移动工作负载中频繁且大量的顺序I/O请求。为实现这一需求,简单地将缓存中每个块的属性分为两类:顺序和随机。在算法里,通过在访问块具有顺序性或非顺序性时,给L值加上C SEQ或C RAND来体现该属性。由于顺序块被淘汰更有益,所以将C SEQ设为小的正值(实际实现中用1);为了让随机块在缓存中停留更久以增加缓存命中率,C RAND被设为比C SEQ更大的值。因此,若缓存块最近被访问或为随机访问,其H值会相对较大,更有可能留在缓存中,这可看作是LRU(Least Recently Used)的广义版本。
为评估WAC和LRU的性能,基于PDA跟踪构建了缓存模拟器。当缓存大小从5MB到60MB(增量为5MB,省略55MB,因为此大小附近命中率已饱和)变化时,WAC在所有缓存大小下的命中率都高于LRU。这表明WAC能更好地保留有价值的块,快速淘汰价值低的块。鉴于WAC对移动工作负载的混合I/O请求模式有效,下一步任务是对其进行扩展,使其在异构存储系统而非单设备存储系统中也能发挥作用。
下面是WAC和LRU在不同缓存大小下命中率对比表格:
| 缓存大小(MB) | WAC命中率(%) | LRU命中率(%) |
| ---- | ---- | ---- |
| 5 | [具体值] | [具体值] |
| 10 | [具体值] | [具体值] |
| 15 | [具体值] | [具体值] |
| … | … | … |
| 60 | [具体值] | [具体值] |
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



