前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UDP带宽测试参考

UDP带宽测试参考

原创
作者头像
dinghailong
修改2024-01-29 10:10:33
4850
修改2024-01-29 10:10:33
举报

1 背景

在客户业务应用中,采用TCP协议的占据了绝大多数,这方面也有丰富的资料可以参考;但是在UDP协议方面,由于应用较少,相关的资料也很少.TCP的性能调优需要调整一系列参数,而决定UDP通信性能的因素于此截然不同.本文将通过实验给读者做验证.

2 测试说明

2.1 基本结论

这里先给出结论.经过多轮的测试和验证,并结合一些参考文献,目前明确与UDP发包效率相关度最大的几个因素分别为:

1)CPU主频高低(主频越高所能达到的带宽越高)

2)包的大小(9K的大包通信效率会更高)

3)是否绑核(绑核可以提高性能)

2.2 测试过程

问题起源是:客户选择了腾讯云CVM,规格型号为:S5.8XLARGE64.按照官网说明, 内网带宽能力(出+入)应该可以达到12Gbps.但是用UDP测试发现,到达5.9Gbps就开始大量丢包,需要腾讯云平台侧协助排查原因.经过排查发现,决定UDP性能的关键在于CPU主频高低,采用腾讯云计算型产品C6机型做了测试.

具体测试环境如下:

腾讯云C6机型采用:Intel® Xeon® Ice Lake处理器,主频3.2GHz

选用测试机型:C6.2XLARGE16

CPU&MEM:8核+16G

内网带宽能力(Gbps)(出+入):9

操作系统: CentOS stream

首先安装测试工具iperf3,安装命令为: yum install iperf3

安装后运行测试命令如下:

server端运行:

iperf3 -s

client端运行:

iperf3 -c 10.8.0.89 -l 8972 -t 300 -u -b0 -A 4

其中:

-c 10.8.0.89 表示连接去“10.8.0.89”(server服务器地址)

-l 8972 9000(大帧)-28(ipv4 数据包头)=8972

-t 300 测试时间300S

-u udp 数据

-b0 不限带宽

-A 4 绑定到cpu 4上(实际测试时要看哪个核空闲)

这样测试下来可以达到12 Gbps,但是有丢包,因为已经超规格了.

将client端测试参数限定带宽为9G后就没有丢包了,测试参数如下:

iperf3 -c 10.8.0.89 -l 8972 -t 300 -u -b 9G -A 4

将上述规格升级到C6.4XLARGE32

该规格的内网带宽能力(Gbps)(出+入):18

client运行测试

iperf3 -c 10.8.0.89 -l 8972 -t 300 -u -b0 -A 4

此时可以测试到带宽15.5Gbps,但是有少量丢包;如果将带宽限制到10G,则丢包非常少,基本达到稳定状态.

测试命令参考如下:

iperf3 -c 10.8.0.89 -l 8972 -t 300 -u -b 10G -A 4

所以C6机型的CPU处理能力达到10 Gbps应该是没有问题的.

2.3 应用程序优化

应用程序如何提高UDP性能:首先当然是尽可能选择CPU主频高的机型;其次在可能的情况下,应用程序尽量发大包,但是包的大小不要超过8972;再次,应用程序可以用 taskset -c cpu_number ./your_programe 的方式绑核.

在UDP程序的client端和server端运行 mpstat -P ALL 3 查看CPU使用率,情况特别是client端CPU使用率.注意不要将CPU打满,最好控制在90%以下.

下图是C6.2XLARGE16机型的验证情况截图,可以看到带宽基本可以打满到9G,此时丢包率也很低,client端的CPU使用率大致在90%左右.

带宽使用情况如下图所示:

CPU使用情况如下图所示:

3 问题讨论

3.1 UDP参数为何基本不需要调整

用户可能比较疑惑:为了优化TCP通信性能,我们需要调整许多参数,UDP的参数调整为何这样少?这是因为这里选用了高版本的CentOS.首先,基于TCP官方测试的结果表明,高版本的操作系统在网络通信性能上确实比低版本的要更优(详细对比见参考文档).其次这里CentOS Stream版本本身已经做了优化,所以不需要做特别的参数调整.

3.2 C4和C6实测为何UDP性能相差很多?

腾讯云官网显示C4机型的CPU为:

Intel® Xeon® Cascade Lake 处理器,主频3.2GHz,睿频3.7GHz

C6机型的CPU为:

Intel® Xeon® Ice Lake处理器,主频3.2GHz,睿频3.5GHz

C4机型所用的CPU主频不低于C6机型, 睿频甚至还更高,为何UDP测试时性能反而还不如C6机型.这是因为虽然两者的主频都一致,但是在cache缓存以及内存带宽上都有差别,整体性能显然C6更好.两种CPU性能的详细的测试结果可以参考下面的文档.

4 参考资料

[1] UDP Tuning

https://fasterdata.es.net/host-tuning/linux/udp-tuning/

[2] iPerf

https://iperf.fr/

[3]《DEEP DIVE INTO INTEL’S “ICE LAKE” XEON SP ARCHITECTURE》

https://www.nextplatform.com/2021/04/19/deep-dive-into-intels-ice-lake-xeon-sp-architecture

[4] Recent Linux TCP Updates, and how to tune your 100G host

https://fasterdata.es.net/assets/Papers-and-Publications/100G-Tuning-TechEx2016.tierney.pdf

[5] UDP 相关缓冲区调整

https://cloud.tencent.com/document/product/213/57336#receiveBuffer

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 背景
  • 2 测试说明
    • 2.1 基本结论
      • 2.2 测试过程
        • 2.3 应用程序优化
        • 3 问题讨论
        • 4 参考资料
        相关产品与服务
        云服务器
        云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档