Efficient SSD Caching by Avoiding Unnecessary Writes using Machine Learning


用机器学习预测只会被访问一次的图像并阻止它们写入cache,从而提高效率、延长SSD寿命。
社交网络情境下,图像文件的时间局部性差,当前访问的图像很大概率只会被访问这一次。由此导致的频繁写cache大大降低了硬件寿命和效率,因此提出一种办法预测那些只会被访问一次的图像,并阻止这种图像进入cache。

关键词

cache、决策树、机器学习、one-time-access file、SSD

作者及其他信息

HuaWang†, XinboYi†, PingHuang†‡, BinCheng§, and KeZhou† .
ICPP 2018, August 13–16, 2018, Eugene, OR, USA
©2018 Associationfor Computing Machinery.
ACM ISBN 978-1-4503-6510-9/18/08.
https://doi.org/10.1145/3225058.3225126

abstract

SSD作为cache,容量小,因此写密度比HDD大得多。 under social network workloads, quite a few writes on SSD are unnecessary, e.g.,Tencent’s photo caching shows that about 61% of total photos are just accessed once whereas they are still swapped in and out of the cache。因此想要精准预测写操作,Unlike the state-of-the-art history-based predictions, our prediction is non-history-oriented, which is challenging to achieve a good prediction accuracy。但是比起LRU,命中率提高24%,cache写次数减少70%,平均访问延迟减少5%。

introduction

大数据环境下,flash为基础的SSD被用于HDD 存储系统的上层(作为cache)。对SSD buffer 的研究主要集中在:lifetime extension and performance improvement.
cache就是用来存储最常被访问的哪些数据的,因此其write traffic比起backend非常大,寿命会很快被消耗尽。(文章提到已经有许多efective的延长寿命的方法,本方法是complementary。)
对腾讯QQ的“图像一次访问”现象的观察是本文动机,目标是阻止这种图像进入cache。分类器采用了决策树。

background and motivations

Tencent photo caching

在这里插入图片描述
the main feature of QQPhoto is that the upload and download channels are independent from each other。(OC: outside cache layer, DC: datacenter cache server, both of them are equipped with SSD)。
在这里插入图片描述
cache容量超过某个点(X)后,不同算法之间的差异变小,且增长缓慢趋于稳定。

application of machine learning to cache

difficulties : one-time-access file is never accessed before, so it doesn’t have historical information to study; in cloud storage service environment, the service types and users are diverse and varying, which leads to dynamic workloads. as ML can not only accomplish efficient data analysis, but also can be dynamic and automatical.

classifying algorithm

Choose decision tree, for ensemble learning methods achieve good accuracy but have high computational cost.
Tree height is 5.
由于采用了决策树,为了防止过拟合,这里采用的方法是:Stop growing the tree before perfectly classifying the training data,这里限制决策树最多分裂30次,3倍于其特征数。

feature extraction

feature:average view of owner’s photo,被查看的图像占比。
photo access recency,两次访问图像的间隔。
photo age,从该图片被上传开始算起。
photo access period,访问时间。
photo type,五种像素、两种格式(jpg、png)。

design and implementation of intelligent caching

在这里插入图片描述
特点:分类系统由分类器和历史表两部分组成。
工作流程是这样的:1)用户发出请求到cache;2)命中则直接返回图像,否则从BS取图像;3)取出来的图像送到分类器分类,如果被分为1(one-time-access file),送到历史表检索,若在历史表命中,则将其从历史表删除,并正常送入cache,否则若在历史表不命中,则按照分类器分为0(会被多次访问的文件)处理,直接绕过cache给到用户手里。

扫描二维码关注公众号,回复: 9285641 查看本文章

some details

history table

