A Lookahead Read Cache论文总结
论文
A Lookahead Read Cache: Improving Read Performance for Deduplication Backup Storage,发表于JCST2017
主要内容
为备份系统设计了新的去重存储读缓存,它利用一个特殊的特性:读序列与写序列相同。加速备份系统读取性能
- 移动窗口:为了更好地利用缓存,通过在移动窗口中查看未来的引用,它将受害者从将来访问次数最少的缓存中驱逐出去。
- 日志缓冲区:此外,为了进一步提高读缓存性能,它维护了一个小的日志缓冲区,以明智地缓存未来的访问数据块。
方法 (Lookhead Read Cache超前读缓存)
一、Overview
主要由(1) 未来滑动窗口,(2) 热数据识别方案,(3) 读缓存三个部分组成
- 未来滑动窗口:其由N个块组成,可看成预测窗口用于估计未来的访问块。窗口尾部位置的数据块始为当前要读取的块。读取当前块之后,窗口向未来方向滑动一个块。
- 热数据识别方案:基于滑动窗口进行热冷容器决策
- 引用计数器:方案为每个数据容器维护一个将来的引用计数器。当任何数据块进入窗口的头位置时,它对相应数据容器的引用计数加1,相反则引减1
- 冷热判断:如果当前访问块的容器的总引用计数大于窗口内预定义的阈值(如5%),则容器被归类为热容器,否则为冷容器
- 读缓存:用于存储被访问的容器,不采用现有的缓存算法LRU。而是当缓存满了,它选择引用计数最小的容器来淘汰
二、Hot data identification(热数据识别方案)
数据结构:由于每次访问数据块时调用,需要实现较低的开销,因此采用了4位的布隆过滤器和多个哈希函数,容器引用计数器是通过计数的布隆过滤器实现的。
过程:
- 当数据块出现在滑动窗口的首部时,块ID被转换为容器ID,然后将容器ID提供给多重哈希函数,从而使得每个引用计数器增加1。
- 窗口会继续向前移动,引用计数器此时将进行更新,当滑动窗口移动超过一个块时,该方案将布隆过滤器中的数据容器的引用计数器减少1。若数据容器存在于缓存中,它还将相应的引用计数器减少1。
- 引用计数如果大于预定义的阈值,则数据容器被归类为热,否则为冷
- 其中多重哈希函数被用来减少假识别率在布卢姆过滤器,但依然可能存在哈希冲突,因此将为每个计数值选择一个最小的引用计数
三、Base Desgin(淘汰)
读缓存淘汰方法:选择未来引用计数最小的容器作为受害者,此基础设计主要利用热数据标识方案进行有效的引用计数管理,而不是用于热数据标识。
四、Extended Design(扩展读缓存)
关键思想:将一部分读缓存的空间分配给日志缓冲区,根据热数据识别方案将容器从读缓存中赶出之前,维护一个小缓冲区用于记录未来的访问块。这个日志缓冲区由一个循环队列管理
过程:
- 在驱逐之前,通过热数据识别方案将淘汰容器分为热或冷
- 如果淘汰容器被标识为冷(即容器中只有一小部分块在不久的将来会被访问),那么它在窗口中剩余的未来访问块将存储在日志缓冲区中
- 如果淘汰被标识为热,将直接被淘汰而不进行任何日志记录,因为在未来访问这个热容器时,它依然可以达到较高的容器利用率
A Lookahead Read Cache论文总结相关推荐
- Linux工作笔记01
<鸟哥的LINUX私房菜(第2版)>基础篇: 第1-10章系统要点整理笔记 ·需要你手上有鸟哥的这本书(第2版),配合起来看比较好. ·笔记包含个人整理的图解,以帮助记忆!如VI命令,快速 ...
- Suphx:微软麻将AI算法以及QA摘要
注:微软研究院的Suphx团队已经对论文进行了详细的解读,这里只是我自己读原论文算法部分的记录,以及对Suphx团队在4月9日的直播中的Q&A部分的摘要. Suphx(Super Phoeni ...
- 3.31 论文笔记 | Cached and Confused: Web Cache Deception in the Wild
Cached and Confused: Web Cache Deception in the Wild(Web 缓存欺骗) Seyed Ali Mirheidari (University of T ...
- 2020年 ICLR 国际会议最终接受论文(poster-paper)列表(四)
来源:AINLPer微信公众号(点击了解一下吧) 编辑: ShuYini 校稿: ShuYini 时间: 2020-02-21 2020年的ICLR会议将于今年的4月26日-4月30日在Mil ...
- Facebook 发布深度学习工具包 PyTorch Hub,让论文复现变得更容易
近日,PyTorch 社区发布了一个深度学习工具包 PyTorchHub, 帮助机器学习工作者更快实现重要论文的复现工作.PyTorchHub 由一个预训练模型仓库组成,专门用于提高研究工作的复现性以 ...
- 超越99.9%人类玩家,微软专业十段麻将AI论文细节首次公布
视学算法分享 转自 | 机器之心 [导读]在去年 8 月底的世界人工智能大会上,时任微软全球执行副总裁的沈向洋正式对外宣布了微软亚洲研究院研发的麻将 AI「Suphx 」.近日,关于 Suph ...
- 是什么让 Spring5 放弃了使用 Guava Cache?
来源:https://albenw.github.io/posts/a4ae1aa2/ 概要 Caffeine是一个高性能,高命中率,低内存占用,near optimal 的本地缓存,简单来说它是Gu ...
- Java AQS论文翻译
描述 大部分在jdk1.5并发包(java.util.concurrent)中的同步器(锁,屏障等)都是使用一个小型框架基于类AbstractQueuedSynchronizer构建的;这个框架对原子 ...
- 收藏 | 知识图谱论文大合集,干货满满的笔记解读(附资源)
来源:PaperWeekly 本文约6134字,建议阅读15分钟. 本文整理了关于知识图谱的多篇顶会论文,带你了解知识图谱的最新进展. ACL 2018 链接:https://www.paperwee ...
- 126篇殿堂级深度学习论文分类整理 从入门到应用 | 干货
如果你有非常大的决心从事深度学习,又不想在这一行打酱油,那么研读大牛论文将是不可避免的一步.而作为新人,你的第一个问题或许是:"论文那么多,从哪一篇读起?" 本文将试图解决这个问题 ...
最新文章
- 《妙解Hibernate 3.X》读书笔记一-Hibernate概述及环境搭建
- Python打印json文件,实现输出
- iOS中nil Nil NULL 区别
- 使用kali的工具攻击win10_使用“媒体创建工具”制作Win10系统安装U盘
- MongoDB PHP数据库查询类
- AppleScript
- Centos下载地址
- redis工具类_SpringBoot 操作 Redis 数据
- php 判断字符串为时间,检查字符串是否为unix时间戳
- Linux下elasticsearch的安装与使用
- Mac如何将DVD转换为MP3格式
- 【C语言】求1000-2000年的闰年,并统计个数
- 前端笔试中两道与节点有关的算法题
- win10删除自定义的背景图片历史记录
- protues仿真闪退问题,亲测有效
- 【测试能力提升】Jira 和禅道数据库分析,方便你写周报、写总结、出报告
- Swift 之横竖屏切换
- 【利用Python进行数据分析——经验篇2】计算微博转发/评论/点赞h指数的Python代码
- 【Unity学习笔记】标签(Tag)和层(Layer)
- buck电路的工作原理