一种基于服务器性能测试的性能调优方法与流程

文档序号:16666652发布日期:2019-01-18 23:19阅读:568来源:国知局
一种基于服务器性能测试的性能调优方法与流程

本发明涉及服务器性能测试技术领域,更具体的说是涉及一种基于服务器性能测试的性能调优方法。



背景技术:

随着云计算、大数据等新型技术的发展,对服务器的处理器、内存、数据存储的带宽和容量等性能要求越来越高,如何高效地评估服务器各项基本性能对服务器厂商、服务器用户有十分重大的意义。传统服务器性能测试通过自动运行测试进程来实现,因测试效率较高,被测试人员普通采用。

但是,在对硬盘的读写能力测试过程中,常常出现性能不达标的情况,可以通过绑定内核的方法调优。可以通过将一个进程绑定到一个内核上的方法,直到测试完成。但这种方法的问题是不够机动,如果绑定的内核利用率过高,测试的结果也会出现不达标的情况。



技术实现要素:

针对以上问题,本发明的目的在于提供一种基于服务器性能测试的性能调优方法,通过周期性采集内核利用率,将测试进程自动绑定在利用率最低的内核上并用于测试。

本发明为实现上述目的,通过以下技术方案实现:一种基于服务器性能测试的性能调优方法,包括如下步骤:

步骤1:获取内核数量和测试程序的进程号;

步骤2:实时获取cpu进程的状态;

步骤3:将每个cpu内核的使用状态分别记录;

步骤4:分别累加每个cpu内核的使用率;

步骤5:将cpu内核使用率最低的内核找出来;

步骤6:将测试进程重新绑定到利用率最低的内核上。

进一步,步骤2包括:采用实时系统监控工具mpstat每2秒抓取一次cpu的使用状态信息。

进一步,所述步骤2还包括:将cpu的使用状态信息中保护cpu各内核利用率的部分写入buffer文档中。

进一步,所述步骤3包括:循环筛选buffer文档中的信息,并按照内核名字将每个内核的使用率进行保存。

进一步,所述步骤3还包括:定义循环次数j,如果在循环过程中j大于cpu内核数,则跳出循环。

进一步,所述步骤4包括:循环抓取每个内核的利用率,将每个内核的实时内核利用率$k与内核使用率累加值"$k"_1相加,并重新放入"$k"_1中。

进一步,所述步骤4还包括:定义循环次数k,如果在循环过程中k大于cpu内核数,则跳出循环。

进一步,所述步骤4还包括:如果内核的使用率累加值"$k"_1不存在,则将"$k"_1的值初始化为0。

进一步,所述步骤5具体包括:定义内核使用率最小值,并设定初始值;循环遍历每个内核使用率的累加值"$k"_1,如果"$k"_1小于当前的内核使用率最小值,则将当前内核使用率的累加值"$k"_1设为内核使用率最小值,并将当前内核的序号写入关键字key中。

进一步,所述步骤6具体为:将测试进程重新绑定到序号为key的内核上。

对比现有技术,本发明有益效果在于:

1.通过重新绑定内核,来实现性能调优的目的。

2.通过动态重新绑定内核的方式,避免过度依赖单一内核。

3.通过抓取实时的内核利用率,并将各个内核的利用率累加,避免突发事件造成某个内核利用率飙升造成的偏差。

4.重新绑定内核的时间可控,避免频繁重新绑定和内核切换的时候命令延迟。

5.使用冒泡比较法,能够快速准确的找出利用率最小的内核。

本发明可以用在服务器性能测试中,通过自动化的调优方式,将测试进程绑定利用率最低的内核,提高测试性能。同时,在测试时使用本发明也直观的反映出cpu对测试结果的影响。有效的提高了测试效率。

由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。

附图说明

附图1是本发明实施例一的方法流程图。

附图2是本发明实施例二的方法流程图。

具体实施方式

下面结合附图对本发明的具体实施方式做出说明。

实施例一:

如图1所示的一种基于服务器性能测试的性能调优方法,包括如下步骤:

步骤1:获取内核数量和测试程序的进程号。

步骤2:实时获取cpu进程的状态。

步骤3:将每个cpu内核的使用状态分别记录。

步骤4:分别累加每个cpu内核的使用率。

步骤5:将cpu内核使用率最低的内核找出来。

步骤6:将测试进程重新绑定到利用率最低的内核上。

