能否通过RDMA技术实现降低大量数据写入时TIKV节点CPU使用率,降低集群负载

【TiDB 使用环境】生产环境
【TiDB 版本】V7.1.6
【操作系统】centos7.9
【部署方式】tiup集群部署,VMware虚拟化环境
【集群数据量】1
【集群节点数】tidb节点5 tikv 节点 17 pd 节点 5
【问题复现路径】每次上数据时,集群整体CPU平均负载至少60%
【遇到的问题:问题现象及影响】 得限制上数据并发数,影响上数据效率,目前实际数据量大概10T,三副本
【资源配置】

RDMA 不能解决这问题吧。更高的网络传输速度和带宽,我更倾向认为会让问题加剧


我是希望通过RDMA降低写入时CPU开销,传输速度,带宽不是问题,全NVME磁盘,网络带宽不够可以提高,现在的主要问题是CPU瓶颈,不降低CPU开销,我加机器也没多大用

整体 CPU 平均负载是怎么看到的?发一下截图?

我们最近调整了下上数据的方式,负载降到了40%左右


只有在上数据的时候负载高,常态的负载很低

其实这个问题加cpu比rdma强太多了。如果只是上数据,qps不高,cpu干到80%都可以的

TiKV 写入时,CPU 开销主要分两部分:

  • 本地处理:数据编码、RocksDB 写入(memtable 插入、compaction 准备),这部分 RDMA 无法优化;
  • 网络传输:Raft 日志复制(Leader 向 Follower 同步写入日志),传统 TCP/IP 需 CPU 处理协议栈(封装、校验、拷贝),RDMA 可绕开 CPU 直接通过硬件完成数据传输,节省这部分 CPU 资源。

RDMA 可作为辅助优化手段降低 TiKV 集群的网络传输类 CPU 开销,但不能替代核心优化 若你的集群已出现 “写入时 CPU 高且主要是网络传输导致”,且硬件支持 RDMA,可尝试部署;否则优先通过优化写入模式和 TiKV 配置降低负载。

可以看下这个文章: