数据库管理197期 2024-05-29
数据库管理-第197期 RDMA扩展测试(20240529)
作者:胖头鱼的鱼缸(尹海文)
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。
除授权转载并标明出处外,均为“非法”抄袭
1 扩展测试的原因
上一期基础测完过后,思考了一下发现了一些问题
- 进程数指定为4,而每台虚拟机仅分配了2颗CPU,不同进程数下性能是否有差异
- 文件大小设置为512MB,略小,如果调大性能是否有差异
虽然软RDMA(Soft-RoCE)性能肯定不如硬件RDMA环境,加上没有针对操作系统和软件进行深度优化,使用fio也没有如perftest(专门针对RDMA的测试工具)测试那么充分利用RDMA特性。而软RDMA环境主要还是用于测试、对接RDMA的,故测试结果均仅供参考。
2 扩展测试参数
这里把文件从512MB增加到2GB,进程数(numjobs)也分别调整至N为1、2、4、6、8:
#顺序写
fio --iodepth=128 --numjobs=N --size=2GB --norandommap --readwrite=write --bs=8k --filename=/mnt/write.txt --runtime=120 --time_based --ioengine=libaio --direct=1 --group_reporting --name=write
#顺序读
fio --iodepth=128 --numjobs=N --size=2GB --norandommap --readwrite=read --bs=8k --filename=/mnt/read.txt --runtime=120 --time_based --ioengine=libaio --direct=1 --group_reporting --name=read
#随机写
fio --iodepth=128 --numjobs=N --size=2GB --norandommap --readwrite=randwrite --bs=8k --runtime=120 --time_based --filename=/mnt/randwrite.txt --ioengine=libaio --direct=1 --group_reporting --name=rand_write
#随机读
fio --iodepth=128 --numjobs=N --size=2GB --norandommap --readwrite=randread --bs=8k --runtime=120 --time_based --filename=/mnt/randread.txt --ioengine=libaio --direct=1 --group_reporting --name=rand_read
3 测试结果
由于截图较多,这里就不贴出对应截图,仅输出对比结果:
这里可以看到,调整fio的测试参数后,顺序读写的场景下RDMA的性能大幅弱于TCP/IP,这应该就是软RDMA和虚拟化带来的问题。当然在随机读写场景下,也就是数据库的运行场景下,即便是软RDMA还是能带来不俗的性能提升,尤其是在更多进程占用CPU时,RDMA绕过CPU及操作系统内核的特性发挥出了其优势。
总结
经过扩展测试,软RDMA性能发挥并不尽如人意,并没有达到前一期中的大规模领先,测试结果均仅供参考。
老规矩,知道写了些啥。