Page 38 - 网络电信2018年5月刊下
P. 38
解 决 方 案
三、多级热度的缓存替换技术 表2 热度阈值
如前文所述,现有的缓存替换技术[11-14]将产生于20世纪
的经典缓存替换算法LRU、LFU进行改进和重组,主要问题包括
以下方面。
(1)热度判断的主体局限于进入缓存的数据
现有缓存替换算法不仅缺乏对被换出数据的长期跟踪,而
且缺乏对全体数据的热度判断。随着新型存储器件层出不穷,
存储金字塔结构更加复杂,涉及多个存储层级之间的冷热数据
的判断与迁移,需要对全体数据进行热度统计与计算。
中各缓存层的容量有直接关系,可按照经验值设置。
(2)热度判断准确率低下
现有缓存替换算法没有同时考虑访问时间和历史访问频 这样一来,就可以将数据元素的当前热度与热度阈值进行
比对,确定数据元素所属的热度级别,若新旧级别不相同则将
率,导致一些只是近期没有被访问到,但实际上访问频率很高
数据元素迁移到对应的存储器件中。若出现某热度的存储器件
的数据被替换出去,热度判断的合理性存在较大提升空间。同
容量在警戒阈值之上,则调整热度阈值。警戒阈值为可设经验
时,被换出数据再次被换入时其热度等同于首次进入缓存的数
值,典型值为95%,目的在于在容量满之前及时调整阈值,提
据,但其热度是不同的。
前迁移数据,避免出现因容量已满而导致新换入数据失败的情
(3)未能充分发挥硬件性能
受制于经典缓存替换算法的惯性思维以及20世纪80年代的 况。缓存容量达到警戒值说明热度阈值表设置不当,需对其进
行调整。调整的方法包括:将该热度阈值的范围下界调低或上
CPU计算能力和内存容量限制,现有的缓存替换算法仍然十分节
界调高。
约CPU和内存,以链表作为最主要的缓存管理方法,处理效率低
与现有技术相比,本项技术在分布式块存储系统执行前端
下。一种合理的解决方案是,应该综合考虑数据近期的访问时
任务时,热度判断的主体全面、热度判断准确率高、充分发挥
间和历史的访问频率,避免将只是近期未被访问,但实际上历
了硬件性能,从而以一种公平的方式对待前端任务对缓存资源
史访问频率很高的数据换出。因此,不能将最近的数据元素和
的竞争。
已过去一定时间的数据元素截然分开,不能只对最近的访问情
况进行考察,应对全体数据进行考察,采用可量化的计算方式
对数据的热度进行评价。 四、实验与测试
1、测试方案
在本技术中,对每一个数据元素的访问视作一个数据流,
在本节中,不但针对优化前后的任务调度技术和缓存替换
将访问记录按时间来划分为若干段,数据流中的每个数据即
技术分别进行了对比测试,而且在实际的分布式业务场景中对
各个时间段内,该对象被访问的次数,将其表示为Visit[a]
整体服务质量进行了实际测试和对比,包括存储服务效率和稳
[t],其中Visit[a][0]是数据a距离当前最远的一条访问记录,
定性。为保证实验结果可靠,每组实验重复10次,去掉最大和
Visit[a][t-1]为当前访问记录。令k为热度衰减常数,取值范
-3
-2
围为k∈[0,1],典型值如10 、10 。数据a在时间片t之后的热 最小的2个值后取平均值。
2、自适应的任务调度测试结果
度评分计算式为:
在本测试中:前端业务请求为4KB随机写,I/O深度64;后
Visit[a][t]=Score[a][t-1]*k+Visit[a][t](2)
端业务请求为数据重分布,迁移量约22GB。优化前采用静态限
其中,k值越大,历史访问对当前热度评分的影响越显著,
速的技术,优化后采用本文自适应的任务调度技术。
反之则越不显著。数据热度的评分越高,则表示该对象被访问
如图6(a)及图6(b)所示,在优化前,当后端任务来临时,
得越频繁。数据流中的元素权重取决于其离当前时间的远近,
前端任务的IOPS和时延受到显著的干扰;在优化后,后端业务
流中越早的元素权重越小。与此相比,在LRU算法中,对一个大
尽量少地参与资源竞争,前端任务的IOPS和时延与无后端任务
小为n的固定大小的窗口内的元素进行加权求和时,会对最近n
的执行结果十分接近。与优化前相比,本文的调度技术在IOPS
个元素都赋予权重1,而对所有更早的元素赋予权重0。两者区
上提升38%,在时延上降低39%,达到了优先满足前端任务的目
别如图5所示。
标。如图6(c)所示,与优化前相比,优化后的技术在前端业务
在多级缓存的分布式块存储环境中,热度阈值见表2,热度
繁忙时,后端业务的执行时间优化后显著拉长,避免参与资源
分级与存储系统的缓存层数有直接关系。热度阈值与存储系统
竞争。在前端业务空闲时,后端业务能做到全速完成。达到了
图5 多级热度的缓存替换技术与LRU对比 优先满足前端任务的目标。
3、多级热度的缓存替换测试结果
为了体现缓存的效果,采用随机读写来测试,主要由两个
指标来衡量:4KB粒度的随机读写下的IOPS以及1MB粒度的随机
读写下的吞吐量。另测试了真实工作负载产生的I/Otrace情况
下的系统I/O性能。优化前采用ARC算法,优化后采用本文提出
的缓存替换算法,SSD缓存大小为40GB。
62 网络电信 二零一八年五月