一篇热数据识别存储外文翻译,本文主要在讲思想

原文题目:

 HDCat: Effectively Identifying Hot Data in
   Large-scale I/O Streams with Enhanced
  Temporal Locality

翻译:大规模的I/O流中有效识别热数据并增强时间局部性

外文网址:http://dsc.jnu.edu.cn/paper/2015/ICA3PPCH.pdf

本文主要讲里面的详细算法及思想

第一作者:陈嘉豪

论文简单摘要:

热数据对于优化现代计算机是很重要的。热数据识别能添加闪存的寿命,可是对低存储消耗和低执行时间开销是一个挑战,本文提出了“热数据捕获器(HDCat)”,能通过增强时间局限性在大规模I/O流中识别热数据。HDCat包括两条队列,一条热数据队列,一条候选热数据队列。HDCat採用了D位计数器和近期位而且能有效地减少冷热数据的转换。最后使用了实例測试。

论文中几个概念:

热数据:用户訪问率非常高

时间局部性:假设一个信息项正在被訪问。那么最近它可能还会被再次訪问

闪存:断电数据不会丢失,像USB

论文背景:

传统的热数据识别算法只记录了当前的数据项,忽视了相应数据集的体积。然而,大多数採用传统方法识别热数据会造成大的存储消耗和高执行时间开销,而且没有考虑时间局部性对热数据识别有非常大的影响。为了克服这个问题,Hsieh提出了多哈希函数框架识别热数据。这个算法採用了多哈希函数和一个布尔过滤器去捕获数据訪问频率。因此採用了一个计数器去准确捕获訪问频率信息。

可是算法中存在的指数衰减模式使它非常难去获得数据訪问的时间局部性。

热数据识别方法在不同场景中有应用,缓存是一种典型的场景。

缓存的缺点:不能在已有数据的位置进行更新,受冷热数据转换影响大,降低使用寿命。造成延时,写入次数有限。备份花费高。本文提出了HDCat,主要思想是:

1、依据近期位更新D位计数器。近期訪问的数据D位计数器增长更快比近期没有范文的数据

2、过滤机制是基于最低位的。当算法须要去移除数据,一定是D位计数器值最小,而且近期位为0

3、算法能有效解决执行时间消耗和存储问题

实现结果表明:当维持低存储消耗和低执行时间开销时。识别热数据准确性提高。

Hash算法: Hash能够通过散列函数将随意长度的输入变成固定长度的输出,也能够将不同的输入映射成为同样的同样的输出,并且这些输出范围也是可控制的,所以起到了非常好的压缩映射和等价映射功能。Hash为什么会有这样的 压缩映射和等价映射功能,主要是由于Hash函数在实现上都使用到了取模。经常使用的Hash函数:

直接取余法:f(x):= x mod maxM ; maxM通常是不太接近 2^t 的一个质数。

  ・乘法取整法:f(x):=trunc((x/maxX)*maxlongit) mod maxM,主要用于实数。

  ・平方取中法:f(x):=(x*x div 1000 ) mod 1000000); 平方后取中间的,每位包括信息比較多。

相关工作:

布隆过滤器:目标记录低存储消耗信息

D位计数器:一个布尔值记录有限制,非常多情况下不能满足需求。塑性变量花费太多存储空间。

D位计数器是一个D位数组,能记录范围0到(2的D次方-1)。開始值设为0,当对应元素出现时。设置为1。整个值超过(2的D次方-1)时。停止加1。D位计数器中包括B最大位,被叫做临界值。B位后全为0则表示数据没有超出临界值,

热数据识别算法:


TLL:
两层LRU算法简称TLL包括一个热数据列表和一个候选热数据列表,长度固定,当一个请求到达时,TLL检查是否有相应的逻辑区块地址(LBA)在热数据列表中

假设有。数据被记录成热数据。否则视为冷数据,假设在候选热数据列表中。数据就变成热数据,假设两个表都没有,插入到候选表中。

长处:有好的空间有效性。只须要记录热数据和候选热数据的訪问信息。

缺点:性能依赖于两个表的长度,当表长短时,能减少存储消耗,但它会不适当地减少热点数据到候选列表。从而减少热数据识别准确性,而且会出现高执行时间消耗。

MHF:多hash函数框架简称MHF,採用了多hash函数和D位计数器。如图1,

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

MHF记录数据訪问信息通过添加对应的计数器。更新数据訪问信息通过定期的使计数器除以2。假设B位后面有1,返回1,否则返回0。MHF採用K个独立的hash函数,假设K个返回值为1,则为热数据。如图1,算法使用4位计数器和2位最大位。那么4就是临界值,在样例中,用4个函数f1,f2,f3,f4标记数据X。得到4个值:0010,0100,1111,1001,当中0100返回0,则推断为冷数据。

