This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PROCESSOR-SDK-AM64X:网络通信行为 MCU-PLUS-SDK AM64X 09.01.00.41与08.06.00.43

Guru**** 2013790 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1328361/processor-sdk-am64x-network-communication-behavior-mcu-plus-sdk-am64x-09-01-00-41-vs-08-06-00-43

器件型号:PROCESSOR-SDK-AM64X

女士们和先生们,

网络通信的性能和可用性对于我们计划的应用非常重要,
-特别是在高网络流量时。

因此,我们进行了一系列的测试:我们构建了应用 ENET/LWIP/ICSSG,包含
AM64x-AM64x 封装中、并启动它并在 MCU-PLUS-SDK (在 R5F 内核上)上运行、
MCU-PLUS-SDK AM64x-AM64x 封装的版本09.01.00.41于2023年12月发布、并且是
直到今天仍为最新版本、以及一个大约七个月前的版本08.06.00.43、
这是我们在过去半年中积累的经验。
然后、我们将其暴露在各种非常精确定义的网络负载中、并比较其行为
在 MCU +版本之间来回切换。

部分结果对我们来说非常令人惊讶:

(1)
通过版本09.01.00.41、我们发现、在网络流量负载超过以下两项之间的限制时、
67.000和88.000帧/秒(大小为1400字节)的网络通信持续死锁
输出、即 PRU 不再尝试将任何接收到的帧传输到主机处理器。 此影响
可重现性100%。 再也不能持久地减少网络流量负载(低至
零)可以让这种死锁消失。
只有在电路板的硬件复位后、网络通信才会再次正常工作。
对于我们来说,这种行为非常有问题,不符合我们的可用性要求。
与08.06.00.43版本相比、我们从未观察到这样的死锁、即使在较高的流量下也是如此
很棒!

(2)
我们观察了针对因描述符而丢弃的数据包的 PKTDMA-PKTDMA Rx 通道的计数寄存器
饥饿(DMASS0_PKTDMA_0_RCHANRT_dcnt_j)、我们发现、对于版本09.01.00.41、
网络流量限制(超出该限制后开始出现丢包)严重不足
与版本08.06.00.43相比:
对于版本08.06.00.43、我们可以确认、高达大约13.000帧(大小为1400)
可以在不发生任何丢失的情况下每秒接收和传送到主机处理器、而
对于版本09.01.00.41、此限制约为每秒8500帧、即接近40%
更糟糕的是、这不符合我们的要求。

对于我们是否应该把 AM64x 以及
MCU-PLUS-SDK 软件包作为我们已规划应用的适当构建块。
因此、我们希望征求您的意见:
-您是否知道我们发现的版本09.01.00.43的较差属性?
-您能解释一下这些更糟的属性吗?
-您是否正在对当前 MCU-PLUS-SDK 版本进行相应的改进,如果是,
您计划在什么时间范围内发布包含这些改进的下一个版本?

非常感谢您的答复。

此致
S·塞韦鲁斯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sven:

    您能否提供有关测试设置的更多详细信息? 是使用 MAC 模式还是开关模式。 您使用哪种类型的数据包(多播/广播/单播)?

    问题1: 我们在内部测试中发现了类似问题、并提供了修复方法。 我想确认这样可以解决您身边的问题。 请分享上述详细信息、我们将尝试重现并重新测试修复程序

    问题2:团队正在复制此文档、并将返回详细信息

    下一个 MCU SDK 版本(9.2版)计划于2024年4月

    此致、
    普拉吉特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Prajith:
    感谢您的答复。
    对于本测试系列、我们使用了开关模式(下一次我将使用 MCU-PLUS-SDK 09.01.00.43针对 MAC 模式执行另一个测试系列)。
    接收到的帧均为单播数据包:任何1400字节大小的帧(不带 FCS)的内容为:前6个字节:单播目标 MAC、后6个字节:FF:FF:FF:FF:FF、全部为0x00 (以便为任何接收到的帧产生最小的处理负载)。
    非常感谢您的支持、我们对您取得的成果也很好奇。
    此致、斯文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sven:

    关于 Rx 吞吐量的第二个查询。 我看到我们更改了此 enet_lwip_icssg 示例的开箱即用配置。

    在8.6 SDK 上、这是一个示例、是处于双 MAC 模式、其中 Macport1接收 DMA 通道分配了32个数据包。
    但之后、我们将开箱即用示例更改为切换模式、并将每个 MacPort 特定 DMA 通道的 DMA 数据包分配减少为16个数据包。 这降低了开箱即用的吞吐量性能。

    您可以通过增加 DMA 数据包内存来获得更好的吞吐量性能。
    在09.01.00.43 SDK 上、请将"Enet (ICSS)"-> "DMA Channel Config"->"ENET Rx DMA channel "->"ENET Rx DMA Channel 0" 和"ENET Rx DMA Channel 1"中的"数据包数量"增加到32。  请确保 Rx 数据包总数与"数据包池配置"中的"大型池数据包计数"匹配。

    我测试了上述变化、并观察到 Iperf UDP 接收吞吐量将近翻了一番、从~85Mbps 变为~160Mbps。

    此致、
    苏珊德

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Susheel:

    感谢您提供这些信息。
    他们证实了我们在此期间获得的一些见解、作为进一步调查的一部分...

    此致、斯文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sven:  

    (1)
    通过版本09.01.00.41、我们发现、在网络流量负载超过以下两项之间的限制时、
    67.000和88.000帧/秒(大小为1400字节)的网络通信持续死锁
    输出、即 PRU 不再尝试将任何接收到的帧传输到主机处理器。 此影响
    可重现性100%。 再也不能持久地减少网络流量负载(低至
    零)可以让这种死锁消失。
    只有在电路板的硬件复位后、网络通信才会再次正常工作。
    对于我们来说,这种行为非常有问题,不符合我们的可用性要求。
    与08.06.00.43版本相比、我们从未观察到这样的死锁、即使在较高的流量下也是如此
    加载![/报价]

    我对此进行了测试:

    -我也看到了9.1版本的问题。  

    -我看不到包含相关修复程序的内部固件的此问题,并且此更新的固件将是下一个版本的一部分。  

    谢谢。
    希曼舒