一种提高CPU利用率的方法及装置与流程

文档序号:11233931阅读:359来源:国知局
一种提高CPU利用率的方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种提高cpu利用率的方法及装置。



背景技术:

随着互联网的发展,vcpu虚拟处理器被广泛应用于各个领域。vcpu是cpu中央处理器的虚拟化技术,cpu的虚拟化就是用单个cpu模拟多个cpu并行,从而实现一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响。

现有技术通过cpu自动分配,将多个vcpu分配到cpu的多个核心中的计算单元上,以实现对cpu进行虚拟化。

然而上述分配方式只能依次填满每一个cpu物理核心的计算单元,比如,6个vcpu分配到4个cpu物理核心上,每个cpu物理核心上有3个计算单元,则其中两个cpu物理核心分别分配三个vcpu,剩余两个cpu物理核心处于闲置状态,从而导致cpu利用率下降。



技术实现要素:

本发明实施例提供了一种提高cpu利用率的方法及装置,能够提高cpu的利用率。

第一方面,本发明提供了一种提高cpu利用率的方法,包括:

获取每一个cpu中央处理器物理核心当前分配信息,所述分配信息,包括:所述cpu物理核心分配到的vcpu虚拟处理器的数量;

根据所述分配信息确定至少一个待分配cpu物理核心;

确定至少一个待分配vcpu;

根据每一个所述待分配cpu物理核心上的所述vcpu的数量,将所述至少一个待分配vcpu分配给所述至少一个待分配cpu物理核心。

优选地,所述获取每一个cpu物理核心当前的分配信息,包括:

接收外部输入的获取指令;

根据所述获取指令,获取每一个所述cpu物理核心的id;

通过所述id读取每一个所述cpu物理核心的分配信息。

优选地,在根据每一个所述待分配cpu物理核心上的所述vcpu的数量,将所述至少一个待分配vcpu分配给所述至少一个待分配cpu物理核心之后,进一步包括:

创建所述至少一个待分配vcpu与其所位于的所述cpu物理核心id的关联关系,使得所述至少一个待分配vcpu绑定到所述cpu物理核心。

优选地,所述确定至少一个待分配vcpu,包括:

针对于每一个所述vcpu,判断当前vcpu是否已绑定到所述cpu物理核心,如果是,结束当前流程,否则,确定所述当前vcpu为所述待分配vcpu。

优选地,所述根据每一个所述待分配cpu物理核心上的所述vcpu的数量,将所述至少一个待分配vcpu分配给所述至少一个待分配cpu物理核心,包括:

针对每一个所述待分配vcpu,判断是否存在一个目标待分配cpu物理核心,其中,所述目标待分配cpu物理核心中存在至少一个与该待分配vcpu有运算关联关系的vcpu;

如果是,将所述待分配vcpu分配到所述目标待分配cpu物理核心上;

如果否,根据所述至少一个待分配cpu物理核心上已分配vcpu的数量,将该待分配vcpu分配到所述至少一个待分配cpu物理核心上。

第二方面,本发明实施例提供了一种提高cpu利用率的装置,其特征在于,包括:获取模块、确定模块和分配模块;

所述获取模块,用于获取每一个cpu物理核心当前分配信息,所述分配信息,包括:所述cpu物理核心分配到的vcpu的数量;

所述确定模块,用于确定至少一个待分配vcpu,以及根据所述获取模块获取的所述分配信息确定至少一个待分配cpu物理核心;

所述分配模块,用于根据每一个所述待分配cpu物理核心上已分配的待分配vcpu数量,将所述确定模块确定的所述至少一个待分配vcpu分配给所述确定模块确定的所述至少一个待分配cpu物理核心。

优选地,所述获取模块,包括:接收单元、获取单元和读取单元;

所述接收单元,用于接受外部输入的获取指令;

所述获取单元,用于根据所述接收单元接收的所述获取指令,获取每一个所述cpu物理核心的id;

所述读取单元,用于通过所述获取单元获取的所述id读取每一个所述cpu物理核心的分配信息。

优选地,进一步包括:创建模块;

