作业调度方法、系统及计算设备转让专利

申请号 : CN202010436985.8

文献号 : CN111343288B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 毛登峰杨昆陈健

申请人 : 北京并行科技股份有限公司

摘要 :

本发明公开了作业调度方法,包括步骤:接收客户端的作业运行请求,将所述作业添加到作业队列,所述作业队列中包括一个或多个作业;确定所述作业队列中每个作业的节点需求数量;基于所述第一时间段的空闲节点数量区间,从所述作业队列中获取节点需求数量超过阈值的一个或多个作业作为延时作业;将所述一个或多个延时作业分配给下一个作业运行周期的第一时间段内的多个空闲节点,以便在下一个作业运行周期的第一时间段运行所述一个或多个延时作业。本发明还一并公开了相应的作业调度系统和计算设备。本发明的作业调度方法,有利于提高集群节点资源的利用率,提高运行作业的整体效率。

权利要求 :

1.一种作业调度方法,在计算设备中执行,所述计算设备与计算机集群耦接,所述计算机集群包括多个适于运行作业的计算节点,并适于基于作业运行周期运行作业,每个作业运行周期包括第一时间段、第二时间段,所述第一时间段的空闲节点数量大于第二时间段的空闲节点数量,所述方法包括步骤:接收客户端的作业运行请求,将所述作业添加到作业队列,所述作业队列中包括一个或多个作业;

确定所述作业队列中每个作业的节点需求数量;

基于所述第一时间段的空闲节点数量区间,在当前作业运行周期的第二时间段内从所述作业队列中获取节点需求数量超过阈值的一个或多个作业作为延时作业,其中,所获取的一个或多个作业的节点需求数量总和在所述第一时间段的空闲节点数量区间内;以及将所述一个或多个延时作业分配给下一个作业运行周期的第一时间段内的多个空闲节点,以便在下一个作业运行周期的第一时间段运行所述一个或多个延时作业。

2.如权利要求1所述的作业调度方法,其中,将所述一个或多个延时作业分配给下一个作业运行周期的第一时间段内的多个空闲节点的步骤包括:将所述一个或多个延时作业的运行时间设置为下一个作业运行周期的第一时间段内,以便基于所述第一时间段内的多个空闲节点运行所述一个或多个延时作业。

3.如权利要求2所述的作业调度方法,其中,将所述一个或多个延时作业的运行时间设置为下一个作业运行周期的第一时间段内的步骤包括:将所述一个或多个延时作业的起始运行时间均设置为下一个作业运行周期的第一时间段的预定时间点,以便从下一个作业运行周期的所述预定时间点开始运行所述一个或多个延时作业。

4.如权利要求2所述的作业调度方法,其中,将所述一个或多个延时作业的运行时间设置为下一个作业运行周期的第一时间段内的步骤包括:根据所述第一时间段内的各个时间点的空闲节点数量来确定所述一个或多个延时作业的运行时间。

5.如权利要求4所述的作业调度方法,其中,确定所述一个或多个延时作业的运行时间的步骤包括:确定第一时间段的各个时间点的空闲节点数量,

将所述一个或多个延时作业基于节点需求数量的高低进行排序,基于所述节点需求数量的顺序、各个时间点的空闲节点数量来确定每个延时作业运行的时间点。

6.如权利要求1-5任一项所述的作业调度方法,其中,从所述作业队列中获取节点需求数量超过阈值的一个或多个作业的步骤包括:在当前作业运行周期的第二时间段内,每隔预定时间对所述作业队列中的作业进行扫描一次,以确定节点需求数量超过阈值的作业;

基于节点需求数量的高低、对节点需求数量超过阈值的作业进行排序,并选取节点需求数量最高的一个或多个作业,其中,所选取的一个或多个作业的节点需求数量总和在所述第一时间段的空闲节点数量区间内。

7.如权利要求6所述的作业调度方法,其中,选取节点需求数量最高的一个或多个作业的步骤包括:在每次扫描确定节点需求数量超过阈值的作业后,将本次确定的节点需求数量超过阈值的作业、和上一次选取的节点需求数量最高的一个或多个作业合并在一起进行排序;

