本发明涉及计算机网卡测试技术领域,具体提供一种基于netperf自动化测试网卡性能的方法。
背景技术:
随着计算机技术的不断发展,客户对计算机的各项性能有了更高的要求。其中,计算机的网络性能是不同计算机能够实现相互通讯的基础。网卡是计算机网络中必不可少的基本设备,网卡出现故障不仅会影响计算机本身,而且会影响到整个网络的正常运行。伴随着网络信息技术的发展,信息化服务对网络数据传输性能的要求也越来越高。网卡设备作为网络节点中重要的一环,其性能好坏直接影响到整个网络数据传输的性能。因此,为了保证出厂的计算机具有良好的网络数据传输性能,在计算机硬件设备产品进行研发时,需要加强对网卡的性能测试。现有技术中,常规的网卡性能测试方法,大多需要调用测试工具并输入各种测试参数,才能完成对网卡各项主要性能的测试,这个过程不仅繁琐,降低测试效率,而且耗费资源,增加测试成本,有待进一步改进。
技术实现要素:
本发明的技术任务是针对上述存在的问题,提供一种测试方法简单、省时、易操作,能提高测试效率,适用于所有网卡设备的测试从而提高测试易用性,并便于服务器后期维护的基于netperf自动化测试网卡性能的方法。
为实现上述目的,本发明提供了如下技术方案:
一种基于netperf自动化测试网卡性能的方法,所述方法基于Linux操作系统下的shell脚本及nerperf工具,将nerperf工具指令集成到shell脚本中并运行脚本:将两台机器互联,两台机器都预先安装nerperf工具,拷贝netperftest.sh到客户端任意目录下,测试过程中服务器端运行nerserver,客户端运行nerperftest脚本,测试过程的具体步骤为:
S1:根据用户输入的变量,判断输入变量的种类以确定测试方法;
S2:根据判断的输入变量的种类,确定需测试的网卡性能。
所述服务器端和客户端机器均为Linux操作系统,测试的前置工作为:登录Linux操作系统并获得root权限,根据所测试网卡及操作系统版本的不同,安装对应版本的驱动,配置所互联的网络的IP在同一个网段,并关闭防火墙;观察网络连接状态灯正常亮起,启用两个网口并执行ping命令,能正常ping通且数据灯正常闪烁。拷贝netperftest.sh到客户端的任意目录下,并在该目录下运行nerperftest脚本,服务器端运行nerserver,用户在运行nerperftest脚本时输入不同的参数即可实现网卡性能的自动化测试,测试过程中会实时将测试结果打印到结果文件中,方便查阅。
作为优选,步骤S1所述输入变量的种类中,输入变量的个数为1、2、3或4个,若输入变量个数小于1或者大于4,则打印出错误信息;若输入变量个数为1,则该变量决定服务器端IP地址,循环测试网卡的所有性能;若输入变量个数为2,则第一个变量决定服务器端IP地址,第二个变量决定测试性能的类别;若输入变量个数为3,则第三个变量决定测试一种性能所持续的时间;若输入变量个数为4,则第四个变量决定用户在所定时间的基础上进行循环测试网卡的所有性能。
作为优选,步骤S2所述网卡性能包括tcpstream、udpstream、TCPRR、TCPCRR和UDPRR性能。
测试过程中,测试分组大小通过START变量控制,通过while循环依次测试32字节到2048字节。整个测试过程中的每一项性能测试的时间由变量TIME来控制,可自由调整。
与现有技术相比,本发明的基于netperf自动化测试网卡性能的方法具有以下突出的有益效果:所述方法只需依靠netperf测试工具,将之前测试时长时间多次输入命令改为只需输入一次命令即可完成整个测试,将复杂过程简化,节省了测试人员的操作时间,并且该方法适用于业界所有网卡设备,及所有主流Linux操作系统,不仅在测试工作中提高了工作效率,对服务器后期的维护工作也提供了便捷。
附图说明
图1是本发明所述基于netperf自动化测试网卡性能的方法的流程示意图。
具体实施方式
下面将结合实施例,对本发明的基于netperf自动化测试网卡性能的方法作进一步详细说明。
实施例
如图1所示,本发明的基于netperf自动化测试网卡性能的方法基于Linux操作系统下的shell脚本及nerperf工具,将基于Linux操作系统的服务器端和客户端机器互联,服务器端和客户端机器的前置工作为登录Linux操作系统并获得root权限,根据所测试网卡及操作系统版本的不同,安装对应版本的驱动,配置所互联的网络的IP在同一个网段,并关闭防火墙;观察网络连接状态灯正常亮起,启用两个网口并执行ping命令,能正常ping通且数据灯正常闪烁。两台机器上都预先安装nerperf工具,nerperftest.sh拷贝到客户端,服务器端运行nerserver,客户端运行nerperftest脚本。测试过程包括两大具体步骤:
S1:根据用户输入变量的不同,判断输入变量的种类以确定测试方法:
输入变量的个数为1、2、3或4个,若输入变量个数大于4个或小于1个,则会打印出错误信息;若输入变量个数为1,则该变量决定服务器端IP地址,循环测试网卡的所有性能;若输入变量个数为2,则第一个变量决定服务器端IP地址,第二个变量决定测试性能类别;若输入变量个数为3,则第一个变量决定服务器端IP地址,第二个变量决定测试性能类别,第三个变量决定决定测试一种性能所持续的时间;若输入变量的个数为4,则第一个变量决定服务器端IP地址,第二个变量决定测试性能类别,第三个变量决定测试一种性能所持续的时间,第四个变量决定用户在所定时间的基础上进行循环测试网卡的所有性能。
判断输入变量的种类以确定测试方法的代码如下:
if [ $# -gt 4 ]; then
echo "try again, correctly -> hostIP tcp_stream_range "
exit 1
fi
if [ $# -eq 0 ]; then
echo "try again, correctly -> hostIP tcp_stream_range "
exit 1
fi
if [ $# -eq 1 ]; then
REM_HOST=$1
TIME=10
PAR=1
fi
if [ $# -eq 2 ]; then
REM_HOST=$1
TIME=10
PAR=0
fi
if [ $# -eq 3 ]; then
REM_HOST=$1
TIME=$3
PAR=0
fi
if [ $# -eq 4 ]; then
REM_HOST=$1
TIME=$3
PAR=$4
fi。
S2:根据判断的输入变量的种类,确定需测试的网卡性能,需要测试的网卡性能包括tcpstream、udpstream、TCPRR、TCPCRR和UDPRR性能:
(1)如下过程为测试tcpstream性能,其中测试分组大小通过START变量控制,可通过while循环一次测试32字节到2048字节:
if [[ "$2" == "tcpstream" || $PAR ]]; then
{MESSAGE=$START
while [ $MESSAGE -le $END ]; do # message<end
echo >>netperf_result
echo ------------------------------------ >> netperf_result
echo Testing with the following command line: >> netperf_result
echo netperf -l $TIME -H $REM_HOST -t TCP_STREAM -- -m ${MESSAGE}k >> netperf_result
echo >> netperf_result
netperf -l $TIME -H $REM_HOST -f g -t TCP_STREAM -- -m ${MESSAGE}k >> netperf_result
MESSAGE=`expr $MESSAGE + $ADD`
MESSAGE=`expr $MESSAGE \* $MULT`
done
echo}
fi;
(2)如下过程为测试udpstream性能,其中测试分组大小通过START变量控制,可通过while循环一次测试32字节到2048字节:
if [[ "$2" == "udpstream" || $PAR ]]; then
{MESSAGE=$START
while [ $MESSAGE -le 65535 ]; do # message<end
echo >>netperf_result
echo ------------------------------------ >> netperf_result
echo Testing with the following command line: >> netperf_result
echo netperf -l $TIME -H $REM_HOST -t UDP_STREAM -- -m ${MESSAGE} >> netperf_result
echo >> netperf_result_dual_port
netperf -l $TIME -H $REM_HOST -f m -t UDP_STREAM -- -m ${MESSAGE} >> netperf_result
MESSAGE=`expr $MESSAGE + $ADD`
MESSAGE=`expr $MESSAGE \* $MULT`
done
echo}
fi;
(3)如下过程为测试TCPRR性能:
if [[ "$2" == "TCPRR" || $PAR ]]; then
{MESSAGE=$START
echo >>netperf_result
echo ------------------------------------ >> netperf_result
echo Testing with the following command line: >> netperf_result
echo netperf -l $TIME -H $REM_HOST -t TCP_RR >> netperf_result
echo >> netperf_result
netperf -t TCP_RR -l $TIME -H $REM_HOST >> netperf_result
echo}
fi;
(4)如下过程为测试TCPCRR性能:
if [[ "$2" == "TCPCRR" || $PAR ]]; then
{MESSAGE=$START
echo >>netperf_result
echo ------------------------------------ >> netperf_result
echo Testing with the following command line: >> netperf_result
echo netperf -l $TIME -H $REM_HOST -t TCP_CRR >> netperf_result
echo >> netperf_result
netperf -l $TIME -H $REM_HOST -t TCP_CRR >> netperf_result
echo}
fi;
(5)如下过程为测试UDPRR性能:
if [[ "$2" == "UDPRR" || $PAR ]]; then
{MESSAGE=$START
echo >>netperf_result
echo ------------------------------------ >> netperf_result
echo Testing with the following command line: >> netperf_result
echo netperf -l $TIME -H $REM_HOST -t UDP_RR >> netperf_result
echo >> netperf_result
netperf -l $TIME -H $REM_HOST -t UDP_RR >> netperf_result
echo}
fi。
用户在运行nerperftest脚本时输入不同的参数即可实现网卡不同性能的自动化测试,整个测试过程中每一项的测试时间由时间变量TIME控制,可以自由调整。变量PAR可控制预测项目是循环测试tcpstream、udpstream、TCPRR、TCPCRR和UDPRR还是只测试其中一种,测试过程中会实时将测试结果输出到文档netperf_result中。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。