SpanDB: A Fast, Cost-Effective LSM-tree Based KV Store on Hybrid Storage——论文泛读

FAST 2021 Paper 论文阅读笔记整理

问题

键值(KV)存储支持许多关键的应用和服务。它们在内存中执行快速处理,但通常受到I/O性能的限制。最近出现的高速NVMe SSD推动了新KV系统设计,以利用其低延迟和高带宽。

挑战

当前基于LSM树的KV存储未能充分发挥NVMe SSD的全部潜力。例如,在Optane P4800X上部署RocksDB,相对于SATA SSD,对于50%写入的工作负载,吞吐量仅提高了23.58%。

  • 常见KV存储设计的I/O路径,未充分利用超低延迟的NVMe SSD,特别是对于小写入。例如,通过ext4进行操作的延迟比通过Intel SPDK接口[37]高6.8-12.4倍。这特别影响预写式日志(WAL)[52],WAL对数据耐久性和事务的原子性至关重要,它位于写入的关键路径上,容易成为瓶颈[31]。

  • 现有的KV请求处理假定设备速度较慢,工作流设计嵌入了高软件开销,如果切换到基于轮询的快速I/O,则浪费CPU周期。

  • 新的NVMe接口带有访问限制(例如需要将整个设备绑定为SPDK访问,或者将线程绑定在核心上)。这使得KV设计在利用高端SSD进行不同类型的KV I/O时变得更加复杂,并使同步请求处理变得低效。

  • 像Optane这样的顶级SSD对于大规模部署来说成本较高。由于大规模、写入密集型的KV存储不可避免地包含大量的冷数据,将所有数据托管在这些相对较小且昂贵的设备上,可能超出预算。

本文方法

我们提出了SpanDB,一种基于LSM树的KV存储,将流行的RocksDB系统调整为利用高速SSD的选择性部署。

  • 通过整合一个相对较小但速度较快的磁盘(SD),扩展了对最新数据的写入和读取的处理,同时在一个或多个更大更便宜的容量磁盘(CD)上扩展数据存储。将大部分数据托管在更便宜且更大的SSD上,将LSM树的顶层移到更小更快的NVMe SSD上。

  • 通过SPDK实现快速且并行的访问,以更好地利用SD,绕过Linux I/O堆栈,优化高速的WAL写入。将预写式日志(WAL)移到更小更快的NVMe SSD上。

  • 设计了基于轮询I/O的异步请求处理流水线,去除了不必要的同步,将I/O等待与内存处理重叠,并自适应地协调前台/后台的I/O。

  • 根据实际的KV工作负载战略性地和自适应地对数据进行分区,积极地利用CD的I/O资源,特别是带宽,以缓解写放大。

开源代码:https://github.com/SpanDB/SpanDB

评估显示,SpanDB同时提高了RocksDB的吞吐量高达8.8倍,并将其延迟降低了9.5-58.3%。与为高端SSD设计的KVell相比,SpanDB在更便宜的存储配置下实现了96-140%的吞吐量,延迟降低了2.3-21.6倍。

实验

实验环境:2个20核Xeon Gold 6248处理器,256GB DRAM,CentOS 7.7

数据集:YCSB[16]、LinkBench[6]

实验对比:吞吐量、平均延迟、尾延迟、CPU利用率

总结

针对NVMe SSD和SATA SSD结合的异构存储系统,优化基于LSM-tree的KV存储。作者提出将大部分数据存储在SATA SSD上,将LSM树的顶层和预写式日志(WAL)存储在NVMe SSD上;通过SPDK实现快速且并行的访问,绕过Linux I/O堆栈,优化WAL写入;设计基于轮询I/O的异步请求处理流水线,去除了不必要的同步,将I/O等待与内存处理重叠,并自适应地协调前台/后台的I/O;根据KV工作负载自适应地对数据分区,利用SATA SSD的带宽缓解写放大。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ANN(MLP) 三种预测

目录 介绍: 一、Mlp for binary classification 数据: 模型: 预测: 二、Mlp for Multiclass Classification 数据: 模型: 预测: 三、MLP for Regression 数据: 模型&a…

中科大计网学习记录笔记(五):协议层次和服务模型

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…

《最新出炉》系列入门篇-Python+Playwright自动化测试-10-标签页操作(tab)

1.简介 标签操作其实也是基于浏览器上下文(BrowserContext)进行操作的,而且宏哥在之前的BrowserContext也有提到过,但是有的童鞋或者小伙伴还是不清楚怎么操作,或者思路有点模糊,因此今天单独来对其进行讲…

苹果的ipad可能会缓存vue项目的数据或者pinia数据

如果你发现开发的vue项目在ipad上出现了异常,比如数据出现NaN的情况,或者computed计算属性没生效,或者pinia里面的数据没生效,可能就是ipad浏览器safari缓存了数据导致的,只需要清空safari里面缓存的数据就可以了&…

RT-Thread线程管理(使用篇)

