器件型号: AM6442
在将数据发送到 am64x cortex-A53 集群上的 Linux 网络堆栈时、我们会遇到相对较高的 CPU 负载。 此行为可在 am64x EVM 评估板上重现(SMP Linux 基于 TI Linux、内核版本 6.1.124、我无法准确地说它基于哪个版本的 SDK、但该行为并不绑定到某个版本、我们已经在较旧的 5.x 版本上进行了检查)。
测试设置: 创建从 soc 到客户端 PC 的同时 TCP 和 UDP 流:
服务器 (am64x)
iperf3 -s -p 5201 &iperf3 -s -p 5202 &客户端 (PC)- iperf 反向模式
iperf3 -c 192.168.136.10 -l 1000000 -b 250M -t 0 -R &iperf3 -c 192.168.136.10 -p5202 -u -b 250M -l 1400 -t 0 -R &这将在千兆以太网端口上创建 500MBit/s 的传出流量。
此情况下的 CPU 负载约为 70%(用顶部测量)。
对我们来说,这个价值似乎相当高(与其他平台相比也是如此)。
这给我们的产品带来了问题、因为我们必须在运行需要大量计算能力的应用程序逻辑时提供此带宽。
注意:UDP 数据包大小不是最佳的、但这正是我们的应用程序所需要的。 我们知道、通过最大化数据包大小可以在一定程度上改善这些值
传递到栈、因此无需讨论这一点。
问题:
- TI 对此采取了什么措施? 该平台是否符合预期?
-是否有优化潜力显著提高性能,例如通过配置网络堆栈/驱动程序,甚至通过修补通用或特定于硬件的堆栈/驱动程序代码?