一种基于CPU压力测试的功耗调整方法及系统与流程

    专利2022-07-08  86


    本发明属于服务器测试技术领域,具体涉及一种基于cpu压力测试的功耗调整方法及系统。



    背景技术:

    随着技术的发展,服务器的应用越来越广泛,其中cpu作为服务器的核心技术,cpu功耗大小影响着服务器的功耗和压力。

    在实际测试过程中,当服务器中搭配了cpu、网络适配器、存储硬盘和内存等部件时,整系统压力测试是测试服务器稳定性的必备测试项。但当网络适配器、存储硬盘和内存等部件压力开始测试时,额外占用部分cpu功耗,即测试过程会使得cpu功耗有所增加。在对cpu压力测试时常采用intel公司提供的ptu工具,使用参数限制cpu的功耗,或者采用passmarkburnintest工具调整cpu功耗使用率来限制cpu的功耗使用。使用常用方法给cpu加压时,已经占用部分cpu功耗。

    上述问题的现有解决方法及其缺点如下。

    (1)网络适配器压力大小、线程数、存储硬盘个数、内存数和内存容量均会影响cpu的功耗大小;在cpu压力测试时,需要手动计算cpu的功耗参数设置为多少才不会影响系统卡顿,操作繁琐。

    (2)在多个不同部件压力同时测试时,为避免系统卡顿影响其他部件的压力测试,常常将cpu的压力测试放在最后开始测试;故部件压力测试时有执行的先后顺序。

    (3)可以采用设置参数的方法设置功耗大小,但是该方法是静态的,当其他线程占用cpu功耗较大时,无法动态调整cpu功耗,此时导致系统卡顿。



    技术实现要素:

    针对现有技术的上述不足,本发明提供一种基于cpu压力测试的功耗调整方法及系统,以解决上述技术问题。

    第一方面,本发明提供一种基于cpu压力测试的功耗调整方法,包括:

    设定cpu的最大功耗值,同时监控cpu的实时功耗值;

    对cpu进行加压,进入cpu压力线程数的递增循环;

    分别对内存、存储硬盘和网络适配器件进行加压,进入cpu压力线程数的递减循环;

    通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值。

    进一步的,所述进入cpu压力线程数的递增循环,包括:

    通过对cpu递增的压力线程数的方式逐渐增加cpu的功耗值;

    判断所述实时功耗值是否小于所述最大功耗值:若是,则继续递增cpu的压力线程数;若否,则退出递增循环。

    进一步的,所述进入cpu压力线程数的递减循环,包括:

    通过对cpu递减的压力线程数的方式逐渐减少cpu的功耗值;

    并判断所述实时功耗值是否大于所述最大功耗值。若是,则继续减少cpu的压力线程数;若否,则退出循环。

    进一步的,所述通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值,包括:

    当cpu的实时功耗值小于最大功耗值时,循环递增cpu的压力的线程数,直到cpu的实时功耗值达到最大功耗值,则退出循环;

    当cpu的实时功耗值大于最大功耗值,循环减少cpu的压力的线程数,直到cpu的实时功耗值达到最大功耗值,则退出循环。

    进一步的,所述分别对内存、存储硬盘和网络适配器件进行加压,包括:

    内存采用内存测试工具进行加压;

    存储硬盘采用磁盘io测试工具进行加压;

    网络适配器采用带宽测试工具进行加压。

    进一步的,所述方法还包括:

    cpu采用“yes>>/dev/null&”命令进行加压。

    进一步的,递增或递减所述cpu的压力的线程数的方法包括:

    以1条线程数为单位递增或递减cpu的yes线程数。

    第二方面,本发明一种基于cpu压力测试的功耗调整系统,包括:

    功耗监控单元,配置用于设定cpu的最大功耗值,同时监控cpu的实时功耗值;

    递增循环单元,配置用于对cpu进行加压,进入cpu压力线程数的递增循环;

    递减循环单元,配置用于分别对内存、存储硬盘和网络适配器件进行加压,进入cpu压力线程数的递减循环;

    动态调整单元,配置用于通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值。

    本发明的有益效果在于,

    本发明提供的一种基于cpu压力测试的功耗调整方法及系统,本发明可以在cpu和当服务器其他多个部件同时进行压力测试时,能够自动调整当前cpu的功耗值,同时限制cpu的最大功耗值,避免了压力测试时导致系统卡顿的问题,同时无需考虑部件压力测试的先后顺序;也不需要手动计算功耗设置静态参数。

    此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。

    附图说明

    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

    图1是本发明一个实施例的方法的示意性流程图。

    图2是本发明一个实施例的方法的具体实施流程图。

    图3是本发明一个实施例的系统的示意性框图。

    具体实施方式

    为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

    下面对本发明中出现的关键术语进行解释。

    图1是本发明一个实施例的方法的示意性流程图。其中,图1执行主体可以为基于cpu压力测试的功耗调整系统。

    如图1所示,该方法包括:

    步骤110,设定cpu的最大功耗值,同时监控cpu的实时功耗值;

    步骤120,对cpu进行加压,进入cpu压力线程数的递增循环;

    步骤130,分别对内存、存储硬盘和网络适配器件进行加压,进入cpu压力线程数的递减循环;

    步骤140,通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值。

    可选地,作为本发明一个实施例,所述进入cpu压力线程数的递增循环,包括:

    通过对cpu递增的压力线程数的方式逐渐增加cpu的功耗值;

    判断所述实时功耗值是否小于所述最大功耗值:若是,则继续递增cpu的压力线程数;若否,则退出递增循环。

    可选地,作为本发明一个实施例,所述进入cpu压力线程数的递减循环,包括:

    通过对cpu递减的压力线程数的方式逐渐减少cpu的功耗值;

    并判断所述实时功耗值是否大于所述最大功耗值。若是,则继续减少cpu的压力线程数;若否,则退出循环。

    可选地,作为本发明一个实施例,所述通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值,包括:

    当cpu的实时功耗值小于最大功耗值时,循环递增cpu的压力的线程数,直到cpu的实时功耗值达到最大功耗值,则退出循环;

    当cpu的实时功耗值大于最大功耗值,循环减少cpu的压力的线程数,直到cpu的实时功耗值达到最大功耗值,则退出循环。

    可选地,作为本发明一个实施例,所述分别对内存、存储硬盘和网络适配器件进行加压,包括:

    内存采用内存测试工具进行加压;

    存储硬盘采用磁盘io测试工具进行加压;

    网络适配器采用带宽测试工具进行加压。

    可选地,作为本发明一个实施例,所述方法还包括:

    cpu采用“yes>>/dev/null&”命令进行加压。

    可选地,作为本发明一个实施例,递增或递减所述cpu的压力的线程数的方法包括:

    以1条线程数为单位递增或递减cpu的yes线程数。

    为了便于对本发明的理解,下面以本发明基于cpu压力测试的功耗调整方法的原理,结合实施例中对cpu进行压力测试的过程,对本发明提供的基于cpu压力测试的功耗调整方法做进一步的描述。

    具体的,所述基于cpu压力测试的功耗调整方法包括:

    在shell中yes命令的作用是重复的打印给定的内容直到终止它,指定内容以空格分隔,如果没有指定内容,它将重复的打印‘y’直到终止它。本发明采用“yes>>/dev/null&”命令对cpu增加压力。

    对cpu增加压力时,单个命令“yes>>/dev/null&”的压力无法达到自动调整cpu功耗值,同时单个命令的压力大小很小。故采用循环的方式逐渐增加或减小压力线程数。压力的线程数是由yes压力线程数决定。在整个压力的过程中实时监控cpu的功耗值。当cpu功耗值比较低时,以yes压力线程数为动态参数,采用循环的方法,逐渐增加压力的线程数。当cpu功耗值达到限定值时,退出循环,不再增加压力的线程数。在压力的过程中当监控到cpu实时功耗值超过最大功耗值时,此时采用循环的方式,逐渐减少cpu的核数来减少压力的线程数。直到cpu功耗值再次达到最大功耗值,则退出循环。

    为使本发明的技术方案能更加清晰明白,以下通过一个具体实施方式,并结合附图2,,对本发明进行描述。

    1、设定cpu的最大功耗值,同时监控cpu的实时功耗值。

    2、对cpu进行加压,进入cpu压力线程数的递增循环;对cpu进行加压

    cpu采用“yes>>/dev/null&“方法进行加压。

    cpu加压过程中,以cpu的yes线程数为动态参数,从1开始逐渐增加时,命令“yes>>/dev/null&”对cpu增加的压力线程数也同时增加,此时cpu的功耗值逐渐增加。参考如下方法逐渐加压。

    corecount=$(cat/proc/cpuinfo|grepprocessor|wc–l)

    thread=`ps–ef|grep–iyes|wc-l`

    for((i=$thread;i<=$corecount;i ))

    do

    yes>/dev/null&

    cpuusage=`expr$cputimediff\*1000/$cpudiff`

    if[$cpuusage-ge90];then

    exit;

    fi

    one

    具体的,在cpu功耗值逐渐增加的过程中,实时监控cpu的实时功耗值,同时与cpu的最大功耗值比较:当cpu的实时功耗值小于最大功耗值时,cpu的压力线程数继续增加;当cpu的功耗值大于等于最大功耗值时,此时退出循环。

    3、先给cpu进行加压,再对其他部件加压。分别对内存、存储硬盘和网络适配器件进行加压,进入cpu压力线程数的递减循环;在本实施例中,内存采用stressapptest工具进行加压,存储硬盘采用fio工具进行加压,网络适配器采用iperf工具进行加压;压力过程中实时监控cpu实时功耗值,

    具体的,对其他部件进行加压时,如果cpu功耗超过限定值,此时减少cpu加压的线程。

    threadsnum=`ps–ef|grep–iyes|wc–l`

    for((i=$threadsnum;i>=1;i--))

    do

    thread=`ps–ef|grep–iyes|awk‘{print$2}’`

    firstthread=`echo$thread|awk‘{print$1}’`

    kill$firstthread

    cpuusage=`expr$cputimediff\*1000/$cpudiff`

    if[$cpuusage-lt90];then

    exit;

    fi

    done

    在cpu功耗值逐渐减少的过程中,实时监控cpu的实时功耗值,同时与cpu的最大功耗值比较。当cpu的实时功耗值大于最大功耗值时,cpu的压力线程数继续减少,当cpu的功耗值小于最大功耗值时,此时退出循环。

    4、当所有部件压力全部执行完毕,整个压力过程中继续实时监控cpu的实时功耗值,通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值。

    具体的,当cpu实时功耗值小于最大功耗值时,采用循环的方法,逐渐增加压力的线程数,直到cpu功耗值达到最大功耗值时,则退出循环,不再增加压力的线程数;当cpu实时功耗值大于最大功耗值,采用循环的方法,逐渐减少压力的线程数,直到cpu功耗值达到最大功耗值时,退出循环。

    本发明在多个部件同时进行压力测试时,无需考虑部件压力测试的先后顺序;同时不需要手动计算功耗设置静态参数,解决压力测试时导致系统卡顿的问题。

    如图3示,该系统包括:

    功耗监控单元210,配置用于设定cpu的最大功耗值,同时监控cpu的实时功耗值;

    递增循环单元220,配置用于对cpu进行加压,进入cpu压力线程数的递增循环;

    递减循环单元230,配置用于分别对内存、存储硬盘和网络适配器件进行加压,进入cpu压力线程数的递减循环;

    动态调整单元240,配置用于通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值。

    本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。

    在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

    所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

    另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

    尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。


    技术特征:

    1.一种基于cpu压力测试的功耗调整方法,其特征在于,包括:

    设定cpu的最大功耗值,同时监控cpu的实时功耗值;

    对cpu进行加压,进入cpu压力线程数的递增循环;

    分别对内存、存储硬盘和网络适配器件进行加压,进入cpu压力线程数的递减循环;

    通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值。

    2.根据权利要求1所述的基于cpu压力测试的功耗调整方法,其特征在于,所述进入cpu压力线程数的递增循环,包括:

    通过对cpu递增的压力线程数的方式逐渐增加cpu的功耗值;

    判断所述实时功耗值是否小于所述最大功耗值:若是,则继续递增cpu的压力线程数;若否,则退出递增循环。

    3.根据权利要求1所述的基于cpu压力测试的功耗调整方法,其特征在于,所述进入cpu压力线程数的递减循环,包括:

    通过对cpu递减的压力线程数的方式逐渐减少cpu的功耗值;

    并判断所述实时功耗值是否大于所述最大功耗值。若是,则继续减少cpu的压力线程数;若否,则退出循环。

    4.根据权利要求1所述的基于cpu压力测试的功耗调整方法,其特征在于,所述通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值,包括:

    当cpu的实时功耗值小于最大功耗值时,循环递增cpu的压力的线程数,直到cpu的实时功耗值达到最大功耗值,则退出循环;

    当cpu的实时功耗值大于最大功耗值,循环减少cpu的压力的线程数,直到cpu的实时功耗值达到最大功耗值,则退出循环。

    5.根据权利要求1所述的基于cpu压力测试的功耗调整方法,其特征在于,所述分别对内存、存储硬盘和网络适配器件进行加压,包括:

    内存采用内存测试工具进行加压;

    存储硬盘采用磁盘io测试工具进行加压;

    网络适配器采用带宽测试工具进行加压。

    6.根据权利要求1所述的基于cpu压力测试的功耗调整方法,其特征在于,所述方法还包括:

    cpu采用“yes>>/dev/null&”命令进行加压。

    7.根据权利要求6所述的基于cpu压力测试的功耗调整方法,其特征在于,递增或递减所述cpu的压力的线程数的方法包括:

    以1条线程数为单位递增或递减cpu的yes线程数。

    8.一种基于cpu压力测试的功耗调整系统,其特征在于,包括:

    功耗监控单元,配置用于设定cpu的最大功耗值,同时监控cpu的实时功耗值;

    递增循环单元,配置用于对cpu进行加压,进入cpu压力线程数的递增循环;

    递减循环单元,配置用于分别对内存、存储硬盘和网络适配器件进行加压,进入cpu压力线程数的递减循环;

    动态调整单元,配置用于通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值。

    技术总结
    本发明提供一种基于CPU压力测试的功耗调整方法及系统,包括:设定CPU的最大功耗值,同时监控CPU的实时功耗值;对CPU进行加压,进入CPU压力线程数的递增循环;分别对内存、存储硬盘和网络适配器件进行加压,进入CPU压力线程数的递减循环;通过所述递增循环和递减循环使所述实时功耗值维持达到最大功耗值。本发明可以在CPU和当服务器其他多个部件同时进行压力测试时,能够自动调整当前CPU的功耗值,同时限制CPU的最大功耗值,避免了压力测试时导致系统卡顿的问题。

    技术研发人员:赵洪宋
    受保护的技术使用者:苏州浪潮智能科技有限公司
    技术研发日:2020.11.19
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22728.html

    最新回复(0)