前段时间设备运行起来之后有些卡顿,规避了代码其他因素的影响之后还是卡顿,于是想测一下网速,查看是否是因为带宽不够导致的卡顿,用到了iperf,这里记录一下。
1、iperf介绍与说明
先介绍一下iperf本身,直接输入命令 iperf --help 可以查看该工具的使用方法和参数设置,笔者这里用的虚拟机跑的(VMware的安装以及ubuntu的环境搭建网上很多教程,搜一下就可以了),因此使用之前要先安装一下。
(1)安装iperf
sudo apt update #更新包信息
sudo apt install iperf #安装iperf
iperf --version #查看安装版本
如果查看安装版本出现了对应的版本就说明安装成功了。
(2)iperf介绍与解释
输入命令 iperf --help 可以看到iperf的详细说明
上面可以看到iperf是由服务器与客户端之分的,服务器用来收包,客户端用来发包,通过包的收发来得到目前网络的速率。那服务器后面就要跟上参数 -s ,客户端后面就要跟上参数 -c。
下面是几个iperf常用的参数:
-u:发送 UDP 包,仅客户端可用,服务端默认 tcp udp 都可以接收
-b:指定发送速率(比如 100M),发送端不受限速影响,如果有限速,也只是接收端有影响
-p:后接服务端监听的端口
-i:设置带宽报告的时间间隔,单位为秒
-t:设置测试的时长,单位为秒
-w:设置tcp窗口大小,一般可以不用设置,默认即可
-B:绑定客户端的ip地址
-4:指定 ipv4
-n:指定传输的字节数
-f:格式化带宽数输出,后接单位,比如 K,M
2、iperf使用
因为只有一台主机,所以要想同时又服务端和客户端的话,就可以像笔者这样在虚拟机上跑iperf 充当客户端来发包,而设备端连接xshell或者其他串口软件跑 iperf 或者iperf脚本充当服务端来收包。
笔者这里设备上没有iperf工具,暂时用iperf脚本来代替工具运行
./iperf -s
设备运行iperf脚本充当服务端,虚拟机跑iperf充当客户端
如上图,笔者使用的命令为
iperf -c 192.168.1.138 -t 60 -i 1
其中,192.168.1.138为设备的IP地址。图片中的第三列 Bandwidth 为带宽,明显带宽不高,因此会出现卡顿现象。
但是在其他都没有问题的情况下,包括网络和设备以及代码一切正常,过去依然出现网络速度很低,那可能就是加载的wifi驱动的问题了,要考虑换一下新的驱动。