本实施例提出的一种基于服务器性能测试的性能调优方法,通过执行脚本,实现自动化的调优方式,将测试进程绑定利用率最低的内核,提高测试性能。同时,在测试时使用能够直观的反映出cpu对测试结果的影响。有效的提高了测试效率。

实施例二:

如图2所示的一种基于服务器性能测试的性能调优方法,包括如下步骤:

步骤1:获取内核数量和测试程序的进程号。

步骤2:采用实时系统监控工具mpstat每2秒抓取一次cpu的使用状态信息。将cpu的使用状态信息中保护cpu各内核利用率的部分写入buffer文档中。

步骤3:循环筛选buffer文档中的信息,并按照内核名字将每个内核的使用率进行保存。定义循环次数j,如果在循环过程中j大于cpu内核数,则跳出循环。

步骤4:循环抓取每个内核的利用率,将每个内核的实时内核利用率$k与内核使用率累加值"$k"_1相加,并重新放入"$k"_1中。定义循环次数k,如果在循环过程中k大于cpu内核数,则跳出循环。如果内核的使用率累加值"$k"_1不存在,则将"$k"_1的值初始化为0。

步骤5:定义内核使用率最小值,并设定初始值;循环遍历每个内核使用率的累加值"$k"_1,如果"$k"_1小于当前的内核使用率最小值,则将当前内核使用率的累加值"$k"_1设为内核使用率最小值,并将当前内核的序号写入关键字key中。

步骤6:将测试进程重新绑定到序号为key的内核上。

在上述基础上,具体的脚本内容如下:

1.获取内核数量和测试程序的进程号

cpus=$(grep-cprocessor/proc/cpuinfo)

pids=$(psaux|grep"测试进程"|awk'{print$2}')--测试进程的名字,通常是fio

2.实时获取cpu进程的状态

mpstat–a-2>1.txt&--这条命令在主程序中运行,每2s抓一次cpu使用状态

j=$(($cpus+5))

sed-n"5,"$j"p"1.txt>buffer_sum.txt--mpstat中包含信息较多,这里将包含cpu各内核利用率的部分剪出来放入buffer文档中

3.将每个cpu内核的使用状态分别记录

forjin{1..100}

do

if(($j>$cpus))--自定义的循环数,一般的cpu内核数小于100,如果循环超过内核数,则跳出循环

thenbreak

fi

sed-n""$j"p"buffer_sum.txt|awk'{print$4}'>$j--把buffer文档中的信息进一步筛选,并按照内核名字来命名,分别保存起来,为了找出最小值。

done

4.分时累加cpu内核使用率

forkin{1..100}

do

if(($k>$cpus))--自定义的循环数,一般的cpu内核数小于100,如果循环超过内核数,则跳出循环

thenbreak

fi

iftest–s"$k"_1--定义"$k"_1是每个内核的累加,如果文件"$k"_1已经存在,则可以往下进行

then

l=`cat"$k"_1`

m=`cat$k`

t=`echo$m+$l|bc`

echo$t>""$k"_1"--将当前实时的内核利用率$k,过去个时间点采集的内核利用率累加和$k"_1相加,并重新放入$k"_1

echo$t

else

echo0>"$k"_1--如果$k"_1不存在,则生成$k"_1并写入0来初始化

fi

done

5.将cpu内核使用率最低的内核找出来

min=100--定义一个初始值

forfin{1..100}

do

if(($f>=$cpus))--循环数大于内核数时跳出循环

thenbreak

fi

a=`cat""$f"_1"`

c=`echo"$a<$min"|bc`--累加值遍历,如果当前的累加值小于当前的最小值,则将当前累加值设为最小值

if(($c==1))

then

echo$f>key

min=$a--累加值遍历,如果当前的累加值小于当前的最小值,则将当前累加值设为最小值,并将那个核的数写入关键字key中

echo$min

fi

done

6.重新绑定内核

taskset-c`catkey`-p$pids--将测试进程重新绑定到利用率最低的内核上

本实施例提出的一种基于服务器性能测试的性能调优方法,通过执行脚本重新绑定内核,来实现性能调优的目的。动态重新绑定内核的方式,避免过度依赖单一内核。通过抓取实时的内核利用率,并将各个内核的利用率累加,避免突发事件造成某个内核利用率飙升造成的偏差。重新绑定内核的时间可控,避免频繁重新绑定和内核切换的时候命令延迟。使用了冒泡比较法,能够快速准确的找出利用率最小的内核。

结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所限定的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1