数据库管理194期 2024-05-26
- 数据库管理-第194期 网络加速RDMA初探(20240526)
- 1 概念
- 2 发展
- 3 使用
- 总结
数据库管理-第194期 网络加速RDMA初探(20240526)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
PostgreSQL ACE Partner
青学会(青年数据库学习互助会)外部顾问
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家、年度墨力之星,ITPUB认证专家、专家百人团成员,OCM讲师,PolarDB开源社区技术顾问,OceanBase观察团成员
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
之前在几场现场演讲和直播过程中提到过RDMA,也有很多人在问这么一个技术。这是一个很早就用在Oracle Exadata一体机上的网络技术,可以说一体机强大的性能一部分原因源自于此。从本期开始,将通过若干期内容分享,深入RDMA网络,探究其在数据库层面的应用。
1 概念
RDMA,Remote Direct Memory Access,可译作远程直接内存访问,是一种不经由操作系统从一台计算机到另一台计算机直接访问内存的技术。由于无需经过操作系统内核对网络包进行封装,可以节省大量CPU资源占用,同时也提供了高吞吐、低延迟网络,尤其适用于大规模并行计算机集群。
RDMA支持网络适配器直接通过网线将数据传输至应用内存或从应用内存直接传输至网线的零拷贝(Zero-copy)网络传输。这种传不再需要应用程序内存和操作系统数据缓存的数据复制拷贝操作。这种传输不需要CPU、缓存或上下文交换参与,并且传输可以与其他系统操作并行执行。使用RMDA可以有效减少消息传输的延迟。
但是,这种策略也会出现目标节点不会受到请求完成的通知(单向通信)等相关的一些问题。
2 发展
截止2018年,由于RDMA功能的不断完善与增强,在网络基础设施上的优异性能表现,获得了广泛的认可。例如:
- RDMA over Converged Ethernet (RoCE)可以在有损或无损的设施上运行
- iWRAP能够在物理层使用TCP/IP作为传输实现以太网RDMA
这使得RDMA将性能和延迟优势与低成本、标准化解决方案相结合。RDMA联盟和DAT Collaborative在RDMA协议和API的开发指定中发挥了关键通。
目前基于RDMA的高带宽网络设备,速度已达到100Gbit/s以上。IBM、红帽、Oracle等软件供应商已在最新产品中支持这些API。
硬件供应商已经开始开发基于RDMA的更高容量网络适配器,据报道其速率为100 Gbit/s。IBM、Red Hat和Oracle Corporation等软件供应商在其最新产品中支持这些API,截至2013年,工程师已开始开发通过以太网实现RDMA的网络适配器。Red Hat Enterprise Linux和Red Hat Enterprise MRGhave都支持RDMA。Microsoft通过SMB Direct在Windows Server 2012中支持RDMA。VMware的ESXi产品自2015年起也支持RDMA。
常见RDMA包含虚拟网络架构(Virtual Interface Architecture)、RDMA over Converged Ethernet (RoCE)、InfiniBand、Omni-Path和iWARP.
3 使用
应用程序访问控制可以通过最初设计用于InfiniBand的协议来使用RDMA的API,这些API可以用于任何底层RDMA实现。使用发送和完成队列,应用程序通过将工作队列条目(work queue entries,WEQs)提交到提交队列(submission queue,SQ)并从完成队列(completion queue,CQ)获取响应通知来执行RDMA操作。
RDMA可以通过可靠连接(Reliably Connected,RC)和不可靠数据包(Unreliable Datagram,UD)传输协议来进行数据的可靠或不可靠传输。前者有点事不丢失请求,而后者处理多个连接时则需要更少的队列对。这是因为UD是无连接的,允许单个主机使用单个队列与任何其他主机通信。
RDMA可以分别通过可靠连接(RC)和不可靠数据报(UD)传输协议可靠或不可靠地传输数据。前者的优点是保留请求(不会丢失请求),而后者在处理多个连接时需要更少的队列对。这是因为UD是无连接的,允许单个主机使用单个队列与任何其他主机通信。
总结
从前面的介绍可见,RDMA作为一款优秀的低延迟高吞吐量网络技术,是可以极大提升网络性能。后面将深入Exadata对RDMA的使用、基于RDMA技术的配置实操以及RDMA在数据库层面的使用愿景深入了解RDMA。
老规矩,知道写了些啥。