任务调度方法、装置及系统与流程

文档序号:13812824阅读:453来源:国知局

本发明涉及计算机应用技术领域,尤其涉及一种任务调度方法、装置及系统。



背景技术:

在传统的服务器集群系统中,通常由中央调度器(中央调度器是指服务器集群的任务调度器,是单独的一个硬件调度器)使用jsq(最短队列优先)算法将任务分配到具有最短任务队列的处理器中。同时中央调度器管理所有到达的任务分配,所以可以自行追踪各个处理器上的任务队列,不需要额外的通讯开销。

随着所需计算服务越来越多,传统的服务器集群处理能力需要进行大规模扩展才能满足现今计算能力需求。但是,对于大规模的服务器集群数据中心,中央调度器已不再适用于做任务调度。当服务器集群规模达到上千台设备时,此时所需要的中央调度器价格昂贵并且增加了扩展粒度(扩展粒度是指调度器可以挂载服务器的台数,)大小。对于中央调度器,在实际应用中还有以下缺点:当系统处于低使用率时,要求关闭部分前端服务器,而此时还需要对中央硬件调度器进行重新配置;单个中央硬件调度器容易造成服务器系统的单点失败,丧失系统健壮性。因此,中央调度器已在服务器集群系统中失去了竞争力,迫切需要一种新的技术来取代它。

因此,使用分布式调度器是必然的发展趋势。但是在分布式调度器系统中,单个调度器只知道部分流经自身的任务,而对于jsq算法,在任务调度前,需要知道全局的系统任务分配情况,jsq算法不再适用分布式调度器系统。

目前,适用于分布式调度器系统的算法有pon(n)(随机n负载均衡)算法和ws(workstealing&worksharing,任务窃取和任务共享)算法。

对于pon(n)算法,在任务到来时,随机选取n个处理器,分析他们的任务队列,将任务交给n个处理器中任务队列最短的处理器处理。pon(n)算法相对朴素随机算法大大提高了响应时间并减小了通讯开销,但是pon(n)算法性能却比jsq算法差很多。而且在任务到达时还是需要调度器和处理器直接的通讯开销,更主要的是这个通讯开销处于响应时间的关键路径之上。

对于ws算法,空闲的处理器会随机选取其他处理器,并接过其任务队列中的任务来处理;同时一个重度负载的处理器会随机选取其他处理器,将自己任务队列中的任务交给其他处理器来处理。但是,多核共享内存结构和服务器集群的任务到达和调度方式不一样。在多核系统中,新的任务线程在每个核心上独立生成;而在分布式调度器中,任务是从外部网络到达调度器。对于分布式调度器,在将每个任务分配到处理器之后,如果在允许处理器直接再次重新根据整个系统和各个核心的负载情况调度任务的情形下,又会引入新的额外开销;而且在多核系统中迁移一个线程是相对容易的,但是在面向网络的任务迁移时,还需要迁移tcp连接以及一些子任务的同步问题。因此,ws算法还不能直接移植到云服务器集群中使用。

在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:

在大规模服务器集群和高负载系统环境下,现有的任务调度方法的效率较低,响应时间较长。



技术实现要素:

本发明提供的任务调度方法、装置及系统,能够在大规模服务器集群和高负载系统环境下更加高效地进行任务调度,合理利用系统资源,响应时间较短。

第一方面,本发明提供一种任务调度方法,包括:

调度器接收路由器分配的任务;

所述调度器将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id;

所述调度器将所述空闲处理器队列中的首个处理器id移除。

可选地,在所述调度器接收路由器分配的任务之前,所述方法还包括:

所述调度器接收空闲处理器上报的处理器id;

所述调度器根据空闲处理器上报处理器id的先后顺序,将处理器id从前到后依次排列,建立空闲处理器队列。

可选地,所述方法还包括:

当所有调度器的空闲处理器队列均为空时,所述调度器接收任务队列长度低于预定阈值的低负载处理器上报的处理器id;

所述调度器将所述低负载处理器上报的处理器id添加到所述空闲处理器队列中;