所述创建模块,用于创建所述至少一个待分配vcpu与其所位于的所述cpu物理核心id的关联关系,使得所述至少一个待分配vcpu绑定到所述cpu物理核心。

优选地,所述确定模块,包括:第一判断单元;

所述第一判断单元,用于针对于每一个所述vcpu,判断当前vcpu是否已绑定到所述cpu物理核心,如果是,结束当前流程,否则,确定所述当前vcpu为所述待分配vcpu。

优选地,所述分配模块,包括:第二判断单元;

所述第二判断单元,用于针对每一个所述待分配vcpu,判断是否存在一个目标待分配cpu物理核心,其中,所述目标待分配cpu物理核心中存在至少一个与该待分配vcpu有运算关联关系的vcpu;

如果是,将所述待分配vcpu分配到所述目标待分配cpu物理核心上;

如果否,根据所述至少一个待分配cpu物理核心上已分配vcpu的数量,将该待分配vcpu分配到所述至少一个待分配cpu物理核心上。

本发明实施例提供了一种提高cpu利用率的方法及装置,通过获取cpu物理核心当前分配信息,能够得到每一个cpu物理核心上的vcpu的数量,再根据每一个cpu物理核心上的vcpu的数量将待分配的vcpu均衡地分配到各个待分配cpu物理核心,使得每一个cpu物理核心都能分配到vcpu,因而避免出现cpu物理核心闲置的情况,从而提高了cpu的利用率。

附图说明

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

图1是本发明一个实施例提供的一种提高cpu利用率的方法流程图;

图2是本发明一个实施例提供的另一种提高cpu利用率的方法流程图;

图3是本发明一个实施例提供的一种提高cpu利用率的装置的结构示意图;

图4是本发明一个实施例提供的另一种提高cpu利用率的装置的结构示意图;

图5是本发明一个实施例提供的又一种提高cpu利用率的装置的结构示意图;

图6是本发明一个实施例提供的再一种提高cpu利用率的装置的结构示意图;

图7是本发明一个实施例提供的还一种提高cpu利用率的装置的结构示意图。

具体实施方式

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

如图1所示,本发明实施例提供了一种提高cpu利用率的方法,包括以下步骤:

步骤101,获取每一个cpu中央处理器物理核心当前分配信息,所述分配信息,包括:所述cpu物理核心分配到的vcpu虚拟处理器的数量。

步骤102,根据所述分配信息确定至少一个待分配cpu物理核心。

步骤103,确定至少一个待分配vcpu。

步骤104,根据每一个所述待分配cpu物理核心上的所述vcpu的数量,将所述至少一个待分配vcpu分配给所述至少一个待分配cpu物理核心。

本发明实施例提供了一种提高cpu利用率的方法,通过获取cpu物理核心当前分配信息,能够得到每一个cpu物理核心上的vcpu的数量,再根据每一个cpu物理核心上的vcpu的数量将待分配的vcpu均衡地分配到各个待分配cpu物理核心,使得每一个cpu物理核心都能分配到vcpu,因而避免出现cpu物理核心闲置的情况,从而提高了cpu的利用率。

在本发明的一个实施例中,根据外部输入的获取指令获取每一个cpu物理核心的id,获取指令为:<cpumode='host-passthrough'></cpu>。该指令可以通过配置虚拟机中的配置文件,来获取cpu物理核心的id。再通过每一个cpu物理核心的id读取每一个cpu物理核心的分配信息,即可得到每个cpu物理核心上的vcpu数量。

例如,有两个cpu物理核心a、b,id分别为01、02,则根据获取指令,分别获取cpu物理核心a、b的id01和02,在根据cpu物理核心a、b的id分别读取cpu物理核心a、b的分配信息,从而得到cpu物理核心a、b上的vcpu数量。

cpu自动分配vcpu时,与vcpu对应的cpu物理核心可能是变化的,这可能会导致vcpu会集中分配到几个cpu物理核心上。在本发明的一个实施例中,通过建立vcpu与vcpu所在的cpu物理核心id的关联关系,将vcpu绑定到某一个cpu物理核心上,从而避免了由于与vcpu对应的cpu物理核心的变化而导致的cpu利用率的降低。

