前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >傲腾️™PMem + SPDK为百度用户态存储引擎注入新思路

傲腾️™PMem + SPDK为百度用户态存储引擎注入新思路

作者头像
冬瓜哥
发布于 2021-07-22 02:42:34
发布于 2021-07-22 02:42:34
1.1K0
举报
文章被收录于专栏:大话存储大话存储

1 存储之痛

最近几年存储介质得到了快速发展,单位存储介质的性能越来越高,原来 HDD 机械硬盘读写速度不足 100 IOPS,如今 NVMe SSD 可以达上百万 IOPS,时延从毫秒压缩到微秒,系统的性能瓶颈也由存储硬件本身逐渐转移到网络及处理器上,传统文件系统、调度器等方法无法充分发挥新存储介质的性能,成为存储系统的新瓶颈。尤其对于大型互联网后端系统,这些瓶颈不仅会对业务系统带来低效率,而且会影响到系统可靠性。

比如,元数据对性能瓶颈更加敏感。元数据在存储系统中大多是为索引而存在的。当数据写入后,有效期内数据几乎很少移动,但是元数据却需要频繁整理和移动。每次数据的变动,都会改变索引结构,因此需要频繁、及时的更新索引,以保证数据的高效和正确。在现有的索引结构中,索引的重建和重组,会面对有效索引记录、失效索引标记、索引空间回收等问题;在索引重建时还会出现时间开销,这些消耗,在复杂的存储系统里会被逐渐放大,影响整个系统的性能。

与此同时,传统内核态存储系统中的几个弊端,也使系统的维护难度加大,运维成本增加。首先在业务量较大的场景下,内核态存储容易造成 CPU 资源消耗过高。这是因为在内核中,CPU资源是抢占式调度,每个进程都需要等待 CPU 空闲时才能调度处理,因此业务量增大、进程增多 CPU 资源就会被过高占用。

其次在存储系统工作中,会出现因为单节点故障而造成整个系统停摆的风险;在内核态系统中,单机如果出现内核错误或漏洞,需要停掉主机,寻找原因修复补丁或升级内核,主机下线会对运行在上层的业务造成严重影响。第三在内核的日常维护中,如需升级内核组件,需要下线主机,停止主机上的所有业务,对内核或者驱动进行升级;除此之外内核或驱动的升级,有可能会给系统带来新的系统性风险。这些问题给系统的维护带来极大的不便,运维成本也显著升高。

2 百度妙招

为了实现存储系统的可靠性、扩展性、高性能,低运维成本,百度单机引擎开发团队推出了基于英特尔® 傲腾™ 持久内存和存储性能开发套件的用户态存储引擎,用以满足各业务产品对数据存储的挑战。新单机存储引擎支持 KV、file、block 等多种应用接口,可应用于块存储、文件存储对象存储等多种应用场景,满足不同业务的存储需求。该单机引擎还研发了创新的存储计算分离结构,领先的分布式架构,灵活的数据分层、用户态软件栈、本地/远程多种存储设备的兼容等等。

PMem缓存层

研发团队选择使用英特尔® 傲腾™ 持久内存作为引擎缓存层的存储介质。英特尔® 傲腾™ 持久内存(以下简称 “持久内存” 或者 “PMem”)是一种颠覆传统的内存产品,基于 3DXpoint 介质,具有高速、低延迟、高性价比、大容量、持久数据保护、高级加密等优势。它改变了原有的存储层次结构,可以提供类似于 DDR 内存(简称“DRAM”)的性能,并且可以像 SSD 那样持久地存储数据,同时持久内存比 DRAM 容量更大,价格也更为便宜。

从新引擎的工作线程中我们看到,在系统读写的过程中会频繁的修改和整理索引,由此引发的索引重建、重组等时间开销会大量占用系统资源。使用应用直接访问模式下的持久内存作为缓存层,将索引数据存储在持久内存上,通过持久内存开发工具包(PMDK)进行内存调度,可以加速元数据的读写,最大程度减少资源损耗。

在传统的存储系统中,Buffer 会被写入文件系统的 Page Cache中,Page Cache 的空间大小直接影响系统写的性能。如果存储系统碰到突然爆发的写入压力,Page Cache 受空间所限,堆积在内的数据还未来的及写入磁盘,新增加的数据无法写入 Buffer,最终导致数据延迟性能下降。而在新单机引擎中,Buffer 被写入大容量的持久内存中,数据的读写能力与 DRAM 相近。

