本发明涉及云计算资源的调度领域,具体涉及一种面向高性能计算云平台的作业调度系统。
背景技术:
在高性能计算领域,计算作业以计算密集型为主,通过平台的调度,在计算集群中的一个或多个计算节点上执行。每个作业对计算资源的需求是不同的。计算资源需求最重要的两个指标是cpu核心数和内存大小,其次的指标还包括存储、gpu、带宽等。当每个计算作业分配到需要的资源开始执行后,不能被中断、迁移,如果一旦发生中断需要重新执行。作业调度系统的主要功能是根据作业对计算资源的需求,在计算平台中为作业分配合理的计算资源,并且将作业启动。当计算平台比较繁忙,不能满足计算资源需求时,调度系统会将作业放置到等待队列中,等待计算平台的空闲。
衡量作业调度系统通常通过三个指标:一是作业的吞吐率,就是单位时间内完成作业的数量;二个是计算资源的利用率;三是对作业的调度公平性。常见的调度算法有以下几种:fifo:fifo(firstinfirstout)是最简单也是最明显的调度策略。所有的作业根据进入排队的顺序开始执行。当队列中的下一个作业不能得到资源开始执行时,fifo不会去尝试队列中后面的作业。fifo最大的优点是易于高效实现,而且能够保证系统的公平性,作业的执行顺序是可以预见的。但是它牺牲了系统的利用率,特别是当作业队列的下一个作业需要大数目的cpu核心时,会出现大量空闲的机器时间间隔,造成系统资源的极大浪费。
firstfit:firstfit调度策略根据作业到达作业队列的顺序扫描作业队列中的作业,执行第一个系统资源能满足其资源需求的作业。与fifo相比,它不会由于一个资源需求大的作业被阻塞而影响其作业队列中后续作业的执行。也就是说,不管系统能否满足排在作业队列头的作业的资源需求,只要作业队列中存在作业其资源需求系统能够满足,系统将不会停止启动执行新的作业。很明显,firstfit调度策略能够极大地提高系统的吞吐率。但是其缺点也是明显的,那就是资源需求小的作业极大地延迟了资源需求大的作业,使其可能长时间不能得到执行,从而产生饥饿现象,不能保证公平性,从而增加系统的平均等待时间。另外,作业的执行顺序具有不可预见性。
reservation:为了解决在firstfit调度策略中的资源要求大的作业长时间不能得到运行的现象,对于长时间不能运行的作业,可以采取预约的策略,即当一个作业在队列中等待的时间超过一定的值,对它所需要的资源进行预约,即这些资源中的一部分成为可用时,不再分配给其它的作业,一直到预约的所有资源都已得到满足时,将该作业投入运行。
backfilling:装填策略的运用,解决了预约策略中的资源浪费。所谓装填策略,就是充分利用预约策略中由于预约产生的时间空隙,避免系统资源的浪费。通过计算预约形成的时间间隔,从作业队列中选取合适的作业插入到这段时间段内运行,而不影响预约作业的按时运行,从而有效利用了系统资源,提系统的利用率和吞吐率。
上述的调度算法擅长管控同构的计算节点组成的集群,处理以节点为最小资源粒度的作业。如果集群中单节点资源不一致,比如既有32核的节点,又有36核的节点。并且单个计算作业可能只使用一部分的计算资源,在此情况下调度算法就会面临“装箱问题”。如图1所示,比如计算队列中有大量的8核作业以及16核作业,就无法充分的使用36核计算节点,影响资源的利用率。
通常来说,超级计算机是由同构的计算节点组成,并且节点间由高速网络互联,使得计算作业可以使用mpi利用大量核心并行。所以在超算环境下,可以使用backfilling之类的调度算法解决大部分的问题。如今随着云计算的发展,越来越多的高性能计算开始使用云计算。在云计算的环境中,常见的调度算法就会面临明显的“装箱效应”。原因就是两点,第一点云计算通常会是由异构的计算节点组成,第二点是由于云计算的节点通讯能力不足,通常会将较大的作业拆分小而独立的作业,这样会对调度算法带来更大的挑战。
更近一步的是,超级计算机是静态的计算集群,计算节点的数量是不变的。而云计算并不是,云计算中包含海量的计算资源,并且可以整合多个云计算提供商,可以获得更大量的弹性计算资源。这就对作业调度器的提出了更高的要求,不仅需要调度器更够管理更多的动态计算资源,并且需要调度器能够在合适的时机申请或释放计算资源,以获平衡作业延时时间、资源利用率、计算成本这三者的关系。
技术实现要素:
本发明要解决的技术问题是:提出一种避免因装箱问题而导致资源利用率较低、对异构的计算节点支持能力强且可动态调整计算资源总量的面向高性能计算云平台的作业调度系统和调度方法。
本发明为解决上述技术问题提出的技术方案是:一种面向高性能计算云平台的作业调度方法,包括以下步骤:
将若干作业任务根据各自对计算资源的从小到大需求进行分类并定义为若干种从小到大尺寸层级的作业箱;
设置多个等候队列且将具有相同尺寸层级的作业箱放置到同一等候队列中排队等待执行;
根据所述多个等候队列的不同分配资源权重系数对每个计算节点设置槽位布局,所述每个槽位布局至少包括一种能够容纳一个相应尺寸层级作业箱的槽位;
根据槽位空余情况将所述多个等候队列中的队首作业箱分配到计算节点上不同的槽位之中。
进一步的,在所述若干种从小到大尺寸层级的作业箱中,小尺寸层级作业箱所需计算资源是大尺寸层级作业箱所需计算资源的约数。
进一步的,每个等候队列包含有作业箱类型、作业总数量、队首作业的延时和预估作业时间总的属性参数,所述分配资源权重系数的计算公式如下:
式中,是该队列的资源权重系数,分别是队列作业总数、队首延时时间和预估总时间,是全部队列的作业总数、队首延时时间和预估总时间,是两个预设比例系数,用来调节调度的公平性以及平衡作业的时间长短。
进一步的,所述计算节点上的槽位布局是根据多个等候队列的不同分配资源权重系数变动而动态设置的。
本发明的有益效果是:
本发明通过将作业任务进行分类,较小作业箱可以无缝隙的填满大的作业箱。当作业队列存在大量的一种或多种作业箱的作业时,不会因为装箱问题导致利用率降低。作业在完成调度后开始运行时,就可以准确的知道分配到的核数和内存,从而调整并发程度以充分的利用资源。
再根据实时计算的比例,调度器会调整现有计算节点的槽位布局,使得各种作业箱的槽位总数比例与计算的一致。这样可以将作业调度的的公平性充分提高,不会出现大作业饥饿的情况。
附图说明
下面结合附图对本发明的面向高性能计算云平台的作业调度方法作进一步说明。
图1是背景技术中所涉及现有装箱问题的辅助说明图;
图2是本发明中作业调度方法的整体框架逻辑图;
图3是计算节点上不同槽位布局划分的示意图。
具体实施方式
实施例
根据图2所示,一个典型的计算平台包含两个主要部分,调度系统和计算集群。调度系统会接受外部的作业提交,再通过计算节点管理模块,将任务分配到合适的节点上执行。如果当时计算集群处于忙碌的状态,没有空闲的计算资源,队列管理模块就会把新来的作业放入队列中。所以作为调度系统,主要就是两个部分:计算节点管理和队列管理。节点管理维护计算节点的状态,监控和管理每个作业的启动和结束。队列管理模块负责作业在执行前的生命周期,包括接受新任务、插入队列、资源分配和优先级管理等。每个计算作业包含以下属性:
作业名称作业程序参数列表对计算资源的需求提交时间作业优先级预估持续时间
本发明中作业调度方法首先将若干作业任务根据各自对计算资源的从小到大需求进行分类并定义为若干种从小到大尺寸层级的作业箱。作业对计算资源的需求分类,每一类称之为一种“作业箱”。作业箱如何制定,是由计算平台中计算节点类型,和作业使用资源的统计分布决定。作业箱并不是精确的定义核数和内存,而是限定一个范围,具体一个作业箱如何分配计算资源,由计算节点决定。比如一个由两种计算节点(类型a节点32核60g内存,类型b节点36核60g内存)组成的集群,作业箱可以这样制定。
作业箱类型a节点类型b节点
可以作为优选的是:在同一种计算节点上,尺寸较小的作业箱的计算资源是较大作业箱的约数,也就是说较小作业箱可以无缝隙的填满大的作业箱。当作业队列存在大量的一种或多种作业箱的作业时,不会因为装箱问题导致利用率降低。作业在完成调度后开始运行时,就可以准确的知道分配到的核数和内存,从而调整并发程度以充分的利用资源。
设置多个等候队列且将具有相同尺寸层级的作业箱放置到同一等候队列中排队等待执行。将不同作业箱的作业在不同的队列中排队,这样大大降低了队列管理的难度。每个队列中的作业箱都会根据提交时间、优先级进行排队。
根据多个等候队列的不同分配资源权重系数对每个计算节点设置槽位布局,每个槽位布局至少包括一种能够容纳一个相应尺寸层级作业箱的槽位。节点管理模块根据当前队列的情况,对计算节点的资源进行预划分。节点管理通过分析队列中不同作业箱的任务量、执行时间、平均延时等情况,将每个计算节点设置“槽位”布局。槽位布局是指按照不同种作业箱对资源的需求,将整个计算节点划分成多个槽位,每个槽位将只能容纳一个特定的作业箱。如图3所示,36核的计算节点就有多重槽位布局方式。
根据槽位空余情况将多个等候队列中的队首作业箱分配到计算节点上不同的槽位之中。计算节点中有空出的槽位,调度管理模块会立刻从对应队列中拿出队首作业放入其中。每个队列包含的属性有:
作业箱类型作业总数量队首作业的延时预估作业时间总和
分配资源权重系数的计算公式如下:
式中是该队列的资源权重系数,分别是队列作业总数、队首延时时间和预估总时间,是全部队列的作业总数、队首延时时间和预估总时间,是两个比例系数,用来调节调度的公平性以及平衡作业的时间长短。
根据实时计算的分配资源权重系数,调度器会动态地调整现有计算节点的槽位布局,使得各种作业箱的槽位总数比例与计算的一致。这样可以将作业调度的的公平性充分提高,不会出现大作业饥饿的情况。比如当计算集群的总核数为500,一个可能的队列资源分配如下表:
当计算节点刚加入集群中或者节点上的作业执行结束时,会对该节点的槽位进行布局或者重新布局。布局会根据当前的资源分配表重新布局,使得各种类型的槽位总数与资源表中的相符合。
调度器还可以计算出队列全部完成的时长,如果时长超过一定阀值,可以自动扩展计算资源;另外如果集群的利用率持续一段时间利用率不足100%,则逐步关停部分计算节点以节约资源。
本发明的不局限于上述实施例,本发明的上述各个实施例的技术方案彼此可以交叉组合形成新的技术方案,另外凡采用等同替换形成的技术方案,均落在本发明要求的保护范围内。