2.2.2Cache管理
绝大多数高端磁盘系统把Cache纳入到系统内部设计,多少有些系统运作的需要。长期的,Cache大小引人注目的在增长,但是用于系统磁盘能力的Cache大小比率一直保持几乎相同。
8q6q$d9T_sz0DS6000和DS8000使用正在申请专利的Sequential Prefetching in Adaptive Replacement Cache (SARC)算法,developed by IBM Storage Development in partnership with IBM Research。它有自动调节、自动优化,解决各种顺序和随机I/O流的负载。SARC从Adaptive Replacement Cache (ARC)算法中得到灵感,并从中继承了很多优点。对于ARC详细的说明请参阅N. Megiddo和D. S. Modha的,“Outperforming LRU with an adaptive replacement cache algorithm,”IEEE Computer, vol. 37, no. 4, pp. 58–65, 2004.DOIT博客S1{ Jz3z
SARC基本上关注4件事情:
9L'Jb v4bQsJ
s0Ü 什么时候数据拷贝到Cache
,s#|zr^OA0Ü 哪些数据拷贝到CacheDOIT博客-x)a
ax
D'I/|+J
Ü 当Cache充满后哪些数据被清除DOIT博客0JRF2a/t`
W]
Ü 算法怎么动态去适应不同的负载
[
M6J
Csi0DS8000的Cache按照叫做Cache page或slot的4K字节pages组织起来。这样的单元分配(这比用其它数值的存储系统)保证小I/O不会浪费Cache。DOIT博客,?t y9D(FEJ.{8TK
拷贝到DS8000 Cache中一些数据的结果能够触发两条股则:请求页面调度paging和预取Prefetching。请求页面调度Demand paging意味着8个磁盘块disk blocks(一个4K的Cache页)在一次cache miss完成。页面调度对所有的卷都是有效的,保证在Cache中能够找到最近被使用的I/O。
3}I1N0o;uo,Cs0预取Prefetching意味着数据在被请求之前就已经投机的拷贝到Cache中。对预取,是一个对未来需要访问的数据的预测。因为有效的成熟的预取计划需要大量的page访问历史(在现实环境是不可行的),SARC对顺序负载上使用预取功能。顺序访问模式自然的出现在视频、数据库检索、拷贝、以及恢复领域。顺序预取的目标是发现顺序访问以及有效的提前将数据装入Cache,来减少Cache miss。DOIT博客[L2r\UB+E
对于预取,cache管理采用track。一个track是128个磁盘块disk blocks(16个cache page)。发现一个顺序访问模式后,计数器保持纪录所有正在被访问的track以及它的前身。只有当计数器建议一个连续访问模式时,顺序预取功能才激活。通过这种方法,DS6000/DS8000监视应用读I/O模式和动态的确定是否是进入Cache最佳的时机:
D,t3l!D8v"J6in j"t
B0Ü 刚好pages被请求
TDeg%_0Ü 请求的page加上剩余的数据在磁盘track上
R+N}.aQ-?4i0Ü 一个全部的disk track(或一组disk track)之前没有被请求DOIT博客2z%JY
pw!P^)i
决定在什么时候和什么数据被预取,以每一个应用为基础(而不是整个系统),敏感的区分同时正在运行的不同应用的不同数据参考模型。
?-?2I]MPqsQ0顺序和随机(非顺序)数据被分开为2个列表(看图2-4),决定当Cache充满的时候,什么page被清除出去。一个page装载到cache中通过简单的请求内存分页添加到随机列表RANDOM List的MRU((Most Recently Used)的顶部。未来没有更多I/O访问下,它下降到(LRULeast Recently Used)底部。一个顺序访问的page装载到Cache中,通过顺序预取添加到顺序列表SEQ list的MRU顶部接着进入。另外的规则控制这个page在两个列表的之间的迁移,因此相同的page不会出现两次。DOIT博客8?9P^&X}]o
u9N0D!RM~H(mM0
DOIT博客V9ru8fS:X(R
图2-4 SARC算法对于随机和顺序数据的cache列表
*J0v5l{K\F]4|0跟随负载压力的变化,算法交易cache空间在random和seq之间动态自适应的改变。这使得SARC抵抗扫描,所以,一次性的顺序请求不会污染整个cache。SARC为顺序列表保持一个期望的大小。期望的大小响应负载进行不断的修改。特别的,如果SEQ list底部的部分被发现比RANDOM底部的部分更加有价值,期望的大小将增加;另外的,期望的大小将减小。不断努力充分利用有限的cache空间,以及提供更大的吞吐能力,和在一定的cache大小下得到更快的响应时间。DOIT博客Lbm6zW
N'h7[T
另外,算法动态更改不仅是两个列表的大小,而且大小改变的速度的比率。在稳定的状态下,根据cache miss率,pages被驱逐出cache。更大的(各自的,更小的)miss比率影响适应的更加快速的(各自的,更慢的)比率A larger (respectively, a smaller) rate of misses effects a faster(respectively, a slower) rate of adaptation。
3Y|9oOkPk-\t0