iperf测试吞吐量

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gh201030460222/article/details/80669739


测试方法

(ps:以下PC机是以windows系统为例,如果使用ubuntu,则要安装iperf,执行apt-get install iperf安装即可,下面的iperf.exe就不用了,直接使用iperf即可)

1,搭建局域网
1.1 将PC机(windowns系统),路由器,板子搭建成小型局域网

2,把iperf-2.0.5复现到/system/bin下面

 mount -o remount,rw /system;mount -o rw,system /system
 cp iperf-2.0.5 /system/bin/
 chmod 777 /system/bin/iperf-2.0.5
 sync

3, 测试板子TCP TX情况

PC机: 执行命令: iperf.exe -s -w 64K -i 1
板子: 执行命令: iperf-2.0.5 -c <server_IP> -w 64K -t 60 -i 1 -P 4
<server_IP>:为pc机的ip

4, 测试板子TCP RX情况

板子: 执行命令: iperf-2.0.5 0 -s -w 64K -i 1
PC机: 执行命令: iperf.exe -c <server_IP> -w 64K -t 60 -i 1 -P 4
<server_IP>:为板子的ip

5, 测试板子UDP TX情况

PC机: 执行命令: iperf.exe -s -u -w 1m -i 1
板子: 执行命令: iperf-2.0.5 -u -c <server_IP> -w 1m -t 60 -i 1 -P 4 -b 100m
<server_IP>:为pc机的ip
-b 100m 表示当前网络的发送带宽

6, 测试板子UDP RX情况

板子: 执行命令: iperf-2.0.5 -s -u -w 1m -i 1
PC机: 执行命令: iperf.exe -u -c <server_IP> -w 1m -t 60 -i 1 -P 4 -b 100m
<server_IP>:为板子的ip
-b 100m 表示当前网络的发送带宽

windows size设定说明

iperf -w是通过调用sock_set_sockopt()函数实现的

case SO_RECVBUF:
	val = min_t(u32, val, sysctl_rmem_max);
    
sk->sk_userlocks |= SOCK_RECVBUF_LOCK;
sk->sk_rcvbuf = max_t(u32, val * 2, SOCK_MIN_RECBUF);

以上就是val跟sysctl_rmem_max做比较,取最小值,然后将val*2,跟SOCK_MIN_RCVBUF做比较,取最大值为window size值.

sysctl_rmem_max = (256 + SKB_DATA_ALIGN(sizeof(struct sk_buff)) + SKB_DATA_ALIGN(sizeof(struct skb_shared_info))) * 256
=(256 + SKB_DATA_ALIGN(232) + SKB_DATA_ALIGN(320) ) * 256
=(256 + 256 +320) * 256 = 212992 = 208k

展开阅读全文

没有更多推荐了,返回首页