一种计算节点的任务调度方法和装置与流程

文档序号:16997869发布日期:2019-03-02 01:30阅读:258来源:国知局
一种计算节点的任务调度方法和装置与流程

本发明涉及计算机技术,尤指一种计算节点的任务调度方法和装置。



背景技术:

在大数据领域,数据量十分巨大,数据处理过程复杂,计算任务庞大且耗时长。而计算资源的硬件(主要是cpu和内存)成本不断提高。提高计算资源的利用率,既可降低硬件成本,也可以节约计算时间。

通常,一个计算节点在面对多个规模巨大的数据处理任务时,会将原数据处理任务划分成多个规模适中的子任务,对子任务采用一定的调度策略安排后再由计算节点进行计算处理。比如,hadoopyarn中有三种调度器:fifoscheduler(队列任务调度器),capacityscheduler(容量任务调度器),fairscheduler(公平任务调度器)。这些任务调度器的算法各有优缺点。其中,fifoscheduler(队列任务调度器)能够简单,顺序执行任务,但是不适合集群。每次只能执行单一任务,无法实现多个任务并行;capacityscheduler(容量任务调度器)能够支持多任务并行执行,但是子任务执行顺序缺少优先级排序,可能导致任务完成时间增长;fairscheduler(公平任务调度器)能支持优先级抢占,但是经常出现某个队列资源用满,但集群整体还有空闲的情况。整体的资源利用率不高。



技术实现要素:

为了解决上述技术问题,本发明提供了一种计算节点的任务调度方法和装置,能够提高计算节点的资源利用率。

为了达到本发明目的,本发明提供了一种计算节点的任务调度方法,所述方法包括:

设置任务的每个子任务的优先级权值;

根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序;

根据所述排序选择子任务并行执行。

一种示例性的实施例中,所述设置任务的每个子任务的优先级权值,包括:

接收到任务的多个子任务时,设置所述子任务的优先级权值为初始值。

一种示例性的实施例中,所述设置任务的每个子任务的优先级权值,包括:

当任务的执行完成率达到预设值时,修改所述任务的未完成子任务的权值。

一种示例性的实施例中,所述根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序,包括:

定期计算待执行子任务所需资源占计算节点总资源的比值;将计算得到每个待执行子任务比值与所述子任务的优先级权值相乘;

根据所述相乘的结果对待执行的子任务进行排序。

一种示例性的实施例中,所述根据所述排序选择子任务并行执行,包括:

从所述排序的子任务中选择多个子任务并行执行,所述多个子任务所需资源之和小于计算节点的剩余资源量,所述选择的子任务的个数不超过预设最大数目。

为了达到本发明目的,本发明还提供了一种计算节点的任务调度装置,所述装置包括设置模块、排序模块和执行模块,其中:

所述设置模块,用于设置任务的每个子任务的优先级权值;

所述排序模块,用于根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序;

所述执行模块,用于根据所述排序选择子任务并行执行。

一种示例性的实施例中,所述设置模块设置任务的每个子任务的优先级权值,包括:

所述设置模块接收到任务的多个子任务时,设置所述子任务的优先级权值为初始值。

一种示例性的实施例中,所述设置模块设置任务的每个子任务的优先级权值,包括:

当任务的执行完成率达到预设值时,所述设置模块修改所述任务的未完成子任务的权值。

一种示例性的实施例中,所述排序模块根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序,包括:

所述排序模块定期计算待执行子任务所需资源占计算节点总资源的比值;

所述排序模块将计算得到每个待执行子任务比值与所述子任务的优先级权值相乘;

所述排序模块根据所述相乘的结果对待执行的子任务进行排序。

一种示例性的实施例中,所述执行模块根据所述排序选择子任务并行执行,包括:

所述执行模块从所述排序的子任务中选择多个子任务并行执行,所述多个子任务所需资源之和小于计算节点的剩余资源量,所述选择的子任务的个数不超过预设最大数目。

与现有技术相比,本发明包括设置任务的每个子任务的优先级权值;根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序;根据所述排序选择子任务并行执行。动态地调度安排计算任务顺序,提高了计算节点的资源利用率,提高了任务的完成速度。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例一的计算节点的任务调度方法的流程图;

图2为本发明实施例二的计算节点的任务调度方法的另一种流程图;

图3为本发明实施例三的计算节点的任务调度装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可调度指令的计算机系统中调度。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序调度所示出或描述的步骤。

实施例一

本实施例提供了一种计算节点的任务调度方法,如图1所示,该方法包括s11-s13:

s11、设置任务的每个子任务的优先级权值;

s12、根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序;

s13、根据所述排序选择子任务并行执行。

本发明实施例,在计算节点资源有限的条件下,提高了计算节点的资源利用率,提高了任务的完成速度。

一种示例性的实施例中,所述任务可以包括一个或多个。所述定期可以是“定时”,也可以是在“任务的执行完成率达到预设值时”等。所需资源量=初始标记的所需资源量*优先级权值。

一种示例性的实施例中,所述设置任务的每个子任务的优先级权值,包括:

接收到任务的多个子任务时,设置所述子任务的优先级权值为初始值。

一种示例性的实施例中,可以对任务的紧急情况进行分级,普通认为的子任务设置优先级权值的初始值为默认为1,越紧急的子任务设置优先级权值的初始值为默认值越高(大于1的数值)。

一种示例性的实施例中,所述设置任务的每个子任务的优先级权值,包括:

当任务的执行完成率达到预设值时,修改所述任务的未完成子任务的权值。

一种示例性的实施例中,所述修改后的所述优先级权值大于1。例如a任务的子任务数为10,初始值优先级权值分别设置为1,当完成8个子任务时,此时完成率为80%,可以将剩余两个子任务的优先级权值分别设置为大于1的数值(例如5),此时,优先权值的增大,使进行降序排序后,这两个剩余的子任务将被排到前面,可以优先调度。

一种示例性的实施例中,所述根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序,包括:

定期计算待执行子任务所需资源占计算节点总资源的比值;

一种示例性的实施例中,所述资源包括cpu核数和内存时,总的计算机节点的cpu核数是10,内存是10g;

(1)子任务b所需cpu核数为3,内存为4g,优先级权值为1,则子任务b的所需资源占计算机节点相应总资源的百分比,cpu核数、内存分别为3/10=0.3,4/10=0.4;

(2)进行求和的结果为0.3+0.4=0.7;

(3)求和的结果与优先级权值相乘为0.7*1=0.7。

一种示例性的实施例中,还可以预设优先执行使用内存资源多的子任务,当计算结果相等时,选择使用内存资源多的子任务靠前排序。

在满足cpu的基础上,能够优先完成使用内存资源多的子任务。

将计算得到每个待执行子任务比值与所述子任务的优先级权值相乘;

根据所述相乘的结果对待执行的子任务进行排序。

其中,所述所需资源包括cpu核数和/或内存,当所述相乘的结果相等时,将预先设置的所需资源大的子任务排在优先执行。

一种示例性的实施例中,所述根据所述排序选择子任务并行执行,包括:

从所述排序的子任务中选择多个子任务并行执行,所述多个子任务所需资源之和小于计算节点的剩余资源量,所述选择的子任务的个数不超过预设最大数目。

一种示例性的实施例中,所述排序可以综合考虑cpu核数和/或内存。预设数目是2,例如计算节点的cpu核数是10,内存是10g,子任务1,已使用cpu核数是4,内存是5g,则计算节点还剩余cpu核数是6,内存是5g。

在子任务2在选择时,按照列表的排序找到所述cpu核数小于等于6、内存小于等于5g的子任务。

可以同时满足充分使用计算机资源,又不超过计算机资源的最大范围。

本发明实施例中,设置任务的每个子任务的优先级权值;根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序;根据所述排序选择子任务并行执行。计算节点资源有限的条件下,可以提高节点资源的利用率,不会出现节点资源利用率不高的情况,而且还控制了计算任务时间和完成度。

实施例二

本实施例对上述实施例方法进行具体描述。

计算节点的资源已知,如cpu的核心数和内存的最大容量已知。多个计算量巨大的数据处理任务已根据逻辑关系由其他算法划分成多个子任务。根据数据处理的方法复杂度和数据的规模,将子任务对应标记所需要的计算资源,如子任务需要的cpu核心数和内存容量。在计算节点中并行执行各个子任务,同时并行执行的子任务所需的计算资源的和应该尽量接近计算节点的资源量。另外,对于需要优先执行的子任务会在其原所需资源量乘以大于1的优先级权值,使其可以优先执行。

本实施例如图2所示,包括以下步骤:

(1)划分子任务;

任务划分成多类子任务是指计算节点处理的多个任务时根据其他算法划分成规模和复杂度不同的多类子任务,给每个子任务标记所需要的资源数目(所需cpu核数和内存空间)。