首先说明历史表的作用。考虑这样的情况:分类器错误地将1分为0,那么这个OTF(one time file)就会进入cache,从而污染cache,白白增加cache写操作;若分类器错误地将0分为1,那么这个实际上会被多次访问的文件就会绕过cache,那么以后再访问该文件时就会cache不命中,并且每次分类器依然会将它分为1,然后继续导致往后的cache不命中,这样的错误实际上比第一种错误的代价更大。为了防止这样的错误,利用历史表记录下被分为1的图像的元数据,每次分类器产生一个1分类就去检索历史表,历史表命中就说明它其实不是一个真正的OTF,于是将其从表里删除并送入cache;如果不命中,则说明至少目前可以认为它是OTF,从而绕过cache。文章中说给历史表分配的大小是SSD cache元数据表的2%~5%,采用FIFO替换策略。

cost matrix

用于决策树建成后剪枝,判断剪枝前后带来的损失大小以决定是否剪去这个枝:
在这里插入图片描述
由于把0判为1带来的损失更大,所以v>1。

daily updating model

每天更新数据集和损失矩阵,每天训练新模型。

one-time-access criteria

应该用什么标准来区分哪些图像应该绕过cache呢?
首先最简单的标准就是:只被访问一次的图像。但这样的标准是不严谨的,考虑这样的情况:一个图像在实验周期中会被访问多次,但在它下一次被访问之前它就会被替换出cache。这样的图像进入cache只是白白增加了cache写,并没有提高效率。那么应该如何定义这样的图像呢?
文章使用了reaccess distance,记为M,它被定义为从该图像进入cache开始到下一次被访问之间的总的图像访问量。如果记cache命中率为h,cache的空间为C,每张图像的平均大小为S,那么就意味着每M次访问会有M(1-h)次不命中,也就是M(1-h)次内存替换。在LRU策略下,该图像经过C/S次替换就会被替换出去,因此有:
M(1-h) = C/S
所以M = C/[S(1-h)]。
而实际上又会有比例为p的OTF被阻止进入cache,因此实际的内存替换次数为M(1-h)(1-p)。所以M(1-h)(1-p) = C/S,即为M=C/[S(1-p)(1-h)]。

From the above equation, we know that with a constant h, M increases with p.For photo cache, larger M means more rigorous judgement criteria, and files whose reaccess distance is larger than M becomes fewer, which means p is smaller. The trend can be summarized as:p ↑→ M ↑→ p ↓. Likewise, there also exists the trend of p ↓→M ↓→p ↑.

然后这里会数次迭代得到一个稳定的p。第一次迭代时p为0,算出M后,把distance大于M的记为OTF(这一步应该很好做,因为文中提到可以把图像按访问时间排好,这样的话在LRU下的distance就是相邻两次访问中间隔的图像个数[这一步相当于是在给数据打标签]),训练一次模型,得到p,然后用p算新的M继续训练直到p收敛。同理,也可得到h。
这里是本文我话最多时间看的地方。看到这里我的第一反应是为什么不直接不加干预地真实运行一次来直接得到M,就是说直接监测每一个图像,从而得到他们的distance。后来我意识到这样直接观测到的distance是不准确的,因为p会影响M,p必须和模型相适应,即是说M的大小必须和模型阻拦下来的图像比例p相吻合。比如,如果直接用初始p为0算出的M为打标签的标准,那么经过训练后p变大,模型对应的M大于标签对应的M,就会使那些distance大于标签M小于模型M的样本被分为类型0,但他们的标签却是1。因此需要经过迭代来使p收敛。

evaluation

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

个人学习总结

《机器学习》课刚讲了决策树,便看了这篇论文,可谓趁热打铁,看论文过程中得知决策树除了做分类也可做回归。当然这里是做了个分类。
查CART决策树资料时看的几篇博客:
https://www.cnblogs.com/nxld/p/6170931.html
http://www.sohu.com/a/290362448_654419
https://blog.csdn.net/zhihua_oba/article/details/72230427
此外结合暑假看的那篇LIPA,可见体系结构(或者说存储?)领域要结合机器学习其实都不会选用太复杂的算法,这是很容易理解的,因为体系结构领域交给机器学习去解决的问题远没有AI领域那么复杂。这里用了决策树,LIPA那篇用的是很简单的强化学习模型。

发布了10 篇原创文章 · 获赞 0 · 访问量 450

猜你喜欢

转载自blog.csdn.net/dc199706/article/details/103335154