Re-architecting I/O Caches for Emerging Fast Storage Devices——论文泛读

ASPLOS 2023 Paper 论文阅读笔记整理

问题

I/O缓存已在企业存储系统中广泛使用,例如使用固态硬盘(SSD)作为硬盘阵列(HDD)顶部的I/O缓存层。随着超快存储设备的出现,例如P5800X Optane SSD、Intel PM,最近的研究建议在I/O密集型应用程序中,将其用作SSD之上的I/O缓存层。本文分析表明,尽管超快存储设备具有巨大的潜力,但现有的I/O缓存体系结构可能会成为企业存储系统的主要性能瓶颈,从而阻碍充分利用设备的全部性能潜力。

现有方法局限性

现有工作已经研究了用超快设备作为I/O缓存,但它们未能为通用存储区域网络(SAN)中的I/O缓存设计提供足够的见解。一些人考虑特殊的用例,例如通过计算节点缓存加速HPC应用程序[7],或者通过基于PMEM或DRAM[6]的缓冲区缓存加速文件系统同步操作。OrthusCAS[45]考虑了一种有限的场景,其中缓存设备与后端设备相比具有相似的IOPS(但延迟较低),并提出了缓存层负载平衡机制。一些研究涉及后端HDD阵列的SSD缓存[4,8,19,19,25,39,43,46]。但以前的工作都没有研究过I/O缓存的最终性能,也没有对存在超快设备的情况下I/O缓存的行为提供任何见解。

本文方法

  • 用于新兴快速存储设备的现有I/O高速缓存的经验分析。本文展示了现有的见解不再适用于具有新兴超快设备(作为I/O缓存)和SSD阵列(作为后端)的现代SAN系统,与传统SAN(HDD阵列顶部的SSD缓存)表现出明显不同的行为。对三个真实I/O缓存的评估表明,在传统SAN中,性能限制为78K IOPS,当切换到现代SAN时,缓存的内部并行性得到释放,可以提供335K到1.5M的IOPS。在传统SAN中,降低缓存命中率会显著降低性能,由于从慢速HDD阵列提供更多请求,但现代SAN中,较低的命中率可能会提供在I/O缓存和快速SSD后端之间负载平衡请求的机会,甚至提高整体性能。

  • 为快速存储设备构建I/O缓存的框架。本文提出了一个实验和分析框架,以系统地了解新兴快速设备上I/O缓存的行为,并提出了一种可扩展的I/O缓存体系结构。框架有五个关键特征:(1)依赖企业级I/O缓存模块而不是简单的缓存模型,对具有内在复杂性的真实系统I/O缓存进行评估;(2)真实测量而不是模拟;(3)结合行业级I/O高速缓存的真实测量和源代码,进行深度体系结构分析;(4)生成综合I/O负载,以覆盖企业工作负载的各种I/O模式;(5)框架在分析生产环境中任何I/O缓存的性能行为时具有很高的适用性。

  • I/O缓存的生产级性能度量。展示了三种开源I/O缓存(OpenCAS、EnhanceIO、DM Cache)在快速SAN环境中的真实性能。

  • 可扩展的I/O缓存体系结构。通过框架提供了一些如何为新兴的SAN存储系统设计可扩展I/O缓存的发现。(1) 如果I/O缓存查找逻辑是由少量线程(例如EnhanceIO缓存[9])实现的,或者使用许多线程但使用简单的粗粒度锁(例如,在DM缓存[1]中锁定用于标签搜索的完整元数据表),则系统IOPS限制为几十万IOPS。但是,将缓存线程的数量与CPU核心相匹配并使用细粒度锁(例如,如OpenCAS[11],每少量感兴趣的缓存条目一个锁)可以提供数百万IOPS的可扩展性。(2) 缺失块的立即升级可能会导致I/O缓存争用,延迟提升一次或多次访问的块(例如,nhit-2策略)提供了利用快速后端SSD阵列的机会,该阵列在具有中等局部性的工作负载中将IOPS提高了2倍以上,并将读取延迟或服务质量(QoS)(即较低的尾延迟)提高了6倍-76倍。(3) 新兴的超高速缓存设备容量较小,并且由于突发写入而充满脏块。提出了绕过写入未命中到后端,即延迟刷新,可以避免缓存争用,并提高整体IOPS(与后端的负载平衡)。而主动缓存刷新以释放缓存块会导致性能下降,例如,由于在受害者块选择过程中锁定。此外,在高命中率工作负载中,延迟刷新将QoS提高了4.3倍。

