一种资源调度的方法和装置与流程

文档序号:12037979阅读:187来源:国知局
一种资源调度的方法和装置与流程

本申请涉及云计算技术领域,特别是涉及一种资源调度的方法和一种资源调度的装置。



背景技术:

云计算(cloudcomputing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云计算通过将计算分布在大量的分布式计算机上,而非本地计算机或远程服务器中,从而使得用户或企业可以通过电脑、笔记本、手机等方式接入云计算数据中心,以便能够将资源切换到需要的应用上,根据需求访问计算机和存储系统。

目前,业界对于云计算资源的管理一般采用openstack,mesos等开源软件来进行,按照预先配置的规则,通过在指定的范围内设置相应的超分比例来实现对资源的配置。例如,在虚拟化的情况下,如果设置cpu(centralprocessingunit,中央处理器)的超分比例为2.0,那么一个物理机的cpu就被虚拟成了2个虚拟cpu。

但是,上述通过设置超分比例的管理方式并不灵活,超分比例一旦被设置完成,则很难再根据系统的实际运行需求进行更改,容易导致资源碎片化,造成大量资源的浪费。同时,在资源的调度过程中,按照上述管理方式也容易出现一部分机器资源过载,另一部分机器利用率过低的情况,造成局部的资源冲突或浪费。



技术实现要素:

鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种资源调度的方法和相应的一种资源调度的装置。

为了解决上述问题,本申请实施例公开了一种资源调度的方法,包括:

采集资源节点的状态信息;

依据所述状态信息,计算所述资源节点的状态参数值;

当所述状态参数值小于第一预设阈值时,确定所述资源节点的待分配cpu资源是否小于预设的cpu需求数量;

若是,则计算所述待分配cpu资源的超额分配比例;

根据所述超额分配比例,为所述资源节点调度cpu资源。

可选地,所述状态信息包括cpu利用率、cpu负载、内存利用率、网络流量,和,磁盘io信息中的至少一种,所述采集资源节点的状态信息的步骤包括:

按照预设时间间隔,分别采集资源节点在每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值中的至少一种。

可选地,所述依据所述状态信息,计算所述资源节点的状态参数值的步骤包括:

分别采用所述资源节点在每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,计算第一单位时间内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值;

根据所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值,确定所述资源节点在第一单位时间内的状态值;

根据所述在第一单位时间内的状态值,确定所述资源节点在第二单位时间内的状态参数值。

可选地,所述分别采用所述资源节点在每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,计算第一单位时间内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值的步骤包括:

分别加总每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,获得第一单位时间内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值。

可选地,所述根据所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值,确定所述资源节点在第一单位时间内的状态值的步骤包括:

当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值超过对应的上限参数阈值时,确定所述资源节点的状态值为第三状态值;

当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值均未超过对应的下限参数阈值时,确定所述资源节点的状态值为第一状态值;

当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值均介于对应的下限参数阈值和对应的上限参数阈值之间时,确定所述资源节点的状态值为第二状态值,所述第一状态值小于所述第二状态值,所述第二状态值小于所述第三状态值。

可选地,所述第二单位时间包括多个第一单位时间,所述多个第一单位时间分别具有对应的权重值,所述根据所述在第一单位时间内的状态值,确定所述资源节点在第二单位时间内的状态参数值的步骤包括:

根据所述权重值,对多个第一单位时间的状态值进行加权,获得所述在第二单位时间的状态参数值。

可选地,所述计算所述待分配cpu资源的超额分配比例的步骤包括:

获取所述资源节点的cpu资源总量、待分配内存资源和cpu资源的超额分配权重值;

采用所述cpu资源总量、待分配内存资源和cpu资源的超额分配权重值,以及预设的资源分配数量,计算所述待分配cpu资源的超额分配比例。

可选地,还包括:

当所述状态参数值小于第一预设阈值时,确定所述资源节点的待分配内存资源是否小于预设的内存需求数量;

若是,则计算所述待分配的内存资源的分配比例;

根据所述分配比例,为所述资源节点调度内存资源。

可选地,所述计算所述待分配的内存资源的分配比例的步骤包括:

获取所述资源节点的内存资源总量、待分配cpu资源和内存资源的分配权重值;

采用所述内存资源总量、待分配cpu资源和内存资源的分配权重值,以及预设的资源分配数量,计算所述待分配的内存资源的分配比例。

可选地,还包括:

当所述状态参数值大于第二预设阈值时,获取所述待分配cpu资源的上一次超额分配比例,所述第二预设阈值大于所述第一预设阈值;

根据所述上一次超额分配比例,为所述资源节点调度cpu资源。

为了解决上述问题,本申请实施例公开了一种资源调度的装置,包括:

状态信息采集模块,用于采集资源节点的状态信息;

状态参数值计算模块,用于依据所述状态信息,计算所述资源节点的状态参数值;

cpu资源确定模块,用于当所述状态参数值小于第一预设阈值时,确定所述资源节点的待分配cpu资源是否小于预设的cpu需求数量;

cpu资源超额分配比例计算模块,用于在所述资源节点的待分配cpu资源小于预设的cpu需求数量时,计算所述待分配cpu资源的超额分配比例;

cpu资源调度模块,用于根据所述超额分配比例,为所述资源节点调度cpu资源。

可选地,所述状态信息包括cpu利用率、cpu负载、内存利用率、网络流量,和,磁盘io信息中的至少一种,所述状态信息采集模块包括:

状态信息采集子模块,用于按照预设时间间隔,分别采集资源节点在每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值中的至少一种。

可选地,所述状态参数值计算模块包括:

参数值计算子模块,用于分别采用所述资源节点在每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,计算第一单位时间内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值;

状态值确定子模块,用于根据所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值,确定所述资源节点在第一单位时间内的状态值;

状态参数值确定子模块,用于根据所述在第一单位时间内的状态值,确定所述资源节点在第二单位时间内的状态参数值。

可选地,所述参数值计算子模块包括:

参数值计算单元,用于分别加总每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,获得第一单位时间内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值。

可选地,所述状态值确定子模块包括:

第三状态值确定单元,用于当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值超过对应的上限参数阈值时,确定所述资源节点的状态值为第三状态值;

第一状态值确定单元,用于当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值均未超过对应的下限参数阈值时,确定所述资源节点的状态值为第一状态值;

第二状态值确定单元,用于当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值均介于对应的下限参数阈值和对应的上限参数阈值之间时,确定所述资源节点的状态值为第二状态值,所述第一状态值小于所述第二状态值,所述第二状态值小于所述第三状态值。

可选地,所述第二单位时间包括多个第一单位时间,所述多个第一单位时间分别具有对应的权重值,所述状态参数值确定子模块包括:

状态参数值确定单元,用于根据所述权重值,对多个第一单位时间的状态值进行加权,获得所述在第二单位时间的状态参数值。

可选地,所述cpu资源超额分配比例计算模块包括:

第一获取子模块,用于获取所述资源节点的cpu资源总量、待分配内存资源和cpu资源的超额分配权重值;

cpu资源超额分配比例计算子模块,用于采用所述cpu资源总量、待分配内存资源和cpu资源的超额分配权重值,以及预设的资源分配数量,计算所述待分配cpu资源的超额分配比例。

可选地,还包括:

内存资源确定模块,用于当所述状态参数值小于第一预设阈值时,确定所述资源节点的待分配内存资源是否小于预设的内存需求数量;

内存资源分配比例计算模块,用于在所述资源节点的待分配内存资源小于预设的内存需求数量时,计算所述待分配的内存资源的分配比例;

内存资源调度模块,用于根据所述分配比例,为所述资源节点调度内存资源。

可选地,所述内存资源分配比例计算模块包括:

第二获取子模块,用于获取所述资源节点的内存资源总量、待分配cpu资源和内存资源的分配权重值;

内存资源分配比例计算子模块,用于采用所述内存资源总量、待分配cpu资源和内存资源的分配权重值,以及预设的资源分配数量,计算所述待分配的内存资源的分配比例。

可选地,还包括:

获取模块,用于当所述状态参数值大于第二预设阈值时,获取所述待分配cpu资源的上一次超额分配比例,所述第二预设阈值大于所述第一预设阈值;

调度模块,用于根据所述上一次超额分配比例,为所述资源节点调度cpu资源。

与背景技术相比,本申请实施例包括以下优点:

本申请实施例,通过采集资源节点的状态信息,并依据所述状态信息,计算所述资源节点的状态参数值,当所述状态参数值小于第一预设阈值时,进一步确定所述资源节点的待分配cpu资源是否小于预设的cpu需求数量,若是,则通过计算所述待分配cpu资源的超额分配比例,从而可以根据所述超额分配比例,为所述资源节点调度cpu资源。本申请实施例实现了对资源池的动态管理,打破了传统的对整个资源集群固定比例配置的限制,实现了针对不同的资源节点的不同负载情况,动态、可伸缩的进行资源的调度和管理。

附图说明

图1是本申请的一种资源调度的方法实施例一的步骤流程图;

图2是本申请的一种资源调度的方法的原理图;

图3是本申请的一种资源调度的方法实施例二的步骤流程图;

图4a-4b是本申请的一种资源调度的方法的操作示意图;

图5是本申请的一种资源调度的装置实施例的结构框图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。

参照图1,示出了本申请的一种资源调度的方法实施例一的步骤流程图,具体可以包括如下步骤:

步骤101,采集资源节点的状态信息;

在本申请实施例中,所述资源节点可以包括有物理机和虚拟机。

通常,物理机是相对于虚拟机而言的对实体计算机的一种称呼,物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。通过物理机和虚拟机的配合,一台计算机上可以安装多个操作系统(一个外界操作系统和虚拟机中的数个操作系统),并且几个操作系统间还可以实现通信,就像是有多台计算机一样。

在本申请实施例中,为了动态地实现资源调度,可以首先采集每个资源节点的状态信息。

在具体实现中,如图2所示,是本申请的一种资源调度的方法的原理图,首先可以在每个资源节点,也就是在每台物理机和虚拟机上部署数据采集器,从而采用该数据采集器采集每个资源节点的状态信息,例如,cpu利用率、cpu负载、内存利用率、网络流量,和,磁盘io信息中的至少一种等等。

进一步地,在采集上述状态信息后,可以将上述状态信息存储到分布式文件系统中,从而获取资源节点的利用率历史数据,作为分析各个资源节点使用情况的数据基础。

步骤102,依据所述状态信息,计算所述资源节点的状态参数值;

在本申请实施例中,可以采用如图2中所示的数据生产器对采集得到的各个资源节点的状态信息进行处理,通过分析各个资源节点利用率的历史数据,刻画出各个资源节点的画像,进而根据该画像计算每个资源节点的状态值,所述状态值可以用于描述在一定时间段内该资源节点的状态,例如,可以计算出每个资源节点在每日内的状态值,从而根据每日内的状态值,计算出该资源节点在一个更长时间段内,例如在一个自然月内的状态参数值,所述状态参数值可以是根据资源节点在每日内的状态值进行加权求和获得的。

在具体实现中,可以分别采集资源节点在每个小时内的利用率最大值,例如,cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,然后将每日24个小时内各个维度的最大值进行加总,从而获得当日该资源节点每一维度的参数值,以该参数值作为刻画各个资源节点画像的信息。然后,可以将每一维度的参数值分别与该维度对应的上限参数阈值或下限参数阈值进行比较,得到该资源节点在每日内的状态值,进而通过加总资源节点在每日内的状态值,从而分别得到每个资源节点在一个自然月内的状态参数值。

当然,上述计算资源节点的状态参数值的方式仅为一种示例,本领域技术人员可以根据实际需要,选择不同的计算方式计算资源节点的状态参数值,本申请实施例对此不作限定。

步骤103,当所述状态参数值小于第一预设阈值时,确定所述资源节点的待分配cpu资源是否小于预设的cpu需求数量;

在本申请实施例中,在分别确定出每个资源节点的状态参数值后,可以将该状态参数值与第一预设阈值进行比较,所述第一预设阈值可以是指设定的资源节点的利用率下限阈值。当资源节点的状态参数值小于利用率下限阈值时,可以认为该资源节点的利用率较低,从而可以考虑提高该资源节点的利用率。

在具体实现中,当所述状态参数值小于第一预设阈值时,可以首先判断该资源节点是否为cpu资源不足,即确定所述资源节点的待分配cpu资源是否小于预设的cpu需求数量。所述预设的cpu需求数量可以是通用规格的资源需求数量,例如8核cpu。

如果当前待分配cpu资源小于8核,则可以认为当前资源节点为cpu资源不足,从而可以执行步骤104,计算所述待分配cpu资源的超额分配比例。

步骤104,计算所述待分配cpu资源的超额分配比例;

在具体实现中,可以首先获取到所述资源节点的cpu资源总量、待分配内存资源和cpu资源的超额分配权重值,然后采用所述cpu资源总量、待分配内存资源和cpu资源的超额分配权重值,以及预设的资源分配数量,计算所述待分配cpu资源的超额分配比例。所述预设的资源分配数量可以是一种通用分配的资源模板所对应的数量,即在实际生产环境中最常用的配置数量,例如8核cpu、16gb内存就可以认为是一种通用分配的资源模板所对应的数量。

步骤105,根据所述超额分配比例,为所述资源节点调度cpu资源。

在本申请实施例中,在计算获得待分配cpu资源的超额分配比例后,可以采用如图2中所示的动态资源管理器,根据所述超额分配比例,为所述资源节点调度cpu资源。

例如,在物理机当前按照1.0的比例超额分配(物理机规格为40核cpu、160gb内存,此时为超额分配)时,发现该物理机的cpu利用率很低,但是cpu核数已经分配完没有剩余,而内存任然有80gb未分配,则可以通过计算该物理机的超额分配比例,假设计算获得的超额分配比例为1.8,则可以在目前的基础上增加0.8的cpu分配,即增加32核cpu资源。

在本申请的一种优选实施例中,还可以包括如图2所示的自适应调度器,从而可以在动态资源管理器触发自适应调度器时,检测相应物理机上各个虚拟机的利用率,选择利用率最高的虚机机,同时查找出利用率最低的物理机,然后采用热迁移的方式,在不影响业务的情况下,将利用率最高的虚机机迁移到上述利用率最低的物理机上,从而实现根据负载情况,自适应调度不同业务类型虚拟机的分布的目的。

在本申请实施例中,通过采集资源节点的状态信息,并依据所述状态信息,计算所述资源节点的状态参数值,当所述状态参数值小于第一预设阈值时,进一步确定所述资源节点的待分配cpu资源是否小于预设的cpu需求数量,若是,则通过计算所述待分配cpu资源的超额分配比例,从而可以根据所述超额分配比例,为所述资源节点调度cpu资源。本申请实施例实现了对资源池的动态管理,打破了传统的对整个资源集群固定比例配置的限制,实现了针对不同的资源节点的不同负载情况,动态、可伸缩的进行资源的调度和管理。

参照图3,示出了本申请的一种资源调度的方法实施例二的步骤流程图,具体可以包括如下步骤:

步骤301,按照预设时间间隔,分别采集资源节点在每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值中的至少一种;

在本申请实施例中,可以以每个小时为预设的时间间隔,从而分别采集每个小时内每个资源节点的状态信息。所述资源节点可以包括有物理机和虚拟机,所述状态信息可以包括cpu利用率、cpu负载、内存利用率、网络流量,和,磁盘io信息中的至少一种等等。

在具体实现中,在分别采集到上述状态信息后,可以将上述状态信息存储到分布式文件系统中,然后从分布式文件系统中提取出每个资源节点在每个小时内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值中的至少一种。

步骤302,分别采用所述资源节点在每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,计算第一单位时间内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值;

在本申请实施例中,所述第一单位时间可以是每日。在获得资源节点在每日的每个小时内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值后,可以采用上述数据分别计算出每日内每个维度的参数值,即资源节点在每日内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值。

在具体实现中,可以分别加总每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,获得第一单位时间内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值。即,将每日内各个维度的24个峰值加总,分别得到当日每个维度的参数值。

作为本申请的一种示例,每个维度的数据均可以具有相应的权重,因此,在计算各个维度的参数值时,还可以在加总24个峰值的基础上,分别乘以各自的权重。即,可以采用如下公式计算各个维度的参数值:

其中,d1为cpu利用率参数值、d2为cpu负载参数值、d3为内存利用率参数值、d4为网络流量参数值,d5为磁盘io信息参数值,w1为cpu利用率的权重、w2为cpu负载的权重、w3为内存利用率的权重、w4为网络流量的权重、w5为磁盘io信息的权重,cpuunit为cpu利用率、cpuload为cpu负载、memunit为内存利用率、netbps为网络流量,diskio为磁盘io信息。

步骤303,根据所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值,确定所述资源节点在第一单位时间内的状态值;

在本申请实施例中,所述第一单位时间可以为每日,因此,在分别计算出cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值后,可以依据各个维度的参数值与对应的上限参数阈值或下限参数阈值的比较结果,得到资源节点在每日内的状态值。

在本申请实施例中,当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值超过对应的上限参数阈值时,可以确定所述资源节点的状态值为第三状态值;当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值均未超过对应的下限参数阈值时,可以确定所述资源节点的状态值为第一状态值;而当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值均介于对应的下限参数阈值和对应的上限参数阈值之间时,可以确定所述资源节点的状态值为第二状态值,其中,所述第一状态值小于所述第二状态值,所述第二状态值小于所述第三状态值。例如,所述第一状态值可以为0,第二状态值可以为1,而第三状态值则可以为3,当然,本领域技术人员还可以采用其他数值来设定上述第一状态值、第二状态值和第三状态值,本申请实施例对此不作限定。

在具体实现中,可以采用如下公式确定各个资源节点的状态值:

其中,di-upperthreshold和di-lowerthreshold分别为各个维度的上限参数阈值和下限参数阈值,对于不同的维度,上述上限参数阈值可以是不同的,相应地,下限参数阈值也可以是不同的。

根据上述公式(2),当各个维度的参数值均小于对应维度的下限参数阈值时,即上述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和磁盘io信息参数值均小于各自维度的下限参数阈值时,可以确定相应的资源节点的状态值为0,而当任一维度的参数值大于对应维度的上限参数阈值时,即上述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,或磁盘io信息参数值中,有任一参数值大于对应维度的上限参数阈值时,可以确定相应的资源节点的状态值为2,而对于其他情形时,则确定相应的资源节点的状态值为1。

步骤304,根据所述在第一单位时间内的状态值,确定所述资源节点在第二单位时间内的状态参数值;

在本申请实施例中,所述第二单位时间可以包括多个第一单位时间,所述第一单位时间可以是每日,所述第二单位时间可以是每个自然月。因此,在分别确定出每个资源节点在每日的状态值后,可以根据每日的状态值,确定出该资源节点在每个自然月的状态参数值。

在具体实现中,可以分别将每日的状态值进行加总,从而以加总后的状态值之和作为资源节点在每个自然月的状态参数值。当然,本领域技术人员还可以采用其他方式确定第二单位时间内的状态参数值,本申请实施例对此不作限定。

作为本申请的一种示例,还可以分别为每个第一单位时间,即每日设定不同的权重值,从而可以根据所述权重值,对多个第一单位时间的状态值进行加权,获得所述在第二单位时间的状态参数值。

在具体实现中,以每个自然月为30日计算,可以采用如下公式确定每个资源节点在每个自然月内的状态参数值:

其中,mj为资源节点在每个自然月内的状态参数值,j为资源节点,t为每日,ωt为对应于每日的权重值,f(di(t))为根据公式(2)获得的资源节点的每日的状态值。

步骤305,当所述状态参数值小于第一预设阈值时,确定所述资源节点的待分配cpu资源是否小于预设的cpu需求数量;

在本申请实施例中,在分别确定出每个资源节点的状态参数值后,可以将该状态参数值与第一预设阈值进行比较,所述第一预设阈值可以是指设定的资源节点的利用率下限阈值。当资源节点的状态参数值小于利用率下限阈值时,可以认为该资源节点的利用率较低,从而可以考虑提高该资源节点的利用率。

例如,当所述状态参数值小于第一预设阈值时,可以首先判断该资源节点是否为cpu资源不足,即确定所述资源节点的待分配cpu资源是否小于预设的cpu需求数量,若是,则可以执行步骤306,计算所述待分配cpu资源的超额分配比例。

步骤306,计算所述待分配cpu资源的超额分配比例;

在本申请实施例中,可以首先获取到所述资源节点的cpu资源总量、待分配内存资源和cpu资源的超额分配权重值,然后采用所述cpu资源总量、待分配内存资源和cpu资源的超额分配权重值,以及预设的资源分配数量,计算所述待分配cpu资源的超额分配比例,所述预设的资源分配数量包括预设的cpu资源分配数量和预设的内存资源分配数量。

具体地,可以采用如下公式计算所述待分配cpu资源的超额分配比例:

其中,σcpu为可增加的超额分配比例,cputotal为cpu资源总量,cpuratio为cpu资源当前的超额分配比例,ωcpu为cpu资源的超额分配权重值,memleft为待分配内存资源,cputemplate为预设的cpu资源分配数量,memtemplate为预设的内存资源分配数量。

例如,在物理机当前按照1.0的比例超额分配(物理机规格为40核cpu、160gb内存,此时为超额分配)时,发现该物理机的cpu利用率很低,但是cpu核数已经分配完没有剩余,而内存任然有80gb未分配,则可以通过计算该物理机的超额分配比例,计算获得σcpu为0.8,则可以在目前的基础上增加0.8的cpu分配,即增加32核cpu资源。

步骤307,根据所述超额分配比例,为所述资源节点调度cpu资源。

在按照公式(4)计算得到cpu的超额分配比例后,可以为所述资源节点增加32核cpu资源。

步骤308,当所述状态参数值小于第一预设阈值时,确定所述资源节点的待分配内存资源是否小于预设的内存需求数量;

在本申请实施例中,当所述状态参数值小于第一预设阈值时,还可以判断该资源节点是否为内存资源不足,即确定所述资源节点的待分配内存资源是否小于预设的内存需求数量,若是,则可以执行步骤309,计算所述待分配的内存资源的分配比例。

步骤309,计算所述待分配的内存资源的分配比例;

在本申请实施例中,与计算待分配的cpu资源的超额分配比例类似,可以通过获取所述资源节点的内存资源总量、待分配cpu资源和内存资源的分配权重值;然后采用所述内存资源总量、待分配cpu资源和内存资源的分配权重值,以及预设的资源分配数量,计算所述待分配的内存资源的分配比例。

在具体实现中,可以采用如下公式所述待分配的内存资源的分配比例:

其中,σmem为内存资源的分配比例,memtotal为内存资源总量,ωmem为内存资源的分配权重值,cpuleft为待分配cpu资源,cputemplate为预设的cpu资源分配数量,memtemplate为预设的内存资源分配数量。

需要说明的是,与cpu资源不同,内存资源不会进行超额分配。同时,还可以为内存资源设定一个上限阈值,以保证在为虚拟机提供足够分配内存的同时,为物理机自身服务预留一定的内存资源,所述上限阈值的大小可以根据实际需要,由本领域技术人员具体确定,本申请实施例对此不作限定。

步骤310,根据所述分配比例,为所述资源节点调度内存资源。

当确定出内存资源的分配比例后,可以按照所述比例,为资源节点调度相应的内存资源。

在本申请实施例中,所述方法还可以包括如下步骤:

当所述状态参数值大于第二预设阈值时,获取所述待分配cpu资源的上一次超额分配比例,根据所述上一次超额分配比例,为所述资源节点调度cpu资源。

在本申请实施例中,所述第二预设阈值可以是指设定的资源节点的利用率上限阈值,因此,所述第二预设阈值大于所述第一预设阈值。

在本申请实施例中,当按照公式(3)计算获得的资源节点的状态参数值大于第二预设阈值时,可以认为该资源节点的利用率较高,从而可以考虑降低该资源节点的利用率。

在具体实现中,可以获取待分配cpu资源的上一次超额分配比例,采用该比例对cpu资源进行回滚处理,例如,当前的超额分配比例为1.8时,如果发现资源节点的cpu利用率较高,则可以获取分布式系统文件中记录的该资源节点的上一次超额分配比例1.0,然后按照1.0的超额分配比例进行cpu资源调度,以降低cpu资源的利用率;相应地,对于内存资源利用率较高时,可以获取内存资源的上一次分配比例,采用该比例对内存资源进行回滚处理,以降低内存资源的利用率。

为了便于理解,下面以一个具体的示例,对本申请的资源调度方法作一介绍。

参照图4a,是本申请的一种资源调度的方法的操作示意图之一,在按照公式(3)计算获得资源节点的状态参数值mj,并将mj与第一预设阈值mlowerthreshold比较,得到mj<mlowerthreshold时,可以进一步判断当前的资源节点是可分配的cpu资源不足还是可分配的内存资源不足。若是可分配的cpu资源不足,则可以判断当前的cpu超额分配比例是否小于预设的cpu最大超额分配比例,若是,则可以按照公式(4)计算得到cpu可增加的超额分配比例σcpu,从而可以按照该比例σcpu为资源节点增加调度cpu资源,若当前的cpu超额分配比例大于等于预设的cpu最大超额分配比例,则可以采用当前的cpu超额分配比例与预设的cpu最大超额分配比例之间的差值为资源节点调度cpu资源。

如果经判断确定是可分配的内存资源不足,则可以判断当前的内存分配比例是否小于预设的内存最大分配比例,若是,则可以按照公式(5)计算得到内存可增加的分配比例σmem,从而可以按照该比例σmem为资源节点增加调度内存资源,若当前的内存分配比例大于等于预设的内存最大分配比例,则可以采用当前的内存分配比例与预设的内存最大分配比例之间的差值为资源节点调度内存资源。

参照图4b,是本申请的一种资源调度的方法的操作示意图之二,在按照公式(3)计算获得资源节点的状态参数值mj,并将mj与第二预设阈值mupperthreshold比较,得到mj>mupperthreshold时,可以进一步判断当前的资源节点是cpu资源利用率较高还是内存资源利用率较高。若是cpu资源利用率较高,则可以判断当前的cpu超额分配比例是否大于预设的cpu最小超额分配比例,若是,则可以获取上一次cpu的超额分配比例σcpu,从而采用当前的cpu超额分配比例与σcpu之间的差值,减少调度cpu资源;如果当前的cpu超额分配比例小于等于预设的cpu最小超额分配比例,则可以调用自适应调度器,将cpu利用率最高的虚拟机迁移到cpu利用率最低的物理机上。

如果经判断是内存资源利用率教高时,则可以判断当前的内存分配比例是否大于预设的内存最小分配比例,若是,则可以获取上一次的内存分配比例σmem,从而采用当前的cpu超额分配比例与σmem之间的差值,减少调度内存资源;如果当前的内存分配比例小于等于预设的内存最小分配比例,则可以调用自适应调度器,将内存利用率最高的虚拟机迁移到内存利用率最低的物理机上。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。

参照图5,示出了本申请的一种资源调度的装置实施例的结构框图,具体可以包括如下模块:

状态信息采集模块501,用于采集资源节点的状态信息;

状态参数值计算模块502,用于依据所述状态信息,计算所述资源节点的状态参数值;

cpu资源确定模块503,用于当所述状态参数值小于第一预设阈值时,确定所述资源节点的待分配cpu资源是否小于预设的cpu需求数量;

cpu资源超额分配比例计算模块504,用于在所述资源节点的待分配cpu资源小于预设的cpu需求数量时,计算所述待分配cpu资源的超额分配比例;

cpu资源调度模块505,用于根据所述超额分配比例,为所述资源节点调度cpu资源。

在本申请实施例中,所述状态信息可以包括cpu利用率、cpu负载、内存利用率、网络流量,和,磁盘io信息中的至少一种,所述状态信息采集模块501具体可以包括如下子模块:

状态信息采集子模块,用于按照预设时间间隔,分别采集资源节点在每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值中的至少一种。

在本申请实施例中,所述状态参数值计算模块502具体可以包括如下子模块:

参数值计算子模块,用于分别采用所述资源节点在每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,计算第一单位时间内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值;

状态值确定子模块,用于根据所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值,确定所述资源节点在第一单位时间内的状态值;

状态参数值确定子模块,用于根据所述在第一单位时间内的状态值,确定所述资源节点在第二单位时间内的状态参数值。

在本申请实施例中,所述参数值计算子模块具体可以包括如下单元:

参数值计算单元,用于分别加总每个时间间隔内的cpu利用率的最大值、cpu负载的最大值、内存利用率的最大值、网络流量的最大值,和,磁盘io信息的最大值,获得第一单位时间内的cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值。

在本申请实施例中,所述状态值确定子模块具体可以包括如下单元:

第三状态值确定单元,用于当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值超过对应的上限参数阈值时,确定所述资源节点的状态值为第三状态值;

第一状态值确定单元,用于当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值均未超过对应的下限参数阈值时,确定所述资源节点的状态值为第一状态值;

第二状态值确定单元,用于当所述cpu利用率参数值、cpu负载参数值、内存利用率参数值、网络流量参数值,和,磁盘io信息参数值均介于对应的下限参数阈值和对应的上限参数阈值之间时,确定所述资源节点的状态值为第二状态值,所述第一状态值小于所述第二状态值,所述第二状态值小于所述第三状态值。

在本申请实施例中,所述第二单位时间可以包括多个第一单位时间,所述多个第一单位时间可以分别具有对应的权重值,所述状态参数值确定子模块具体可以包括如下单元:

状态参数值确定单元,用于根据所述权重值,对多个第一单位时间的状态值进行加权,获得所述在第二单位时间的状态参数值。

在本申请实施例中,所述cpu资源超额分配比例计算模块504具体可以包括如下子模块:

第一获取子模块,用于获取所述资源节点的cpu资源总量、待分配内存资源和cpu资源的超额分配权重值;

cpu资源超额分配比例计算子模块,用于采用所述cpu资源总量、待分配内存资源和cpu资源的超额分配权重值,以及预设的资源分配数量,计算所述待分配cpu资源的超额分配比例。

在本申请实施例中,所述装置还可以包括如下模块:

内存资源确定模块,用于当所述状态参数值小于第一预设阈值时,确定所述资源节点的待分配内存资源是否小于预设的内存需求数量;

内存资源分配比例计算模块,用于在所述资源节点的待分配内存资源小于预设的内存需求数量时,计算所述待分配的内存资源的分配比例;

内存资源调度模块,用于根据所述分配比例,为所述资源节点调度内存资源。

在本申请实施例中,所述内存资源分配比例计算模块具体可以包括如下子模块:

第二获取子模块,用于获取所述资源节点的内存资源总量、待分配cpu资源和内存资源的分配权重值;

内存资源分配比例计算子模块,用于采用所述内存资源总量、待分配cpu资源和内存资源的分配权重值,以及预设的资源分配数量,计算所述待分配的内存资源的分配比例。

在本申请实施例中,所述装置还可以包括如下模块:

获取模块,用于当所述状态参数值大于第二预设阈值时,获取所述待分配cpu资源的上一次超额分配比例,所述第二预设阈值大于所述第一预设阈值;

调度模块,用于根据所述上一次超额分配比例,为所述资源节点调度cpu资源。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

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

以上对本申请所提供的一种资源调度的方法和一种资源调度的装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

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