0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何解决MPSoC万兆以太网应用中UDP接收丢包问题

XILINX开发者社区 来源:XILINX开发者社区 2023-06-14 10:10 次阅读

本文作者:AMD 赛灵思工程师GaofengZhao

本文介绍如何使能 Linux 网络协议栈中的 RFS(receive flow steering)功能以优化 MPSoC APU 的并行处理能力,解决丢包问题。

问题描述:

在测试 ZCU102 PL 10G Ethernet with MCDMA 设计的性能时,遇到 UDP 接收丢包率很高的情况,测试使用的工具是 iperf3。

测试过程:

Board side:在 core1~3 上各开一个 iperf3 服务端用于收包,命令如下:

ec08a6f0-09d9-11ee-962d-dac502259ad0.png

Server side:使用与 zcu102 用光纤相连的服务器发送 UDP 帧,命令如下:

ec1e82f4-09d9-11ee-962d-dac502259ad0.png

双方的网卡都工作在 MTU1500 模式下,故数据段长度设为 1472B,总带宽暂设为 2400M。

ec358cd8-09d9-11ee-962d-dac502259ad0.png

测试结果如上图所示,丢包率超过了百分之十,故实际传输速度也达不到设定的带宽,使用 mpstat 命令观察 CPU 使用状况,发现接收工程中 CPU0 的软中断占用达到93.3%。

解决方案:

使用 RFS 接收流导向,RFS 是 Linux 网络协议栈提供的一项辅助性功能,RFS 的目标是通过将数据包在内核中的处理引导到使用该数据包的应用程序线程对应的 CPU 来提高数据缓存的命中率,详情可参考 Linux 内核文档https://www.kernel.org/doc/html/latest/networking/scaling.html

在本文的测试中 Board side 上运行了三个 iperf 服务端在三个CPU 上,RFS 可以将发给某个服务端的数据包的部分处理工作交给这个服务端对应的 CPU 执行,以此平衡工作负载。
按照文档中的说明,rps_sock_flow_entries 设置为32768,本文使用的设计中 MCDMA 共有16个接收通道,所以 rps_flow_cnt 为32768/16=2048,另外共开启了三个 iperf 服务端,所以暂时只设置 rx-0~rx-2,综上,执行命令如下:

ec62e43a-09d9-11ee-962d-dac502259ad0.png

重新测试后结果如上图所示,丢包率大大降低,实际传输速度也达到了设定值,使用 mpstat 命令监控传输期间的 CPU 状况,发现 CPU0 的软中断占用时间降低,而 CPU1~3 的软中断占用升高,可以看出实现了负载的分配,但是从总体来看,四个 CPU 的总负载升高,说明 RFS 还是有一定的额外工作开销。

总结:

使用 RFS 可以一定程度上解决 MPSoC 10G 以太网应用(使用 MCDMA 时)中的 UDP 接收丢包问题,但是会产生额外的 CPU 开销,如果丢包率在接受范围内可以选择不开启。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5419

    浏览量

    171647
  • Linux
    +关注

    关注

    87

    文章

    11298

    浏览量

    209391
  • Xilinx
    +关注

    关注

    71

    文章

    2167

    浏览量

    121341
  • UDP
    UDP
    +关注

    关注

    0

    文章

    325

    浏览量

    33933
  • MPSoC
    +关注

    关注

    0

    文章

    198

    浏览量

    24274

