数据库管理222期 2024-07-22
数据库管理-第222期 RDMA&CPU(20240722)
作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Pro: Database(Oracle与MySQL)
PostgreSQL ACE Partner
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、年度墨力之星,ITPUB认证专家、专家百人团成员,OCM讲师,PolarDB开源社区技术顾问,HaloDB外聘技术顾问,OceanBase观察团成员,青学会MOP技术社区(青年数据库学习互助会)技术顾问
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭
又是几天没写文章了,虽然神清气爽,但也手痒。
之前写过几篇和RDMA相关的内容,也做了几版PPT,在PG分会广州站、PG大会和华为稼先社区演讲了相关内容,与很多业内前辈、专家、朋友进行了交流,在这一期融合大家的观点并加入自己的思考进行总结。
1 NIC释放CPU
其实RDMA除了本身在网络层面的高带宽与低延迟以外,在内存至网络过程中的“预处理”的减少,也降低了延迟,同时让CPU不需要去做网络封包解包中的复制操作(当然也能较少操作系统内核层面在网络处理的指令数量)。
结合我之前的文章《数据库管理-第175期 深入探索CPU性能(20240424)》中提到的,CPU核心在同一个时间点只能做一件事情,而在OLTP系统的数据库中,数据库请求应当尽快的获取CPU资源。将网络相关本应使用CPU处理的内容转交给网卡,那么对于CPU来说就相当于释放出了更多的资源,也能更好的服务与数据库本身。
2 时间模型
在与行业专家的沟通过程中,有人提出,在数据同步的场景中,特别是基于日志的数据同步,那么每一次数据同步请求花最长的时间是在日志应用层面,网络传输时间的减少从整体来看收益并不高。
但是结合上一节,首先节省出来的CPU资源可以供数据库处理更多的请求。换一个角度,如果这是一个TPS过万的系统,那么每个请求哪怕只是减少1%(或者对等微秒级,更何况不止1%),那么带来的CPU内时间节省也是十分可观。
当然如果数据库的同步方式是流复制或者物理复制的话,直接对内存块进行更新而不是使用日志重做,那么RDMA带来的优势在单个数据库请求上就会更加明显。
3 不仅是内存
RDMA不仅可以使得内存通过网络“直连”,也可以让PMEM(非易失性内存,比如傲腾)和基于PCIe总线的使用NVMe协议的SSD通过RDMA进行加速。在Exadata除了存储节点向计算节点的快速IO支持,另一方面计算节点尤其是日志写入会多路同时向PMEM和Flash SSD写入,率先完成的即算成功。这一RDMA技术的使用大幅降低了Redo和归档日志的写入延迟,提升了事务操作的写入性能。同时这也节省了存储节点的CPU占用,其CPU可以更好的用于Exadata Storage Software的相关特性。
总结
本期算是RDMA相关的最后一期,一个总结。
老规矩,知道写了些啥。