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/66AK2E05:通过10 GbE 的传输速率问题

Guru**** 2589275 points
Other Parts Discussed in Thread: 66AK2E05, DS100DF410

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/625927/linux-66ak2e05-the-problem-of-the-transmission-rate-through-10-gbe

器件型号:66AK2E05
主题中讨论的其他器件:DS100DF410

工具/软件:Linux

你好!

我们将定制板与 Keystone 2 66AK2E05 <--> DS100DF410 <--> SFP+ Module_10Gb 配合使用。  

我们正在 测试两块板之间第0行的10GbE 链路。 我们在 Linux (最后一个 SDK)下使用实用程序 iperf3和 Netperf。 我们的速度不能超过1.7Gbit/s。处理器利用率不能超过25%。

SFP 模块和电缆已在另一个系统上进行测试。 它们能够以10 Gbit/s 的速度运行

下面是有关重定时器设置的讨论。  

我们的问题是什么?

dst 文件的一部分:

xgbe 子系统:子系统@2f00000{
//status ="禁用";
兼容="SYSCON";
REG =<0x02f00000 0x100>;
};

xgbe_pcsr:pcsr@2f00600{
//status ="禁用";
兼容="SYSCON";
REG =<0x02f00600 0x100>;
};

xgbe 串行器/解串器:PHY@231e000{
#phy-cells =<0>;
兼容="ti、keystone-SerDes-xgbe ";
REG =<0x0231e000 0x2000>;
//status ="禁用";
链路速率 kbps =<10312500>;
通道数=<2>;
SYSCON-外设=<&xgbe 子系统>;
SYSCON-LINK =<&xgbe_pcsr>;
#address-cells =<1>;
#size-cells =<0>;

xserdes_lane0:lane@0{
#phy-cells =<0>;
reg =<0>;
状态="ok";
控制速率=<0>;
Rx-START =<7 5>;
Rx-force =<1 1>;
TX-COEff =<2 0 12 4>;
};
xserdes_lane1:lane@1{
#phy-cells =<0>;
reg =<1>;
STATUS ="禁用";
控制速率=<0>;
Rx-START =<7 5>;
Rx-force =<1 1>;
TX-COEff =<2 0 12 4>;
};
};