从合并在一起排序的所有作业中重新选取节点需求数量最高的一个或多个作业,作为延时作业。

8.如权利要求1-5任一项所述的作业调度方法,其中,还包括步骤:在每个作业运行周期,基于添加顺序依次为所述作业队列中的作业分配相应的一个或多个空闲节点,以运行所述作业队列中的作业。

9.如权利要求1-5任一项所述的作业调度方法,其中,还包括步骤:实时监测所述计算机集群的空闲节点数量,获取先前一个或多个作业运行周期的空闲节点数据;

基于所述空闲节点数据确定作业运行周期的第一时间段、第二时间段,并确定所述第一时间段的空闲节点数量区间。

10.如权利要求9所述的作业调度方法,其中,

所述空闲节点数据包括所述先前作业运行周期的各个时间点的空闲节点数量。

11.一种作业调度系统,包括:

调度服务器,适于执行如权利要求1-10任一项所述的作业调度方法;

客户端,与调度服务器耦接,适于响应于用户的作业运行请求,将作业运行请求发送至所述调度服务器;以及计算机集群,与所述调度服务器耦接,包括多个适于运行作业的计算节点,适于基于作业运行周期运行作业,每个作业运行周期包括第一时间段、第二时间段,所述第一时间段的空闲节点数量大于第二时间段的空闲节点数量。

12.如权利要求11所述的作业调度系统,还包括:

监控服务器,分别与调度服务器、计算机集群耦接,适于实时监测所述计算机集群的空闲节点数量。

13.一种计算设备,包括:

至少一个执行器;以及

存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个执行器执行,所述程序指令包括用于执行如权利要求1-10中任一项所述方法的指令。

14.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-10中任一项所述方法。

说明书 :

作业调度方法、系统及计算设备

技术领域

[0001] 本发明涉及互联网与计算机技术领域,特别涉及一种作业调度方法、作业调度系统及计算设备。

背景技术

[0002] 由于单台计算机提供的计算能力有限,当有计算规模较大的计算作业需要处理时,通常会使用集群来进行计算。集群是由多台计算机通过高速网络互连组成的超级计算机。多个用户通过共享使用集群的方式按需申请计算资源,从而完成自己的计算作业。虽然集群能够按照用户的申请分配可用计算资源,但是集群的资源也是有限的,不可能在任意时刻都能满足所有用户的资源需求,因此集群需要使用作业调度器来对计算资源进行合理的的调度分配,一方面保证资源的充分利用,提高利用效率;另一方面,保证用户公平使用原则,避免出现资源被少量用户长期占用而其他用户无法使用的状况。
[0003] 作业调度器种类繁多,但是主要功能都大同小异,都是解决资源的调度分配的问题。与资源调度密切相关的是调度策略,调度策略即是对资源进行分配的规则。在不同的场景下,为了实现不同的目的,通常会选择不同的调度策略。现有技术中,最为常见的调度策略包括:FIFO,先进先出,按照先后顺序,先提交的作业,优先使用资源;Backfill,回填策略,优先选择可以填充资源空缺的作业运行,这种调度策略,对于需求资源越多的作业而言,由于需要等待较大的资源空缺才能运行,导致获得运行的几率较低。对上述两种调度策略进行比较来看, FIFO策略对于用户使用更加公平,Backfill更有利于提高资源的利用率,但容易造成作业规模越大、排队等候时间越长的现象,对于一部分用户使用来说不太友好。
[0004] 为此,需要一种作业调度方法来解决上述技术方案中存在的问题。

发明内容