layout: post title: “RT-Thread线程管理” date: 2024-1-26 15:39:08 0800 tags: RT-Thread 线程管理(使用篇) 之后会做源码分析 线程是任务的载体,是RTT中最基本的调度单位。 线程执行时的运行环境称为上下文,具体来说就是各个变量和数据&#xff0c…

Kotlin-集成SpringBoot+MyBatis+代码生成器

目录 一、相关版本 二、Maven因引入相关依赖 三、SpringBoot配置文件 四、代码生成工具 五、实现用户服务模块案例 1、Controller 2、Service 3、Entity 4、Mapper 5、接口测试 一、相关版本 工具版本Idea2022.3.2Springboot2.7.12MyBatis3.5.3.1MySQL8.0.28JDK1.8 …

Python详细教程

一、Python简历 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 Python 是一种解…

MySQL原理(五)事务

一、介绍: 1、介绍: 在计算机术语中,事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务是恢复和并发控制的基本单位。 2、事务的4大特性 原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性…

LaTeX表格:合并单元格、文字旋转90度并居中

在LaTeX表格中,如何使用\multirow合并单元格,并将单元格中的文字旋转九十度,并且居中呢? 首先引入graphicx、multirow和array包: \usepackage{graphicx} \usepackage{multirow} \usepackage{booktabs}然后定义一种新…

DoubleEnsemble:基于样本重加权和特征选择的金融数据分析方法

现代机器学习模型(如深度神经网络和梯度提升决策树)由于其提取复杂非线性模式的优越能力,在金融市场预测中越来越受欢迎。然而,由于金融数据集的信噪比非常低,并且是非平稳的,复杂的模型往往很容易过拟合。…

「递归算法」:Pow(x,n)

一、题目 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000示例 2: 输入:x 2.10000, n 3 输出:9…

使用Arcgis对欧洲雷达高分辨率降水数据重投影

当前需要使用欧洲高分辨雷达降水数据,但是这个数据的投影问题非常头疼。实际的投影应该长这样(https://gist.github.com/kmuehlbauer/645e42a53b30752230c08c20a9c964f9?permalink_comment_id2954366https://gist.github.com/kmuehlbauer/645e42a53b307…

深入了解 Ansible:全面掌握自动化 IT 环境的利器

本文以详尽的篇幅介绍了 Ansible 的方方面面,旨在帮助读者从入门到精通。无论您是初学者还是有一定经验的 Ansible 用户,都可以在本文中找到对应的内容,加深对 Ansible 的理解和应用。愿本文能成为您在 Ansible 自动化旅程中的良师益友&#…

故障诊断 | 一文解决,LSTM长短期记忆神经网络故障诊断(Matlab)

文章目录 效果一览文章概述专栏介绍模型描述源码设计参考资料效果一览 文章概述 故障诊断模型 | Maltab实现LSTM长短期记忆神经网络故障诊断 专栏介绍 订阅【故障诊断】专栏,不定期更新机器学习和深度学习在故障诊断中的应用;订阅

[基础IO]文件描述符{重定向/perror/磁盘结构/inode/软硬链接}

文章目录 1. 再识重定向2.浅谈perror()3.初始文件系统4.软硬链接 1. 再识重定向 图解./sf > file.txt 2>&1 1中内容拷贝给2 使得2指向file 再学一个 把file的内容传给cat cat拿到后再给file2 2.浅谈perror() open()接口调用失败返回-1,并且错误码errno被适当的设置,…

虚拟机Windows Server 2016 安装 MySQL8

目录 一、下载MySQL8 1.下载地址: 2.创建my.ini文件 二、安装步骤 第一步:命令窗口 第二步:切换目录 第三步:安装服务 第四步:生成临时密码 第五步:启动服务 第六步: 修改密码 三…

【服务器搭建】快速完成幻兽帕鲁服务器的搭建及部署【零基础上手】

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 教程详戳:不需要懂技术,1分钟幻兽帕鲁服…

stable diffusion学习笔记——高清修复

ai画图中通常存在以下痛点: 受限于本地设备的性能(主要是显卡显存),无法跑出分辨率较高的图片。生图的时候分辨率一调大就爆显存。即便显存足够。目前主流的模型大多基于SD1.0和SD1.5,这些模型在训练的时候通常使用小…

【Git】01 Git介绍与安装

文章目录 一、版本控制系统二、Git三、Windows安装Git3.1 下载Git3.2 安装3.3 检查 四、Linux安装Git4.1 YUM安装4.2 源码安装 五、配置Git5.1 配置用户名和邮箱5.2 配置级别5.3 查看配置 六、总结 一、版本控制系统 版本控制系统,Version Control System&#xff…

大数据分析|大数据分析的三类核心技术

文献来源:Saggi M K, Jain S. A survey towards an integration of big data analytics to big insights for value-creation[J]. Information Processing & Management, 2018, 54(5): 758-790. 下载链接:链接:https://pan.baidu.com/s/1…