广告位API接口通信错误,查看德得广告获取帮助

电竞之家_品味电竞生活移动版

主页 > 刀塔2 >

FTL那些事2 Hot/Cold Data(2)

Ghost List不缓存Data,只缓存Data Index,给下一次命中提供参考,并按照LRU规则进行淘汰。如上图Step 5淘汰数据时候会将淘汰的数据放到对应的Ghost List,如果某个Ghost再次命中则将动态增加对应LRU List大小,相应地另一个LRU List大小就要减小,以适应当前I/O模式。如果工作负载趋于访问最近访问过的文件,将有更多命中在GMRU上,相应地增加MRU大小,反过来工作负载趋于访问最近频繁访问的文件,GMFU将更多的命中,相应地增加MFU大小。比如有很多文件要被访问,且每个文件只被访问一次,这样就会把缓存里之前频繁访问的数据置换出去,达到自适应调整的效果。

BPLRU

这是针对前面所述的Hybrid-Level Mapping所设计的LRU方法,具有如下技术:LRU缓存使用Block-Level Mapping,只要访问了Block里面的任何一个Sector,就将该Block的LRU Node置为LRU Head,如果Block缓存存在空洞,则需要从Flash中读取相应的Sector来填充,如果Block是顺序写满的,则将这个Block放到LRU Tail,这是因为认为顺序写满的Block再次被访问的概率很低。下面是BPLRU的数据结构图,分为两级,第一级是Block Level Mapping,第二级是Sector Level Mapping:

FTL那些事2 Hot/Cold Data

Misc方法

其他方法在这里就举一个DAC的例子,DAC全称是Dynamic dAta Clustering,思想是将Flash划分为若干区域,比如Hot区域和Cold区域,然后利用数据量和数据压缩比来判断是Hot Data还是Cold Data。它认为数据量很大直接被认为是Cold Data,而数据量小的则还要用压缩比来判断,如果压缩比很大,也就是能被压缩掉很小的是Hot Data,否则是Cold Data。方法如下图所示:

FTL那些事2 Hot/Cold Data

想到顺序读写识别的方法,记忆中有一种Bitmap的方法,它有三个要点,默认Bitmap的每个Bit都是1,;顺序写的首个Sector的Bit为0,紧随其后的都是1;更新操作将首Bit置为0,看下一个是否为0,直到下一个为0 结束,如果更新的最后一个Sector仍不为0,则看这个Sector的下一个是否为0,为0结束,否则将其置为0。示例如下表,依次执行3行到7行操作,W代表写,U代表更新,每个连续的都是从0开始到0结束,这张表并非一定要单独成表,也可以放在Mapping Table的某一个Bit上记录,由此确定某个时间点下Sector读写连续性,进而判断其Hot/Cold程度。

FTL那些事2 Hot/Cold Data

除此之外,Hot/Cold Data识别可以跟随目前火的不要不要的人工智能步伐,利用机器学习的方法,以应用程序类别、用户和系统进程、过去写数据分布特征、过去连续写长度和间隔时间等特征作为输入,来预测未来该数据特征为Hot还是Cold,用户数据量随着时间的增加,未来预测将越加准确。

具体实现和应用还等各位读着来考虑,如有讨论,请联系李大虾(mailto:lishizelibin@163.com)或关注微信公众号大虾谈(DaXiaTalking)。






企业级  


   
   

(责任编辑:波少)
广告位API接口通信错误,查看德得广告获取帮助