原文标题:开发者分享|如何解决 MPSoC 万兆以太网应用中 UDP 接收丢包问题

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    万兆以太网规范

    在这10多个规范,可以分为三类:一是基于光纤的局域万兆以太网规范,二是基于双绞线(或铜线)的局域
    发表于 03-27 11:26 5378次阅读

    万兆以太网规范解读

    就目前来说,万兆以太网标准和规范都比较繁多,在标准方面,有 2002 年的IEEE 802.3ae,2004 年的 IEEE 802.3ak,2006 年的 IEEE 802.3an、IEEE
    的头像 发表于 01-15 10:21 2550次阅读
    <b class='flag-5'>万兆</b><b class='flag-5'>以太网</b>规范解读

    在米尔电子MPSOC实现12G SDI视频采集H.265压缩SGMII万兆以太网推流

    米尔电子的ZU4EV MPSoC平台,接入真4k 60UHD-SDI视频源后,使用VCU进行高效H.265编解码,再通过SGMII万兆以太网实现网络推流,以确保高质量4K视频的流畅传输。 2.视频质量
    发表于 10-14 17:42

    在米尔电子MPSOC实现12G SDI视频采集H.265压缩SGMII万兆以太网推流

    设计核心板可通过SFP采集SGMII万兆以太网数据后,PC通过PCIE读取视频源,实现万兆口数据卸载,我们会在后续系列文章
    发表于 11-01 16:56

    基于FPGA的万兆以太网接口的设计与实现

    基于FPGA的万兆以太网接口的设计与实现标准万兆以太网物理层及媒质接入控制子层的相关协议以 应用物理环境为例,阐述了
    发表于 08-11 15:48

    以太网MPSoC的数据通讯实现

    来承担。发送写控制模块通过读取缓存模块的数据,配置发送数据的有效信息,完成网络数据格式封装,最后传输至多核系统通信网络资源接口。2.4 接收模块设计 接收模块承担网络数据
    发表于 06-03 05:00

    基于MPSoC以太网接口该如何去设计?

    本文介绍了一种基于MPSoC以太网接口设计方案。
    发表于 05-19 07:22

    万兆以太网LAN与WAN技术的研究

    本文主要介绍万兆以太网的核心技术以及在新领域中的研究。相对于传统以太网万兆以太网自身有其独特的特点,而且更是突破了传统
    发表于 07-30 11:03 19次下载

    基于FPGA的万兆以太网接口设计

    介绍了IEEE802.3ae 标准 万兆以太网 物理层及媒质接入控制子层的相关协议。以10GBASE-R 应用物理环境为例,阐述了万兆以太网
    发表于 07-20 16:21 334次下载
    基于FPGA的<b class='flag-5'>万兆</b><b class='flag-5'>以太网</b>接口设计

    基于FPGA的万兆以太网接口的设计与实现

    基于FPGA的万兆以太网接口的设计与实现。
    发表于 05-11 09:46 39次下载

    万兆以太网和IP SAN的融合

    IP SAN存储融合到万兆以太网,将大大增加了IP SAN网络的通信带宽,提高主机访问存储的速度,同时由于以太网灵活易实施的特点,
    的头像 发表于 01-24 15:16 3202次阅读

    造成以太网交换机性能测试的因素有哪些

    在工业以太网交换机性能测试过程,我们经常会遇到非设备性能因素导致的,对测试产生困扰。那么,以太网交换机性能测试
    的头像 发表于 12-08 16:24 4606次阅读

    千兆以太网交换机能量数据控制现象简介

    以太网交换机有很多值得学习的地方,这里我们主要介绍如何避免千兆以太网交换机能量数据控制的现象。流量控制并不能提高整个交换机的数据吞吐能力,但是避免了在交换机内的
    的头像 发表于 01-11 15:33 2393次阅读

    以太网设备高温流量测试问题案例(晶振篇)

    测试人员发现一个奇怪的现象,设备在白天的测试,均无现象,夜间设备继续运行,但是第二天一早就会发现已发生。该设备的用户接口是百兆
    的头像 发表于 08-17 13:39 2106次阅读
    <b class='flag-5'>以太网</b>设备高温流量测试<b class='flag-5'>丢</b><b class='flag-5'>包</b>问题案例(晶振篇)

    基于FPGA的UDP万兆光通信测试

    本文开源一个FPGA项目:UDP万兆光通信。该项目实现了万兆光纤以太网数据回环传输功能。Vivado工程代码结构和之前开源的《UDP RGM
    的头像 发表于 09-01 16:25 2251次阅读
    基于FPGA的<b class='flag-5'>UDP</b><b class='flag-5'>万兆</b>光通信测试