一種實(shí)現(xiàn)Chelsio40G網(wǎng)卡性能調(diào)優(yōu)的方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù),具體地說(shuō)是一種實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法。【
背景技術(shù):
】[0002]隨著目前測(cè)試技術(shù)的不斷發(fā)展,各種測(cè)試工具、測(cè)試軟件及方法被越來(lái)越多的應(yīng)用于服務(wù)器產(chǎn)品及各種部件的測(cè)試。[0003]通常進(jìn)行測(cè)試網(wǎng)卡過(guò)程中,都會(huì)遇見一些網(wǎng)卡的測(cè)試性能與理論性能相差甚遠(yuǎn)的情況,發(fā)生這種情況的原因各有不同。整體而言,與CPU及網(wǎng)卡的中斷綁定相關(guān)。引入的Chels140G網(wǎng)卡在做兼容性測(cè)試時(shí),發(fā)現(xiàn)帶寬無(wú)法達(dá)到理論帶寬90%的測(cè)試通過(guò)標(biāo)準(zhǔn),但經(jīng)過(guò)嘗試優(yōu)化,能夠達(dá)到通過(guò)標(biāo)準(zhǔn)。而本發(fā)明即針對(duì)Chels140G網(wǎng)卡做了一些嘗試性調(diào)優(yōu),以期達(dá)到Chels140G網(wǎng)卡性能優(yōu)化的目的。【
發(fā)明內(nèi)容】[0004]針對(duì)現(xiàn)有技術(shù)存在的不足之處,本方明提供了一種實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法。[0005]本發(fā)明所述一種實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法,解決上述技術(shù)問(wèn)題采用的技術(shù)方案如下:該方法是在LINUX系統(tǒng)下,通過(guò)相關(guān)命令,實(shí)現(xiàn)自動(dòng)讀取測(cè)試網(wǎng)卡的信息,同時(shí)自動(dòng)實(shí)現(xiàn)中斷綁定,均衡CPU壓力,能夠快速準(zhǔn)確的進(jìn)行網(wǎng)卡性能調(diào)優(yōu)。[0006]該實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法的具體步驟包括:步驟一、查找Chels140G網(wǎng)卡,并啟動(dòng)接口;步驟二、確定CPU內(nèi)核任務(wù)量及各中斷,并自動(dòng)綁定;步驟三、驅(qū)動(dòng)模塊重新加載。[0007]本發(fā)明的一種實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法與現(xiàn)有技術(shù)相比具有的有益效果是:該方法可以快速實(shí)現(xiàn)Chels140G網(wǎng)卡性能優(yōu)化,近可能達(dá)到其理論帶寬;通過(guò)此方法能快速實(shí)現(xiàn)配置過(guò)程,大大提高效率,并且能避免人為配置時(shí)可能出現(xiàn)的錯(cuò)誤、漏失;并且該方法操作簡(jiǎn)單,實(shí)用性較強(qiáng),對(duì)于一些問(wèn)題分析、產(chǎn)品參數(shù)性能調(diào)優(yōu)等有很好的作用,并為應(yīng)用于與其他網(wǎng)卡提供借鑒?!揪唧w實(shí)施方式】[0008]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,對(duì)本發(fā)明所述一種實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法進(jìn)一步詳細(xì)說(shuō)明。[0009]本發(fā)明所述一種實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法,是在LINUX系統(tǒng)下,通過(guò)相關(guān)命令,實(shí)現(xiàn)各中斷綁定及驗(yàn)證操作結(jié)果來(lái)實(shí)現(xiàn)的。[0010]實(shí)施例:本實(shí)施例所述一種實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法,通過(guò)相關(guān)命令,即通過(guò)運(yùn)行對(duì)應(yīng)程序,實(shí)現(xiàn)自動(dòng)讀取測(cè)試網(wǎng)卡的信息,同時(shí)自動(dòng)實(shí)現(xiàn)中斷綁定,均衡CPU壓力,能夠快速準(zhǔn)確的進(jìn)行網(wǎng)卡性能調(diào)優(yōu)。該方法的具體步驟如下:步驟一、查找Chels140G網(wǎng)卡,并啟動(dòng)接口;步驟二、確定CPU內(nèi)核任務(wù)量及各中斷,并自動(dòng)綁定;步驟三、驅(qū)動(dòng)模塊重新加載。[0011]本實(shí)施例所述實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法中,步驟一查找Chels140G網(wǎng)卡,并啟動(dòng)接口的具體實(shí)現(xiàn)內(nèi)容如下:#FindChels1devices#commandspathETHTOOL='whichethtool2>/dev/null'IFUP=/sbin/ifupCXGBTOOL='whichcxgbtool2>/dev/null'KILLALL=〃'whichkillall'-q〃SYSCTL=〃'whichsysctl'-q_w〃usage(){echo〃Usage:$0[opt1ns]〃echo〃opt1ns:〃echo〃-CDisablebindingIRQstoCPUs(smp_affinity),echo〃-DDonotdisableIRQbalancedaemon.〃echo〃-tWritetx_coal=2tomodprobe.d/conf.〃echo〃-TRemovetx_coal=2frommodprobe.d/conf.〃echoexit}#Lookforcxgb4deviceslist—chels1—dev(){list_dev='/sbin/iplinkshow|grepmtu|cut-d’:’-f2'fordevin$list_devdodesc_dev='$ETHT00L_i$dev2>&1|grepcxgb4'if[$?-eq0];thenecho$devfidone}bringup(){#Privilegeifupasitwillapplytheinterfaces’settings.#Ifitfails,presumablyduetothelackofconfigfile,#justbringthelinkup.1Psettingscanbeappliedlater.$IFUP$12>/dev/nullif[$?-ne0];then/sbin/iplinksetdev$1upfi}.本實(shí)施例所述實(shí)現(xiàn)Chels140G網(wǎng)卡性能調(diào)優(yōu)的方法中,步驟二確定CPU內(nèi)核任務(wù)量及各中斷,并自動(dòng)綁定的具體實(shí)現(xiàn)內(nèi)容如下:#cpumaskisusedinmsi_x—perftunefunct1ntoevenlyspreadinterruptsaround#alltheports/CPUs#Itisdeclaredexternaltothefunct1naswewantastatefulcpumaskrotor#whichspreadsinterruptsasevenlyaspossiblearoundalltheports/CPUscpumask=l#grep/proc/interruptstofigureoutcxgb4Jsinterfacesmsiinterrupts.#Onrecentkernels,typicallineslooklike:#81:0000PC1-MS1-edgeeth25-Rxl#89:0000PC1-MS1-edge0000:08:00.4_ofld3#90:0000PC1-MS1-edge0000:08:00.4-rdmaO#hencethegrepon$1and’edge’msi_x—perftune(){ETH=$1#MS1-Xinterruptsallocatedbydriverarerecognisedbydifferent#terminologybydifferentLinuxdistros.#InRHEL5.XjRHEL6.XandSLES11SPldistrosMS1-Xinterruptsare#recognisedasPC1-MS1-edge.#InSLES10SPXdistrosMS1-Xinterruptsarerecognisedas#PC1-MS1-X.#Followingswitchcasestatementshandlesthesecases.1rqs=($(cat/proc/interrupts|grep$ETH|\grep"PC1-MS1-"|awk’{split($0,a,":");printa[l]},))echo"IRQtablelength${#irqs[@]}"maxcpu=$(($(grepprocessor/proc/cpuinfo|wc-1)-1))#Thesmp_affintymaskisonly32bitslong.Asaresult,ifwehave#morethan32cpus,weneedtosetthemaxcpuvalueto31.1f[[${maxcpu}-gt31]];then$maxcpu=31fifor((c=0;c<${#irqs[@]};c++));doecho"Writing$(printf〃%x〃$cpumask)in/proc/irq/${irqs[$c]}/smp_affinity^echo$(printf〃%x〃$cpumask)>/proc/irq/${irqs[$c]}/smp_affinitycpumask='expr$cpumask\木2'if[[${cpumask當(dāng)前第1頁(yè)1 2