当所述调度器接收到路由器分配的任务时,将所述任务分配到所述空闲处理器队列中的处理器id对应的低负载处理器。

第二方面,本发明提供一种任务调度装置,所述任务调度装置位于调度器中,所述装置包括:

第一接收单元,用于接收路由器分配的任务;

分配单元,用于将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id;

移除单元,用于将所述空闲处理器队列中的首个处理器id移除。

可选地,所述装置还包括:

第二接收单元,用于在所述第一接收单元接收路由器分配的任务之前,接收空闲处理器上报的处理器id;

建立单元,用于根据空闲处理器上报处理器id的先后顺序,将处理器id从前到后依次排列,建立空闲处理器队列。

可选地,所述装置还包括:

第三接收单元,用于当所有调度器的空闲处理器队列均为空时,接收任务队列长度低于预定阈值的低负载处理器上报的处理器id;

添加单元,用于将所述低负载处理器上报的处理器id添加到所述空闲处理器队列中;

所述分配单元,用于当所述第一接收单元接收到路由器分配的任务时,将所述任务分配到所述空闲处理器队列中的处理器id对应的低负载处理器。

第三方面,本发明提供一种任务调度系统,所述系统包括路由器、多个调度器和多个空闲处理器,其中,

所述路由器,用于将任务分配给其中一个调度器;

所述调度器,用于接收所述路由器分配的任务,将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器,将所述空闲处理器队列中的首个处理器id移除,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id;

所述空闲处理器,用于处理所述调度器分配的任务。

可选地,所述调度器,还用于在接收路由器分配的任务之前,接收空闲处理器上报的处理器id,根据空闲处理器上报处理器id的先后顺序,将处理器id从前到后依次排列,建立空闲处理器队列。

可选地,所述调度器,还用于当所有调度器的空闲处理器队列均为空时,接收任务队列长度低于预定阈值的低负载处理器上报的处理器id,将所述低负载处理器上报的处理器id添加到所述空闲处理器队列中,以及当接收到路由器分配的任务时,将所述任务分配到所述空闲处理器队列中的处理器id对应的低负载处理器。

本发明实施例提供的任务调度方法、装置及系统,调度器接收路由器分配的任务,将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器,并将所述空闲处理器队列中的首个处理器id移除,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id。与现有技术相比,本发明能够在大规模服务器集群和高负载系统环境下更加高效地进行任务调度,合理利用系统资源,响应时间较短。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的任务调度方法的流程图;

图2为本发明实施例提供的任务调度方法的部署示意图;

图3为在r=10的情况下不同的ipqf算法的空ipq的百分比的示意图;

图4为在r=10的时候ipqf在逆向负载均衡算法上使用朴素随机算法和pon(2)算法的平均响应时间的对比示意图;

图5为本发明一实施例提供的任务调度装置的结构示意图;

图6为本发明另一实施例提供的任务调度装置的结构示意图;

图7为本发明实施例提供的任务调度系统的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种任务调度方法,如图1所示,所述方法包括:

s11、调度器接收路由器分配的任务。

其中,在所述调度器接收路由器分配的任务之前,所述调度器接收空闲处理器上报的处理器id,并根据空闲处理器上报处理器id的先后顺序,将处理器id从前到后依次排列,建立空闲处理器队列。

具体地,空闲处理器利用逆向负载均衡的方式,采用朴素随机算法或者pon(n)算法来决定将自身的处理器id上报至哪个调度器。其中,朴素随机算法是指从备选项目中随机选取一个或者多个目标的算法。

具体地,任务首先到达路由器,然后,路由器使用ecmp(equal-cost-multi-path,等价路由)算法随机的将任务分配给一个调度器。

s12、所述调度器将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id。

s13、所述调度器将所述空闲处理器队列中的首个处理器id移除。

进一步地,当所有调度器的空闲处理器队列均为空时,任务队列长度低于预定阈值的低负载处理器向调度器上报该低负载处理器的处理器id,所述调度器将所述低负载处理器上报的处理器id添加到所述空闲处理器队列中,当所述调度器接收到路由器分配的任务时,将所述任务分配到所述空闲处理器队列中的处理器id对应的低负载处理器。