长处:实现了低存储消耗和低执行时间开销

缺点:近期訪问的信息没有

HotData Catcher:

HDCat概述:

如图2所看到的,HDCat由一个热数据列表和一个候选热数据列表组成,列表中每一项包括一个近期位和一个D位计数器。

初始化设为空。全部数据项为冷数据,当数据到达时,先检查是否在两个列表中,不论什么列表假设包括改数据项,相应的D位计数器添加。假设数据在候选列表中,而且D位计数器值大于所给临界值,改数据将插入热数据列表。热数据列表为满,利用过滤机制淘汰一项数据到候选列表。

假设两个列表都不包括。插入到候选列表,候选列表淘汰一项数据。

HDCat细节:

假设近期位为0,D位计数器添加1。假设为1,则添加2

D位计数器达到最大值后。假设数据再次訪问也不会添加

数据项的近期位将被设置为1,其热值将高速成长。HDCat採用了老化机制来处理这个问题。即对D位计数器并不简单地与添加,而是随着时间的推移变少

HDCat流程图:

过滤机制:假设列表满,须要淘汰元素时,最好是找到近期位为0,D位计数器最小的项,可是须要遍历整个列表,造成高执行时间消耗,过滤机制採用,仅仅需找到D位计数器小于临界值。就遍历停止。

老化机制:固定的时间没訪问数据D位计数器减半

採样机制:避免冷热数据相互频繁转换,假设数据频繁訪问。而候选表中有非常长没有訪问的,通过採样机制可能就增大了

算法评估

评估环境:同样的衰减间隔和老化机制。三种实迹数据收集从微软的数据中心在块级别使用事件跟踪的核心server。时间长度144小时,

每一个记录包含时间戳。请求类型,数据地址偏移,数据块大小

硬件监控(hm),測试站点server(wdev)。研究项目(rsrch)

hm和wdev有很大的地址空间,rsrch小

实验结果:命中率越高越好。冷热数据转换率越低越好

命中率:终端用户訪问加速节点时。假设该节点有缓存住了要被訪问的数据时就叫做命中,假设没有的话须要回原server取。就是没有命中。取数据的过程与用户訪问是同步进行的,所以即使是又一次取的新数据,用户也不会感觉到有延时。 命中率=命中数/(命中数+没有命中数)。 缓存命中率是推断加速效果好坏的重要因素之中的一个。

表1和表2,表示相互关系的參数表

图3表示了命中率的实验结果,图4用柱状图表示:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图5总结在不同缓存大小下。总的命中率大小

图6表示转换次数,图7为柱状图

总结

本文提出了热数据识别算法(HDCat)利用D-bit计数器和近期位,实迹用于评估,和TTL、MHF作比較,HDCat能够准确地捕捉到数据訪问模式的时间局部性,实现了较高的命中率,低缓存存储性和执行时开销。此外。HDCat显著减少了数冷热数据之间的转换,从而减少写入的数操作。因此。HDCat是一个非常好的候选方法的优化性能闪速存储器的可靠性。

此外。我们觉得HDCat能够应用到很多场景以优化的计算机系统。

最新文章

  1. Bash 为何要发明 shopt 命令
  2. SSIS Send Mail
  3. asp.net webapi支持跨域
  4. php连接mysql
  5. C#中静态方法的运用和字符串的常用方法(seventh day)
  6. 五,ESP8266 TCP服务器多连接
  7. oo第一次总结博客
  8. Zepto tap 穿透bug、解决移动端点击穿透问题
  9. dubbo请求报文实例
  10. html5 定位
  11. javaAgent 参数
  12. python之BeautifulSoup4的例子
  13. orace学习操作(2)
  14. 四大域对象,和jsp的九大隐式对象,已经el表达式的11个隐式对象
  15. Bad connection to FS. command aborted. exception: Call to chaoren/192.168.80.100:9000 failed on connection exception: java.net.ConnectException: Connection refused
  16. FILE operattion
  17. vim 折叠
  18. Effective C++ Item 33 Avoid hiding inherited names
  19. 【转载】Java中的锁机制 synchronized & 偏向锁 & 轻量级锁 & 重量级锁 & 各自优缺点及场景 & AtomicReference
  20. 总结js(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

热门文章

  1. [转]Android自定义Adapter的ListView的思路及代码
  2. Oracle12C用户创建、授权、登录
  3. React Native组件间通信
  4. Andorid Scrolling Activity(CoordinatorLayout详情)
  5. Android各种函数单位
  6. Python常用的标准库及第三方库
  7. pythonGUI编程——Qt库(1)
  8. 【Apache Kafka】一、Kafka简介及其基本原理
  9. SFTP文件上传下载
  10. 关于框架搭建-web