从 MYD-YM62X EVK硬件用户手册-V1.0 可以了解到:
开发板上,提供了两个千兆以太网网口,具体位置如下:
下面,就对有线网络的通讯能力进行测试。
一、环境准备
本次测试,硬件环境如下:
1. 电脑:macOS 11.7
2. 开发板:米尔-TI AM6231开发板
3. 网络设备:AX88179千兆USB网卡,千兆网线
具体如下:
AX88179千兆USB网卡是一个USB3.0 Hub上的:
电脑的USB有线网口和开发板的有线网口2进行直连,网络IP配置如下:
电脑:192.168.10.1
开发板:192.168.10.11
软件环境如下:
1. 电脑:pv、nc、iperf3
2. 开发板:pv、nc、iperf3、net2.sh(网速查看)
电脑上的使用brew install直接安装即可。
开发板上的,pv需要自己编译,具体如下:
pv:
root@myd-am62x:~# git clone https://github.com/icetee/pv.git
root@myd-am62x:~# cd pv
root@myd-am62x:~# ./configure --host=aarch64
root@myd-am62x:~# make
root@myd-am62x:~# file pv
pv: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=44b4ccfd9660cb3ef0d422f79735e83e2a70b137, for GNU/Linux 3.14.0, with debug_info, not stripped
nc、iptref自带:
root@myd-am62x:~# type iperf3
iperf3 is hashed (/usr/bin/iperf3)
root@myd-am62x:~# type nc
nc is /usr/bin/nc
net2.sh网速查看脚本:
#!/bin/bash
# shellcheck disable=SC2034
i=$1
c=$2
e=1
if [ -z "$1" ] || [ -z "$2" ]; then
echo
echo usage: "$0" network-interface checkrepeats
echo e.g. "$0" eth0 10
echo
exit
fi
while [ "$e" -le "$c" ]
do
# Network Interface Load:
R1=$(cat /sys/class/net/"$1"/statistics/rx_bytes)
T1=$(cat /sys/class/net/"$1"/statistics/tx_bytes)
sleep 1
R2=$(cat /sys/class/net/"$1"/statistics/rx_bytes)
T2=$(cat /sys/class/net/"$1"/statistics/tx_bytes)
TBPS=$(expr $T2 - $T1)
RBPS=$(expr $R2 - $R1)
TU=KB
RU=KB
TKBPS=$(expr $TBPS / 1024)
RKBPS=$(expr $RBPS / 1024)
if [[ $TKBPS -gt 1024 ]];then
TKBPS=$(expr $TKBPS / 1024)
TU=MB
fi
if [[ $RKBPS -gt 1024 ]];then
RKBPS=$(expr $RKBPS / 1024)
RU=MB
fi
# CPU Load:
CPU_LOAD=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}') # percentage of CPU in use
MEM_LOAD=$(free | grep Mem | awk '{printf "%0.2f", $3/$2 * 100.0}') # percentage of Memory in use
echo "$1 tx: $TKBPS $TU/s rx: $RKBPS $RU/s, $(nproc) CPUs @ $CPU_LOAD load, $MEM_LOAD% Memory in use"
(( e++ ))
done
二、iperf3 tcp 开发板发送--电脑接收测试
在 MYD-YM62X_Linux软件评估指南 中,提供了iperf3的测试方式,可供参考。
1. 在开发板上运行net2.sh监控网速:(下图顶部)
./net2 eth1 1000
2. 在电脑上运行iperf监听请求:(下图底部)
iperf3 -s -i 2
3. 开发板上运行iperf3发送数据:
iperf3 -c 192.168.10.1 -i 2 -t 15
运行结果:
由于 米尔-TI AM6231开发板 只有一个CPU核心:
所以进行高速网络测试的时候,直接CPU负荷拉满了。
三、iperf3 udp 开发板发送--电脑接收 测试
udp测试时,电脑端还是运行下面的命令:
iperf3 -s -i 2
开发板运行下面的命令:
iperf3 -u -c 192.168.10.1 -i 2 -t 15 -b 1000M
其中 -u 表示udp模式,-b表示速度
运行结果如下:
直连的时候,udp数据传输的速度,没有tcp的块,如果用路由器,可能会更好。
四、iperf3 tcp 电脑发送--开发板接收测试
1. 在开发上运行iperf监听请求:(下图底部)
iperf3 -s -i 2
2. 电脑上运行iperf3发送数据:
iperf3 -c 192.168.10.11 -i 2 -t 15
运行结果如下:
从实测效果来看,电脑发送的效率,要比开发板的高,所以总体速度提升了。
五、iperf3 udp 电脑发送--开发板接收 测试
udp测试时,开发板还是运行下面的命令:
iperf3 -s -i 2
电脑运行下面的命令:
iperf3 -u -c 192.168.10.11 -i 2 -t 15 -b 1000M
运行结果如下:
电脑的发送效率,显然高于开发板 udp时的发送效率。
但此时,开发板上的iperf3,似乎有消极怠工之嫌。
还好net2.sh提供了网速信息,总体还是比tcp的要慢。
六、nc网络测试
1. 电脑发,开发板收
电脑命令:
pv /dev/random | nc -l 192.168.10.1 2345
开发板命令:
nc 192.168.10.1 2345 > /dev/null
上述命令中,使用/dev/random产生随机数据进行发送
运行结果如下:
2. 开发板发,电脑收
电脑命令:
nc -l 192.168.10.11 2345 > /dev/null
开发板命令:
./pv /dev/random | nc 192.168.10.11 2345
运行结果如下:
因为单个进程发送,CPU已经拉满了,所以就不用做多进程发送测试了。
七、总结
从上面的测试效果来看,总的来说,网络性能还是不错的。
但是受限于单核CPU的实际情况,在实际使用中,会收到的一定的影响。
但是在日常情况下的使用,结合这块开发板和硬件的实际情况来说,应该是足够了的。