如图2所示为本发明实施例提供的任务调度方法的部署示意图。

为了便于说明,将上述任务调度方法所采用的算法称为ipqf(idle-processor-queue-first,空闲处理器队列优先)算法,该算法的思想是:处理器需要在自己进入低负载或者空闲的时候即时通知调度器自己的状态,任务到达时,调度器直接分配任务到低负载或者空闲的处理器。

下面对ipqf算法的有效性进行分析。

(1)前置条件

ipqf算法在大规模云平台(达到数百或者上千的处理器数量级)上的性能分析,处理器数量n和ipq数目(调度器数目)m的比为r,

假设1:每一个空闲处理器只在一个调度器的空闲队列中注册。

假设2:空闲队列中只有真正空闲的处理器存在。

考虑一个有n个只具有单处理器的服务器系统,任务以速率为nλ的泊松过程到达,所以系统的负载也是λ。设定有m个调度器而且任务是随机的分配到调度器。

所以对于每一个调度器,任务以速率为nλ/m的泊松过程到达。

系统中包括了主要和逆向负载均衡子系统。在主要子系统中有平均到达率为λ和服务率为1的处理器队列。逆向子系统中有空闲处理器到达率未知的(由处理器队列长度的分布决定)和服务率为nλ/m的空闲处理器队列。

(2)逆向负载均衡子系统的分析

对于逆向负载均衡子系统,关键因素在于非空ipq所占总ipq的百分比,因为这决定了到达任务是通过非空ipq进行还是随机分配到调度器中的比。这两个比值将会决定整个系统的响应时间。

推论1:

ρn记为一个有n个处理器的均衡系统中非空ipq所占百分比,在n→∞时ρn→ρ,在此有:

对于使用朴素随机算法的ipqf:

对于使用pon(n)算法的ipqf:

证明:

因为每个ipq的到达过程趋向于泊松过程,ipq的负载相同,记为ρ。每个ipq的服务时间分布服从泊松分布,而平均ipq的长度趋于r(1-λ),因此基于朴素随机算法的ipqf,而对于基于pon(n)的ipqf,

期望的非空ipq的百分比是等于ipq上的负载的,而ipq的负载又依赖于空闲处理器到达的速率,而空闲处理器到达的速率实际上又依赖于ipq的负载。为了打破这种循环依赖的关系,我们观察到期望的空闲处理器的占比趋向于1-λ,因此一个ipq的平均队列长度趋向于r(1-λ)。

建立平均ipq队列长度和负载之间的关系;在n趋向于无穷大时,ipqf的到达过程趋向于泊松过程。实际上,pon(2)创造了最多的性能提升率,检查两个ipq就已经足够了。

推论2:

在处理器数目足够多的情况下,ipqf任务调度到达空闲处理器的占比能达到一个非空处理器占比的r+1倍。

到达空闲处理器的占比为

而到达非空处理器的占比为λ(1-ρ)。

图3显示了在r=10的情况下不同的ipqf算法的空ipq的百分比。其中,横坐标systemload是系统负载λ,纵坐标emptyipqproportion是空ipq占比;靠上的曲线为朴素随机算法,靠下的曲线为pon(2)算法。

图3基于推论1的结论得出仿真结果。图3中可以看出在ipqf中使用了一个更好的pon(n)算法之后,空ipq的百分比得到了很大的降低。而且在中度系统负载的情况下,pon(n)算法的空ipq百分比相比朴素随机算法非常低;而在系统高负载的情况,两种算法基本没有差别,空ipq百分比都非常高。

(3)主要负载均衡子系统的分析:

我们使用逆向负载均衡子系统来计算主要负载均衡子系统的响应时间。

s=λ(1-ρ)(4)

推论3:

处理器处理队列长度分布:

随机数qn指代一个具有n个单处理器的服务器的系统的处理任务队列长度。qs指代m/g/1处理器在系统负载为s的时候的平均处理任务队列长度。那么整个系统的平均队列长度为:

那么整个系统的平均响应时间为:

推论3的证明如下。

为了证明推论3我们需要证明引理1和引理2。

引理1:随机到达一个特定处理器的任务的到达模式λn是泊松到达过程,同时到达速率为s=λ(1-ρ)。

证明:

任务到达一个空闲ipq的概率为1-ρn(ρn为空闲ipq所占比例),所以任务随机到达一个特定处理器的概率为1/n。基于独立随机事件,在一个时间长度t内到达的任务数的期望是λ(1-eρn)t,随机到达过程为泊松过程,速率为s=λ(1-eρn)。因为ρn→ρ,所以s=λ(1-ρ)。

引理2:在一个负载为λ的系统中,处理器空闲的速率是未知的且不服从泊松分布,任务到达处理器是泊松过程,速率为s。假设q为系统队列的长度,qs为m/g/1系统的队列长度,则有:

证明:

在该系统和m/g/1系统的一个系统忙时,一个系统忙时起于任务到达空闲处理器,又因为在系统忙时,到达任务过程是泊松过程,速率为s,所以系统队列长度分布和同种情况下的m/g/1系统的队列长度分布相同。因此,p(q=k|q>0)=p(qs=k|qs>0)。因为系统负载为λ,p(q>0)=λ和p(qs>0)=λ。因此,

p(q=k)=p(q=k|q>0)p(q>0)=p(qs=k|qs>0)p(qs>0)

下面证明推论3:

使用引理1,我们得到s=λ(1-eρn),所以

结论:一共有两种请求任务到达处理器的方式,一种是通过ipq到达,一种是遇到空ipq后通过随机算法到达。两种方式到达的比例由非空ipq的百分比ρ决定。所以到达的任务遇到一个空ipq的百分比为1-ρ,所以通过随机算法到达的任务的到达模式是泊松过程,速率为s=λ(1-ρ)。

图4显示了基于推论3的仿真结果,在r=10的时候ipqf在逆向负载均衡算法上使用朴素随机算法和pon(2)算法的平均响应时间的对比(平均处理时间假设为1)。其中,横坐标systemload是系统负载λ,纵坐标meanresponsetime是系统平均响应时间;靠上的曲线为基于朴素随机算法的ipqf,靠下的曲线为基于pon(2)算法的ipqf。

相较于图3中ρ的提升,两种逆向随机算法对ipqf在系统中对负载情况的影响相对较小,系统响应时间几乎没有差异。因为只有在系统处于重度负载,同时ρ值也很大时,pon(2)算法才会大幅提高系统响应时间。在系统负载低的时候,pon(2)就没有明显的效果,还增加了通讯开销。而在系统负载高时,每个ipq的空闲处理器数目少,这样我们就看到了系统响应时间的大幅增加。

(4)减少队列开销s:

我们可以使用下面的公式计算队列开销:

即使用朴素随机算法的ipqf的平均响应时间是:

在到达速率为λ时,m/g/1队列的开销为:

因为平均处理时间为1,所以随机算法队列开销为而使用随机算法的ipqf算法的开销为所以正好有一个1+r的队列开销降低。

下面进行ipqf算法和pon(n)算法的响应时间对比。

在cpu共享模式下,ipqf一直表现比pon(2)算法好。我们列出ipqf对比pon(2)、响应时间提升的比例,见表1。我们定义ti为ipqf随机算法的响应时间,tp为pon(2)算法的响应时间,那么可以通过以下公式来计算队列开销的提高比例(这里假设平均处理时间为2)。

从表1我们可以看到随着r的值越来越大,队列开销提高的比例也越来越高。比如在系统负载达到0.5时,在r=10的情况,提升幅度可以达到系统负载达到0.9时,在r=40的情况,提升幅度可以达到

表1

其中,“提升幅度%”为ipqf算法相比pon(2)算法在队列开销上提升的百分比,r是系统处理器数目和调度器数目的比值,λ为系统负载。