netcpx:netcp@2f00000{
//status ="禁用";
兼容="ti、netcp-1.0";
#address-cells =<1>;
大小单元格=<1>;
范围;

时钟=<&clkxge>、<&chipclk12>;
时钟名称="xge_clk"、"CPT";
DMA 相干;

TI、navigator-DMA =<&dma_xgbe 0>、
<&DMA_xgbe 8>、
<&DMA_xgbe 0>;
TI、navigator-dma-names ="xnetrx0"、"xnetrx1"、"xnettx";

netcp-devices{
#address-cells =<1>;
大小单元格=<1>;
范围;
xgbe@2f00000{
label ="netcp-xgbe ";
兼容="ti、netcp-xgbe ";
SYSCON-SUPSYS =<&xgbe 子系统>;
SYSCON-pcsr =<&xgbe_pcsr>;
reg =<0x02f00100 0x200>、<0x02f01000 bb00>;
TX-queue =<692>;
TX 通道="xnettx";

接口{
xgbe0:interface-0{
phys =<&xserdes_lane0>;
从端口=<0>;
link-interface =<11>;
};
/* xgbe1:interface-1{
phys =<&xserdes_lane1>;
从端口=<1>;
link-interface =<11>;
};*/
};
};
};

netcp-interfaces{
接口0{
Rx-channel ="xnetrx0";
Rx-POOL =<2048 12>;
TX-POOL =<1024 12>;
Rx-queue-depth =<1024 1024 0 0>;
Rx-buffer-size =<1536 4096 0 0>;
Rx-queue =<532>;
TX-Complete-queue =<534>;
efuse-Mac =<0>;
// local-mac-address =[02 18 31 7e 3e 00];
netcp-xgbe =<&xgbe0>;

};
/* interface-1{
Rx 通道="xnetrx1";
Rx-POOL =<2048 12>;
TX-POOL =<1024 12>;
Rx-queue-depth =<1024 1024 0 0>;
Rx-buffer-size =<1536 4096 0 0>;
Rx-queue =<533>;
TX-Complete-queue =<535>;
efuse-Mac =<0>;
// local-mac-address =[02 18 31 7e 3e 00];
netcp-xgbe =<&xgbe1>;
};*/
};
};

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

    我已通知团队。 他们的反馈将在此处发布。

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

    是否可以在启用了巨型数据包的情况下重试您的基准测试? 我们能够在早期的某个线程中获得大约6Gbps 的数据、 e2e.ti.com/.../1534785

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

    Rex、

    MTU = 9000时、服务器 iperf3上出现内核严重错误。

    登录 attached.e2e.ti.com/.../3527.7268.log.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在巨型帧上进行同步的正确方式是什么? 我们使用 Linux 命令 ip link set dev eth2 MTU 9000。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用 ifconfig 引导内核后、我们将 MTU 大小配置为9000。 在 iperf 中、我们使用带宽的-b 一半、但使用2个进程(-p 2)和长度8000 (--len 8000)。 我记得 BER 是在另一个线程中出现的。 BER 诊断包含在 PDK 软件包下的 RTOS ProcSDK 中。 如果您怀疑信号完整性、则可以在 XGE 端口上运行 BER。 我将请 RTOS 工程师为您提供帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用 setsockopt 增加接收缓冲区。 我们在 c6670上遇到的千兆位问题大致相同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请忽略、我认为您是在 Linus 主持下这样做的、那么这很重要。 我们在 Linux PC 上遇到问题、直到缓冲区被扩展。 当您在 DSP 上运行时、您的情况会有所不同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Rex、

    我们如何在 Linux 下执行 BER 诊断?

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

    BER 仅在 RTOS 下受支持。

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

    BER 位于 RTOS Proc SDK 中的 pdk_k2e_4_0_x\packages/ti\diag\SerDes_diag 下。 用户指南位于 docs 下。 它只能使用 RTOS 运行

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

    Rex、

    我们运行眼图和光绘测试:

    有两个问题:
    眼图中的这些伪影是什么?
    2.如何测量数据速率?


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

    BER 看起来不错、全部是绿色和居中的。 我不熟悉眼图、并已将更多信息转发给硬件。 我在以太网眼图上进行了谷歌搜索、但认为您可能需要比 wiki 页面更多的信息。 如果我听到硬件工程师的反馈、我会发帖回帖。

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

    Eduard、

    如何在66AK2E05周围实现 DS100DF410?  RX 路径和 TX 路径中是否都存在一个、或者仅存在于一个方向?  它的物理位置是否靠近 66AK2E05?  距离有多近?

    DS100DF410能够执行 RX 均衡和传输整形。  它还可以与 SFP+模块连接、这些模块需要  66AK2E05无法满足的接口指标。

    眼图工具使用  66AK2E05中的接收器逻辑功能对眼图进行图像处理*在执行 RX 均衡之后*。  然后、它提供了眼图振幅和眼宽的估算值。  所提供的图像看起来非常好。

    眼图工具以抽头延迟增量工作。  它不知道数据速率。  如果您不确定自己的数据速率是否正确、我建议使用示波器来测量数据速率。

    眼图中的多个级别是码间串扰的结果。  这在千兆位接口中是正常现象。  RX 均衡会调整接收器逻辑、以最大限度地增大眼图张开度。

    Tom

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

    Tom、

    重定时器安装在 Rx 和 Tx 线路上。

    屏幕截图显示了电路板的部分和差分线路 SFP 连接器-重定时器- Keystone。 左侧表格中线条的长度。

    Serdes Diag 用户指南  显示了眼图图图:

    但在我们的图中、有一些奇怪的伪影。 我用红色椭圆突出显示了它们:

    为什么是这样?

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

    Eduard、

    布线长度看起来合理。  由于链路较短、您可能需要尝试调整 DS100中的 TX 设置、以便改善 K2K 器件的眼图。  过驱动接收器会产生非线性失真、接收器无法进行均衡。

    上面用红色圆圈圈出的部分眼图是眼图工具的伪影。  它不是真实图像的一部分。  您是否在每次跑步中都看到相同的东西?  从 CDR 恢复的时钟似乎具有相位对齐、这会导致眼图工具在图像边缘饱和、结果失真。  无论您是否可以使其消失、它都不表示存在变速器问题。

    Tom

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

    你好,Tom!

    >> 您是否在每次跑步中都看到相同的情况?   

    是的、每次运行。

    我们运行了板对 PC 速度测试。 主板传输数据(客户端)、计算机接收数据(服务器)。  MTU = 1500时 、速度为3Gbit/s (CPU K2E 负载为45%)。  MTU = 9000 时、速度为5.7Gbit/s (CPU K2E 负载为99.5%)。

    如果主板接收数据(服务器)并且 PC 传输数据(客户端)、则在配置 MTU=9000时会发生内核严重错误。  我们尝试了上一个 SDK 中的 Linux、或自定义 Linux。  我们尝试了不同的程序:iperf3、Netperf。

    对于支持 MTU = 9000、是否需要对任何接收缓冲区进行额外配置?

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

    是否可以尝试将两端配置为相同的 MTU 大小9000?

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

    是的、两个 MTU=9000。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们始终在服务器和客户端上设置相同的 MTU。 当 MTU=9000且主板为服务器(接收器)时、主板上会发生内核严重错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、响应速度慢。 我们是否曾提到过您使用的软件版本?

    我尝试启动配置。 我使用 iperf、但看不到崩溃、但我也没有获得最大吞吐量。 我正在检查该设置、以了解不获得最大吞吐量可能会出现什么问题。 我还将尝试 iperf3以查看它是否会产生任何影响。

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

    Rex、

    我们使用 iperf 3.1.3 (我们下载源代码 C++源代码并使用 gcc for ARM 编译)。

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

    我想向您确认我观察到的1500 MTU 工作正常、但只有入站9000 MTU 崩溃内核。

    雷克斯
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    >>我想向您确认我观察到的1500 MTU 工作正常、但只有入站9000 MTU 会导致内核崩溃。
    是的!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Eduard、

    我一直在尝试查看更改缓冲区大小和描述符数量是否有帮助、但它似乎更有用。 我们将进一步调查此问题。 目前、我建议通过将 EVM MTU 设置为9000、而在远程系统上设置为1500来解决该问题。

    雷克斯

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

    您好、Eduard、

    您可能需要尝试以下更改。 它似乎对我有效。 TI 的开发部门尚未接受此更改。

    -- a/drivers/net/ethernet/ti/netcp_core.c
    ++ b/drivers/net/ethernet/ti/netcp_core.c
    @@-618、7 +618、8 @@静态 int netcp_process_one_rx_packet (struct netcp_intf * netcp)
    /*警告!!!! 我们正在检索 SW_DATA 中的虚拟 PTR
    *字段为32位值。 将不能在64位计算机上工作
    *
    - PAGE =(结构页*) KNAV_DMA_GET_SW_DATA0 (desc);
    + PAGE =(结构页*) KNAV_DMA_GET_SW_DATA0 (ndesc);

    if (可能为(dma_buff && buf_len && page){
    dma_unmap_page (netcp->dev、dma_buff、page_size、

    雷克斯

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

    谢谢! 我们将尝试。

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

    顺便说一下、Linux 主机上的 tcpdump ping K2E 的两端 MTU 都设置为9000。 ping 命令:"ping -s 9000 [K2E XGE IP 地址]"

    guest@guestlocal:~$ sudo tcpdump -i eth3
    guest 虚拟机的[sudo]密码:
    tcpdump:详细输出被抑制、使用-v 或-vv 进行完整的协议解码
    侦听 eth3、链路类型 EN10MB (以太网)、捕获大小为262144字节
    13:55:48.621881 ARP、请求 WHO - has 192.168.100.22 Tell guestore.local、长度28
    13:55:48.621997 ARP,答复192.168.100.22 is-at 06:33:10:5c:6c:34(OUI 未知),长度46
    13:55:48.622009 IP guestlocal.local > 192.168.100.22:ICMP 回应请求,ID 4393,序列1,长度8976
    13:55:48.622016 IP guestlocal.local > 192.168.100.22:ICMP
    13:55:48.622196 IP 192.168.100.22> guestlocal.local:ICMP 回应,id 4393,序列1,长度8976
    13:55:48.622209 IP 192.168.100.22> guestlocal.local: icmp
    13:55:49.177303 IP6 fe80:21b:21ff:fe60:5bc4.mdns > FF02::fb.mdns:0 ptr (QM)? 22.100.168.192.in-addr.arpa。(45)
    13:55:54.620071 IP guestlocal.local > 192.168.100.22:ICMP 回应请求,id 4393,SEQ 7,长度8976
    13:55:54.620079 IP guestlocal.local > 192.168.100.22:ICMP
    13:55:54.620240 IP 192.168.100.22> guestlocal.local:ICMP 回应、id 4393、SEQ 7、长度8976
    13:55:54.620252 IP 192.168.100.22> guestlocal.local:icmp
    13:55:55.620053 IP guestlocal.local > 192.168.100.22:ICMP 回应请求、id 4393、序列8、长度8976
    13:55:55.620061 IP guestlocal.local > 192.168.100.22:ICMP
    13:55:55.620219 IP 192.168.100.22> guestlocal.local:ICMP 回应、id 4393、序列8、长度8976
    13:55:55.620230 IP 192.168.100.22> guestlocal.local:icmp
    13:55:56.620028 IP guestlocal.local > 192.168.100.22:ICMP 回应请求,id 4393,序列9,长度8976
    13:55:56.620036 IP guestlocal.local > 192.168.100.22:ICMP
    13:55:56.620201 IP 192.168.100.22> guestlocal.local:ICMP 回应,id 4393,序列9,长度8976
    13:55:56.620212 IP 192.168.100.22> guestlocal.local:icmp
    13:55:57.620065 IP guestlocal.local > 192.168.100.22:ICMP 回应请求,id 4393,序列10,长度8976
    13:55:57.620073 IP guestlocal.local > 192.168.100.22:ICMP
    13:55:57.620227 IP 192.168.100.22> guestlocal.local:ICMP 回应、id 4393、序列10、长度8976
    13:55:57.620241 IP 192.168.100.22> guestlocal.local:icmp
    13:55:58.583823 IP6 fe80:433:10ff:fe5c:6c34 > ip6-allrouters: ICMP6,路由器请求,长度16
    13:55:58.620070 IP guestlocal.local > 192.168.100.22:ICMP 回应请求,id 4393,序列11,长度8976
    13:55:58.620075 IP guestal.local > 192.168.100.22:ICMP
    13:55:58.620236 IP 192.168.100.22> guestlocal.local:ICMP 回应,id 4393,序列11,长度8976
    13:55:58.620245 IP 192.168.100.22> guestlocal.local:icmp
    13:55:59.620073 IP guestlocal.local > 192.168.100.22:ICMP 回应请求,id 4393,序列12,长度8976
    13:55:59.620080 IP guestlocal.local > 192.168.100.22:ICMP
    13:55:59.620242 IP 192.168.100.22> guestlocal.local:ICMP 回应,id 4393,序列12,长度8976
    13:55:59.620254 IP 192.168.100.22> guestlocal.local:icmp
    ^C
    捕获32个数据包