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的硬件标准等。