一种可实现linux系统网卡性能调优的方法

文档序号:9435900阅读:4545来源:国知局
一种可实现linux系统网卡性能调优的方法
【技术领域】
[0001]本发明涉及网卡兼容性测试技术,尤其涉及一种可实现LINUX系统网卡性能调优的方法。
【背景技术】
[0002]随着目前测试技术的不断发展,各种测试工具、测试软件及方法被越来越多的应用于服务器产品及各种部件的测试。
[0003]通常在测试网卡过程中,都会遇见一些网卡的测试性能与理论性能相差甚远的情况,发生这种情况的原因各有不同,整体而言,与CPU及网卡的中断绑定相关,故针对近期引入的网卡做了一些尝试性调优,以期达到性能优化的目的。

【发明内容】

[0004]引入的网卡在做兼容性测试时,发现带宽无法达到理论带宽90%的测试通过标准,经过尝试优化,达到了通过标准。因此,本发明提出了一种可实现LINUX系统网卡性能调优的方法,针对此网卡整理了调优过程所做出的操作步骤,以实现资源共享。
[0005]本发明的操作步骤
1)D0S2UNIX脚本文件;
2)、运行对应程序。
[0006]本方法是在LINUX系统下,通过相关命令,实现各中断绑定及验证操作结果来实现的。
[0007]其具体实现内容如下: set_affinityO
{
if [ $VEC -ge 32 ]then
MASK_FILL=〃〃
MASK_ZER0="00000000"let "IDX = $VEC / 32"for ((i=l; i<=$IDX;i++))do
MASK_FILL=〃${MASK_FILL},${MASK_ZER0}〃done
let "VEC -= 32 * $IDX"
MASK_TMP=$((1?$VEC))
MASK='printf "%X%s〃 $MASK_TMP $MASK_FILL'elseMASK_TMP=$((1?$VEC))
MASK='printf 〃%X〃 $MASK—TMP'fi
printf 〃%s mask=%s for /proc/irq/%d/smp—affinity?n" $DEV $MASK $IRQprintf 〃%s〃 $MASK > /proc/irq/$IRQ/smp_affinity
}
if [ "$1" = ■ ] ; thenecho ,,Descript1n:,,
echo 〃 This script attempts to bind each queue of a mult1-queue NIC〃echo 〃 to the same numbered core, ie txO|rxO —> cpuO, txl|rxl —> cpul〃echo ,,usage:〃
echo 〃 $0 ethO [ethl eth2 eth3]〃fi
#check for irqbalance running
IRQBALANCE_ON='ps ax | grep -v grep | grep -q irqbalance; echo $?'
if [ 1IRQBALANCE—ON" == "0" ] ; then
echo 〃 WARNING:1rqbalance is running and will,,
echo 〃 likely override this script’s affinitizat1n.〃
echo 〃 Please stop the irqbalance service and/or execute,,
echo 〃 J killall irqbalance’,,
fi
#
#Set up the desired devices.#
for DEV indo
for DIR in rx tx TxRxdo
MAX='grep $DEV-$DIR /proc/interrupts | wc -1'if ["難}T == "(T ] ; then
MAX='egrep _i "$DEV:.*$DIR〃 /proc/interrupts | wc -1'fi
if ["難}T == "(T ] ; thenecho no $DIR vectors found on $DEVcontinuefi
for VEC in 'seq 0 I $MAX'do
IRQ='cat /proc/interrupts | grep _i $DEV_$DIR_$VEC"$" | cut _d: -fI | sed〃s/ //g"'
if [ -n 〃$IRQ〃 ]; then
set_affinity
else
IRQ='cat /proc/interrupts | egrep _i $DEV:v$VEC_$DIR"$〃 | cut _d: -fI | sed"s/ //g"'
if [ -n 〃$IRQ〃 ]; thenset_affinityfifi
donedonedone o
[0008]本发明的有益效果是。
[0009]此方法是一种快捷方便、易操作、并能避免人工出错的一种网卡调优的方法。它可以实现自动读取测试网卡的信息,同时自动实现中断绑定,均衡CPU压力。能帮助我们快速准确的进行网卡性能调优。
【具体实施方式】
[0010]下面对本发明的内容进行更加详细的阐述: set_affinityO
{
if [ $VEC -ge 32 ]then
MASK_FILL=〃〃
MASK_ZER0="00000000"let "IDX = $VEC / 32"for ((i=l; i<=$IDX;i++))do
MASK_FILL=〃${MASK_FILL},${MASK_ZER0}〃done
let "VEC -= 32 * $IDX"
MASK_TMP=$((1?$VEC))
MASK='printf "%X%s〃 $MASK_TMP $MASK_FILL'else
MASK_TMP=$((1?$VEC))
MASK='printf 〃%X〃 $MASK_TMP'fi
printf 〃%s mask=%s for /proc/irq/%d/smp_affinity?n" $DEV $MASK $IRQprintf 〃%s〃 $MASK > /proc/irq/$IRQ/smp_affinity
}
if [ "$1" = ■ ] ; then echo ,,Descript1n:,,
echo 〃 This script attempts to bind each queue of a mult1-queue NIC〃echo 〃 to the same numbered core, ie txO|rxO —> cpuO, txl|rxl —> cpul〃echo ,,usage:〃
echo 〃 $0 ethO [ethl eth2 eth3]〃fi
#check for irqbalance running
IRQBALANCE_ON='ps ax | grep -v grep | grep -q irqbalance; echo $?'
if [ 1IRQBALANCE—ON" == "0" ] ; then
echo 〃 WARNING:1rqbalance is running and will,,
echo 〃 likely override this script’s affinitizat1n.〃
echo 〃 Please stop the irqbalance service and/or execute,,
echo 〃 J killall irqbalance’,,
fi
#
#Set up the desired devices.#
for DEV indo
for DIR in rx tx TxRxdo
MAX='grep $DEV-$DIR /proc/interrupts | wc -1'if ["難}T == "(T ] ; then
MAX='egrep _i "$DEV:.*$DIR〃 /proc/interrupts | wc -1'fi
if ["難}T == "(T ] ; then echo no $DIR vectors found on $DEV continue fi
for VEC in 'seq 0 I $MAX'do
IRQ='cat /proc/interrupts | grep _i $DEV_$DIR_$VEC"$" | cut _d: -fI | sed"s/ //g"'
if [ -n 〃$IRQ〃 ]; then
set_affinity
elseIRQ='cat /proc/interrupts | egrep _i $DEV:v$VEC_$DIR"$〃 | cut _d: -fI | sed"s/ //g"'
if [ -n 〃$IRQ〃 ]; thenset_affinityfifi
done
done
done
本方法可以快速实现网卡性能优化,尽可能达到其理论带宽,通过此方法能快速实现配置过程,大大提高效率,并且不会有人为配置时可能出现的错误、漏失等错误。该方法操作简单,实用性较强,对于一些问题分析、产品参数性能调优等有很好的作用。
【主权项】
1.一种可实现LINUX系统网卡性能调优的方法,其特征在于,D.D0S2UNIX脚本文件;2)、运行对应程序。2.根据权利要求1所述的方法,其特征在于,其具体实现内容如下:set_affinityO{if [ $VEC -ge 32 ]thenMASK—FILL=""MASK—ZER0=〃0000000(Tlet "IDX = $VEC / 32"for ((i=l; i<=$IDX;i++))doMASK—FILL=〃${MASK—FILL},${MASK—ZERO}"donelet 〃VEC -= 32 * $IDX"MASK_TMP=$((1?$VEC))MASK='printf "%X%s〃 $MASK_TMP $MASK_FILL'elseMASK_TMP=$((1?$VEC))MASK='printf 〃%X〃 $MASK—TMP'fiprintf 〃%s mask=%s for /proc/irq/%d/smp—affinity?n" $DEV $MASK $IRQprintf 〃%s〃 $MASK > /proc/irq/$IRQ/smp_affinity}if [ "$1" = ■ ] ; thenecho ,,Descript1n:,,echo 〃 This script attempts to bind each queue of a mult1-queue NIC〃echo 〃 to the same numbered core, ie txO|rxO —> cpuO, txl|rxl —> cpul〃echo ,,usage:〃echo 〃 $0 ethO [ethl eth2 eth3]〃fi#check for irqbalance runningIRQBALANCE_ON='ps ax | grep -v grep | grep -q irqbalance; echo $?'if [ 1IRQBALANCE—ON" == "0" ] ; thenecho 〃 WARNING:1rqbalance is running and will,,echo 〃 likely override this script’s affinitizat1n.〃echo 〃 Please stop the irqbalance service and/or execute,.echo 〃 J killall irqbalance’,,fi##Set up the desired devices.#for DEV indofor DIR in rx tx TxRxdoMAX='grep $DEV-$DIR /proc/interrupts | wc -1'if ["難}T == "(T ] ; thenMAX='egrep _i "$DEV:.*$DIR〃 /proc/interrupts | wc -1'fi if ["難}T == "(T ] ; then echo no $DIR vectors found on $DEV continue fifor VEC in 'seq 0 I $MAX'doIRQ='cat /proc/interrupts | grep _i $DEV_$DIR_$VEC"$" | cut _d: -fI | sed"s/ //g"'if [ -n 〃$IRQ〃 ]; thenset_affinityelseIRQ='cat /proc/interrupts | egrep _i $DEV:v$VEC_$DIR"$〃 | cut _d: -fI | sed"s/ //g"'if [ -n 〃$IRQ〃 ]; thenset_affinityfifidonedonedone o3.根据权利要求1所述的方法,其特征在于,在LINUX系统下,通过命令,实现各中断绑定及验证操作结果。
【专利摘要】本发明提供一种可实现LINUX系统网卡性能调优的方法,涉及网卡兼容性测试技术,本发明的操作步骤包括1)、DOS2UNIX脚本文件;2)、运行对应程序。它可以实现自动读取测试网卡的信息,同时自动实现中断绑定,均衡CPU压力。能帮助我们快速准确的进行网卡性能调优。
【IPC分类】G06F11/36, H04L12/26
【公开号】CN105187270
【申请号】CN201510503654
【发明人】赵勇
【申请人】浪潮电子信息产业股份有限公司
【公开日】2015年12月23日
【申请日】2015年8月17日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1