在工业级存储系统上的实验表明,通过所提出的框架优化配置的I/O缓存架构比非优化架构提供了1.7×-11倍的IOPS和降低2.6×-30倍的99.99%的尾延迟。

总结

针对使用超快存储设备作为SSD的缓存层场景。本文提出了一个实验评估框架,以系统地检查新兴超快设备的I/O缓存模块的行为。提出了几种增加IOPS降低尾延迟的设计思路:(1)将缓存查找线程的数量和CPU核数量匹配并使用细粒度锁。(2)延迟提升未命中的块可以更好的利用后端SSD阵列。(3)延迟刷新缓存中的脏快,绕过缓存直接写入后端SSD,避免缓存争用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/509443.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI绘图初探

摘要 通过SD进行AI图片生成训练学习。 1.键盘佛祖 2.跳舞的佛祖 3.编程佛祖 4.AI美女

Qt实现Kermit协议(四)

3 实现 3.3 KermitRecvFile 该模块实现了Kermit接收文件功能。 序列图如下: 3.3.1 KermitRecvFile定义 class QSerialPort; class KermitRecvFile : public QObject, public Kermit {Q_OBJECT public:explicit KermitRecvFile(QSerialPort *serial, QObject *…

drissionpage设置无头模式new模式

最近朋友介绍,所以在使用drissionpage调试项目。 写代码的时候是在有脸模式写的,一切正常。 但是一旦切换打无头模式,报错,找不到元素什么的。 开始以为是我的元素查找报错,后面用了截图发现,无头模式被…

银河麒麟操作系统Kylin Linux 离线安装Nginx1.21.5

一、查看操作系统版本号 nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.15.v2207.ky10.x86_64Build: Kylin Linux Advanced Server release V10 (SP3) /(Lance)-x86_64-Build20/…

python怎么处理txt

导入文件处理模块 import os 检测路径是否存在,存在则返回True,不存在则返回False os.path.exists("demo.txt") 如果你要创建一个文件并要写入内容 #如果demo.txt文件存在则会覆盖,并且demo.txt文件里面的内容被清空,如…

HarmonyOS NEXT应用开发案例——阻塞事件冒泡

介绍 本示例主要介绍在点击事件中,子组件enabled属性设置为false的时候,如何解决点击子组件模块区域会触发父组件的点击事件问题;以及触摸事件中当子组件触发触摸事件的时候,父组件如果设置触摸事件的话,如何解决父组…

输油管道变电所运维系统发展趋势

摘要:随着现代化技术以及信息化手段的飞速发展,社会已经进入到了全新的发展阶段,这也为自动化技术的发展起到了良好的促进作用,特别是在目前输油管道电网快速发展的背景下,传统的输油管道变电站管理模式与管理系统&…

单元测试——Junit (断言、常用注解)

单元测试 Junit单元测试框架 使用 断言测试 使用Assert.assertEquals(message, 预期值, 实际值); 这段代码是用于在测试中验证某个方法的返回值是否符合预期。其中,"方法内部有bug"是用于在断言失败时显示的提示信息。4是预期的返回值,index…

云原生(七)、Kubernetes初学 + 裸机搭建k8s集群

Kubernetes简介 Kubernetes(通常简称为K8s)是一个开源的容器编排平台,最初由Google设计和开发,现在由Cloud Native Computing Foundation(CNCF)维护。它旨在简化容器化应用程序的部署、扩展和管理。 Kube…

ConcurrentHashMap线程安全机制

put源码: public V put(K key, V value) {return putVal(key, value, false); }/** Implementation for put and putIfAbsent */ final V putVal(K key, V value, boolean onlyIfAbsent) {if (key null || value null) throw new NullPointerException();int has…

python爬虫----了解爬虫(十一天)

🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天…

Qt元对象系统

第二章Qt元对象系统 文章目录 第二章Qt元对象系统1.什么是元对象?2.元对象系统组成3.信号与槽信号和槽的本质绑定信号与槽自定义槽定义槽函数必须遵循一下规则槽函数的类型自定义槽案例 自定义信号自定义信号需要遵循以下规则信号和槽重载二义性问题 4.内存管理1. 简…

PFA(可溶性聚四氟乙烯)弯嘴洗瓶

PFA材质,又称可溶性聚四氟乙烯,是进口的高纯原材料,耐强酸强碱耐腐蚀和各种有机溶剂。 常用规格:30ml/60ml/100ml/250ml/500ml 产品特性 1、耐高低温:使用温度可达-200~260℃; 2、可打刻度,高度透明&#x…

20240330-0402-湖南长沙之旅-橘子洲,五一广场,国金广场,湖南博物馆

0330 复试,无语中,面试中文部分居然也是拉了坨大的 0331 晚上 感觉忙完复试,有种偶然感,跟自己设想的又不一样,感觉方向感真的差,压中得没多少。 刚忙完考试,去五一附近住,还是一…

wpf 自定义命令

自定义命令 MyCommand.cs public class MyCommand : ICommand {private readonly Action<Object> execAction;private readonly Func<Object,bool> changedFunc;public event EventHandler? CanExecuteChanged;public MyCommand(Action<object> execAction…

微信开发工具——进行网页授权

微信开发工具——进行网页授权 微信公众平台设置 1.在首页创建好自己的订阅号 网站&#xff1a;https://mp.weixin.qq.com/ 点击立即注册,在选择订阅号&#xff08;个人创建使用&#xff09; 之后按流程填写后&#xff0c;点击设置与开发-------->基本配置&#xff0c;这…

C++ //练习 11.4 扩展你的程序,忽略大小写和标点。例如,“example.“、“exmaple,“和”Example“应该递增相同的计数器。

C Primer&#xff08;第5版&#xff09; 练习 11.4 练习 11.4 扩展你的程序&#xff0c;忽略大小写和标点。例如&#xff0c;“example.”、"exmaple,"和”Example"应该递增相同的计数器。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工…

泰迪智能科技携手韶关学院共建实训基地

3月28日&#xff0c;韶关学院数学与统计学院院长宋杰、数学与统计学院副院长李少勇、数学与统计学院骨干教师邓四清、邝神芬、付林林莅临广东泰迪智能科技股份有限公司产教融合实训基地开展“韶关学院实习基地”揭牌仪式。泰迪智能科技高校事业部负责人施兴、培训业务部孙学镂、…

parallel linux虚拟机没有root权限

前言 今天刚在parallel上装上linux虚拟机&#xff0c;安装的是Debian发行版。用终端输入命令时&#xff0c;无意间发现当前用户竟然不是root用户&#xff0c;岂有此理&#xff01;众所周知&#xff0c;Linux系统一般安装之后都是默认root用户的&#xff0c;但是可能parallel先…

《系统架构设计师教程(第2版)》第8章-系统质量属性与架构评估-02-系统架构评估

文章目录 1. 一些重要概念1.1 敏感点 (Sensitivity Point)1.2 权衡点 (Tradeoff Point)1.3 风险承担者 (Stakeholders)1.3.1 系统生产者1.3.2 系统消费者1.3.3 系统服务人员1.3.4 其它人员 1.4 场景 (scenarios) 2. 系统架构评估方法2.1 基于场景的架构分析方法&#xff08;SAA…