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.

[参考译文] Linux/processor-SDK-AM335X:以太网低性能问题

Guru**** 2587745 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/576987/linux-processor-sdk-am335x-ethernet-low-performance-issue

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Linux

您好!

我目前正在将 AR8035 GigE phy 与 AM335x 配合使用并使用内核 v4.4。 网络通信工作正常、但我注意到、通过 iperf 测试、我没有接近广告速度 http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.08_Features_and_Performance_Guide#Ethernet_Driver

事实上、我的问题基本上与这个问题相同: https://e2e.ti.com/support/arm/sitara_arm/f/791/t/441787

使用较旧的内核(3.2)、我可以达到公布的速度、因此硬件显然是可以的。

是否有关于如何解决此问题的建议?

谢谢!

基思

更新:

以下是指向新 SDK 性能的链接(同样、与该性能或上一个性能不接近):

processors.wiki.ti.com/.../Processor_SDK_Linux_Kernel_Performance_Guide

速度@ 4.4:86Mb/s 向上、156Mb/s 向下

速度@ 3.2:198Mb/s 向上、276Mb/s 向下

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

    您指向的 wiki 链接适用于已停产的 SDK。 当前 SDK 性能可在以下位置找到: processors.wiki.ti.com/.../Processor_SDK_Linux_Kernel_Performance_Guide
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您提供新性能数据的链接。 但是、它并不能真正解决该问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已通知以太网专家。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Biser、

    太棒了,谢谢!

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

    您提到过您正在使用4.4内核。 您是否使用 TI SDK 内核和配置?

    性能 可能是由于链路错误或内核配置造成的。

    以下链接介绍了如何检查硬件错误以及运行和发布结果的一些命令。

    processors.wiki.ti.com/.../5x_CPSW

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

    Schuyler、您好、

    感谢您的回复。

    我们使用 的是 TI 的4.4.12 (srcrev = 3639bea54a4a1e1c572a1bde78facc4e37839c12)、但构建系统是熟料生产系统。 内核配置也来自 TI、但已经过修改。

    我已经连接了 ethtool、ifconfig、dmesg 的输出以及内核配置。

    谢谢!

    e2e.ti.com/.../defconfig.txte2e.ti.com/.../dmesg_5F00_d1.txte2e.ti.com/.../outputs.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您提供所附信息。 在硬件统计中、我没有看到任何硬件错误。

    性能数据表中没有指出的一点是、被测器件以1GHz 运行。 demsg 日志指示处理器在500-600Mhz 范围内运行。 这种差异可能会导致您看到的性能下降。

    浏览内核配置有几个不同之处、因此很难判断任何一种设置。 我确实注意到的一点是 CONFIG_PRESTER_NONE 已设置。 这可能会产生影响、因为我认为系统调用和其他使用应用程序可能不会产生影响、因此 iperf 可能无法获得运行过多的机会。

    我不知道熟料制造系统是否会造成影响。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Schuyler、您好、

    感谢您的观看。

    您可以看到 CPU 以 dmesg 显示500-600MHz 范围、但这在我方面是误导性的、因为我提供的日志捕获是使用按需调速器。 当我仅使用性能重建内核(我们的 CPU 以800MHz 进行最大速度重建)时、我列出的速度(86Mb/s 上行、156Mb/s 下行)就是我得到的速度。 您也认为 CPU 频率很重要。 实际上、当我最初测试@ 600MHz 时、我得到62uP/113down。 从600->800MHz (增加33%)开始,我得到了几乎相应的33%的增长(62->86、113->156)。 因此,为了进行比较,外推800MHz->1GHz 时,我的等效速度应该大约为108Mb/s,195Mb/s。

    我还尝试了重建、但不设置 CONFIG_PRETER_NONE (即选择的 CONFIG_PRETERM)、性能变得更差(可能降低了大约10Mbit/s)。 您也认为这可能会产生影响、但我想这需要进行设置。

    我不确定这是否指向正确的方向,但我注意到启用中断起搏功能(请参阅 http://processors.wiki.ti.com/index.php/AM335x-PSP_04.06.00.08_Features_and_Performance_Guide#Ethernet_Driver 上的命令)确实提高了我的上传速度86->120MB/s,但我的下载速度从156->128MB/s 下降

    如果您对这些观察结果有任何想法、请告诉我、谢谢!

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

    我是否可以询问是否有任何 TI 认可的将 AM335x 芯片与 AR8035结合使用的硬件? 这将允许我们验证硬件。

    我还想问、列出的基准测试使用的确切 iperf 命令是什么? 这将使我们能够确保运行相同的测试。

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

    您好、Biser 和 Schuyler、

    我们后退一步、使用了 AM335x EVM 和 AM335x 入门套件以及 SDK v03.02.00.05中的预构建映像。

    EVM 和入门套件均使用接近我们的 AR8035的 AR8031。 它们也是@ 720MHz、并且使用相同的 SD 卡(因为只需使用差动器件树。)
    在此测试设置中、除器件树外、其他一切都是相同的。

    有趣的是、入门套件也存在我们看到的低以太网性能问题。 但是、EVM 的速度至少是前者的两倍。

    入门套件:71 Mbit/s 向上、114 Mbit/s 向下。
    EVM:176 Mbit/s 递增、301 Mbit/s 递减。

    现在、我们很好奇主要差异是什么、因为这种速度差异的原因也可以解决我们的问题。

    [编辑]

    我对 EVM 和入门套件器件树进行了修整、使它们基本相同。 唯一的区别是入门套件具有用于 DDR3的 VTT、现在 eth 节点甚至相互匹配。

    遗憾的是、速度仍然相同(入门套件为~70 Mbit/s、EVM 为~180 Mbit/s)。

    这意味着器件树不是原因、现在我们想知道 EVM 和 starterkit 之间以太网的硬件差异是什么?

    e2e.ti.com/.../am335x_2D00_evm.dts.txte2e.ti.com/.../am335x_2D00_evmsk.dts.txt

    谢谢!e2e.ti.com/.../iperf_5F00_evm.txte2e.ti.com/.../iperf_5F00_sk.txt

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

    感谢您在 TI EVM 上运行测试。

    我有点困惑、您的文本提到您看到 SK 的性能较低、但随附的测试日志中包含性能良好的 SK 和性能较差的 EVM。

    我现在将坚持使用 SK。 我同意您在 starterkit 上看到的数字很低。 我根据您随附的文本文件运行了 iperf、我会在我的 starterkit 上看到您在 EVM 上看到的数字。 我使用了一个旧的 SD 卡 、它是3.0.0.4 SDK、这是我目前设置的。 我的设置是通过一个连接到 starterkit 板的千兆位开关进行开发的机器。 因此、目前我无法解释低性能。

    您之前发布的 ethtool 统计信息在您的板上没有显示任何问题。 您是否也可以为 SK 电路板连接它们?

    由于 EVM 显示的数字很好、因此 starterkit 是否已连接到相同的链接伙伴和电缆?

    除非 调节器不是按需或性能、否则我认为 CPU 频率调节器设置无关紧要。 两种情况下的运行大致显示相同的数字。

    链接合作伙伴是否有机会成为 Linux PC? 如果是、您能否在其上运行 Wireshark 并查看 iperf TCP 流量是否显示错误?

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

    Schuyler、您好、


    感谢您进一步了解这一点。

    抱歉、我将文本文件名混在一起。 starterkit 是速度较慢的工具包。

    我在运行针对 SK 和 EVM 的 iperf 前后都附加了 ethtool 统计信息。
    当您说您正在获得 EVM 上显示的数字时、您的 SK 的上传速度是否达到~200Mbit/s 而不是~75Mbit/s?
    我注意到的另一件奇怪的事情是、当 SK uboot 在设置了"optargets debug"的情况下引导(即在引导时启用调试消息)时、SK 实际上会达到 EVM 速度!
    是的、您读得对、启用调试功能带来了巨大的影响...

    我已经对 SK 和 EVM 进行了 Wireshark 捕获(总共压缩了~25MB)、但我不确定将它们发送给您的最佳方式(但通过它们、它们看起来不错、没有突出的错误)。

    对于 EVM 和 SK、我捕获这组日志的设置是相同的:
    PC (Windows+Wireshark)<->EVM/SK 的 eth0、使用相同的 SD 卡、相同的以太网电缆、之间没有其他硬件(例如开关)。 唯一的差动是 EVM 与 SK HW。

    我的测试设置对于 EVM 和 SK 来说通常也是相同的、除了没有 Wireshark 捕获功能并且是在 Linux 中完成的:
    笔记本电脑(Ubuntu 16.04.1 LTS)<-> EVM/SK 的 eth0、使用相同的 SD 卡、相同的以太网电缆、之间没有其他硬件(例如交换机)。 唯一的差动是 EVM 与 SK HW。

    我忘记了是否包含了这些版本、但我使用的是预编译映像:
    uname -a ="Linux AM335x-EVM 4.4.3.32-gadde2ca9f8 #1挤占 Wed 12月14日18:52:13 EST 2016 armv7l GNU/Linux"
    来自 ti-processor-sdk-linux-am335x-evm-03.02.00.05-Linux-x86-Install.bin

    请告诉我您可能需要哪些其他日志、谢谢!

    e2e.ti.com/.../7416.iperf_5F00_evm.txte2e.ti.com/.../0572.iperf_5F00_sk_5F00_quiet.txte2e.ti.com/.../7824.iperf_5F00_sk_5F00_debug.txt

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

    SK 的 Wireshark 捕获:

    e2e.ti.com/.../iperf_5F00_sk_5F00_quiet.7z

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

    感谢您提供的统计信息、感谢您进行 Wireshark 捕获。

    通过 分析 Wireshark 捕获、我可以看到、较低的比特率可能与发送 TCP 窗口调整消息的链路伙伴相关、这些消息会导致客户端发送的流量延迟。 当我在 Linux PC 和 AM335x-evmsk 的设置上运行测试时、我在过滤 Wireshark 捕获时看不到这些 TCP 窗口调整消息。

    随附的文档中有一些是 Wireshark 分析工具的屏幕截图。 有几个平面区域可能指示线路延迟。 放大其中一个部分并查看数据包到数据包的延迟显示,在服务器计算机发送 TCP 调整消息后,将导致客户端延迟传输一段时间。

    在连接到 EVM 时运行 Wireshark 捕获可能是一个好步骤、如果可能、还会在 Linux PC 上运行 Wireshark。

    e2e.ti.com/.../wireshark_5F00_analysis_5F00_20170314.pdf

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

    Schuyler、您好、

    感谢您的分析、老实说、我以前从未在 Wireshark 中使用过该功能、因此使用它很有趣!

    遗憾的是、EVM 也是平坦的、正如您提到过的、EVM 的数据包看起来大约为微秒、而 SK 的数据包大约为10/100us。 很抱歉、我上次无法连接 EVM 捕获、因为它失败了、所以我认为它太大了。 我在这里重新连接了它。 我还在 Linux 上使用 Wireshark 重新捕获了 SK、以供您参考、它也具有平坦的线路。

    我想知道您是否可以使用与我相同的 SDK 进行验证? 这是因为我们知道其他一些 SDK 版本是可以的、因此最快的测试是使用我们使用的 SDK 版本。

    谢谢!

    e2e.ti.com/.../iperf_5F00_sk_5F00_linux.7ze2e.ti.com/.../iperf_5F00_evm.7z

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

    我想知道您是否能够使用新的 SDK 进行测试?

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

    我想知道您是否能够使用新的 SDK 进行测试?

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

    我能够在最新的 SDK 上重现您的结果。 快速查看 您发布的 Wireshark 捕获和我今天捕获的 Wireshark 捕获、似乎传输中存在持续约3ms 的间隔、这些间隔通常发生在来自 iperf 服务器的 ACK 消息之后。

    我在 同一电路板上尝试过之前的 SDK、以确认这不是该版本的问题、也不是问题。 基准测试结果在 GPEVM 上运行、目前我没有这种测试 、但我将尝试获取一个测试结果来重新运行测试。

    将调速器设置为性能不起作用、并且设置中断起搏既不会影响单线程配置中的运行或 iperf。

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

    Schuyler、您好、

    太棒了、感谢您的观看。

    我注意到一件奇怪的事情、即当 SK 以内核 bootarg"调试"(在 uboot 中设置)引导时、它实际上会执行 EVM 速度。

    我希望大家也能看到它、它可能指向一个方向(当调试模式启用时、配置/未配置某些内容)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用调试启动并按照您的建议运行测试、我看到了显著的改进、但与早期版本不同。 感谢您注意到、数据点可能会缩小原因范围。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    只是一个快速更新、我在本周发布的最新 SDK 版本上进行了测试、不幸的是、我看到了同样的性能下降。  此外、您指出的调试选项显示了一些改进、但未显示预期值。

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

    Schuyler、您好、

    感谢您的更新! 没错、调试选项无法完全恢复速度。 如果我们可以采取任何措施来帮助您解决 SK 和 EVM 之间的速度差异、请告知我们!

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

    很抱歉、我们也想知道您计划如何解决这个问题?
    谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此时、我只能说我们已经找到了导致这种性能下降的原因、然后才能提供准确的解决方案。

    您已经注意到、相同内核的行为与我们对 gpevm 和 SK 的预期不同。 我还尝试了 Beagle Bone Black、它本质上是另一个 EVM、它看到其正常带宽超过90Mbps、比 SK 高20Mbps、并且上面只有100Mbps phy。 由于 Beagle Bone Black 和 gpevm 不使用双 Mac 模式、我尝试将 SK 置于开关模式、但这没有任何改善。 TOP 显示 iperf 的运行比预期低10-15%。 接下来、Sowe 将了解 iperf 运行速度比预期慢的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Schuyler、您好、

    感谢您的回复。

    我想问一下调试是如何进行的? 这对我们来说现在变得更加紧迫。

    再次感谢!

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

    Schuyler、您好、

    我可以问一下它的状态是什么? 这对我们来说现在是紧迫的。

    再次感谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Keith、很抱歉耽误了时间...我们本周要搬迁、这可能会影响工作流...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没问题。

    我们刚刚发现、禁用内核选项 CONFIG_LEGATE 和 CONFIG_DEBUG_kernel 可显著提高性能。 我们已使用 SDK 03.02.00.05的内核4.4.32和 ti-linux-kernel-next 的内核4.9.25对此进行了测试:

    4.4.4.32:

    AM335x 至主机方向:225Mbit/s
    主机到 AM335x 的方向:347Mbit/s

    4.9.25:

    AM335x 至主机方向:316Mbit/s
    主机到 AM335x 的方向:333Mbit/s

    所有测量均来自 CPU 以1MHz 运行的定制板。