[0005] 为此,本发明提供一种作业调度方法和作业调度系统,以力图解决或者至少缓解上面存在的问题。
[0006] 根据本发明的一个方面,提供了一种作业调度方法,在计算设备中执行,所述计算设备与计算机集群耦接,所述计算机集群包括多个适于运行作业的计算节点,并适于基于作业运行周期运行作业,每个作业运行周期包括第一时间段、第二时间段,所述第一时间段的空闲节点数量大于第二时间段的空闲节点数量,所述方法包括步骤:接收客户端的作业运行请求,将所述作业添加到作业队列,所述作业队列中包括一个或多个作业;确定所述作业队列中每个作业的节点需求数量;基于所述第一时间段的空闲节点数量区间,从所述作业队列中获取节点需求数量超过阈值的一个或多个作业作为延时作业;以及将所述一个或多个延时作业分配给下一个作业运行周期的第一时间段内的多个空闲节点,以便在下一个作业运行周期的第一时间段运行所述一个或多个延时作业。
[0007] 可选地,在根据本发明的作业调度方法中,将所述一个或多个延时作业分配给下一个作业运行周期的第一时间段内的多个空闲节点的步骤包括:将所述一个或多个延时作业的运行时间设置为下一个作业运行周期的第一时间段内,以便基于所述第一时间段内的多个空闲节点运行所述一个或多个延时作业。
[0008] 可选地,在根据本发明的作业调度方法中,将所述一个或多个延时作业的运行时间设置为下一个作业运行周期的第一时间段内的步骤包括:将所述一个或多个延时作业的起始运行时间均设置为下一个作业运行周期的第一时间段的预定时间点,以便从下一个作业运行周期的所述预定时间点开始运行所述一个或多个延时作业。
[0009] 可选地,在根据本发明的作业调度方法中,将所述一个或多个延时作业的运行时间设置为下一个作业运行周期的第一时间段内的步骤包括:根据所述第一时间段内的各个时间点的空闲节点数量来确定所述一个或多个延时作业的运行时间。
[0010] 可选地,在根据本发明的作业调度方法中,确定所述一个或多个延时作业的运行时间的步骤包括:确定第一时间段的各个时间点的空闲节点数量,将所述一个或多个延时作业基于节点需求数量的高低进行排序,基于所述节点需求数量的顺序、各个时间点的空闲节点数量来确定每个延时作业运行的时间点。
[0011] 可选地,在根据本发明的作业调度方法中,从所述作业队列中获取节点需求数量超过阈值的一个或多个作业的步骤包括:在当前作业运行周期的第二时间段内,每隔预定时间对所述作业队列中的作业进行扫描一次,以确定节点需求数量超过阈值的作业;基于节点需求数量的高低、对节点需求数量超过阈值的作业进行排序,并选取节点需求数量最高的一个或多个作业,其中,所选取的一个或多个作业的节点需求数量总和在所述第一时间段的空闲节点数量区间内。
[0012] 可选地,在根据本发明的作业调度方法中,选取节点需求数量最高的一个或多个作业的步骤包括:在每次扫描确定节点需求数量超过阈值的作业后,将本次确定的节点需求数量超过阈值的作业、和上一次选取的节点需求数量最高的一个或多个作业合并在一起进行排序;从合并在一起排序的所有作业中重新选取节点需求数量最高的一个或多个作业,作为延时作业。
[0013] 可选地,在根据本发明的作业调度方法中,还包括步骤:在每个作业运行周期,基于添加顺序依次为所述作业队列中的作业分配相应的一个或多个空闲节点,以运行所述作业队列中的作业。
[0014] 可选地,在根据本发明的作业调度方法中,还包括步骤:实时监测所述计算机集群的空闲节点数量,获取先前一个或多个作业运行周期的空闲节点数据;基于所述空闲节点数据确定作业运行周期的第一时间段、第二时间段,并确定所述第一时间段的空闲节点数量区间。
[0015] 可选地,在根据本发明的作业调度方法中,其中,所述空闲节点数据包括所述先前作业运行周期的各个时间点的空闲节点数量。
[0016] 根据本发明的一个方面,提供了一种作业调度系统,包括:调度服务器,适于执行如上所述的作业调度方法;客户端,与调度服务器耦接,适于响应于用户的作业运行请求,将作业运行请求发送至所述调度服务器;以及计算机集群,与所述调度服务器耦接,包括多个适于运行作业的计算节点,适于基于作业运行周期运行作业,每个作业运行周期包括第一时间段、第二时间段,所述第一时间段的空闲节点数量大于第二时间段的空闲节点数量。
[0017] 可选地,在根据本发明的作业调度系统中,还包括:监控服务器,分别与调度服务器、计算机集群耦接,适于实时监测所述计算机集群的空闲节点数量。
[0018] 根据本发明的一个方面,提供了一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的作业调度方法的指令。
[0019] 根据本发明的一个方面,提供了一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述方法。
[0020] 根据本发明的技术方案,提供了一种作业调度方法,通过从作业队列中选取节点需求数量最高的几个大规模作业作为延时作业,将这些延时作业延迟到下一个作业运行周期的第一时间段运行,利用下一个作业运行周期第一时间段较多的空闲节点来运行这些延时作业。相比于在当前第二时间段的空闲节点的匮乏,这些延时作业在下一个作业运行周期的第一时间段会更快地分配到空闲节点。而且,这样也能避免因大规模作业的运行需要大量的空闲节点而阻碍当前作业队列中的其它作业运行,有助于当前的作业队列中的其它作业尽快分配到空闲节点来运行。
[0021] 可见,根据本发明的技术方案,能够均衡每个作业运行周期内的忙时和闲时的作业运行,对忙时提交的大规模作业延迟到下一个运行周期的闲时来运行,从而,避免了大规模作业在忙时排队等待节点资源而造成闲时节点资源的浪费,能够提高集群节点资源的利用率,并且有利于提高运行作业的整体效率。

