以太网TX-RX吞吐不达标排查

PHY吞吐测试(iperf测试)方法

1.测试材料:笔记本电脑一台、网线两根、目标盒子一台,路由器一个(可不联网)

2.测试步骤:

  • 笔记本电脑中需要有iperf工具,这里建议使用较新的iperf3版本

  • 盒子和电脑在同一个局域网,即网线连接同一个路由(可以互相ping通)

  • 测盒子下载速度(盒子RX吞吐):(更多参数可输入iperf --help获取) 盒子进入串口或者adb输入:iperf -s 笔记本电脑cmd输入命令:iperf -c 盒子IP -i 1 -w 1m -t 60

    盒子端的RX吞吐数据:
    console:/ # iperf -s
    -----------------------------------------------------------
    Server listening on 5201
    -----------------------------------------------------------
    Accepted connection from 192.168.155.3, port 62730
    [  5] local 192.168.155.4 port 5201 connected to 192.168.155.3 port 62731
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-1.00   sec   107 MBytes   901 Mbits/sec
    [  5]   1.00-2.00   sec   111 MBytes   935 Mbits/sec
    [  5]   2.00-3.00   sec   113 MBytes   947 Mbits/sec
  • 测盒子上传速度(盒子TX吞吐):(更多参数可输入iperf --help获取) 笔记本电脑输入iperf -s 盒子端进入串口或者adb输入:iperf -c 电脑IP -i 1 -t 60

    console:/ # iperf -c 192.168.155.3 -i 1 -t 60
    Connecting to host 192.168.155.3, port 5201
    [  5] local 192.168.155.4 port 37352 connected to 192.168.155.3 port 5201
    [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec  70.2 MBytes   588 Mbits/sec    0    218 KBytes
    [  5]   1.00-2.00   sec  58.6 MBytes   492 Mbits/sec    0    218 KBytes
    [  5]   2.00-3.00   sec  57.9 MBytes   486 Mbits/sec    0    218 KBytes
    [  5]   3.00-4.00   sec  57.5 MBytes   482 Mbits/sec    0    218 KBytes
    [  5]   4.00-5.00   sec  58.4 MBytes   490 Mbits/sec    0    218 KBytes
    [  5]   5.00-6.00   sec  58.0 MBytes   487 Mbits/sec    0    218 KBytes

    异常问题:在测试千兆PHY的吞吐测试时,可以看到,TX的吞吐只有500Mbps左右,明显不达标。

问题排查分析方法

软件层面可以通过如下四个方法进行调试确认吞吐不达标的原因。

方法一:查看CPU占用是否正常

查看盒子在iperf测试过程中CPU的占用是否正常。如果CPU占用很高时,需要排查占用过高的原因:

  • 是否开启了SLUB_DEBUG/KASAN/LOCKDEP等会影响系统负载的内核调试机制,可关闭这些调试机制再测试iperf;

  • 跑iperf时后台是否有较多进程?可关闭这些进程再测试;

  • 其他影响CPU占用的原因需要进一步分析处理。

方法二:测试网线异常

检查是否是由于测试使用的网线导致吞吐不达标。可通过更换网线的方法进行确认。

方法三:调整rx-delay和tx-delay时序

通过调整phy模块的tx-delay和rx-delay值再进行iperf测试,看TX和RX的吞吐是否有改善。

这里默认千兆网配置为gmac0、百兆网为gmac1,具体PHY的配置可通过方案配置dts文件中的gmac配置查看。快速调整rx_delay和tx_delay的方法:
​
调试方法如下:请注意rx_delay和tx_delay的范围(tx_delay【0~7】;rx_delay【0~31】)
千兆网:
cd /sys/devices/platform/soc/gmac0 
echo xx >  tx_delay
echo  xx > rx_delay
查看当前tx_delay/rx_delay数值的方法
cd /sys/devices/platform/soc/gmac0 
cat /sys/devices/platform/soc/gmac0/tx_delay
cat /sys/devices/platform/soc/gmac0/rx_delay
​
百兆网:
cd /sys/devices/platform/soc/gmac1
echo xx >  tx_delay
echo  xx > rx_delay
查看当前tx_delay/rx_delay数值的方法
cd /sys/devices/platform/soc/gmac1
cat /sys/devices/platform/soc/gmac1/tx_delay
cat /sys/devices/platform/soc/gmac1/rx_delay

调整tx-delay或者rx-delay值后,使用上文介绍的“PHY吞吐测试(iperf测试)方法”进行测试。如果调整tx-delay或者rx-delay值对盒子的RX吞吐 或者TX吞吐有改善的话,说明一开始设置的tx-delay或者rx-delay值不合理,需要在代码中设置合适的tx-delay或者rx-delay值。如果无论怎么调整tx-delay或者rx-delay值都没有改善的话,说明不是tx-delay或者rx-delay值导致的吞吐不达标问题。

方法四:确认DDR带宽

当DDR带宽不足时,也会引起吞吐测试异常。可以将DDR频率适当调高看是否有改善。某款DDR物料的最高频率,可通过查看物料验证结果。

硬件问题

如果以上四个软件调试的方法都没有改善的话,那么可以往硬件层面进行排查。查看信号完整性,主要考虑PCB的走线是否符合PHY的硬件标准等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值