CN108845874B - 资源的动态分配方法及服务器 - Google Patents
资源的动态分配方法及服务器 Download PDFInfo
- Publication number
- CN108845874B CN108845874B CN201810660862.5A CN201810660862A CN108845874B CN 108845874 B CN108845874 B CN 108845874B CN 201810660862 A CN201810660862 A CN 201810660862A CN 108845874 B CN108845874 B CN 108845874B
- Authority
- CN
- China
- Prior art keywords
- resources
- allocated
- distributed
- application group
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种资源的动态分配方法,用于将总分配资源分配到至少一个待分配应用组,资源的动态分配方法包括步骤:确定总分配资源以及根据预估分配模型和每个待分配应用组的资源数据确定所有待分配应用组的预估分配资源;根据总分配资源和每个待分配应用组的预估分配资源确定每个待分配应用组的实际分配资源;和根据实际分配资源将总分配资源分配到每个待分配应用组。本发明还公开了一种服务器。本发明实施方式的资源的动态分配方法和服务器,通过根据使用情况预估所需资源和检测当前资源需求来动态分配资源,用分配来匹配使用。如此可以提高调整的灵活性、降低资源的空闲度、提升任务的执行效率、提高集群资源的整体使用率和降低成本。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种资源的动态分配方法及服务器。
背景技术
相关技术进行计算资源分配时,主要是由任务责任人通过对任务按重要优先级别分类来调整任务执行的时间分布,但是,如果任务重要性提升,那么还需重新调整任务执行的时间分布。这样使得沟通成本高,调整不灵活,调整确认耗时长。另外,由于部分任务执行时间调后,可能影响任务的执行完成时间,导致计算结果延迟。
发明内容
本发明的实施方式提供了一种资源的动态分配方法及服务器。
本发明实施方式的资源的动态分配方法用于将总分配资源分配到至少一个待分配应用组,所述资源的动态分配方法包括步骤:
确定所述总分配资源以及根据预估分配模型和每个所述待分配应用组的资源数据确定所有所述待分配应用组的预估分配资源;
根据所述总分配资源和每个所述待分配应用组的所述预估分配资源确定每个所述待分配应用组的实际分配资源;和
根据所述实际分配资源将所述总分配资源分配到每个所述待分配应用组。
本发明实施方式的服务器用于将总分配资源分配到至少一个待分配应用组,所述服务器包括:
第一确定模块,所述第一确定模块用于确定所述总分配资源以及根据预估分配模型和每个所述待分配应用组的资源数据确定所有所述待分配应用组的预估分配资源;
第二确定模块,所述第二确定模块用于根据所述总分配资源和每个所述待分配应用组的所述预估分配资源确定每个所述待分配应用组的实际分配资源;和
分配模块,所述分配模块用于根据所述实际分配资源将所述总分配资源分配到每个所述待分配应用组。
本发明实施方式的资源的动态分配方法和服务器,通过根据使用情况预估所需资源和检测当前资源需求来动态分配资源,在应用组任务空闲时少分配资源,在应用组任务繁忙时多分配资源,本质上是用分配来匹配使用。如此可以提高调整的灵活性、降低资源的空闲度、提升任务的执行效率、提高集群资源的整体使用率和降低成本。
本发明的实施方式的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实施方式的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:
图1是本发明实施方式的资源的动态分配方法的流程示意图;
图2是本发明实施方式的服务器的模块示意图;
图3是本发明实施方式的基于YARN的资源分配原理的示意图;
图4是MapReduce执行流程示意图;
图5是本发明实施方式的待分配应用组一周的累计资源使用情况的示意图;
图6是相关技术的CPU使用趋势图;
图7是本发明实施方式的资源的动态分配方法应用时的CPU使用趋势图;
图8是本发明另一实施方式的资源的动态分配方法的流程示意图;
图9是本发明另一实施方式的服务器的模块示意图;
图10是本发明又一实施方式的资源的动态分配方法的流程示意图;
图11是本发明又一实施方式的服务器的模块示意图;
图12是本发明再一实施方式的资源的动态分配方法的流程示意图;
图13是本发明再一实施方式的服务器的模块示意图;
图14是本发明另一实施方式的资源的动态分配方法的流程示意图;
图15是本发明另一实施方式的服务器的模块示意图;
图16是本发明实施方式的资源的动态分配方法的预估分配资源的示意图。
主要元件符号说明:
第三确定模块21、第一确定模块22、总分配确定模块221、预估确定模块223、判断单元2232、确定单元2234、第一取值单元2236、第二取值单元2238、轮询模块23、第二确定模块24、分配模块26。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接或可以相互通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
下文的公开提供了许多不同的实施方式或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本发明。此外,本发明可以在不同例子中重复参考数字和/或参考字母,这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施方式和/或设置之间的关系。此外,本发明提供了的各种特定的工艺和材料的例子,但是本领域普通技术人员可以意识到其他工艺的应用和/或其他材料的使用。
请参阅图1,本发明实施方式的一种资源的动态分配方法用于将总分配资源分配到至少一个待分配应用组,资源的动态分配方法包括步骤:
S12:确定总分配资源以及根据预估分配模型和每个待分配应用组的资源数据确定所有待分配应用组的预估分配资源;
S14:根据总分配资源和每个待分配应用组的预估分配资源确定每个待分配应用组的实际分配资源;和
S16:根据实际分配资源将总分配资源分配到每个待分配应用组。
请参阅图2,本发明实施方式的服务器20用于将总分配资源分配到至少一个待分配应用组,服务器20包括第一确定模块22、第二确定模块24和分配模块26。第一确定模块22用于确定总分配资源以及根据预估分配模型和每个待分配应用组的资源数据确定所有待分配应用组的预估分配资源。第二确定模块24用于根据总分配资源和每个待分配应用组的预估分配资源确定每个待分配应用组的实际分配资源。分配模块26用于根据实际分配资源将总分配资源分配到每个待分配应用组。
本发明实施方式的资源的动态分配方法和服务器20,通过根据使用情况预估所需资源和检测当前资源需求来动态分配资源,在应用组任务空闲时少分配资源,在应用组任务繁忙时多分配资源,本质上是用分配来匹配使用。如此可以提高调整的灵活性、降低资源的空闲度、提升任务的执行效率、提高集群资源的整体使用率、减少所有应用组所需的总分配资源和降低成本。
具体地,请结合图3,在某些实施方式中,本发明实施方式的资源的动态分配方法可基于另一种资源协调者YARN(Yet Another Resource Negotiator,YARN)进行。YARN是一个通用资源管理***,可为上层应用提供统一的资源管理和调度。YARN的基本思想是将资源管理和任务调度监控分离。本发明公开的资源的动态分配方法正是基于YARN的这一特性。
YARN主要由全局的资源管理器(ResourceManager,RM)、节点资源管理器(NodeManager,NM)、应用程序主(ApplicationMaster,AM)和资源容器(ResourceContainer,Container)等几个组件构成。整个集群只有一个RM,它负责整个***的资源管理和分配。RM主要由调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)构成。调度器根据容量、队列等限制条件,将***中的资源分配给各个正在运行的应用程序。值得注意的是,除此之外,调度器不再从事其他任何与具体应用程序相关的工作。ASM负责管理整个***中所有应用程序,包括应用程序提交、与调度器协商资源以启动AM、监控AM运行状态并在失败时重新启动它等。AM管理YARN内运行的应用程序的每个实例,负责协调来自RM的资源,并通过NM监视任务的执行和资源使用情况。另外,整个集群有多个NM,NM负责每个节点上的资源和使用。资源调度由RM完成,而资源隔离由各个NM实现。
图3表示了基于YARN的资源分配原理,也即是将总资源池(总分配资源)中的资源按一定策略分配给一个或多个应用组,例如按照本发明实施方式的资源的动态分配方法进行分配。请注意,应用组是资源的分组,也是资源分配的对象。其中,每个待分配应用组包括一个或多个应用,应用组之间是逻辑隔离的,例如应用组A和应用组B是逻辑隔离的。具体地,应用组的应用主要是报表的计算,在一个例子中,应用组A包括应用APP1、APP2、...、APPn。在下面的实施方式中,以待分配应用组的数量为多个来进行说明。可以理解,当待分配应用组的数量是一个时,本发明的资源的动态分配方法仍然适用。
另外,本发明实施方式的资源的动态分配方法可以应用于游戏领域。在一个例子中,应用1使用应用组A的分配到的资源进行游戏报表1的计算,而且对于资源的使用上午比较繁忙,下午比较空闲;应用2使用应用组B分配到的资源进行游戏报表2的计算,而且对于资源的使用上午比较空闲,下午比较繁忙。此时可以通过本发明实施方式的资源的动态分配方法,在上午分配较多的资源给应用组A,下午分配较多的资源给应用组B,来提高整体资源池的使用效率。值得注意的是,此处仅为举例说明,本发明实施方式的资源的动态分配方法的应用场景并不局限于游戏领域。
如前所述,资源容器(Container)是YARN的重要组件。具体而言,YARN的资源分配单位用一个抽象的概念“资源容器”表示,它将存储资源、计算资源、网络资源等资源封装在一起,从而限定每个任务使用的资源量。在本发明实施方式中,以计算资源为例,进行资源的动态分配方法的说明。具体地,由于中央处理器(Central Processing Unit,CPU)扩缩容以物理核为单位,因此,作为示例性的实施方式,本发明实施方式的计算资源的单位为CPU核数。可以理解,CPU核数越多,计算资源越多,同一时间可以并行计算的线程越多。
另外,考虑到不同节点CPU性能可能不同,每个CPU的计算能力可能不同,YARN引入虚拟CPU。具体地,某个物理CPU计算能力可能是另外一个物理CPU的2倍,此时可以通过为第一个物理CPU多配置几个虚拟CPU来弥补这种差异。因此,本发明实施方式中的CPU核数可以指虚拟CPU核数。
请参阅图4,YARN是海杜普(Hadoop)2.0的原生资源管理***,可以为包括编程模型映射/规约(MapReduce)在内的多种计算框架进行资源的管理和分配。Hadoop是分布式***基础架构,能够对大量数据进行分布式处理。其核心设计是为海量数据提供存储的分布式文件***(Hadoop Distributed File System,HDFS)和为海量数据提供计算的映射/规约(MapReduce)编程模型。图4是MapReduce执行流程示意图,通常,MapReduce处理一组输入的键值对(Key/Value Pairs)并最终输出一组键值对。具体地,MapReduce定义了Map函数接口和Reduce函数接口,Map函数接收一组键值对,产生一组中间键值对。MapReduce框架会将Map函数产生的中间键值对里键相同的值传递给一个Reduce函数。Reduce函数接收一个键,以及相关的一组值,将这组值进行合并产生一组规模更小的值(通常只有一个或零个值)。总而言之,在本发明实施方式的资源的动态分配方法中,每个计算任务分为Map和Reduce两个操作,这两个操作对于资源的使用相互独立,并且,在计算任务对资源使用完毕后,资源会释放出来。
需要说明的是,在本发明实施方式的资源的动态分配方法的步骤S12中,确定总分配资源的步骤S121与根据预估分配模型和每个待分配应用组的资源数据确定所有待分配应用组的预估分配资源的步骤S123的顺序没有特别限定。也即是说,步骤S121可以在步骤S123之前进行,也可以在步骤S123之后进行,还可以与步骤S123同时进行。在接下来的实施方式中,为方便说明,以确定总分配资源的步骤S121在根据预估分配模型和每个待分配应用组的资源数据确定所有待分配应用组的预估分配资源的步骤S123之后为例进行说明。
另外,总分配资源的确定可以是以全部待分配应用组累计使用资源的历史数据为依据的。请参阅图5,在一个例子中,待分配应用组共12个,累计有4000多个计算任务,待分配应用组的累计预估分配资源为15000个CPU核,而统计待分配应用组一周的累计资源使用情况,经分析发现,待分配应用组在99%的时间累计使用的资源不超过10000个CPU核,于是可以将总分配资源设置为10000个CPU核。然后,继续根据本发明实施方式的资源的动态分配方法确定待分配应用组的实际分配资源并调用接口实施资源分配。
动态分配主要是通过充分利用应用组资源的空闲时间段,来提高计算集群的总体使用率,进而降低总成本和提高计算效率。请参阅图6,一般而言,在相关技术中,会由任务责任人采用削峰去谷的方式,通过对计算任务按重要优先级别分类来调整任务执行的时间分布,以将任务的执行时间的分布分散化,从而实现空闲时间段的任务填充,进而提高资源的使用率。然而如此会使得沟通成本高、调整不灵活和调整确认耗时长。另外,由于部分任务的执行时间调后,还有可能影响任务的执行完成时间,导致计算结果延迟。在一个例子中,累计有4000多个计算任务的12个应用组共分配15000个CPU核的计算资源,平均每个任务执行耗时为19.8分钟。
请参阅图7,本发明实施方式的资源的动态分配方法在任务空闲时少分配资源,在任务繁忙时多分配资源,从而对计算资源进行以分配来匹配使用的动态分配。在一个例子中,在采用本发明实施方式的资源的动态分配方法对累计有4000多个任务的12个应用组进行资源的动态分配时,分配10000个CPU核的总分配资源即可满足12个应用组的需求,并且,平均每个任务执行耗时为18.1分钟。也即是说,采用本发明实施方式的资源的动态分配方法进行资源分配可以在将成本降低1/3的同时,提升执行效率。
在实际的应用中,可以采用灰度上线的方式进行多批应用组资源分配的平滑过渡。在一个例子中,首先将12个应用组作为第一批灰度的待分配应用组,在第一批灰度的待分配应用组采用本发明实施方式的资源的动态分配方法进行资源分配并且稳定之后,再将第二批灰度的应用组加入到待分配应用组中,继续采用本发明实施方式的资源的动态分配方法进行资源分配,在稳定之后,再将第三批灰度的应用组加入到待分配应用组中,继续进行资源分配……以此类推,逐步扩大采用本发明实施方式的资源的动态分配方法的应用组的范围。如此,在初始灰度的时候就可以发现问题并对问题进行调整,使得问题的影响范围有限。另外,这种分批迁移的灰度上线的方式可以保证整体资源分配***的稳定,实现平滑过渡。
在该例子中,第一批灰度的应用组为12个,共灰度上线了15个大应用组作为待分配应用组,事业群(Business Group,BG)的上线覆盖率达到了50%。在实现平滑过渡的同时,还利用本发明实施方式的资源的动态分配方法取得了以下有益效果:第一,将总分配资源降低了大约10000个CPU核,每月约可减少32万元的成本;第二,计算集群CPU的使用率从55%提升至64%;第三,经统计,累计有4000多个计算任务,且计算任务的平均执行效率提升约10%。
请参阅图8,在某些实施方式中,在步骤S12前,资源的动态分配方法包括步骤:
S11:确定动态分配的间隔时间。
请参阅图9,在某些实施方式中,服务器20包括第三确定模块21,第三确定模块21用于确定动态分配的间隔时间。
如此,实现每隔一段时间对资源进行分配。如前,在本发明实施方式的资源的动态分配方法中,每个计算任务分为Map和Reduce两个操作,这两个操作对于资源的使用相互独立,并且,在计算任务对资源使用完毕后,资源会释放出来。因此,需要对资源进行重新分配。具体地,在一个例子中,动态分配的间隔时间可为8-20分钟,例如是8分钟,10分钟,20分钟,或8-20分钟之间的任意数值。
请注意,间隔时间将动态分配持续的时间包括在内,且间隔时间即为分配周期。在一个例子中,间隔时间为10分钟,资源的动态分配持续的时间为1分钟,也即是说,每间隔十分钟即进行一次资源的动态分配。该例子中,在00:00开始第一次动态分配,在00∶01完成根据实际分配资源将总分配资源分配到待分配应用组,在00:10开始第二次动态分配。
在某些实施方式中,间隔时间与待分配应用组的平均任务执行时长相关。
如此,实现间隔时间的确定。可以理解,由于在计算任务对资源使用完毕后,资源会释放出来,因此可以根据待分配应用组的平均任务执行时长确定间隔时间。在一个例子中,通过对4000多个计算任务的执行时长做统计,发现平均每个计算任务的执行时长是20分钟左右,值得注意的是,由于每个计算任务分为Map和Reduce两个操作,且这两个操作对于资源的使用相互独立,因此平均任务执行时长是平均计算任务的执行时长的1/2,也即是说,任务对资源的使用平均10分钟就会做释放,因此,在这个例子中,以10分钟作为动态分配的间隔时间。
请注意,如前所述,为方便说明,确定总分配资源的步骤S121在根据预估分配模型和每个待分配应用组的资源数据确定所有待分配应用组的预估分配资源的步骤S123之后。因此,第一确定模块22可以划分为总分配确定模块221和预估确定模块223,总分配确定模块221用于确定总分配资源。预估确定模块223用于根据预估分配模型和每个待分配应用组的资源数据确定所有待分配应用组的预估分配资源
请参阅图10,在某些实施方式中,待分配应用组是多个,资源的动态分配方法包括步骤:
S13:轮询多个待分配应用组以获取当前待分配应用组的资源数据并判断是否轮询完所有待分配应用组;和
若否,进入步骤S123。
请参阅图11,在某些实施方式中,待分配应用组是多个,服务器20包括轮询模块23。轮询模块23用于轮询多个待分配应用组以获取当前待分配应用组的资源数据并判断是否轮询完所有待分配应用组。若否,轮询模块23用于进入第一确定模块22。
请注意,若否,轮询模块23用于进入第一确定模块22的预估确定模块223。若是,轮询模块23用于进入第一确定模块22的总分配确定模块221,如果轮询完毕时总分配资源已经确定,那么轮询模块23用于进入第二确定模块24。
如此,可以实现对待分配应用组中的每一个应用组的访问及其预估分配资源的计算。在一个例子中,待分配应用组共12个,本发明实施方式的资源的动态分配方法依次对12个待分配应用组进行访问,在访问每个待分配应用组的过程中,通过接口采集当前待分配应用组的资源数据,并根据预估分配模型和当前待分配应用组的资源数据计算当前待分配应用组的预估分配资源。可以理解,在该例子中,轮询完毕12个待分配应用组之后,12个待分配应用组中的每一个分配应用组的预估分配资源都已确定。
值得注意的是,在计算当前待分配应用组的预估分配资源后可以将当前待分配应用组的预估分配资源存储起来。具体地,可以将当前待分配应用组的预估分配资源存储到数据库(Database)中,缓存下来,供后续的分析使用。优选地,可以将当前待分配应用组的预估分配资源存储到MySQL。MySQL是一种关系数据库管理***,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,使用MySQL存储当前应用组的预估分配资源可以增加查询速度和提高灵活性。
请参阅图12,在某些实施方式中,预估分配模型包括上限值、下限值和预测值,资源数据包括参考值,参考值位于上限值和下限值之间,步骤S123包括:
S1232:判断预测值与上限值、下限值和参考值的关系;
S1234:在预测值大于上限值时,根据上限值确定当前待分配应用组的当前预估分配资源;在预测值位于上限值与下限值之间,且预测值大于参考值时,根据预测值确定当前待分配应用组的当前预估分配资源;在预测值位于上限值与下限值之间,且预测值小于参考值时,根据参考值确定当前待分配应用组的当前预估分配资源;和在预测值小于下限值时,根据下限值确定当前待分配应用组的当前预估分配资源。
请参阅图13,在某些实施方式中,预估分配模型包括上限值、下限值和预测值,资源数据包括参考值,参考值位于上限值和下限值之间,第一确定模块22的预估确定模块223包括判断单元2232和确定单元2234。判断单元2232用于判断预测值与上限值、下限值和参考值的关系。确定单元2234用于在预测值大于上限值时,根据上限值确定当前待分配应用组的当前预估分配资源;在预测值位于上限值与下限值之间,且预测值大于参考值时,根据预测值确定当前待分配应用组的当前预估分配资源;在预测值位于上限值与下限值之间,且预测值小于参考值时,根据参考值确定当前待分配应用组的当前预估分配资源;和在预测值小于下限值时,根据下限值确定当前待分配应用组的当前预估分配资源。
如此,实现根据预估分配模型和每个待分配应用组的资源数据确定所有待分配应用组的预估分配资源。在本发明实施方式中,为预估分配模型设置了两个保护值,即上限值和下限值,并将每个待分配应用组的预估分配资源的取值限定在上限值和下限值之间,通过保证每个待分配应用组最低分配到的计算资源以保证每个待分配应用组有足够的计算资源进行正常工作,通过限制每个待分配应用组最高分配到的计算资源以保证不会出现某个或某些待分配应用组分配到的资源过多而产生冗余。具体地,上限值和下限值可以由管理员进行设定。另外,同一个待分配应用组的上限值和下限值在短期来看可以是稳定的,在长期来看可以是波动的,在此不对其进行限制。
此外,本发明实施方式中,在预测值位于上限值与下限值之间时将参考值引入预估分配模型,可以进一步提高预估分配模型的准确性。具体地,参考值是每个待分配应用组当前需要的资源量,是一个实时的数据。本发明实施方式在预测值位于上限值与下限值之间时,根据预测值与参考值中的较大者确定每个待分配应用组的预估分配资源,可以保证计算任务的正常执行。可以理解,当预测值在上限值和下限值之间,但是小于参考值时,如果根据预测值确定每个待分配应用组的预估分配资源,那么就需要对当前使用的资源进行缩容,这样势必会影响任务的执行。当预测值在上限值和下限值之间,但是大于参考值时,由于预测值是基于每个待分配应用组资源使用的历史数据得出的,参考值是基于每个待分配应用组实时的反馈得到的,如果取参考值作为每个待分配应用组的预估分配资源,在计算任务后续的执行过程中,会有较大的可能出现资源不够的情形。
请参阅图14,在某些实施方式中,预估分配模型包括上限值、下限值和预测值,资源数据包括参考值,参考值位于上限值和下限值之间,步骤S123包括:
S1236:在预测值、参考值和下限值中取最大值;和
S1238:在最大值和上限值中取较小值作为当前待分配应用组的当前预估分配资源。
请参阅图15,在某些实施方式中,预估分配模型包括上限值、下限值和预测值,资源数据包括参考值,参考值位于上限值和下限值之间,第一确定模块22的预估确定模块223包括第一取值单元2236和第二取值单元2238。第一取值单元2236用于在预测值、参考值和下限值中取最大值。第二取值单元2238用于最大值和上限值中取较小值作为当前待分配应用组的当前预估分配资源。
如此,实现根据预估分配模型和每个待分配应用组的资源数据确定所有待分配应用组的预估分配资源。可以理解,本实施方式与图12所示的实施方式最终所有待分配应用组的预估分配资源的结果是一致的,只是实现的步骤不同。
在某些实施方式中,预测值根据待分配应用组资源使用的历史数据得出。
如此,可以将每个待分配应用组资源使用的历史数据引入到预估分配模型中,提高预估分配模型的准确性。具体地,预测值可以根据预测算法获取,预测算法可以取历史最近两周同一时刻的平均使用值作为预测值。可以理解,每个应用组在每周的同一时刻所需要的资源具有较大的相关性,并且,一般而言,相关性随着时间的往前追溯而不断降低,采用近两周同一时刻的平均使用值既考虑到误差又考虑到相关性,有利于提高预估分配模型的准确性。
在某些实施方式中,通过轮询获取待分配应用组中每个待分配应用组的参考值。具体地,在轮询的过程中,可以通过接口采集每个待分配应用组的参考值。可以理解,如前,每个待分配应用组的资源数据包括参考值。
在某些实施方式中,预估分配模型为:
其中,gi表示第i个待分配应用组,即每个待分配应用组,t表示时间,pgi(t)表示每个待分配应用组gi的预估分配资源,表示预测值,dem(t)gi表示参考值、min-vcoresgi表示下限值,init-vcoresgi表示上限值。
如此,实现预估分配模型的确定。具体地,时间t可以用分配周期来衡量。
在一个例子中,i=2,t=3,也即是说,每个待分配应用组为待分配应用组中的第2个待分配应用组,此时,该待分配应用组处于第三个分配周期。预估分配模型为:
其中,将上限值设定为1000个CPU核,下限值设定为500个CPU核,通过接口获取的基于该每个待分配应用组的实时反馈的参考值为800个CPU核,通过预测算法获取的基于该每个待分配应用组资源使用的历史数据的预测值为700个CPU核,也即是说:
通过该公式可以得出:pg2(3)=800。
也即是说,待分配应用组中的第2个待分配应用组g2,在第三个分配周期时的预估分配资源为800个CPU核。
在某些实施方式中,步骤S14包括:
根据总分配资源和每个待分配应用组的分配比例系数确定每个待分配应用组的实际分配资源,分配比例系数由每个待分配应用组的预估分配资源和所有待分配应用组的预估分配资源确定。
在某些实施方式中,步骤S14通过以下公式实现:
其中,gi表示第i个待分配应用组,t表示时间,rgi(t)表示第i个待分配应用组gi的实际分配资源,V(n)表示总分配资源,pgi(t)表示第i个待分配应用组gi的预估分配资源,n为自然数且表示待分配应用组的数量。
如此,实现根据总分配资源和每个待分配应用组的预估分配资源确定每个待分配应用组的实际分配资源。可以理解,通常地,总分配资源是固定的,所有待分配应用组的实际分配资源需要在所有待分配应用组的预估分配资源的基础上做调整。显然,调整的原则是按每个待分配应用组的预估分配资源的占比来计算每个待分配应用组实际分配的核数。
在一个例子中,待分配应用组共12个,分别是:g1、g2、g3......g12。在第3个分配周期,12个待分配应用组的预估分配资源分别是:
pg1(3)=500;pg2(3)=580;pg3(3)=550;pg4(3)=700;
pg5(3)=800;pg6(3)=730;pg7(3)=820;pg8(3)=640;
pg9(3)=500;pg10(3)=1000;pg11(3)=850;pg12(3)=900;
根据公式可以求得12个待分配应用组的预估分配资源之和:
当总分配资源设定为10000时,即当V(n)=10000时,可以求得12个待分配应用组中每个待分配应用组的实际分配资源分别为:
图16是本发明实施方式的资源的动态分配方法在四个分配周期的示例图,其中,横轴表示分配周期,纵轴表示CPU核数,其他图标分别表示上限值、下限值、预测值、参考值和每个待分配应用组的预估分配资源,具体如图16中所示。在第一周期中,自上而下依次是预测值、上限值和下限值,也即是说,预测值大于上限值,此时,取上限值作为每个待分配应用组的预估分配资源;在第二周期中,自上而下依次是上限值、下限值和预测值,也即是说,预测值小于下限值,此时,取下限值作为每个待分配应用组的预估分配资源;在第三周期中,自上而下依次是上限值、参考值、预测值和下限值,也即是说,预测值位于上限值与下限值之间且预测值小于参考值,此时,取参考值作为每个待分配应用组的预估分配资源;在第四周期中,自上而下依次是上限值、预测值、参考值和下限值,也即是说,预测值在上限值与下限值之间且预测值大于参考值,此时,取预测值作为每个待分配应用组的预估分配资源。从该图中可以看出预估分配模型具有以下特点:有上下限保护机制,繁忙时不缩容,充分利用冗余资源。
在某些实施方式中,本发明实施方式的资源的动态分配方法对每个待分配应用组的多个计算任务进行资源的二次分配。可以理解,每个待分配应用组的多个计算任务在大部分情况下所需要的计算资源是不一样的,而如果不对每个待分配应用组的多个计算任务进行资源分配,很有可能会导致某些计算任务分配的资源过多而某些计算任务分配的资源过少,从而不利于充分利用资源。具体地,可以采用与前述资源的动态分配方法类似的方法进行资源的二次分配。在一个例子中,通过接口采集每个计算任务相关的资源数据并建立资源二次分配模型,在每个计算任务开始执行前,将资源数据代入到资源二次分配模型中进行计算以得到该计算任务需要分配的资源,然后再将该计算任务需要分配的资源分配到该计算任务。另外,也可以将历史数据引入到资源二次分配模型中,使得资源的二次分配更加准确。如此,使得每个计算任务被分配的计算资源可以根据情况进行实时调整和动态分配,有利于提高资源的利用率。
在某些实施方式中,本发明实施方式的资源的动态分配方法对待分配应用组的每个计算任务的多个计算阶段进行资源的三次分配。可以理解,某些计算任务的执行分为多个计算阶段,而每个计算阶段所需要的计算资源在大部分情况下是不一样的。同样,可以采用与前述的资源的动态分配方法类似的方法对资源进行三次分配,在此不再赘述。
在某些实施方式中,本发明实施方式的资源的动态分配方法将现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)加入到YARN中。可以理解,FPGA是一种高逻辑密度和高性能的硬件设备,其硬件计算性能优于CPU。将FPGA加入到YARN中可以使CPU提供通用计算,使FPGA作为专用的硬件加速器,从而提高计算任务的执行效率。另外,在某些实施方式中,还可以将图形处理器(Graphics Processing Unit,GPU)计算资源添加到YARN中。综合以上,本发明基于资源组使用情况的历史数据和机器学习算法,实现腾讯分布式数据仓库(Tencent Distributed Warehouse,TDW)计算资源的动态分配。总资源池按不同业务分成多个应用组(子资源池),根据应用组上任务的资源使用情况(包括历史使用和当前使用),构建预估分配算法模型,来动态分配计算资源(CPU)。解决了集群存在部分应用组有空闲时间段,而另一部分应用组又过于繁忙的资源分配和使用不匹配问题。通过灵活调整资源分配,降低了总分配的资源量从而优化了成本,同时因为任务在繁忙时获得了更多的资源,执行效率获得了提升。总之,本发明在不降低任务执行效率的情况下,通过根据使用情况的预估和检测当前资源使用需求,来动态分配计算资源,从而降低资源的空闲度,提高集群资源的整体使用率。目前,参与动态分配的资源组覆盖率达到了50%,已优化计算成本10000个CPU核。
可以理解,上述一个或多个实施方式组合而成的实施方式也属于本发明的保护范围。
在本说明书的描述中,参考术语“某些实施方式”、“一个实施方式”、“一些实施方式”、“示意性实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合实施方式或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
尽管上面已经示出和描述了本发明的实施方式,可以理解的是,上述实施方式是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施方式进行变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (14)
1.一种资源的动态分配方法,用于将总分配资源分配到至少一个待分配应用组,其特征在于,所述资源的动态分配方法包括步骤:
根据所述至少一个待分配应用组累计使用资源的历史数据确定所述总分配资源;
根据预估分配模型和每个所述待分配应用组的资源数据确定所有所述待分配应用组的预估分配资源;
根据所述总分配资源和每个所述待分配应用组的所述预估分配资源确定每个所述待分配应用组的实际分配资源;和
根据所述实际分配资源将所述总分配资源分配到每个所述待分配应用组。
2.如权利要求1所述的资源的动态分配方法,其特征在于,在所述根据预估分配模型和每个所述待分配应用组的资源数据确定所有所述待分配应用组的预估分配资源的步骤前,所述资源的动态分配方法包括步骤:
确定动态分配的间隔时间。
3.如权利要求1所述的资源的动态分配方法,其特征在于,所述待分配应用组是多个,所述资源的动态分配方法包括步骤:
轮询多个所述待分配应用组以获取当前所述待分配应用组的所述资源数据并判断是否轮询完所有所述待分配应用组;和
若否,进入根据预估分配模型和每个所述待分配应用组的资源数据确定所有所述待分配应用组的预估分配资源的步骤。
4.如权利要求1所述的资源的动态分配方法,其特征在于,所述预估分配模型包括上限值、下限值和预测值,所述资源数据包括参考值,所述参考值位于所述上限值和所述下限值之间,所述根据预估分配模型和每个所述待分配应用组的资源数据确定所有所述待分配应用组的预估分配资源的步骤包括:
判断所述预测值与所述上限值、所述下限值和所述参考值的关系;
在所述预测值大于所述上限值时,根据所述上限值确定当前所述待分配应用组的当前所述预估分配资源;
在所述预测值位于所述上限值与所述下限值之间,且所述预测值大于所述参考值时,根据所述预测值确定当前所述待分配应用组的当前所述预估分配资源;
在所述预测值位于所述上限值与所述下限值之间,且所述预测值小于所述参考值时,根据所述参考值确定当前所述待分配应用组的当前所述预估分配资源;和
在所述预测值小于所述下限值时,根据所述下限值确定当前所述待分配应用组的当前所述预估分配资源。
5.如权利要求1所述的资源的动态分配方法,其特征在于,所述预估分配模型包括上限值、下限值和预测值,所述资源数据包括参考值,所述参考值位于所述上限值和所述下限值之间,所述根据预估分配模型和每个所述待分配应用组的资源数据确定所有所述待分配应用组的预估分配资源的步骤包括:
在所述预测值、所述参考值和所述下限值中取最大值;和
在所述最大值和所述上限值中取较小值作为当前所述待分配应用组的当前所述预估分配资源。
6.如权利要求4或权利要求5所述的资源的动态分配方法,其特征在于,所述预测值根据当前所述待分配应用组资源使用的历史数据确定。
7.如权利要求1所述的资源的动态分配方法,其特征在于,所述根据所述总分配资源和每个所述待分配应用组的所述预估分配资源确定每个所述待分配应用组的实际分配资源的步骤包括:
根据所述总分配资源和每个所述待分配应用组的分配比例系数确定每个所述待分配应用组的所述实际分配资源,所述分配比例系数由每个所述待分配应用组的所述预估分配资源和所有所述待分配应用组的所述预估分配资源确定。
8.一种服务器,用于将总分配资源分配到至少一个待分配应用组,其特征在于,所述服务器包括:
第一确定模块,所述第一确定模块用于根据所述至少一个待分配应用组累计使用资源的历史数据确定所述总分配资源,以及根据预估分配模型和每个所述待分配应用组的资源数据确定所有所述待分配应用组的预估分配资源;
第二确定模块,所述第二确定模块用于根据所述总分配资源和每个所述待分配应用组的所述预估分配资源确定每个所述待分配应用组的实际分配资源;和
分配模块,所述分配模块用于根据所述实际分配资源将所述总分配资源分配到每个所述待分配应用组。
9.如权利要求8所述的服务器,其特征在于,所述服务器包括:
第三确定模块,所述第三确定模块用于确定动态分配的间隔时间。
10.如权利要求8所述的服务器,其特征在于,所述待分配应用组是多个,所述服务器包括:
轮询模块,所述轮询模块用于轮询多个所述待分配应用组以获取当前所述待分配应用组的所述资源数据并判断是否轮询完所有所述待分配应用组;
若否,轮询模块用于进入第一确定模块。
11.如权利要求8所述的服务器,其特征在于,所述预估分配模型包括上限值、下限值和预测值,所述资源数据包括参考值,所述参考值位于所述上限值和所述下限值之间,所述第一确定模块包括:
判断单元,所述判断单元用于判断所述预测值与所述上限值、所述下限值和所述参考值的关系;
第一确定单元,所述第一确定单元用于在所述预测值大于所述上限值时,根据所述上限值确定当前所述待分配应用组的当前所述预估分配资源;在所述预测值位于所述上限值与所述下限值之间,且所述预测值大于所述参考值时,根据所述预测值确定当前所述待分配应用组的当前所述预估分配资源;在所述预测值位于所述上限值与所述下限值之间,且所述预测值小于所述参考值时,根据所述参考值确定当前所述待分配应用组的当前所述预估分配资源;和在所述预测值小于所述下限值时,根据所述下限值确定当前所述待分配应用组的当前所述预估分配资源。
12.如权利要求8所述的服务器,其特征在于,所述预估分配模型包括上限值、下限值和预测值,所述资源数据包括参考值,所述参考值位于所述上限值和所述下限值之间,所述第一确定模块包括:
第一取值单元,所述第一取值单元用于在所述预测值、所述参考值和所述下限值中取最大值;和
第二取值单元,所述第二取值单元用于在所述最大值和所述上限值中取较小值作为当前所述待分配应用组的当前所述预估分配资源。
13.如权利要求11或权利要求12所述的服务器,其特征在于,所述预测值根据当前所述待分配应用组资源使用的历史数据确定。
14.如权利要求8所述的服务器,其特征在于,所述第二确定模块包括:
第二确定单元,所述第二确定单元用于根据所述总分配资源和每个所述待分配应用组的分配比例系数确定每个所述待分配应用组的所述实际分配资源,所述分配比例系数由每个所述待分配应用组的所述预估分配资源和所有所述待分配应用组的所述预估分配资源确定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810660862.5A CN108845874B (zh) | 2018-06-25 | 2018-06-25 | 资源的动态分配方法及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810660862.5A CN108845874B (zh) | 2018-06-25 | 2018-06-25 | 资源的动态分配方法及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108845874A CN108845874A (zh) | 2018-11-20 |
CN108845874B true CN108845874B (zh) | 2023-03-21 |
Family
ID=64202211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810660862.5A Active CN108845874B (zh) | 2018-06-25 | 2018-06-25 | 资源的动态分配方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108845874B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096349B (zh) * | 2019-04-10 | 2020-03-06 | 山东科技大学 | 一种基于集群节点负载状态预测的作业调度方法 |
CN110166282B (zh) * | 2019-04-16 | 2020-12-01 | 苏宁云计算有限公司 | 资源分配方法、装置、计算机设备和存储介质 |
CN110198344A (zh) | 2019-05-05 | 2019-09-03 | 网宿科技股份有限公司 | 一种资源调度方法及*** |
CN110688993B (zh) * | 2019-12-10 | 2020-04-17 | 中国人民解放军国防科技大学 | 一种基于Spark作业的计算资源确定方法及装置 |
CN111190728B (zh) * | 2019-12-13 | 2023-08-25 | 北京山石网科信息技术有限公司 | 资源调整方法及装置 |
CN113094155B (zh) * | 2019-12-23 | 2023-07-18 | ***通信集团辽宁有限公司 | Hadoop平台下的任务调度方法及装置 |
CN113377521B (zh) * | 2020-02-25 | 2024-01-30 | 先智云端数据股份有限公司 | 通过多层次相关性建立***资源预测及管理模型的方法 |
CN111340240A (zh) * | 2020-03-25 | 2020-06-26 | 第四范式(北京)技术有限公司 | 实现自动机器学习的方法及装置 |
CN111752706B (zh) * | 2020-05-29 | 2024-05-17 | 北京沃东天骏信息技术有限公司 | 资源配置方法、装置及存储介质 |
CN112130997B (zh) * | 2020-09-22 | 2022-09-20 | 新华三大数据技术有限公司 | 一种资源分配方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679444A (zh) * | 2013-11-27 | 2015-06-03 | 中国电信股份有限公司 | 虚拟化存储资源的动态调整方法与装置 |
CN104834569A (zh) * | 2015-05-11 | 2015-08-12 | 北京京东尚科信息技术有限公司 | 一种基于应用类型的集群资源调度方法及*** |
WO2017133351A1 (zh) * | 2016-02-05 | 2017-08-10 | 华为技术有限公司 | 一种资源分配方法及资源管理器 |
CN107885595A (zh) * | 2016-09-30 | 2018-04-06 | 华为技术有限公司 | 一种资源分配方法、相关设备及*** |
CN107908479A (zh) * | 2017-12-11 | 2018-04-13 | 北京奇艺世纪科技有限公司 | 一种节点资源分配方法及装置 |
-
2018
- 2018-06-25 CN CN201810660862.5A patent/CN108845874B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679444A (zh) * | 2013-11-27 | 2015-06-03 | 中国电信股份有限公司 | 虚拟化存储资源的动态调整方法与装置 |
CN104834569A (zh) * | 2015-05-11 | 2015-08-12 | 北京京东尚科信息技术有限公司 | 一种基于应用类型的集群资源调度方法及*** |
WO2017133351A1 (zh) * | 2016-02-05 | 2017-08-10 | 华为技术有限公司 | 一种资源分配方法及资源管理器 |
CN107885595A (zh) * | 2016-09-30 | 2018-04-06 | 华为技术有限公司 | 一种资源分配方法、相关设备及*** |
CN107908479A (zh) * | 2017-12-11 | 2018-04-13 | 北京奇艺世纪科技有限公司 | 一种节点资源分配方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108845874A (zh) | 2018-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108845874B (zh) | 资源的动态分配方法及服务器 | |
US20200287961A1 (en) | Balancing resources in distributed computing environments | |
CN107688492B (zh) | 资源的控制方法、装置和集群资源管理*** | |
CN108667748B (zh) | 一种控制带宽的方法、装置、设备和存储介质 | |
CN107239336B (zh) | 一种实现任务调度的方法及装置 | |
US9749208B2 (en) | Integrated global resource allocation and load balancing | |
CN105491138B (zh) | 一种基于负载率分级触发的分布式负载调度方法 | |
Bhatia et al. | Htv dynamic load balancing algorithm for virtual machine instances in cloud | |
US7467291B1 (en) | System and method for calibrating headroom margin | |
CN103336722B (zh) | 一种虚拟机cpu资源监控和动态分配方法 | |
US11496413B2 (en) | Allocating cloud computing resources in a cloud computing environment based on user predictability | |
CN110221920B (zh) | 部署方法、装置、存储介质及*** | |
CN111798113B (zh) | 资源分配方法、装置、存储介质和电子设备 | |
CN109861850B (zh) | 一种基于sla的无状态云工作流负载均衡调度的方法 | |
CN110502323B (zh) | 一种云计算任务实时调度方法 | |
CN109189563A (zh) | 资源调度方法、装置、计算设备及存储介质 | |
US20190138354A1 (en) | Method for scheduling jobs with idle resources | |
CN103425536A (zh) | 一种面向分布式***性能测试的测试资源管理方法 | |
CN110597639A (zh) | Cpu分配控制方法、装置、服务器及存储介质 | |
CN112463390A (zh) | 一种分布式任务调度方法、装置、终端设备及存储介质 | |
CN107450855A (zh) | 一种用于分布式存储的模型可变的数据分布方法及*** | |
CN116467082A (zh) | 一种基于大数据的资源分配方法及*** | |
CN116880968A (zh) | 一种作业调度方法及调度*** | |
CN110413393A (zh) | 集群资源管理方法、装置、计算机集群及可读存储介质 | |
US11397457B2 (en) | Dynamic power capping of computing systems and subsystems contained therein |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |