CN109324886A - 集群资源调度方法和装置 - Google Patents
集群资源调度方法和装置 Download PDFInfo
- Publication number
- CN109324886A CN109324886A CN201811071858.1A CN201811071858A CN109324886A CN 109324886 A CN109324886 A CN 109324886A CN 201811071858 A CN201811071858 A CN 201811071858A CN 109324886 A CN109324886 A CN 109324886A
- Authority
- CN
- China
- Prior art keywords
- resource
- task
- straggler
- fragmentation
- weight
- 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.)
- Pending
Links
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/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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种集群资源调度方法和装置,其中方法包括:根据任务所分配的资源来判断straggler任务;确定资源集群中的物理机组成的资源池中的资源r的总量;跟踪当前任务的数量和当前阶段的空闲资源间隙,为straggler任务副本选择空闲资源间隙;本发明的方法和装置,能够利用资源的空隙执行额外的straggler副本,以降低作业的完成时间,提高应用的性能,节约系统资源,提高资源的利用率。
Description
技术领域
本发明涉及云计算技术领域,尤其涉及一种集群资源调度方法和装置。
背景技术
随着云计算的规模和任务复杂性的不断增长,提供可扩展和可预测的云环境性能是一个越来越重要的挑战。实现可预测性的一个关键障碍在于straggler(落后)任务,即执行时间比预期完成时间要长的任务。当在一个并行集群上运行时,由几个任务组成的每个作业都是在流水线阶段执行的。集群管理器通常基于一种资源(通常是内存)来定义资源槽(slot),然后将资源槽(slot)分配给任务,以最小化工作完成时间或实现公平性。这种静态的资源槽(slot)会导致任务要求不同时的浪费和过度分配。任务读取来自多台机器的数据并具有很高的网络需求,因此,仅基于内存占用来调度它们可能会导致网络不必要的争用。由于资源的争夺,如缓冲区溢出(添头),磁盘开销,许多任务可以执行要慢得多,成为straggler任务,大大延迟作业完成时间。
发明内容
有鉴于此,本发明要解决的一个技术问题是提供一种集群资源调度方法和装置。
根据本发明的一个方面,提供一种集群资源调度方法,包括:根据任务所分配的资源来判断straggler任务;确定资源集群中的物理机组成的资源池中的资源r的总量;跟踪当前任务的数量和当前阶段的空闲资源间隙,为 straggler任务副本选择空闲资源间隙。
可选地,所述为straggler任务副本选择最恰当的空闲资源间隙包括:基于DRF进行任务资源分配;计算straggler任务权重;根据straggler任务的权重,为straggler任务副本分配资源;其中,任务的权重越大,优先保障该任务的资源需求。
可选地,任务的执行遵从长尾Pareto分布,Pareto分布为:
其中,t是任务完成时间,尺度参数tm是任务最小完成时间,长尾参数α(1<α<2)用于衡量该任务为straggler的可能性。
可选地,资源池中资源总量为C={c1,...,cr},其中r代表资源类型,资源类型包含多种硬件资源,包括:CPU、内存、磁盘和网络带宽;
为机器m上的r类型资源容量;M为机器m的总数量,则:
为分配给作业i的资源向量,si为作业i的优势份额集合,则作业i的优势份额为:
其中,当i,r作为下标出现时,分别表示作业、资源;
采用DRF分配策略使得每个作业的优势份额相等。
可选地,当某一时刻出现了某处资源碎片,首先检查该资源碎片的不同维度资源大小;选取所有资源需求量小于该资源碎片的straggler任务放入可执行任务集;计算straggler任务资源需求与该资源碎片的点积,并乘以该作业的剩余任务数量,作为该straggler任务的权重;选取权重最大的 straggler任务,优先调度给资源碎片。
根据本发明的另一方面,提供一种集群资源调度装置,包括:任务判断模块,用于根据任务所分配的资源来判断straggler任务;资源确定模块,用于确定资源集群中的物理机组成的资源池中的资源r的总量;资源分配模块,用于跟踪当前任务的数量和当前阶段的空闲资源间隙,为straggler任务副本选择空闲资源间隙。
可选地,所述资源分配模块,用于基于DRF进行任务资源分配;计算 straggler任务权重;根据straggler任务的权重,为straggler任务副本分配资源;其中,任务的权重越大,优先保障该任务的资源需求。
可选地,任务的执行遵从长尾Pareto分布,Pareto分布为:
其中,t是任务完成时间,尺度参数tm是任务最小完成时间,长尾参数α(1<α<2)用于衡量该任务为straggler的可能性。
可选地,资源池中资源总量为C={c1,...,cr},其中r代表资源类型,资源类型可以包含多种硬件资源,如CPU、内存、磁盘和网络带宽等。为机器m上的r类型资源容量;M为机器m的总数量;则:
为分配给作业i的资源向量,si为作业i的优势份额集合,则作业i的优势份额为:
采用DRF分配策略使得每个作业的优势份额相等。为了表示的方便,当 i,r作为下标出现时,分别表示作业、资源。
所述资源分配模块,用于采用DRF分配策略使得每个作业的优势份额相等。
可选地,所述资源分配模块,用于当某一时刻出现了某处资源碎片,首先检查该资源碎片的不同维度资源大小;选取所有资源需求量小于该资源碎片的straggler任务放入可执行任务集;计算straggler任务资源需求与该资源碎片的点积,并乘以该作业的剩余任务数量,作为该straggler任务的权重;选取权重最大的straggler任务,优先调度给资源碎片。
本发明的集群资源调度方法和装置,通过对集群资源进行调度为 straggler副本分配空闲资源间隙,能够利用资源的空隙执行额外的 straggler副本,以降低作业的完成时间,提高应用的性能,节约系统资源,提高资源的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的集群资源调度方法的一个实施例的流程示意图;
图2A、2B、2C为不同的speculation方法示意图;
图3A和3B为不同资源表示下straggler备份启动方法示意图;
图4A和4B为本发明的集群资源调度方法的一个实施例中的资源利用率比较示意图;
图5为本发明的集群资源调度装置的一个实施例的模块示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本发明实施例可以应用于计算机系统/服务器,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器一起使用的众所周知的计算系统、环境和/或配置的例子包括但不限于:智能手机、个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
图1为本发明的集群资源调度方法的一个实施例的流程示意图,如图1 所示:
步骤101,根据任务所分配的资源来判断straggler任务;
步骤102,确定资源集群中的物理机组成的资源池中的资源r的总量;
步骤103,跟踪当前任务的数量和当前阶段的空闲资源间隙,为 straggler任务副本选择空闲资源间隙。
传统的集群调度器普遍采用speculation(推测)方法以减轻 straggler任务对性能的影响,即当出现straggler之后,通过启动备份任务的方式重新执行慢节点对应任务,并以所有任务中最快完成的任务输出为结果,其他任务将立刻被“杀死”,释放资源。这种方法在集群负载较低的情况下能够获得较好的性能,但是在负载急剧增加,任务极其重要的场景下,事后控制的speculation必然会造成任务的延迟,从而影响上层应用的性能,带来严峻的影响。
虽然集群管理者会将频繁出现错误的机器(例如,磁盘错误或内存错误)记录在册,并避免将任务调度给这些机器。但是straggler任务还是频繁出现。straggler产生的一个重要原因在于资源的竞争使用,如I/O资源的争夺。由于不同处理机计算速度,不同机器之间数据传输以及因数据聚集带来的I/O传输和网络消耗存在一定差异,节点的计算能力往往不尽相同,从而导致straggler任务的出现。
speculation大致可分为两类:一是将straggler备份任务与其他正常任务同等对待,以尽力而为的方式在当前有空余资源时才会启动straggler 备份任务;二是预留固定的资源用于重启straggler备份任务。如图2A至 2B所示,作业A由4个任务构成,作业B由5个任务构成。如图2A所示,若采用尽力而为的speculation方法,尽管在时间2时即能确定A4将出现 straggler,但由于直到时间10时才出现一个空余计算资源槽,因此在时刻 10才能执行任务A4的备份任务。
尽力而为的speculation方法最大缺陷在于当需要启动备份任务时,往往缺乏可用的计算资源槽。反之,若采用预留固定资源的speculation方法,则能够保障stragger备份任务的及时执行。但是由于straggler任务的动态性和难以预测性,预留固定的资源用于重启straggler备份任务具有很大的缺陷,如果预留的资源数目过小,则其可能无法支持较多的 straggler任务重启备份任务,但如果预留的资源数目过大,则可能会造成资源的浪费。
如图2B所示,若预留有3个资源槽以专门用于straggler备份任务的执行,slot 6和slot 7在时间段[0,12]之间一直处于空闲状态,造成了资源的浪费。将speculation与作业调度相结合,通过优先保障straggler任务的资源来大幅降低straggler节点的产生,该方法既能保证备份任务有可用资源槽,又可最大限度利用空余资源,从而提高作业的平均完成时间。
如图2C所示,在时间1-10之间,Hopper为作业A额外分配一个资源槽,在时间10之后,动态地将已完成任务释放出的资源槽调度给作业B的备份任务。由此不仅可减少大幅作业A的完成时间,同时因为提升了资源利用率,将空余的资源槽动态调度给作业B,因此也大幅减少了作业B的完成时间。
集群管理器以资源槽(slot)为单位分配资源给普通任务和straggler 任务,其中资源槽(slot)是固定的一份资源。
这种资源抽象在一些框架中(如Spark)是合理的,但在大多数的框架中(如Tez等)作业对于不同的资源(CPU,内存,磁盘和网络)往往具有不同的需求。事实上,集群中每个节点的资源都是多维的,包括CPU、内存、网络I/O和磁盘I/O等。为了简化资源管理问题,很多计算框架,如 Hadoop和Dryad,均引入“槽位”(slot)概念,并采用slot组织各个节点上的计算资源。基于slot的资源表示模型采用静态资源配置策略,即每个节点事先配置好可用的slot数目,一旦启动后就无法动态修改。不同作业对资源的需求往往具有较大差异,静态配置slot数量往往会导致节点上某些资源利用率过高或者过低。
为了简化资源管理问题,很多计算框架,如Hadoop和Dryad,均引入“槽位”(slot)概念,并采用slot组织各个节点上的计算资源。实际上,基于slot的资源表示模型就是将各个节点上资源等量切分成若干份,每一份用一个slot表示,同时规定任务可以根据实际需求占用多个slot。通过引入“slot”这一概念,各个节点上的多维度资源被抽象成单一维度slot,这样可以把复杂的多维度资源分配问题转化成简单的slot分配问题,从而大大降低了资源管理问题的复杂度。
基于slot的资源表示模型采用静态资源配置策略,即每个节点事先配置好可用的slot数目,一旦启动后就无法动态修改。考虑到实际应用场景中,不同作业对资源的需求往往具有较大差异,静态配置slot数量往往会导致节点上某些资源利用率过高或者过低。譬如,内存密集型作业往往会有很多Reduce Task,运行时会占用大量Reduce slot,节点上的内存被占用而无法启动Map Task,进而导致内存利用率较高,而CPU利用率则较低。事实上,集群中每个任务的资源需求都是多维的,包括CPU、内存、网络I/O 和磁盘I/O等。
任务对于资源需求的多样性为优化straggler任务带来了新的挑战。第一个也是最大的挑战是straggler副本面临的潜在资源缺失。由于任务在不同资源上具有异构的需求,因此即使只有一种资源是不足的,都将无法启动 straggler任务的副本。
在分布式计算领域中,资源分配问题实际上是一个任务调度问题,根据当前各任务的资源需求对资源进行合理的分配。当前的多资源场景下的任务调度主要注重资源分配的公平性和资源利用率的提高,前者充分保证了在资源有限的条件下,各节点利益最大化,并且不会对其他节点造成不良影响;后者确保资源能够最大限度被利用,这也是云服务商追寻的目标之一,资源利用率的提高有助于节省成本、提高效率和服务质量。
占优资源公平分配(Dominant Resource Fairness allocation,DRF)是当前使用最广泛的资源分配策略。该算法扩展了最大最小公平(Max-min Fairness)算法,使其能够在保持分配公平前提下,支持多维度资源的调度。在DRF算法中,将所需份额(资源比例)最大的资源称为优势份额 (Dominant Share),而DRF的基本设计思想则是将最大最小公平算法应用于优势份额上,进而将多维资源调度问题转化为单维资源调度问题,即DRF 总是最大化所有优势份额占用量中最小的。
由于DRF被证明非常适合应用于多资源和复杂需求的环境中,因此被越来越多的系统所采用,其中包括Apache YARN和Apache Mesos。然而,DRF 调度算法的一大缺陷是其资源利用率较低,在一些特殊场景下,DRF的资源利用率甚至可能低至0%。DRF天然的资源碎片给straggler任务的解决带来了新的契机。
考虑一个拥有21个内核,36GB内存和3Gbps网络的集群。三个作业A,B和C有两个阶段,map阶段和reduce阶段,阶段之间由屏障(Barrier) 隔开;“map”阶段分别由18,6和6个任务组成,“reduce”阶段有3个任务。作业A的map任务需要1个内核和2GB内存,而作业B和C的map任务需要3个内核和1GB内存。所有reduce任务都需要1Gbps的网络和极少的 CPU或内存。假设所有任务都运行t个时间单位。
如图3A和3B所示,DRF将同时调度6个作业A的map任务,2个作业B 的map任务,以及2个作业C的map任务。每个作业的优势份额均为1/3(A 的主要资源是内存,而B和C则是CPU核心)。但是,这样的分配会留下20GB 的集群内存和3个空闲的核心。利用这些空隙来执行额外的straggler副本,以降低作业的完成时间,提高应用的性能。跟踪当前任务的数量和当前阶段的空闲资源间隙,为straggler副本选择最恰当的空闲资源间隙。为 straggler副本分配空闲资源可用多维装箱问题模拟。
本发明提出在多资源环境下speculation的调度方法,该方法利用公平调度场景下形成的资源碎片来启动straggler任务的备份。straggler任务的备份需要被打包以利用DRF调度带来的资源空隙。为此,假设每个任务的资源需求以及机器上的资源容量都是预先可知的。有了这些信息,一旦任务成为机器上的straggler,可以推测某台机器是否可以适应这样的任务,并选择最适合的资源碎片重启straggler任务的副本。
straggler任务产生的一个重要原因在于资源的竞争使用,因此可以根据任务所分配的资源来判断straggler任务。也就是说,任务获得的资源与其资源需求相比越少,其越可能成为straggler任务。事实上,通过对 trace的分析可知,任务的执行时间很大一部分遵从长尾Pareto分布, Pareto分布的CDF由下式给出:
其中,尺度参数tm是任务最小完成时间,可以由当前阶段最早完成的任务时间近似;长尾参数α(1<α<2)可用于衡量该任务为straggler的可能性。
粗略地说,长尾参数α越小意味着straggler更具有破坏性,即如果一个任务已经运行一段时间,则其有更大可能性执行更长的时间。在实际中,长尾参数α会随着时间变化。该公式为任务执行时间的分布,研究表明任务的执行时间服从Pareto分布,该式子提供任务成为straggler任务的数学表示。
集群中所有不同类型的物理机(服务器)组成了整个资源池,物理机集合P={p1,p2,...,pm}(1≤m≤M)。每个物理机都包含四种硬件资源: CPU、内存、磁盘和网络带宽。对于每一种资源r(1≤r≤4),我们定义机器m上该资源的容量机器m上的资源容量为向量;作业j对于资源r的需求为则资源池中资源r的总量为:
资源池中包含多种资源类型,如内存等。资源池中包含多种资源类型,如内存资源、cpu资源、磁盘资源等等。字母r代表资源类型,为机器m 上的r类型资源容量;M为机器m的总数量;将所有机器上的r类型资源容量相加即得到资源池中r类型资源的总量即s。
同时定义资源池中资源总量为S={s1,...,sr},已占用的资源为Z= {z1....,zr}。
为简便起见,不失一般性地我们假设不同的作业属于不同的用户。定义为分配给作业i的资源向量,si为作业i的优势份额(等同于用户)集合,而作业i下一个任务j的资源需求为则作业i的优势份额为:
有些任务为cpu密集型,有些任务为内存密集型。某任务使用最多的资源类型(如cpu)为其优势资源,该类型资源的分配所占的比重为其优势份额。其中C为其资源需求,u为其所分配到的资源。
在一个实施例中,资源池中资源总量为C={c1,...,cr},其中r代表资源类型,资源类型包含多种硬件资源,包括:CPU、内存、磁盘和网络带宽;
为机器m上的r类型资源容量;M为机器m的总数量,则:
为分配给作业i的资源向量,si为作业i的优势份额集合,则作业i的优势份额为:
其中,当i,r作为下标出现时,分别表示作业、资源;
采用DRF分配策略使得每个作业的优势份额相等。
DRF分配策略使得每个作业的优势份额相等。DRF分配策略的资源利用率较低。与其令资源空隙闲置,利用这些空隙来执行额外的straggler副本,以降低作业的完成时间,提高应用的性能。本发明的算法跟踪当前任务的数量和当前阶段的空闲资源间隙,为straggler副本选择最恰当的空闲资源间隙。理论上,为straggler副本分配空闲资源可用多维装箱问题模拟。
straggler副本的数量受到straggler概率(p),资源碎片容量(R)和可接受的风险阈值(ε)所限制。集群中的作业可以简单地分为两类: MapReduce作业和DAG作业。对于不同的任务,它们可能具有不同的 straggler概率(P)。更具体地说,单个MapReduce作业包含不同的阶段(例如,map,reduce和join),每个阶段并行执行相同类型的任务。对于DAG 作业中的每个任务,可能需要不同的处理,从而导致任务运行时的多模式分布。
根据应用程序的不同,某些任务可能需要更多资源来处理。基于来自生产集群的数据,将ti(任务i的完成时间)建模为其处理的数据大小,运行的代码,可用的资源以及可用的带宽的函数:
ti=f(datasize,code,resource,network);
如果四个变量中的任一个存在大的变化,均会导致任务完成时间的相当大的不同。由于均匀划分工作的限制,同一阶段的任务处理的数据量有时变化很大。代码对于阶段中的任务是相同的,但是在各阶段(例如,map和 reduce)之间存在显着差异。将任务放在具有较少资源容量的计算机上执行会使完成时间严重滞后,在拥塞链路上读取数据也会造成该种情况。
straggler副本应以单个任务为粒度,也就是说,当发现某一任务的运行时间远远高于其他任务时,只启动该慢任务的副本,而不是启动该作业下所有的任务副本。在这种细粒度的speculation方法中,对于相同数量的副本,与作业级副本相比,任务级副本为消除straggler提供了更好的概率保证。设p是某任务成为straggler任务的概率。假设该作业为单阶段作业,且有n个并行执行的任务以及c个副本。
若是作业级副本,则出现straggler的概率为(1-(1-p)n)c;P为某任务成为straggler任务的概率,n为并行执行的任务数量,c为副本数量。若副本为作业级,则所有并行执行的任务都有c个副本,1-(1-p)n为n个并行执行的任务出现straggler的概率,且其有c个副本,故出现 straggler的概率为该式。
若是任务级副本,则出现straggler的概率为1-(1-pc)n。由这两个式子可知,随着副本数量的增加,任务级副本出现straggler的概率可以更快的降低,因此我们以任务为单位进行备份。
给定当前任务的数量和当前阶段的空闲资源,为straggler副本选择最恰当的空闲资源碎片。为straggler副本分配资源不仅随着机器变化(空间)也随着时间变化(时间)。记ij为属于作业i的原始任务j,ij′为属于作业i的任务j的副本;令表示作业i的任务j在时间t时分配给了机器 m,表示作业i的任务j的副本在时间t时分配给了机器m。设任务ij在时间t时分配了机器i上资源r的份,则任务ij的副本为为简化模型,这里不考虑任务的抢占。
首先,任务的资源分配不能超过该机器总资源容量:
∑i∑j,∨r,t,m;
为机器m上的r类型资源容量,m为机器,t为时间,r为资源类型,该式子代表任意时间的任意机器上其任务的任意资源分配不得超过该机器资源总量。
其次,分配给原始任务的资源不得超过其最大资源需求,若存在副本任务,则分配给该副本任务的资源不得超过原始任务资源需求的1+2/α:
代表分配给任务i的资源不能超过其最大的资源需求;代表在存在straggler任务的情况下,需要分配给 straggler任务的资源为2/a,d为资源需求,X为分配的资源。
进一步假设任务永远都会被分配到足额的内存。这是因为与CPU、网络带宽等资源仅影响任务完成时间不同,内存资源的多少严重影响到任务是否能够成功运行:
由于内存资源是一种独占性资源,内存资源的分配必须要与内存资源的需要一致,只要少一些内存资源,任务都无法执行。
建立的模型最终需要有不同的优化目标,比如最小化作业完成时间和最大化资源利用率,是多目标优化问题。并且以上若干约束都是非线性的,而快速求解器仅用于具有非线性约束的一些特殊情况(例如,二次分配问题)。将straggler任务打包分配至资源碎片类似于上面提到的多维装箱问题。
通过为每一个任务定义权重将上述启发式方法扩展至多维装箱问题。与一维情况类似,权重越大,资源利用率越高。与此同时,在考虑权重分配时,不仅要使得资源利用率高,更应该使得所有straggler任务完成时间尽可能快,从而使得相应的作业完成时间尽可能缩短。而优先调度不同的straggler任务会使得相应的作业完成时间不同。目前应用最广泛的优化作业完成时间的算法是最短剩余时间优先(SRTF)算法。SRTF算法将作业按照剩余时间逆序排序,并选择具有最小剩余时间的作业优先执行。我们为最小化作业完成时间,将SRTF算法扩展到具有straggler任务的多资源场景下。
算法的具体步骤如下:当某一时刻出现了某处资源碎片,算法首先检查该资源碎片的不同维度资源大小。选取所有资源需求量小于该资源碎片的 straggler任务放入可执行任务集。计算straggler任务资源需求与该资源碎片的点积,并乘以该作业的剩余任务数量,作为该straggler任务的权重。选取权重最大的straggler任务,优先调度给资源碎片。
在一个实施例中,对于多资源环境下面向straggler任务的集群调度算法,在DRF资源分配基础上,将剩余的资源碎片再分配用于straggler任务副本的启动。首先将需要分配的作业按照DRF算法策略进行逐个的分配,直到所有作业全部分配完毕或者所有的物理机资源全被占用而无法填充为止。
DRF是基于“优势份额(Dominant Share)”的多资源公平分配算法,该算法的最大问题在于资源利用率降低,多数物理机上存在资源碎片。而由于资源的争夺,如缓冲区溢出(添头),磁盘开销,集群中许多任务可以执行要慢得多,成为straggler任务,即执行时间比预期完成时间要长的任务,大大延迟作业完成时间。
传统的集群调度器普遍采用speculation方法以减轻straggler任务对性能的影响,即当出现straggler之后,通过启动备份任务的方式重新执行慢节点对应任务。由于straggler任务副本的存在对当前作业调度造成的影响。当启动一个新的straggler任务备份时,这个备份使得该任务完成时间缩短,从而提高作业完成效率。但由于备份任务占用了一定的资源,使得普通任务的执行必然受到影响。
因此,为了尽可能解决straggler任务,我们利用DRF算法留下的资源碎片重启straggler任务备份,在降低作业完成时间的同时,提高了资源利用率。该策略的主要步骤如下:
基于DRF的传统任务资源分配。采用DRF算法为所有的普通作业分配资源,计算出各作业的“优势份额(Dominant Share)”并确定其需要最多的资源;
计算straggler任务权重。在DRF算法分配后物理机上存在有不同的资源碎片,当资源碎片出现时,根据当前资源碎片的容量,straggler任务的资源需求,以及作业剩余任务数量,计算当前straggler任务的权重。
首先检查该资源碎片的不同维度资源大小;选取所有资源需求量小于该资源碎片的straggler任务放入可执行任务集;计算straggler任务资源需求与该资源碎片的点积,并乘以该作业的剩余任务数量,作为该straggler 任务的权重;选取权重最大的straggler任务,优先调度给资源碎片
straggler任务副本分配算法。根据straggler任务的权重,为 straggler任务副本分配资源。任务的权重越大,优先保障该任务的资源需求。首先检查该资源碎片的不同维度资源大小;选取所有资源需求量小于该资源碎片的straggler任务放入可执行任务集;计算straggler任务资源需求与该资源碎片的点积,并乘以该作业的剩余任务数量,作为该straggler任务的权重;选取权重最大的straggler任务,优先调度给资源碎片。分配的资源量等于该任务的资源需求量。
基于DRF的传统任务资源分配。确定作业的需求最多的资源并计算各作业的“优势份额(Dominant Share)”,选取优势份额最少的作业优先分配资源。优势份额=max{作业的r型资源分配量/作业的r型资源需求量}。
在一个实施例中,计算straggler任务权重。在考虑权重分配时,不仅要使得资源利用率高,更应该使得所有straggler任务完成时间尽可能快,从而使得相应的作业完成时间尽可能缩短。而优先调度不同的straggler任务会使得相应的作业完成时间不同。
当某一时刻出现了某处资源碎片,理论上所有资源需求量小于该资源碎片的straggler任务均可放入可执行任务集。但是放入不同的straggler任务副本会导致不同的资源利用率和作业完成时间,本文希望在最大化资源利用率的同时最小化作业完成时间,按照该标准设置的权重将straggler任务降序排列,留作后续分配资源的判断。具体为计算straggler任务资源需求与该资源碎片的点积,并乘以该作业的剩余任务数量,作为该straggler任务的权重。选取权重最大的straggler任务,优先调度给资源碎片。
在一个实施例中,对于多资源环境下面向straggler任务的集群调度算法,基于Google集群的数据集情况设计了相关的模拟实验来对其特性进行评估分析。实验采用了CPU和内存两种资源,将本发明的算法与多资源场景下尽力而为的speculation方法和预留的speculation方法进行了对比,实验结果显示无论从资源利用效率还是作业完成时间,我们的多资源环境下面向straggler任务的集群调度算法表现都更加优越。
图4A为整个实验中资源利用效率,从中可以看出:在相同资源配置的情况下,我们的方法所取得的资源利用率要远远高于尽力而为的 speculation方法和预留的speculation方法。图4B为作业的平均完成时间,从中可以看出:与尽力而为的speculation方法和预留的speculation 方法相比,我们的方法能够更快地利用资源碎片,提供更多重启straggler 任务备份的机会,从而大大降低作业的完成时间。
如图5所示,本发明提供一种集群资源调度装置51,包括:任务判断模块52、资源确定模块53和资源分配模块54。任务判断模块52根据任务所分配的资源来判断straggler任务;资源确定模块53确定资源集群中的物理机组成的资源池中的资源r的总量;资源分配模块54跟踪当前任务的数量和当前阶段的空闲资源间隙,为straggler任务副本选择空闲资源间隙。
资源分配模块54基于DRF进行任务资源分配,计算straggler任务权重,根据straggler任务的权重,为straggler任务副本分配资源;其中,任务的权重越大,优先保障该任务的资源需求。资源分配模块54采用DRF 分配策略使得每个作业的优势份额相等。资源分配模块54当某一时刻出现了某处资源碎片,资源分配模块54首先检查该资源碎片的不同维度资源大小;资源分配模块54选取所有资源需求量小于该资源碎片的straggler任务放入可执行任务集;资源分配模块54计算straggler任务资源需求与该资源碎片的点积,并乘以该作业的剩余任务数量,作为该straggler任务的权重;资源分配模块54选取权重最大的straggler任务,优先调度给资源碎片。
上述实施例中的集群资源调度方法和装置,通过对集群资源进行调度为straggler副本分配空闲资源间隙,能够利用资源的空隙执行额外的 straggler副本,以降低作业的完成时间,提高应用的性能,节约系统资源。
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (10)
1.一种集群资源调度方法,其特征在于,包括:
根据任务所分配的资源来判断straggler任务;
确定资源集群中的物理机组成的资源池中的资源r的总量;
跟踪当前任务的数量和当前阶段的空闲资源间隙,为straggler任务副本选择空闲资源间隙。
2.如权利要求1的方法,其特征在于,所述为straggler任务副本选择最恰当的空闲资源间隙包括:
基于DRF进行任务资源分配;
计算straggler任务权重;
根据straggler任务的权重,为straggler任务副本分配资源;其中,任务的权重越大,优先保障该任务的资源需求。
3.如权利要求2所述的方法,其特征在于,
任务的执行遵从长尾Pareto分布,Pareto分布为:
其中,t是任务完成时间,尺度参数tm是任务最小完成时间,长尾参数α(1<α<2)用于衡量该任务为straggler的可能性。
4.如权利要求3所述的方法,其特征在于,
资源池中资源总量为C={c1,...,cr},其中r代表资源类型,资源类型包含多种硬件资源,包括:CPU、内存、磁盘和网络带宽;
为机器m上的r类型资源容量;M为机器m的总数量,则:
为分配给作业i的资源向量,si为作业i的优势份额集合,则作业i的优势份额为:
其中,当i,r作为下标出现时,分别表示作业、资源;
采用DRF分配策略使得每个作业的优势份额相等。
5.如权利要求4所述的方法,其特征在于,
当某一时刻出现了某处资源碎片,首先检查该资源碎片的不同维度资源大小;
选取所有资源需求量小于该资源碎片的straggler任务放入可执行任务集;
计算straggler任务资源需求与该资源碎片的点积,并乘以该作业的剩余任务数量,作为该straggler任务的权重;
选取权重最大的straggler任务,优先调度给资源碎片。
6.一种集群资源调度装置,其特征在于,包括:
任务判断模块,用于根据任务所分配的资源来判断straggler任务;
资源确定模块,用于确定资源集群中的物理机组成的资源池中的资源r的总量;
资源分配模块,用于跟踪当前任务的数量和当前阶段的空闲资源间隙,为straggler任务副本选择空闲资源间隙。
7.如权利要求6所述的方法,其特征在于,
所述资源分配模块,用于基于DRF进行任务资源分配;计算straggler任务权重;根据straggler任务的权重,为straggler任务副本分配资源;其中,任务的权重越大,优先保障该任务的资源需求。
8.如权利要求7所述的方法,其特征在于,
任务的执行遵从长尾Pareto分布,Pareto分布为:
其中,t是任务完成时间,尺度参数tm是任务最小完成时间,长尾参数α(1<α<2)用于衡量该任务为straggler的可能性。
9.如权利要求8所述的方法,其特征在于,
资源池中资源总量为C={c1,...,cr},其中r代表资源类型,资源类型包含多种硬件资源,包括:CPU、内存、磁盘和网络带宽;
为机器m上的r类型资源容量;M为机器m的总数量,则:
为分配给作业i的资源向量,si为作业i的优势份额集合,则作业i的优势份额为:
其中,当i,r作为下标出现时,分别表示作业、资源;
采用DRF分配策略使得每个作业的优势份额相等。
10.如权利要求9所述的方法,其特征在于,
所述资源分配模块,用于当某一时刻出现了某处资源碎片,首先检查该资源碎片的不同维度资源大小;选取所有资源需求量小于该资源碎片的straggler任务放入可执行任务集;计算straggler任务资源需求与该资源碎片的点积,并乘以该作业的剩余任务数量,作为该straggler任务的权重;选取权重最大的straggler任务,优先调度给资源碎片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811071858.1A CN109324886A (zh) | 2018-09-14 | 2018-09-14 | 集群资源调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811071858.1A CN109324886A (zh) | 2018-09-14 | 2018-09-14 | 集群资源调度方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109324886A true CN109324886A (zh) | 2019-02-12 |
Family
ID=65265214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811071858.1A Pending CN109324886A (zh) | 2018-09-14 | 2018-09-14 | 集群资源调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109324886A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110138883A (zh) * | 2019-06-10 | 2019-08-16 | 北京贝斯平云科技有限公司 | 混合云资源分配方法和装置 |
CN111381950A (zh) * | 2020-03-05 | 2020-07-07 | 南京大学 | 一种面向边缘计算环境基于多副本的任务调度方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104168318A (zh) * | 2014-08-18 | 2014-11-26 | 中国联合网络通信集团有限公司 | 一种资源服务系统及其资源分配方法 |
-
2018
- 2018-09-14 CN CN201811071858.1A patent/CN109324886A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104168318A (zh) * | 2014-08-18 | 2014-11-26 | 中国联合网络通信集团有限公司 | 一种资源服务系统及其资源分配方法 |
Non-Patent Citations (3)
Title |
---|
ALI GHODSI .ECT: "Dominant Resource Fairness: Fair Allocation of Multiple Resource Types", 《PROCEEDINGS OF THE 8TH USENIX CONFERENCE ON NETWORKED SYSTEMS DESIGN AND IMPLEMENTATION》 * |
DA WANG: "Efficient Str aggler Replication in Large-scale Parallel", 《HTTP://ARXIV.ORG/ABS/1503.03128》 * |
XIAOQI REN .ECT: "Hopper: Decentralized Speculation-aware Cluster Scheduling at Scale", 《PROCEEDINGS OF THE 2015 ACM CONFERENCE ON SPECIAL INTEREST GROUP ON DATA COMMUNICATION》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110138883A (zh) * | 2019-06-10 | 2019-08-16 | 北京贝斯平云科技有限公司 | 混合云资源分配方法和装置 |
CN111381950A (zh) * | 2020-03-05 | 2020-07-07 | 南京大学 | 一种面向边缘计算环境基于多副本的任务调度方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Grandl et al. | Multi-resource packing for cluster schedulers | |
US9483288B2 (en) | Method and system for running a virtual appliance | |
CN108667867B (zh) | 数据存储方法及装置 | |
US11693698B2 (en) | System and method for infrastructure scaling | |
US20150295970A1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
EP4068090A1 (en) | Container scheduling method and apparatus, and non-volatile computer-readable storage medium | |
CN103701886A (zh) | 一种云计算环境下的服务及资源分层调度方法 | |
Pakize | A comprehensive view of Hadoop MapReduce scheduling algorithms | |
Liu et al. | Preemptive hadoop jobs scheduling under a deadline | |
Pongsakorn et al. | Container rebalancing: Towards proactive linux containers placement optimization in a data center | |
WO2016041446A1 (zh) | 一种资源分配方法、装置及设备 | |
Islam et al. | SLA-based scheduling of spark jobs in hybrid cloud computing environments | |
Hazra et al. | Distributed task scheduling in cloud platform: a survey | |
Rathinaraja et al. | Dynamic ranking-based MapReduce job scheduler to exploit heterogeneous performance in a virtualized environment | |
CN109324886A (zh) | 集群资源调度方法和装置 | |
US8813088B2 (en) | Scheduling flows in a multi-platform cluster environment | |
Ru et al. | An efficient deadline constrained and data locality aware dynamic scheduling framework for multitenancy clouds | |
Zeng et al. | Workload-aware resource reservation for multi-tenant nosql | |
CN110928649A (zh) | 资源调度的方法和装置 | |
CN116932156A (zh) | 一种任务处理方法、装置及系统 | |
Kambatla et al. | Optimistic scheduling with service guarantees | |
Nzanywayingoma et al. | Task scheduling and virtual resource optimising in Hadoop YARN-based cloud computing environment | |
Manekar et al. | Optimizing cost and maximizing profit for multi-cloud-based big data computing by deadline-aware optimize resource allocation | |
Li et al. | Topology-aware scheduling on blue waters with proactive queue scanning and migration-based job placement | |
Prabhu et al. | Hyper switching memory utilization on hybrid main memory for improved task execution and reduced power consumption |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190212 |
|
RJ01 | Rejection of invention patent application after publication |