总结来看,ipqf算法相比pon(2)算法,主要的提升为:

(1)ipqf算法运行在分布式调度器环境,提供大规模服务器集群调度的支持;

(2)ipqf算法使用分布式调度器系统,能够提高系统健壮性,消除单点失败;

(3)ipqf算法作为分布式软件负载均衡系统,成本低;

(4)ipqf算法的系统可扩性高,扩展粒度小,可编程可配置性高;

(5)ipqf算法能够减少系统有效负载,例如,一个0.9左右负载的系统表现如同一个负载0.5的系统;

(6)ipqf算法没有增加系统响应的关键路径时间,在任务到达进行调度的时候,分布式调度器和处理器之间没有通讯同步开销,能够有效降低系统负载,相对pon(2)算法,在队列开销方面减少至少一个数量级的开销,降低响应时间。

本发明实施例提供的任务调度方法,调度器接收路由器分配的任务,将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器,并将所述空闲处理器队列中的首个处理器id移除,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id。与现有技术相比,本发明能够在大规模服务器集群和高负载系统环境下更加高效地进行任务调度,合理利用系统资源,响应时间较短。

本发明实施例还提供一种任务调度装置,如图5所示,所述任务调度装置位于调度器中,所述装置包括:

第一接收单元11,用于接收路由器分配的任务;

分配单元12,用于将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id;

移除单元13,用于将所述空闲处理器队列中的首个处理器id移除。

进一步地,如图6所示,所述装置还包括:

第二接收单元14,用于在所述第一接收单元11接收路由器分配的任务之前,接收空闲处理器上报的处理器id;

建立单元15,用于根据空闲处理器上报处理器id的先后顺序,将处理器id从前到后依次排列,建立空闲处理器队列。

进一步地,如图6所示,所述装置还包括:

第三接收单元16,用于当所有调度器的空闲处理器队列均为空时,接收任务队列长度低于预定阈值的低负载处理器上报的处理器id;

添加单元17,用于将所述低负载处理器上报的处理器id添加到所述空闲处理器队列中;

所述分配单元12,用于当所述第一接收单元11接收到路由器分配的任务时,将所述任务分配到所述空闲处理器队列中的处理器id对应的低负载处理器。

本发明实施例提供的任务调度装置,接收路由器分配的任务,将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器,并将所述空闲处理器队列中的首个处理器id移除,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id。与现有技术相比,本发明能够在大规模服务器集群和高负载系统环境下更加高效地进行任务调度,合理利用系统资源,响应时间较短。

本发明实施例还提供一种任务调度系统,如图7所示,所述系统包括路由器21、多个调度器22和多个空闲处理器23,其中,

所述路由器21,用于将任务分配给其中一个调度器22;

所述调度器22,用于接收所述路由器21分配的任务,将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器23,将所述空闲处理器队列中的首个处理器id移除,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id;

所述空闲处理器23,用于处理所述调度器22分配的任务。

可选地,所述调度器22,还用于在接收路由器21分配的任务之前,接收空闲处理器23上报的处理器id,根据空闲处理器23上报处理器id的先后顺序,将处理器id从前到后依次排列,建立空闲处理器队列。

可选地,所述调度器22,还用于当所有调度器22的空闲处理器队列均为空时,接收任务队列长度低于预定阈值的低负载处理器上报的处理器id,将所述低负载处理器上报的处理器id添加到所述空闲处理器队列中,以及当接收到路由器分配的任务时,将所述任务分配到所述空闲处理器队列中的处理器id对应的低负载处理器。

本发明实施例提供的任务调度系统,调度器接收路由器分配的任务,将所述任务分配到自身的空闲处理器队列中的首个处理器id对应的空闲处理器,并将所述空闲处理器队列中的首个处理器id移除,其中,所述空闲处理器队列中包括各空闲处理器上报的处理器id。与现有技术相比,本发明能够在大规模服务器集群和高负载系统环境下更加高效地进行任务调度,合理利用系统资源,响应时间较短。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

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