(2)预先设置并行执行的个数、指定所需资源和设置子任务初始值;

用户根据计算节点资源量和实际需要,设定计算节点并行执行的任务的最大数目。指定所需资源指以具体哪些资源为指标进行降序排序,例如所述所需资源包括cpu核数和/或内存;

设置子任务的初始值可以默认优先级权值为1。

(3)获取子任务的队列;

根据预先设置的指定所需资源和设置子任务初始值进行排序。

(4)判断是否有子任务未执行;

如果判断结果为否,则执行步骤(7);如果为是,则执行步骤(5)。

(5)选择子任务执行;

选择子任务时计算节点同时并行处理的任务满足以下条件:

a.正在处理的子任务所需资源(cpu核数与内存容量)的和都满足不超过计算节点的资源量;

b.根据计算节点剩余资源量,优先执行所需资源大的子任务,且并行执行任务数不超过规定的最大数目;

c.队列中前一个任务计算结束,在任务等待队列中从头筛选满足a与b条件的序号最小的子任务作为下一个计算的子任务。

(6)重新排列队列;

调整子任务优先级权值,进行重新排列。优先级权值的调整用户可以自定义子任务完成率和权值之间的关系。固定时间统计各类子任务的完成率(已完成的某类子任务数目/某类子任务全部数目*100%),完成率越高的某类任务越多地增加优先级权值α,任务等待队列中的同类任务的所需资源扩大α倍,对任务等待队列重新降序排列;

对同一类任务的子任务进行统计,若剩余未执行的同类子任务越少,则相应提高未执行子任务的优先级权值α,使其排序时所需资源扩大为原设定值的α倍(依然小于队列包含的资源量),在算法中可以优先执行。即所需资源=原所需资源×α。

另外,还可以反馈计算节点的利用率,当利用率低的时候调高并行执行子任务的个数。计算计算节点的利用率,包括:

1)计算节点的资源量可以分成cpu核心数为x和内存容量y。并行执行的属于任务a的子任务ai所需的cpu核心数xai和内存容量yai,属于任务b的子任务bi所需的cpu核心数xbi和内存容量ybi。用户选择并行执行的最大任务数m,以2个队列为例。每个子任务默认的优先级权值是1。

2)用户选择cpu或者内存为指标对子任务需要的资源进行降序排列,优先执行所需资源大的子任务。另一个同时并行执行的子任务选择标准是:计算节点资源量与2个子任务所需资源量的差最小,即计算节点的资源利用率最高。

cpu核心利用率:

内存利用率:

本发明实施例提供了一种提高节点资源利用率的任务调度算法,保证了计算节点资源的利用率;任务等待队列的子任务权值会随着该任务完成率进行动态调整,改变未完成子任务的所需资源量,从而调整其在任务等待队列中的位置,使其优先执行。

(7)结束。

实施例三

本实施例提供了一种计算节点的任务调度装置,上述方法实施例中描述也适用于本实施例中,如图3所示,该装置包括设置模块31、排序模块32和执行模块33,其中:

所述设置模块31,用于设置任务的每个子任务的优先级权值;

所述排序模块32,用于根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序;

所述执行模块33,用于根据所述排序选择子任务并行执行。

一种示例性的实施例中,所述设置模块31设置任务的每个子任务的优先级权值,包括:

所述设置模块31接收到任务的多个子任务时,设置所述子任务的优先级权值为初始值。

一种示例性的实施例中,所述设置模块31设置任务的每个子任务的优先级权值,包括:

当任务的执行完成率达到预设值时,所述设置模块31修改所述任务的未完成子任务的权值。

一种示例性的实施例中,所述排序模块32根据所述子任务的优先级权值和所需资源定期对待执行的子任务进行排序,包括:

所述排序模块32定期计算待执行子任务所需资源占计算节点总资源的比值;

所述排序模块32将计算得到每个待执行子任务比值与所述子任务的优先级权值相乘;

所述排序模块32根据所述相乘的结果对待执行的子任务进行排序。

一种示例性的实施例中,所述执行模块33根据所述排序选择子任务并行执行,包括:

所述执行模块33从所述排序的子任务中选择多个子任务并行执行,所述多个子任务所需资源之和小于计算节点的剩余资源量,所述选择的子任务的个数不超过预设最大数目。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作调度。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器调度的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

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