前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >云原生数据库砸了 K8S云自建数据库的饭碗--- CXL内存技术

云原生数据库砸了 K8S云自建数据库的饭碗--- CXL内存技术

作者头像
AustinDatabases
发布2025-03-03 13:23:10
发布2025-03-03 13:23:10
120
举报
文章被收录于专栏:AustinDatabases

紧随时代脉搏,打破知识束缚,今天的主题什么是CXL。

随着云数据库时代的来临,一个DBA的知识层次可以拉开水平的另一个阵地,在云。基于我已经在云上打拼了4年,虽然不是先行者,但我是一个开放思维的DBA的先行者,2月26日PolarDB大会其中有一个主题。虽然因为家里有事情,去不了,但学习知识和不落后,要争先的精神驱使着我,还是要把这段知识补上。

image
image

image

image
image

1 什么是CXL

CXL 是一种在处理器和设备(如内存缓冲区)之间建立互连的开放行业标准协议,与其他互连协议相比,CXL 具有高带宽和低延迟的优势,且其带宽可随 PCIe 带宽扩展。CXL 的关键优势在于它在 CPU 缓存和基于 CXL 的内存之间提供内存语义和缓存一致性支持。CPU 可以像处理近内存一样处理远内存中的数据,简化了分散内存资源的管理。

为什么要引入这个协议,PolarDB为什么要用这个协议?

在传统的分布式数据库系统中,内存资源分散在不同的机器、多个 PCIe 内存设备和不同的 NUMA 节点上,管理这些分散的资源非常复杂。CXL 的出现,使得统一管理近内存、扩展内存、池化内存和共享内存成为可能,CXL 允许构建大容量内存缓冲池,从而提高数据库系统的内存利用效率和性能。通过 CXL,CPU 可以有效地缓存远内存,从而减少对速度较慢的磁盘的依赖,CXL 支持动态内存分配,允许在不重启主机的情况下,将远内存资源动态地重新分配给不同的主机。这种灵活性使得 DBMS 可以根据每个查询的不同内存需求动态调整内存分配,从而优化资源利用率并提高整体性能。

注意上面这段中的一句话,我把他摘出来:这种灵活性使得 DBMS 可以根据每个查询的不同内存需求动态调整内存分配。

那么为什么这样的POALRDB 会快的原因? (听话听音)

CXL 的高带宽和动态内存分配为分布式计算-内存-存储分离 DBMS 带来了超快速故障恢复的希望。这包括在发生故障时快速重组内存资源,并从远内存中的备份恢复数据,从而减少对较慢的基于磁盘的日志恢复的依赖。CXL 协议的低延迟、高带宽为针对远内存数据定制的索引设计提出了新的要求,可以充分利用新硬件设计的优势,提高索引管理的效率和可扩展性,从而提高 DBMS 的整体性能,CXL 提供的共享缓冲池为云原生数据库中进一步的计算-内存-存储分离提供了可能,尤其是在支持高效事务处理和复杂数据分析方面,通过支持跨主机边界的细粒度内存共享,CXL 显著降低了千字节级数据页更新处理过程中的通信延迟(降至亚微秒级)。

image
image

那么引入了这样的协议的云原生数据库有什么挑战? (听话听音)

CXL 引入了多层内存结构,包括近内存、远内存和共享内存,构建一个有效管理这些不同类型内存的混合缓冲池是一项挑战。不同内存层具有不同的访问特性(容量、延迟、带宽),如何有效地将数据分配到不同的内存类型以充分发挥每种内存的潜力是一个关键问题。例如,扩展内存虽然带宽较大,但访问延迟比近内存慢得多,可能成为性能瓶颈。

虽然 CXL 实现了动态内存分配,但在 HTAP(混合事务/分析处理)等工作负载中,缓冲池的内存需求波动很大,准确预测内存需求是一个挑战。此外,在动态内存分配过程中,内存重新分配、数据持久化、数据加载和信息同步等环节都会引入延迟,如何最小化这些延迟对用户体验的负面影响是一个需要解决的问题。

image
image

利用 CXL 提供的远内存进行快速故障恢复,需要设计双检查点机制,即在远内存和磁盘日志中设置检查点,这增加了数据管理的复杂性,并对数据一致性提出了更高的要求。此外,如何有效地同步共享内存中的脏页,以及在 CXL 和持久内存(PMEM)环境下实现强制提交(force commit)也是需要解决的挑战。

CXL 提供的低延迟、高带宽为索引设计带来了新的可能性,但也提出了新的要求。例如,如何为 B+ 树节点进行内存分配,如何动态地为数据修改分配内存,以及如何在结构更新过程中增强索引的并发性,都是需要认真考虑的问题。

与 RDMA 的差异。虽然 RDMA(Remote Direct Memory Access)协议也支持共享内存和计算-内存分离架构,但 CXL 在带宽、延迟、数据访问粒度、数据一致性和共享内存管理等方面与 RDMA 存在显著差异。这意味着基于 RDMA 协议的数据组织和算法可能不完全适用于基于 CXL 协议的内存管理,需要重新设计。CXL 提供的缓存一致性是 RDMA 所不具备的,因此,基于 CXL 协议的 DBMS 架构、查询优化和事务处理需要重新设计,以充分利用其先进特性。

image
image

聪明的人看完上面的信息,应该已经对云原生数据库的优缺点或者系统的难点有了清晰的一部分认知了,可以总结出一句话。

那么POALRDB 利用CXL技术,带来了什么优势:

Serverless,对serverless,PolarDB Serverless 能够独立调整每个资源池的大小,这是通过 CXL 提供的内存解耦实现的,同时提供了乐观锁和索引的感知预先获取资源的优化技术,这增加了性能和可扩展性,完全实现了内存限制的解耦,这才是实现真正的弹性的根本,这也是大会上三层分离的基础,计算,内存,存储(实际上三层最难的分离是在内存的分离,serverless 目前还是CPU和内存绑定,后期就全部分离了,要怎么弹就怎么弹的时代很快会到来)

注: CXL 助力云原生数据库的四大特点

动态内存分配:CXL 2.0 规范通过单层 CXL 交换机的设计,实现了多个主机和多个内存扩展设备之间的连接,其关键创新在于引入了动态内存分配功能,允许跨主机分配和取消分配内存资源,而无需系统重启6。

Fabric Manager 实现增强的可扩展性:CXL 3.0 规范通过使用 Fabric Manager 集成 CXL 交换机,进一步扩展了边界,从而实现了增强的可扩展性和低延迟7。CXL Fabric Manager 有助于网络环境的设置、部署和修改,通过基于端口的路由管理多达 4096 个节点(包括 CPU 主机和 CXL 内存设备)7。

增强的缓存一致性:CXL 3.0 的一个主要增强功能是其能够反向失效主机缓存8。维护主机管理设备连接内存(HDM)的一致性被称为增强的一致性,取代了先前几代的基于偏置的一致性8。

全局集成内存(GIM):最新的 CXL 3.1 规范主要增强了结构连接功能,引入了全局集成内存(GIM),以促进多个主机之间的通信,并改进结构解码和路由功能

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

本文分享自 AustinDatabases 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档