为了能够提高分配vcpu的效率,在本发明的一个实施例中,在确定待分配vcpu时,先判断当前vcpu是否已绑定到所述cpu物理核心,如果是,说明当前vcpu已经分配过了,进而结束当前流程;如果没有绑定,需要重新分配。

例如,cpu物理核心a上分配有5个vcpu,其中2个是绑定在cpu物理核心a上的,则剩余的3个vcpu为待分配vcpu,可能被重新分配,已绑定的不再执行重新分配。如果剩余的3个vcpu没有重新分配,则绑定在cpu物理核心a上。

在运算过程中,各vcpu可能会出现运算关联,比如相互引用数据,如果这些相互关联的vcpu没有分配到同一个cpu物理核心上,在数据转移时,会增加时间成本。在本发明的一个实施例中,针对每一个待分配vcpu,在待分配cpu物理核心上找出与之有运算关联的vcpu,并将待分配vcpu分配到与之有运算关联的vcpu的cpu物理核心上,从而节省时间成本,剩余不关联的vcpu则均衡分配给其他cpu物理核心上。

例如,cpu物理核心a上分配有vcpu为x1,cpu物理核心b上分配有vcpu为y1,cpu物理核心c处于空闲状态。存在x2、y2、z三个待分配vcpu。其中,x1引用x2数据和y1引用y2数据,z为各自独立运行的vcpu,均不与其他vcpu存在关联。则分配后,cpu物理核心a上分配有x2;cpu物理核心b上分配有y2;cpu物理核心c上分配有z。

为了更好地说明本发明上述实施例,如图2所示本发明实施例提供了另一种提高cpu利用率的方法,包括以下步骤:

步骤201,根据获取命令,获取每一个cpu物理核心的id。

在本发明实施例中,获取命令为<cpumode='host-passthrough'></cpu>,通过调整配置文件中cpu的设定,来获取每一个cpu物理核心的id。

步骤202,根据每一个cpu物理核心的id,读取每一个cpu物理核心的分配信息。

在本发明实施例中,分配信息包括:每一个cpu物理核心上vcpu的数量。例如,一共有三个cpu物理核心,三个cpu物理核心上的vcpu的数量分别为2、3、4,则分配信息存储三个cpu物理核心上的vcpu的数量。

步骤203,根据分配信息确定待分配cpu物理核心。

在本发明实施例中,闲置的cpu物理核心或vcpu数量较少的cpu物理核心都可以视为待分配cpu物理核心,例如有三个cpu物理核心a、b、c,三者的vcpu数量分别为4、1、0,则b,c为待分配cpu物理核心。

步骤204,针对于每一个所述vcpu,判断当前vcpu是否已绑定到cpu物理核心,如果是,则结束当前流程,否则执行步骤205。

步骤205,确定当前vcpu为待分配vcpu。

在本发明实施例中,以是否已绑定为标准,来判定当前vcpu是否为待分配vcpu。如果当前vcpu已分配到cpu物理核心,但并未绑定,依然视为待分配待分配vcpu。

例如,cpu物理核心a上,共有两个vcpu,分别为x1、x2,其中x1已与cpu物理核心a绑定,x2并没有cpu物理核心a绑定,仅仅是分配到cpu物理核心a上,则x1不能被确定为待分配vcpu,x2是待分配vcpu。

步骤206,针对每一个待分配vcpu,判断每一个待分配cpu物理核心上是否存在至少一个与该待分配vcpu有运算关联关系的vcpu,如果是,执行步骤207,否则执行步骤209。

步骤207,将待分配vcpu分配到目标待分配cpu物理核心上。

在本发明实施例中,将至少两个存在运算关系的vcpu,分配到同一个cpu物理核心上,以减低时间成本。例如有5个待分配vcpu,分别为x1、x2、x3、y1和y2。其中,x1、x2和x3存在关联关系,y1和y2的存在关联关系,则将x1、x2和x3分配到分配到同一个cpu物理核心上,把y1和y2分配到同一个cpu物理核心上。

步骤208,将已分配vcpu绑定到已分配vcpu所在的cpu物理核心上。