为了验证实际效果,研发团队对写入 Buffer 数据进行了测试。随机写入一个 4K 的数据,通过工具统计的延迟是 4.5μs,如下表所示,图中 NTstore 为写入持久内存的时间消耗,大约只有1μs,其余时间消耗都为软件其它开销;如果将 PMem 换成内存,延迟大约 1μs 的1/10,100ns,4K 数据写入的时间在 3μs 左右,与PMem 延迟相差不大。

性能相近,总拥有成本却降低很多。相同的成本投入,PMem 的空间是 DRAM 的三倍,因此可以缓存更多数据,提高存储系统性能;此外通过 PMem 缓存数据后,会以更加合理的方式存盘,可以有效提高后端存储设备的 IO 效率。

3 PMDK加持好马配好鞍

持久内存设备遵循 SNIA 编程模型,同时英特尔为其提供了一套持久内存开发套件 PMDK。PMDK 可以帮助应用来直接访问持久内存设备而不需要经过文件系统的页高速缓存系统、系统调用和驱动,减少了许多流程,避免了数据输入/输出(I/O)产生的开销,大大降低数据延迟。

新单机引擎,使用持久内存存储元数据、缓存和索引,通过结合SPDK 提供的多种后端存储支持,提供不同的解决方案。SPDK2 提供了一组工具、库和方案,用于编写高性能和可扩展的用户态存储应用程序。

它通过使用多种关键技术来实现高性能和高扩展,诸如将一些驱动程序移至用户空间,避免了系统调用,并允许从应用程序进行零拷贝访问,通过无锁化、消息机制和异步编程来实现高性能应用框架,同时提供统一的用户态通用块设备来高效管理不同的存储后端设备。

使用 SPDK 之后,用户态的驱动通过轮询硬件而不是依赖中断来完成,这可以降低总延迟和减少延迟差异,并且和内核驱动相比,在每个 CPU 内核的 IOPS 上具有更明显的性能优势;此外,SPDK 具备 I/O 路径的无锁高性能模式,避免了所有在 I/O 关键路径中的锁,而是依靠消息传递在多个线程中共享资源,从而提高了并行性。

SPDK 可以高效整合英特尔的 CPU 处理、存储和网络技术,将高性能存储介质的性能潜力充分发挥出来,同时高性能框架提供统一的设备管理来支持多种多样的存储后端。

4 性能测试