附图说明

[0022] 为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
[0023] 图1示出了根据本发明一个实施例的作业调度系统100的示意图;
[0024] 图2示出了根据本发明一个实施例的计算设备200的示意图;以及
[0025] 图3示出了根据本发明一个实施例的作业调度方法300的流程图。

具体实施方式

[0026] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0027] 图1示出了根据本发明一个实施例的作业调度系统100的示意图。
[0028] 如图1所示,该系统100可包括一个或多个客户端110、调度服务器120、以及至少一个计算机集群130。其中,调度服务器120分别与客户端110和计算机集群130通信连接。应当理解,图1所示的作业调度系统100仅是示例性的,在具体实现中可以有不同数量的客户端110、调度服务器120和计算机集群130,本发明对这些设备的数量和部署均不做限制。
[0029] 客户端130可以实现为包括桌面计算机和笔记本计算机配置的个人计算机,也可以实现为诸如手机、平板电脑、笔记本电脑、电视盒子、可穿戴设备等移动设备。在客户端130中驻留有相应的应用,用户可以通过该应用,将作业运行请求发送至调度服务器120。
[0030] 客户端110响应于用户的请求,将作业运行请求发送给调度服务器120。调度服务器120可以分别部署于多个地理位置,其可以实现为单个计算设备,也可以实现为集群。因此,客户端110可以将作业运行请求发送给与其相连的一个调度服务器120上。作业运行请求中包含运行该作业所需要的计算节点的数量(节点需求数量)。
[0031] 调度服务器120接收到客户端110的作业运行请求后,将作业添加到作业队列中。并且,调度服务器120可以根据作业的节点需求数量来为作业分配相应数量的计算节点,以便通过这些计算节点来运行该作业。调度服务器120适于按照作业队列中的排列顺序,为当前作业队列中的作业依次分配相应数量的计算节点,以便通过这些计算节点来运行当前作业队列中的作业,使作业队列中的作业排队运行。
[0032] 需要说明的是,在通过计算机集群130的计算节点运行作业过程中,集群节点资源的使用具有周期性的潮汐规律,每个作业运行周期包括集群资源使用的波峰时段和波谷时段。这样,在每个作业运行周期中,每个时间段的空闲节点数量不同,本发明将每个作业运行周期分为两个时间段,分别为空闲节点数量较多的第一时间段(闲时)、空闲节点数量较少的第二时间段(忙时)。也就是说,从整体来看,每个作业运行周期的第一时间段的空闲节点数量大于第二时间段的空闲节点数量。
[0033] 在一个实施例中,调度服务器120会确定当前的作业队列中的每个作业的节点需求数量。基于第一时间段的空闲节点数量区间,从当前作业运行周期的第二时间段的作业队列中选取节点需求数量超过阈值的一个或多个作业,将这些超过阈值的作业从作业队列中提取出来作为延时作业。这里,第一时间段的空闲节点数量区间是根据先前作业运行周期的第一时间段内的各个时间点的节点运行作业情况、来评估确定的适用于每个作业运行周期的第一时间段的空闲节点数量的范围。
[0034] 在一个实施例中,调度服务器120可以在每个作业运行周期实时监测计算机集群130的空闲节点数量。通过从监测的数据中获取先前作业运行周期的空闲节点数据,空闲节点数据包括先前作业运行周期的各个时间点的空闲节点数量,这样,调度服务器120可以根据获取的空闲节点数据来确定通常在作业运行周期中空闲节点数量较多的第一时间段、空闲节点数量较少的第二时间段。并且,根据先前作业运行周期的各个时间点的空闲节点数量,可以评估确定作业运行周期的第一时间段的空闲节点数量区间。
[0035] 在又一个实施例中,系统100还可以设置独立的监控服务器140,监控服务器140分别与调度服务器120、计算机集群130连接,以便通过监控服务器140实时监测计算机集群130的空闲节点数量。
[0036] 在一个实施例中,调度服务器120将选取的一个或多个延时作业分配给下一个作业运行周期的第一时间段内的多个空闲节点,即是将这些延时作业延迟到下一个作业运行周期的第一时间段运行,利用下一个作业运行周期第一时间段更多的空闲节点来运行这些延时作业。
[0037] 具体地,调度服务器120通过将一个或多个延时作业的运行时间设置为下一个作业运行周期的第一时间段内,以便由下一个作业运行周期的第一时间段内的多个空闲节点运行这些延时作业。这里,本发明并不限制每个延时作业在下一个作业运行周期的第一时间段运行的具体时间点。
[0038] 在一个实施例中,调度服务器120适于执行本发明的作业调度方法300。本发明的作业调度方法300将在下文中详述。
[0039] 根据本发明的实施例,上述作业调度系统100中的各种部件,可以通过诸如局域网(LAN)或者如因特网的广域网(WAN)的一个或多个网络进行通信。其中,计算机集群130中的每个计算节点、调度服务器120、监控服务器140、客户端110均可以通过如下所述的计算设备200来实现。
[0040] 根据本发明的作业调度系统,能够均衡每个作业运行周期内的忙时和闲时的作业运行,对忙时提交的大规模作业延迟到下一个运行周期的闲时来运行,从而,避免了大规模作业在忙时排队等待节点资源而造成闲时节点资源的浪费,能够提高集群节点资源的利用率,并且有利于提高运行作业的整体效率。
[0041] 图2示出了根据本发明一个实施例的计算设备200的示意图。
[0042] 如图2所示,在基本的配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
[0043] 取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(µP)、微控制器(µC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器
204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
[0044] 取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统220、一个或者多个应用222以及程序数据224。应用222实际上是多条程序指令,其用于指示处理器204执行相应的操作。在一些实施方式中,应用222可以布置为在操作系统上使得处理器204利用程序数据224进行操作。
[0045] 计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
[0046] 网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
[0047] 在根据本发明的实施例中,计算设备200被配置为执行根据本发明的作业提交方法。计算设备200的应用222中包括执行本发明的作业调度方法300的多条程序指令,这些程序指令可以指示处理器204执行本发明的作业调度方法300。计算设备200通过执行本发明的作业调度方法300,能实现将用户提交的作业分配给一个或多个计算节点来运行。
[0048] 图3示出了根据本发明一个实施例的作业调度方法300的流程图。方法300适于在计算设备(例如前述计算设备200)中执行。
[0049] 在根据本发明的实施例中,计算设备200与计算机集群130耦接,计算机集群130包括多个计算节点,多个计算节点可用于运行作业。并且,计算机集群130基于作业运行周期来运行作业。
[0050] 需要说明的是,在通过计算机集群130的计算节点运行作业过程中,集群节点资源的使用具有周期性的潮汐规律,每个作业运行周期包括集群资源使用的波峰时段和波谷时段。这样,在每个作业运行周期中,每个时间段的空闲节点数量(节点资源)不同,本发明将每个作业运行周期分为两个时间段,分别为空闲节点数量较多的第一时间段(闲时)、空闲节点数量较少的第二时间段(忙时)。也就是说,从整体来看,每个作业运行周期的第一时间段的空闲节点数量(节点资源)普遍大于第二时间段的空闲节点数量。
[0051] 如图3所示,作业调度方法300始于步骤S310。
[0052] 在步骤S310中,接收客户端110发送的作业运行请求,将作业添加到作业队列中。这里,作业队列中包括一个或多个客户端110已经提交的、并且还未分配给计算节点来运行的一个或多个作业,一个或多个作业按照添加到作业队列中的时间顺序进行排列。应当指出,作业运行请求中可以包括运行该作业所需要的计算节点的数量,从而计算设备200可以根据作业的节点需求数量来为作业分配相应数量的计算节点,并通过这些计算节点来运行该作业。
[0053] 随后,在步骤S320中,计算设备200会根据作业运行请求确定当前的作业队列中的每个作业的节点需求数量。
[0054] 随后,在步骤S330中,基于第一时间段的空闲节点数量区间,从忙时(即是当前作业运行周期的第二时间段)的作业队列中选取节点需求数量超过阈值的一个或多个作业,将这些超过阈值的作业从作业队列中提取出来作为延时作业。这里,第一时间段的空闲节点数量区间是根据先前作业运行周期的第一时间段内的各个时间点的节点运行作业情况、来评估确定的适用于每个作业运行周期的第一时间段的空闲节点数量的范围。
[0055] 需要说明的是,在根据本发明的实施例中,在每个作业运行周期的各个时间点,计算设备200会按照作业队列中的排列顺序,为当前作业队列中的作业(这里不包括被选取的延时作业,被选取的延时作业已不在当前作业队列中)依次分配相应的一个或多个空闲节点,由相应的空闲节点来运行当前作业队列中的作业,从而使作业队列中的作业排队运行。还应当指出,所选取出来的延时作业便不会继续在作业队列中排队等待运行,计算设备200会将这些延时作业延迟分配给相应的计算节点,延迟运行这些延时作业。
[0056] 根据一个实施例,计算设备200可以在每个作业运行周期实时监测计算机集群130的空闲节点数量。另外,计算设备200还可以与监控服务器140连接,并通过监控服务器140实时监测计算机集群130的空闲节点数量。
[0057] 在执行方法S330之前,计算设备200可以先从监测的数据中获取先前一个或多个作业运行周期的空闲节点数据。空闲节点数据包括先前作业运行周期的各个时间点的空闲节点数量。这样,计算设备200可以根据获取的空闲节点数据来确定通常在作业运行周期中空闲节点数量较多的第一时间段(闲时)、空闲节点数量较少的第二时间段(忙时)。
[0058] 例如,每个作业运行周期为一天(24小时),通过从监测的数据中获取每天中每个整点的空闲节点数量,根据获取的空闲节点数据来确定集群节点资源使用的潮汐规律,并确定作业运行周期的第一时间段(闲时)、第二时间段(忙时)。这里,根据获取的空闲节点数据确定的每个作业运行周期的第一时间段为0点至8点,第二时间段为8点至24点。
[0059] 并且,根据先前作业运行周期的各个时间点的空闲节点数量,可以评估确定作业运行周期的第一时间段的空闲节点数量区间。
[0060] 最后,在步骤S340中,将选取的一个或多个延时作业分配给下一个作业运行周期的第一时间段内的多个空闲节点,即是将这些延时作业延迟到下一个作业运行周期的第一时间段运行,利用下一个作业运行周期第一时间段更多的空闲节点来运行这些延时作业。
[0061] 根据一个实施例,将一个或多个延时作业的运行时间设置为下一个作业运行周期的第一时间段内,以便通过下一个作业运行周期的第一时间段内的多个空闲节点运行这些延时作业。这里,本发明并不限制每个延时作业在下一个作业运行周期的第一时间段运行的具体时间点。
[0062] 根据一个实施例,步骤S330中从作业队列中获取的节点需求数量超过阈值的多个作业的节点需求数量之和,可以是在第一时间段的空闲节点数量区间之内,并且接近于空闲节点数量区间的最大值。应当理解,所选取的一个或多个作业是作业队列中(相比于其它未选取的作业)对节点数量需求相对更多的作业。
[0063] 根据一种实施方式,在每个作业运行周期的第二时间段内,计算设备200可以每隔预定时间对作业队列中的作业进行扫描一次,通过扫描可以确定当前作业队列中节点需求数量超过阈值的一个或多个作业。
[0064] 随后,计算设备200对所确定的节点需求数量超过阈值的多个作业、按照节点需求数量的高低进行排序,并选取节点需求数量最高的一个或多个作业,从作业队列中提取出来。这里,从作业队列中提取的一个或多个作业的节点需求数量总和在所确定的第一时间段的空闲节点数量区间内,并接近于空闲节点数量区间的最大值。
[0065] 根据一种实施方式,在每次扫描、确定当前作业队列中节点需求数量超过阈值的作业后,还将本次扫描确定的节点需求数量超过阈值的作业、和上一次选取的节点需求数量最高的一个或多个作业合并在一起、再次进行排序。进而,从合并在一起排序的所有作业中、重新选取节点需求数量最高的一个或多个作业,作为本次扫描后确定的当前的延时作业。需要说明的是,由于在将本次扫描确定的节点需求数量超过阈值的作业、和上一次选取的作业合并在一起再次进行排序之后,上一次选取出的一个或多个作业可能有些不再是合并排序后的节点需求数量最高的一个或多个作业,这些便不会在本次被重新选取,从而会将这些作业继续添加到当前的作业队列中,这些作业便不再作为延时作业处理,而是继续在当前作业运行周期按照作业队列中的排列顺序等待为其分配计算节点运行。
[0066] 根据一个实施例,计算设备200会将选取的多个延时作业的起始运行时间、统一设置为下一个作业运行周期的第一时间段内的预定时间点,例如将起始时间统一设置为下一个作业运行周期的0点。这样,计算设备200会从下一个作业运行周期的预定时间点开始为这些延时作业分配空闲节点,使这些延时作业从下一个作业运行周期的预定时间点开始运行。
[0067] 需要说明的是,由于第一时间段内的每个时间点的空闲节点数量并不同,预定时间点的空闲节点数量可能低于上述多个延时作业的节点需求数量之和,从而在下一个作业运行周期的预定时间点,多个延时作业可能也需要排队运行。
[0068] 根据又一个实施例,计算设备200可以根据第一时间段内的各个时间点的空闲节点数量来确定每个延时作业的运行时间。也就是说,计算设备200并不是对所有延时作业统一设置运行时间,多个延时作业的开始运行时间可以分别设置为不同的时间点。
[0069] 具体地,在确定多个延时作业的运行时间时,通过确定第一时间段的各个时间点的空闲节点数量,将多个延时作业基于节点需求数量的高低进行排序,进而,根据多个延时作业的节点需求数量的顺序、各个时间点的空闲节点数量来合理设置每个延时作业开始运行的时间点。例如,按照多个延时作业的节点需求数量的顺序,将节点需求数量最高的延时作业的开始运行时间设置为第一时间段内空闲节点数量最高的时间点。
[0070] 根据本发明的作业调度方法,通过在当前第二时间段,从作业队列中选取节点需求数量最高的几个大规模作业作为延时作业,将这些延时作业延迟到下一个作业运行周期的第一时间段运行,利用下一个作业运行周期第一时间段较多的空闲节点来运行这些延时作业。相比于在当前第二时间段的空闲节点的匮乏,这些延时作业在下一个作业运行周期的第一时间段会更快地分配到空闲节点。而且,这样也能避免因大规模作业的运行需要大量的空闲节点而阻碍当前作业队列中的其它作业运行,有助于当前的作业队列中的其它作业尽快分配到空闲节点来运行。可见,根据本发明的技术方案,能够均衡每个作业运行周期内的忙时和闲时的作业运行,对忙时提交的大规模作业延迟到下一个运行周期的闲时来运行,从而,避免了大规模作业在忙时排队等待节点资源而造成闲时节点资源的浪费,能够提高集群节点资源的利用率,并且有利于提高运行作业的整体效率。这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
[0071] 在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的多语言垃圾文本的识别方法。
[0072] 以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
[0073] 在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0074] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0075] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0076] 本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
[0077] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0078] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0079] 此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
[0080] 如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
[0081] 尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。