用netperf测试nuc972的emac速度

Linux系列资料之Netperf测试网口速度

1 引言

最近有客户反应nuc970的EMAC速度不够快,只有50Mbps左右。为了验证客户问题,使用netperf工具在nuc970evb板上对EMAC的速度进行了测试,用数据来说明问题。本文记录在nuc970上使用netperf测速的主要步骤及测试结果。

2. 测试工具准备

2.1 netperf下载

https://github.com/HewlettPackard/netperf/releases/tag/netperf-2.6.0

netperf-netperf-2.6.0.tar.gz

解压缩

#tar zxvf netperf-netperf-2.6.0.tar.gz

#cd netperf-netperf-2.6.0

2.2 编译PC平台工具

#./configure –prefix=$PWD/../install-x86

#make

#make install

2.3 交叉编译

#./configure CC=arm-linux-gcc –host=arm-linux –prefix=$PWD/../install-nuc970

出现如下错误:

checking whether setpgrp takes no argument… configure: error: cannot check setpgrp when cross compiling

解决办法:

echo “ac_cv_func_setpgrp_void=yes” >config.cache

再运行configure:

#./configure CC=arm-linux-gcc –host=arm-linux –prefix=$PWD/../install-nuc970 –config-cache

#make

#make install

复制交叉编译好的netperf netserver到rootfs中,并重新烧写到nuc972开发板上,并启动nuc972系统

3 netperf命令介绍

3.1 netperf介绍

Netperf可以模拟三种不同的TCP流量模式:

1)单个TCP连接,批量(bulk)传输大量数据

2)单个TCP连接,client请求/server应答的交互(transaction)方式

3)多个TCP连接,每个连接中一对请求/应答的交互方式

Netperf可以模拟两种UDP的流量模式:

1) 从client到server的单向批量传输

2) 请求/应答的交互方式,由于UDP传输的不可靠性,在使用netperf时要确保发送的缓冲区大小不大于接收缓冲区大小,否则数据会丢失,netperf将给出错误的结果。因此,对于接收到分组的统计不一定准确,需要结合发送分组的统计综合得出结论。

3.2 netperf 语法格式

Netperf命令的参数:

[global options]可选参数

-H host :指定远端运行netserver的server IP地址

-l testlen:指定测试的时间长度(秒)

-t testname:指定进行的测试类型(TCP_STREAM, UDP_STREAM, TCP_RR, TCP_CRR, UDP_RR)

[test-specific options]可选参数,具体如下

-s size:设置本地系统的socket发送与接收缓冲大小

-S size:设置远端系统的socket发送与接收缓冲大小

-m size:设置本地系统发送测试分组的大小

-M size:设置远端系统接收测试分组的大小

-D :对本地与远端系统的socket设置TCP_NODELAY选项

-r req,resp:设置request和reponse分组的大小

远程主机:netserver [options]

本地主机:netperf -h remote_host [options]

4 nuc970 EMAC速度测试

用netperf测试时需要一端先运行netsever,然后另一端运行netperf。所以在nuc970上可以进行两种测试:

1)nuc970上运行netserver,PC上运行netperf连接nuc970做测试。

2)PC上运行netserver,nuc970上运行netperf连接PC。

4.1 nuc970运行netserver的测试结果

在nuc970上运行netserver

#./netserver

在PC上运行netperf

$ ./netperf -H 10.130.11.46 -l 60

MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.130.11.46 () port 0 AF_INET

Recv Send Send

Socket Socket Message Elapsed

Size Size Size Time Throughput

bytes bytes bytes secs. 10^6bits/sec

87380 16384 16384 60.05 66.50

$ ./netperf -H 10.130.11.46 -l 60 -t TCP_MAERTS

MIGRATED TCP MAERTS TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 10.130.11.46 () port 0 AF_INET

Recv Send Send

Socket Socket Message Elapsed

Size Size Size Time Throughput

bytes bytes bytes secs. 10^6bits/sec

87380 16384 16384 60.00 54.82

4.2 PC运行netserver的测试结果

现在pc上运行netserver

$./netserver

在nuc970上运行netperf进行测试:

/usr # ./netperf -H 10.130.30.2 -l 60

MIGRATED TCP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 10.130.30.2 () port 0 AF_INET

Recv Send Send

Socket Socket Message Elapsed

Size Size Size Time Throughput

bytes bytes bytes secs. 10^6bits/sec

87380 16384 16384 60.01 54.80

/usr # ./netperf -H 10.130.30.2 -l 60 -t TCP_MAERTS

MIGRATED TCP MAERTS TEST from 0.0.0.0 () port 0 AF_INET to 10.130.30.2 () port 0 AF_INET

Recv Send Send

Socket Socket Message Elapsed

Size Size Size Time Throughput

bytes bytes bytes secs. 10^6bits/sec

87380 16384 16384 60.00 66.64

参考资料:

1. http://www.aiuxian.com/article/p-2662698.html

2. http://blog.csdn.net/skdkjzz/article/details/17073541