测试中分别对使用持久内存的新单机引擎,纯 NVMe 和纯 HDD 的传统引擎进行随机 16K 数据的读写测试(QD为线程数量),从测试结果可以看出,新单机引擎的读写性能提升了10-20倍,在性能提高的同时,控制了总体拥有成本。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话存储 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS
Blobstore是位于SPDK bdev之上的Blob管理层,用于与用户态文件系统Blobstore Filesystem (BlobFS)集成,从而代替传统的文件系统,支持更上层的服务,如数据库MySQL、K-V存储引擎Rocksdb以及分布式存储系统Ceph、Cassandra等。以Rocksdb为例,通过BlobFS作为Rocksdb的存储后端的优势在于,I/O经由BlobFS与Blobstore下发到bdev,随后由SPDK用户态driver写入磁盘。整个I/O流从发起到落盘均在用户态操作,完全bypass内核。此外,可以充分利用SPDK所提供的异步、无锁化、Zero Copy、轮询等机制,大幅度减少额外的系统开销。它们之间的关系如下所示(以NVMe bdev为例):
Linux阅码场
2019/06/05
5.1K0
打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS
怎样让数据库再快一点?
| 作者 张鹏义,腾讯云数据库高级工程师,曾参与华为Taurus分布式数据研发及腾讯CynosDB for PG研发工作,现从事腾讯云Redis数据库研发工作。 ---- 存储体系结构 回顾一下计算机的存储体系结构。正如下图所示,计算机存储设备根据访问速度及容量等形成了一个金字塔形的层次结构。在这个层次结构中,从上到下,设备的访问时延越来越大,容量也越来越大,而每字节的造价也越来越便宜。在这个层次结构中,每一层都被看作是其下一层次的缓存。 同时在这个层次结构中存在一个明显的分界线,如图中绿色的虚线。在
腾讯云数据库 TencentDB
2020/10/09
2K0
如何用存储黑科技解决推荐系统的“信息过载”?
这些数字来自某移动互联网企业在一次技术交流活动上对自家数据处理能力的介绍。先不说EB,就说说1PB是什么概念吧?大约是2亿张照片或2亿首MP3音乐,如果一个人不停地听这些音乐,能听上1900年。
大数据文摘
2021/07/06
5340
SPDK介绍
SPDK是一套存储开发套件,专门为专用设备(NVME)设计。全称是The Storage Performance Development Kit。SPDK提供了一系列的高性能、可扩展、用户态下面的工具和库。它有如下三个优势
用户4700054
2022/08/17
1.9K0
SPDK介绍
有消息队列的地方,就有英特尔傲腾持久内存
当消息队列遭遇英特尔傲腾持久内存会碰撞出怎样的火花?傲腾持久内存会对消息队列应用带来哪些革命性的变化。在2022存储峰会分布式存储论坛上,英特尔公司傲腾产品事业部云软件架构师胡风华进行了详细解读。
冬瓜哥
2022/05/29
7670
TiKV + SPDK,探索存储的性能极限
近日,由 TiDB 社区主办,专属于全球开发者与技术爱好者的顶级挑战赛事——TiDB Hackathon 2020 比赛圆满落幕。今年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之最,共有 45 支来自全球各地的队伍报名,首次实现全球联动。经过 2 天时间的极限挑战, 大赛涌现出不少令人激动的项目。
CNCF
2021/03/15
6300
TiKV + SPDK,探索存储的性能极限
让数据离计算更近,成为打造未来的存储基础设施的关键!
在数据世界里,时间同样是恒定的。人们希望更快的数据流动和更智能的数据策略来提升数据利用价值。
冬瓜哥
2019/06/21
9500
让数据离计算更近,成为打造未来的存储基础设施的关键!
百微秒时延,腾讯云云硬盘CBS架构深度解密
导语 | 随着云计算的逐步普及,越来越多用户在云上部署其核心业务。大型数据库、高性能 NoSQL、日志检索、DevOps 等 IO 密集型场景对云上存储提出了更高的要求。本文是对腾讯云存储专家工程师王银虎在云+社区online的分享整理,介绍腾讯云云硬盘 CBS 团队在高性能实践方面所做的软硬件技术革新和演进,希望与大家一同交流。
腾讯云开发者
2020/09/21
6.6K0
TiKV + SPDK,探索存储的性能极限
近日,由 TiDB 社区主办,专属于全球开发者与技术爱好者的顶级挑战赛事——TiDB Hackathon 2020 比赛圆满落幕。今年是 TiDB Hackathon 第四次举办,参赛队伍规模创历届之最,共有 45 支来自全球各地的队伍报名,首次实现全球联动。经过 2 天时间的极限挑战, 大赛涌现出不少令人激动的项目。
PingCAP
2021/03/10
7370
聊聊daos高性能分布式存储
简介 现在大部分应用的IO模型会增加元数据和不对齐的数据碎片比例越来越大,同时传统的存储软件引入的对齐约束和通过大量延迟导致针对这些类型的IO应用越来越差的性能。大容量持久化内存(SCM)和高速硬件结构两者结合的,为重新定义存储规范和高效支持现在的IO密集型应用提供最佳的机会 基于SCM需要重新考虑完整的存储栈的设计,为了释放这些新硬件的性能,新的软件栈采用字节粒度无共享的接口,并且它能够支持大规模分布式存储。DAOS是基于SCM和NVMe的全新的IO架构,通过fabric全局访问对象的地址空间,保证性能的
用户4700054
2022/08/17
3.6K0
聊聊daos高性能分布式存储
【重识云原生】第三章云存储3.2节——SPDK方案综述
SSD正在迅速扩展它在数据中心中的份额,同旋转介质(HHD)相比,当前的闪存在性能、功耗和机架密度上具有明显优势,随着下一代媒介进入市场,这些优势将持续扩大。
江中散人_Jun
2022/04/11
5K0
【重识云原生】第三章云存储3.2节——SPDK方案综述
突破内存墙能带来什么?看火山引擎智能推荐服务节支增效实战
千行百业的数字化、智能化转型正如火如荼,IT基础设施资源的供求矛盾也日益突出,这尤其体现在AI和大数据的应用上。
IT创事记
2022/12/21
7610
突破内存墙能带来什么?看火山引擎智能推荐服务节支增效实战
深度解读 RocketMQ 存储机制
RocketMQ 实现了灵活的多分区和多副本机制,有效的避免了集群内单点故障对于整体服务可用性的影响。存储机制和高可用策略是 RocketMQ 稳定性的核心,社区上关于 RocketMQ 目前存储实现的分析与讨论一直是一个热议的话题。近期我一直在负责 RocketMQ 消息多副本和高可用能力的建设,和大家分享下一些有趣的想法。
从大数据到人工智能
2022/09/08
7650
利用英特尔® 傲腾™ 持久内存,优化企业数据库性能 | 傲腾大师声音
采用合适的存储解决方案是打造高效数据库的基础。在传统的数据库存储金字塔结构中,DRAM时延低,速度快,有利于加快计算速度,但价格相当昂贵且容量有限。块存储虽然容量大、价格便宜且具备数据持久性,但数据传输速度较慢。由于低数据延迟和高数据容量无法在同一个设备中兼得,因此企业需要在各个因素之间寻求微妙的平衡,找到适当的存储和内存设备组合来满足需求。
用户5498443
2021/09/17
8390
傲腾会是NAND的接班人么?
作为第一个大规模商用的、最有希望接续NAND的下一代存储介质,最近这两三年Intel在傲腾上的投入不可谓不大。Intel甚至在2020年10月宣布出售NAND业务产品线。Intel如此有把握和决心,让我不得不感觉NAND在PLC之后的路,会非常艰难。
冬瓜哥
2021/07/22
5520
3个命令行就能给机房省电?用户态存储开启节能新思路
位于南极洲西南部的斯怀茨冰川是地球上最宽的冰川之一,它又被科学家们称为“末日冰川”(doomsday glacier)。因为它一旦崩塌,将导致全球海平面急剧上升4.87米。全球变暖是“末日冰川”崩塌的罪魁祸首。为了缓解全球变暖和气候变化的负面影响,构建可持续的技术基础设施,降低碳排放就成为了IT厂商追逐的目标。
存储小白
2023/02/16
4990
利用Intel傲腾存储制定更智能的数据策略
滴水成河,积水成渊,许多企业今天面临的存储危机其实是数据字节累积的结果。数据的增长表现在三个不同方面:
冬瓜哥
2019/06/10
5300
利用Intel傲腾存储制定更智能的数据策略
从优化持久谈起,如何让NoSQL数据库更加灵活易用?| Q推荐
作者 | 张俊宝   大数据时代,数据体量和复杂性对于数据库提出更高要求,仅依靠关系型数据库难以处理这些数据,非关系型数据库得以快速发展壮大。主流的的非关系型数据库有 Redis、Memcache、MongoDB、HBase 等。 为了满足广泛的业务场景对于数据库提出的高可用、高效率、高可扩展性的要求,Redis 的应用场景也早已突破了缓存的范畴,并提供了持久内存的解决方案。业务数据量爆炸式增长,Redis 的内存消耗在不断增加。这意味着,作为一个基于内存的数据库,Redis 的内存是否被高效合理的利用至关
深度学习与Python
2023/03/29
5010
从优化持久谈起,如何让NoSQL数据库更加灵活易用?| Q推荐
肿瘤分析从一周变7小时,至强平台如何助力转化医学「与时间赛跑」?
大数据文摘出品 2019年底的新冠疫情,给全世界按下了暂停键。 但一场未被人注意到的比赛,才刚拉开序幕。 2020年1月,新冠病毒人传人的事实得到确认,2月,德克萨斯州麦克莱伦的研究小组的实验证明,新冠病毒的强度被证明至少是SARS的10倍…… 引起疫情的原因是什么?重症患者后期缘何会出现低氧血症?病毒感染的靶细胞是什么?要从日渐攀升的确诊数中拯救更多人,通过病毒基因测序来了解这种疾病显得刻不容缓。为了探索这些问题的答案,中国的医学专家们在新冠肺炎疾病病因学方面展开了深入探索。 2020年大年初三,面对全然
大数据文摘
2022/08/26
2530
肿瘤分析从一周变7小时,至强平台如何助力转化医学「与时间赛跑」?
基于PMEM的PG数据库Memhive白皮书
PG是一个广泛应用的开源数据库,从财务管理、地理信息、水务系统到气象服务等等。可部署在本地,也可以部署在云上。PG不仅在事务处理中有强大能力,也支持分析型的复杂查询语句。随着用户群的快速增长,PG受到的压力超出了最初的设计目标,导致需要大规模扩展PG。本文讨论了Memhive如何结合PM对扩展PG。
yzsDBA
2020/10/25
4860
推荐阅读
相关推荐
打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档