在本发明实施例中,通过建立已分配vcpu与vcpu所在的已分配cpu物理核心id的关联关系,将已分配vcpu绑定到已分配vcpu所在的cpu物理核心上。

步骤209,根据待分配cpu物理核心上已分配vcpu的数量,将该待分配vcpu分配到待分配cpu物理核心上,并执行步骤208。

在本发明实施例中,在分配没有与其他vcpu存在运算关联关系的待分配vcpu时,尽可能地保持各个cpu物理核心之间的vcpu的数量差值不超过1,以最大限度地利用各个cpu物理核心。例如,将6个vcpu分配给4个cpu物理核心,则最佳分配方式为2、1、1、1。

如图3所示,本发明实施例提供了一种提高cpu利用率的装置,包括:获取模块301、确定模块302和分配模块303;

获取模块301,用于获取每一个cpu物理核心当前分配信息,所述分配信息,包括:所述cpu物理核心分配到的vcpu的数量;

确定模块302,用于确定至少一个待分配vcpu,以及根据获取模块301获取的所述分配信息确定至少一个待分配cpu物理核心;

分配模块303,用于根据每一个所述待分配cpu物理核心上已分配的待分配vcpu数量,将确定模块302确定的所述至少一个待分配vcpu分配给确定模块302确定的所述至少一个待分配cpu物理核心。

如图4所示,本发明实施例提供了另一种提高cpu利用率的装置,获取模块301,包括:接收单元3011、获取单元3012和读取单元3013;

接收单元3011,用于接受外部输入的获取指令;

获取单元3012,用于根据接收单元3011接收的所述获取指令,获取每一个所述cpu物理核心的id;

读取单元3013,用于通过获取单元3012获取的所述id读取每一个所述cpu物理核心的分配信息。

如图5所示,本发明实施例提供了又一种提高cpu利用率的装置,进一步包括:创建模块501;

创建模块501,用于创建所述至少一个待分配vcpu与其所位于的所述cpu物理核心id的关联关系,使得所述至少一个待分配vcpu绑定到所述cpu物理核心。

如图6所示,本发明实施例提供了再一种提高cpu利用率的装置,确定模块302,包括:第一判断单元3021;

第一判断单元3021,用于针对于每一个所述vcpu,判断当前vcpu是否已绑定到所述cpu物理核心,如果是,结束当前流程,否则,确定所述当前vcpu为所述待分配vcpu。

如图7所示,本发明实施例提供了还一种提高cpu利用率的装置,分配模块303,包括:第二判断单元3031;

第二判断单元3031,用于针对每一个所述待分配vcpu,判断是否存在一个目标待分配cpu物理核心,其中,所述目标待分配cpu物理核心中存在至少一个与该待分配vcpu有运算关联关系的vcpu;

如果是,将所述待分配vcpu分配到所述目标待分配cpu物理核心上;

如果否,根据所述至少一个待分配cpu物理核心上已分配vcpu的数量,将该待分配vcpu分配到所述至少一个待分配cpu物理核心上。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明任意一个实施例中提供的一种提高cpu利用率的方法。

本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;

所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行本发明任意一个实施例中提供的一种提高cpu利用率的方法。

综上所述,本发明各个实施例至少具有如下有益效果:

1、本发明一个实施例中,通过获取cpu物理核心当前分配信息,能够得到每一个cpu物理核心上的vcpu的数量,再根据每一个cpu物理核心上的vcpu的数量将待分配的vcpu均衡地分配到各个待分配cpu物理核心,使得每一个cpu物理核心都能分配到vcpu,因而避免出现cpu物理核心闲置的情况,从而提高了cpu的利用率。

2、本发明一个实施例中,通过绑定vcpu与vcpu所在的cpu物理核心,解决了由于与vcpu对应的cpu物理核心的改变而造成vcpu集中分配到几个cpu物理核心上的问题,从而进一步提高了cpu的利用率。

3、本发明一个实施例中,将具有运算关联关系的vcpu分配到同一个cpu物理核心上,减少了时间成本,从进一步提高了cpu的利用率。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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