任务调度方法、装置、电子设备以及计算机可读存储介质
文献发布时间:2024-01-17 01:27:33
技术领域
本公开的实施例涉及计算机技术领域,更具体地,本公开的实施例涉及任务调度方法、装置、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
近年来,为了提高存储系统的安全性、可靠性和性能,以及降低成本,在存储系统中引入各种类型的任务,例如,数据校验,加解密、数据压缩、人工智能(AI)推理等。这些任务的使用频率和开销越来越大,给存储系统的算力带来了挑战。
由于很难通过大幅提升单核性能来提升处理器算力,已有的存储系统更多地依赖于处理器数量和核心数量来提升算力。一些存储系统提供了由处理核心或处理器组成的处理资源池,将相关联或相似的任务调度给相同的处理资源来执行,以这种方式提高缓存命中率,达到更好的性能。但是,客户场景越来越复杂,存储系统中的任务数量和执行任务所需的处理资源的差别很大,这导致处理资源的负载不均衡。
发明内容
本公开的实施例提供了任务调度的技术方案。该技术方案可以基于任务的业务类型和执行时间将任务调度给合适的处理资源来执行,以实现复杂场景下的负载均衡。
根据本公开的第一方面,提供了一种任务调度方法。该方法包括:基于第一任务的业务类型和执行时间,从多个处理单元集合中选择第一处理单元集合,并将该第一任务分配给第一处理单元集合中的处理单元以用于执行。以此方式,执行时间相同或接近的任务可以被分配给相同的处理资源来执行,使得处理资源之间的任务分配更为均衡,从而提升了任务调度效率和系统性能。
在一些实施例中,多个处理单元集合与不同的业务类型和不同的执行时间级别相关联。以此方式,任务可以由经过分组的处理资源各自处理。例如,将高密计算类的任务和存储业务逻辑相关的任务分配不同的处理资源来执行,既保证了业务的亲和性,又保证了调度效率。
在一些实施例中,将第一任务分配给第一处理单元集合中的处理单元可以包括:将第一任务分配给第一处理单元集合中待执行任务最少的处理单元。以此方式,实现了处理单元集合内的负载均衡。
在一些实施例中,处理单元具有与优先级相关联的多个执行队列,将第一任务分配给所述第一处理单元集合中的处理单元可以包括:基于第一任务的优先级,将第一任务添加到多个执行队列中的一个执行队列。以此方式,能够根据任务优先级来执行任务,满足不同任务的实时性要求。
在一些实施例中,使处理单元以轮询方式从多个队列中获取任务以用于执行,处理单元每次获取的任务的数目基于队列各自的优先级而确定。以此方式,可以根据针对不同优先级来获取数量的任务,例如,每次为从高优先级的队列获取更多的任务,由此可以满足不同任务的实时性要求。
在一些实施例中,处理单元是控制器、处理器、或者处理器核心之一。以此方式,可以以不同的粒度来管理处理资源。
根据本公开的第二方面,提供了一种任务调度方法。该方法包括:基于第二任务的业务类型和执行时间,从多个处理单元集合中选择第二处理单元集合,在确定第二处理单元集合处于高负载状态时,将第二任务添加到由第二处理单元集合和多个处理单元集合中的第三处理单元集合共享的任务队列,其中,第二处理单元集合和第三处理单元集合具有相同的执行时间级别,并且第二处理单元集合和第三处理单元集合用于执行不同业务类型的任务。以此方式,提供了跨处理单元集合的全局队列,其覆盖相同执行时间级别的处理单元集合。当场景变化导致负载不均衡均时,轻负载的处理单元可以获取该全局队列的任务执行,使得处理资源之间的任务分配更为均衡,从而提升了任务调度效率和系统性能。
在一些实施例中,如果确定第二处理单元集合和第三处理单元集合中存在空闲的处理单元,将共享的任务队列中的任务分配给空闲的处理单元以用于执行。以此方式,共享的任务队列中的任务可以被负载较低的处理单元执行,从而保证了任务及时被执行。
在一些实施例中,可以周期性地将共享的任务队列中的任务分配给第二处理单元集合或第三处理单元集合以用于执行。以此方式,在一些异常情况下,例如,这些处理单元集合一直处于高负载或繁忙时,共享的任务队列中的任务仍然能够被执行,而不是一直挂在队列中无法得到执行。
在一些实施例中,处理单元可以是控制器、处理器、或者处理器核心之一。以此方式,可以以不同的粒度来管理处理资源。
根据本公开的第三方面,提供了一种任务调度装置,包括选择单元和分配单元。选择单元被配置为基于第一任务的业务类型和执行时间,从多个处理单元集合中选择第一处理单元集合。分配单元被配置为将第一任务分配给第一处理单元集合中的处理单元以用于执行。
根据本公开的第四方面,提供了一种任务调度装置,包括选择单元、负载确定单元和均衡单元。选择单元被配置为基于第二任务的业务类型和执行时间,从多个处理单元集合中选择第二处理单元集合。负载确定单元被配置为确定第二处理单元集合处于高负载状态。均衡单元被配置为在第二处理单元集合处于高负载状态时,将第二任务添加到由第二处理单元集合和该多个处理单元集合中的第三处理单元集合共享的任务队列。第二处理单元集合和第三处理单元集合具有相同的执行时间级别,并且第二处理单元集合和第三处理单元集合用于执行不同业务类型的任务。
根据本公开的第五方面,提供了一种电子设备,包括:处理单元和存储器,该处理单元执行存储器中的指令,使得电子设备执行根据本公开的第一方面或第二方面所述的方法。
根据本公开的第六方面,提供了一种计算机可读存储介质,其上存储有一条或多条计算机指令,其中一条或多条计算机指令被处理器执行使所述处理器执行根据本公开的第一方面或第二方面所述的方法。
根据本公开的第七方面,提供了一种计算机程序产品,包括机器可执行指令,所述机器可执行指令在由设备执行时使所述设备执行根据本公开的第一方面或第二方面所述的方法。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图;
图2示出了本公开的多个实施例能够在其中实现的另一示例环境的示意图;
图3示出了根据本公开的一些实施例的任务调度方法的示意流程图;
图4示出了根据本公开的一些实施例的处理资源的布局的示意图;
图5示出了根据本公开的一些实施例的在处理单元集合中分配任务的示意图;
图6示出了根据本公开的一些实施例的另一任务调度方法的示意流程图;
图7示出了根据本公开的一些实施例的共享任务队列的示意图;
图8示出了根据本公开的一些实施例的任务调度装置的示意框图;
图9示出了根据本公开的一些实施例的另一任务调度装置的示意框图;以及
图10示出了可以用来实施本公开的实施例的示例设备的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。需要注意的是,本文所有具体数值都是示例,是为了帮助理解,绝无限定范围之意图。
为了提高安全性、可靠性和性能,以及降低成本,在存储系统中引入了数据校验、加解密、数据压缩等任务。一些方案根据任务亲和性来调度任务,将业务逻辑相关联或相似的任务调度给相同的处理资源来执行。例如,将存储系统的处理单元(例如,控制器、处理器、处理器核心)按照业务类型分为若干个集合,包括I/O读写、数据交换通道、协议解析等。根据业务类型,任务可以被调度给对应的处理单元集合,然后,将任务分配给组内的处理单元来执行。在所有任务的处理执行时间相差不大的情况下,这是没有问题的。然而,随着客户场景趋于复杂,即便是相同业务类型的任务,其执行时间也可能相差巨大,例如,在某个特定业务类型中,数据压缩、AI推理任务的执行时间可能是毫米级别,数据刷盘、数据聚合任务的执行时长可能是百微秒级别,而时延敏感的前端、镜像网络、缓存命中查询等任务的执行时间可能是十微秒级别。这导致原来的调度策略不再准确,调度效率下降,一些处理资源可能被闲置。
有鉴于此,本公开了提供了根据任务的业务类型和执行时间来调度任务的方案。根据本公开的实施例,可以根据任务的执行时间和业务类型,从多个处理单元集合中选择一个处理单元集合处理这个任务,然后将任务分配给所选择的处理单元集合中的处理单元来执行。以此方式,执行时间相同或接近的任务可以被分配给相同的处理资源来执行,使得处理资源之间的负载分配更为均衡,从而提升了任务调度效率和系统性能。
以下参照图1至10描述本公开的实施例。
图1示出了本公开的多个实施例能够在其中实现的示例环境的示意图。如图1所示,主机110可以经由前端网卡120与存储控制系统130通信。例如,主机110可以生成任务,并且发送到存储控制系统130以便执行。存储控制系统130包括多个存储节点(或简称“节点”)132。节点132可以通过前端网卡132与主机110通信,并且可以通过后端网卡140与后端的存储装置150通信。
节点132可以包括多个控制器133。控制器133可以是计算设备,例如服务器、台式计算机、集群等。控制器133至少包括处理器、存储器(也称为“内存”)和总线。处理器是用于处理来自主机110的请求,或者存储控制系统130内部生成的请求。在控制器133中,可能包含多个处理器,其中每个处理器包括多个处理器核。存储器用于临时存储从主机110接收的数据或存储装置150的硬盘151读取的数据。总线用于控制器133的内部各组件之间的通信。
前端网卡120可以通过内部网络通道和每个节点132所包含的多个控制器133连接,后端网卡140也可以通过内部网络通道和每个节点所包含的多个控制器133连接。由此,每个节点100内的控制器103可以通过前端网卡120或后端网卡120进行业务的收发。在一些实施例中,节点132可以具有各自的前端网卡120和后端网卡140。备选地,存储控制系统130的多个节点132之间可以共享前端网卡120和后端网卡140。
存储控制系统130包括任务调度单元101。任务调度单元101可以被实现为计算设备,该计算设备运行程序代码以调度来自主机110的任务给节点132执行。在一些实施例中,当存储控制系统130接收到来自主机110的任务时,任务调度单元101将任务调度给适当的处理资源(例如,控制器133、控制器中的处理器、或者处理器核)来执行。在一些实施例中,任务调度单元101可以根据任务的属性(例如,业务类型、执行时间、优先级)以及处理资源的繁忙程度等来调度任务。下文中将参考图3至9进一步说明根据本公开实施例的任务调度过程。存储控制系统130可以经由后端网卡140来访问后端的存储装置150。
存储装置150可以包括多个硬盘或硬盘集群151。硬盘151用于存储数据,可以是磁盘或者其他类型的存储介质,例如固态硬盘或者叠瓦式磁记录硬盘等。另外,节点132都可以通过后端网卡140连接到存储装置150,以实现在节点间共享数据。在某些应用场景中,可以将存储控制系统130(包括前端网卡120和后端网卡140)以及存储装置130合称为存储系统或存储设备。
图2示出了本公开的多个实施例能够在其中实现的另一示例环境200的示意图。相比于图1描述的硬件环境,图2示出了从硬件虚拟化得到的环境。
如图2所示,存储控制系统130中的节点132可以经过虚拟化而生成一个虚拟的处理资源池220。具体地,存储控制系统130中的节点132的处理单元可以合并在一起,并且划分为分多个处理单元集合221。处理器单元集合221中的处理单元222可以是节点的控制器、控制器中的处理器、或者处理器中的处理器核心,这取决于具体实现方式,本公开对此不做限制。以此方式,可以以不同的粒度来管理处理资源。
以处理单元是处理器核心进行说明。例如,存储控制系统有4个节点,每个节点内有4个控制器133,每个控制器内有4个CPU,每个CPU有48个CPU核,那么一个节点132共有768个CPU核。一个存储系统如果包含4个节点,则总核数高达3072个。如果设置每个处理单元集合具有16个核心,则可以得到192个处理单元集合;如果设置每个处理单元集合具有32个核心,则可以得到92个处理单元集合。应理解,本公开不限制处理单元集合221中的处理单元222的数量,并且处理单元集合221所具有的处理单元222的数量可以相同或不同。
处理资源池220可以被呈现给任务调度单元101,使得任务调度单元101不需要考虑底层硬件的情况,而是根据虚拟化得到的包括处理单元集合221的资源池220来调度任务。在一些实施例,考虑到任务亲和性,处理单元集合221可以被配置为用于执行与特定业务类型相关联的任务,以便提高缓存命中率,从而改进性能。除了从业务类型方面进行调度,处理单元集合221还可以被配置为用于执行特定执行时间级别的任务。换句话说,一个处理单元集合被用于执行具有相对较长执行时间的任务,例如,数据压缩、加解密任务、AI推理等,而另一个处理单元集合被用于执行较短执行时间的任务,例如,I/O读写、元数据处理、协议解析等。通过这种方式,当存储控制系统130接收到任务时,任务可以被调度给适当的处理单元集合221,进而由该处理单元集合内的某个或某些处理单元来执行。
应当理解,图1和图2示出的环境仅是示例性的,本公开的实施例还可以在不同的环境中实施。例如,本公开实施例还可以在不同于存储系统的其他计算机系统中实施。
图3示出了根据本公开的一些实施例的任务调度方法300的示意流程图。方法300可以由如图1或图2所示的任务调度单元101或由实现任务管理单元101的计算设备来执行。
在框310,任务调度单元101基于第一任务的业务类型和执行时间,从多个处理单元集合中选择第一处理单元集合。在一些实施例中,经由前端网卡120,存储管理系统130从主机110接收第一任务。第一任务可以具有相关联的属性信息,例如,业务类型、执行时间、优先级信息等。
业务类型可以包括但不限于协议解析、I/O读写(在缓存前端处)、缓存刷盘(在缓存后端处)、数据交换等。执行时间可以是执行任务所需时间的级别,例如,毫秒级、百微秒级、十微秒级等等。备选地,任务的执行时间可以是已确定或预估的时间量。根据本公开的实施例,任务调度单元101可以从业务类型和任务的执行时间这两个维度来选择执行该任务的处理单元集合。
任务的优先级信息可以基于任务来源进程或线程来确定,由操作系统进程产生的任务的优先级高于一般用户进程的优先级。任务的优先级还可以基于其他因素来确定,例如,任务的实时性要求、对资源量的要求等,本公开对此不做限制。
在一些实施例中,多个处理单元集合可以分别与不同的业务类型和不同的执行时间级别相关联。也就是说,一个处理单元集合可以被配置用于执行相应业务类型的任务并且具有相应的执行时间级别。由此,多个处理单元集合可以按照业务类型和执行时间级别这两个维度来组织,并且可以基于任务和处理单元集合之间的匹配关系来调度任务。
图4示出了根据本公开的一些实施例的处理资源的布局400的示意图。处理资源包括多个处理单元集合221。每个处理单元集合221可以包括多个处理单元。在一些实施例中,处理单元可以是存储控制系统中的控制器、控制器中的处理器、或者处理器中的处理器核。
为了方便理解,在图4中多个处理单元集合221被示出为按照行和列的方式排列,其中,列对应于业务类型,行对应于执行时间的长短。应当理解,处理资源池220中的处理单元集合221并不一定是按照行和列的方式来布置的。
如图4所示,在业务类型1的列中的处理单元集合可以被配置为执行具有业务类型1的任务,在业务类型2的列中的处理单元集合可以被配置为执行具有业务类型2的任务,以此类推。类似地,在长任务行中的处理单元集合可以被配置执行具有较长执行时间的任务,在中任务行中的处理单元集合可以被配置为执行具有中等执行时间的任务,在短任务行中的处理单元集合可以被配置为执行具有较短执行时间的任务。应理解,任务的执行时间取决于处理单元的性能,因此,这里的较长执行时间、中等执行时间、较短执行时间是相对的概念。例如,执行时间为毫秒级的任务可以被认为是长任务,执行时间为百微秒级的任务可以被认为是中任务、执行时间为十微秒级的任务可以被认为是短任务。本公开不限制按照执行时间对任务进行分类的具体规则。
此外,尽管图4示出了将任务分为长任务、中任务、短任务,但是应理解,任务的执行时间级别不限于此,可以更简单地将任务分为两个级别,或者分为更多的级别。
如上所述,随着应用场景越来越复杂,即使是相同业务类型任务,其执行时间可能相差很多。任务的执行时间与任务涉及的操作相关联。例如,在业务类型为协议解析的任务中,与数据完整性域(DIF)操作相关联的任务通常需要较长的时间(例如,毫秒级),因此被分类为长任务,而与协议处理相关联的任务的执行时间较短(例如,百微秒级),因此被分类为中任务。再例如,在业务类型为缓存刷盘的任务中,与数据压缩、纠删码(EC)相关联的任务通常需要较长的时间(例如,毫秒级),因此被分类为长任务,而与I/O处理、元数据处理相关联的任务的执行时间较短(例如,百微秒级),因此被分类为中任务。再例如,时延敏感的前端任务、缓存命中查询、网络报文处理等的执行时间更短(例如,十微秒级或更少),因此可以被分类为短任务。
为了方便理解而非限制本公开,假设第一任务属于业务类型1,并且执行是毫秒级(即,长任务),则任务调度单元101可以选择图4中的最左上角的处理单元集合来执行第一任务。
另外,虽然图4的示意性布局中示出了每个业务类型都具有针对长任务、中任务、短任务的处理单元集合,但是这不是必须的。也就是说,一些业务类型可以只具有针对部分执行时间级别的处理单元集合,即,布局400中的一些单元格可以是空白。
接下来,在框320,任务调度单元101将第一任务分配给第一处理单元集合中处理单元以用于执行。
图5示出了根据本公开的一些实施例的在处理单元集合中分配任务的示意图。以第一任务是长任务并且属于业务类型1为例来描述。如图所示,处理单元集合501包括多个处理单元:处理单元510-1,处理单元510-2,……处理单元510-N,其中N为正整数。任务调度单元101可以基于最少任务原则将第一任务520分配给其中的某个处理单元。
处理单元具有与任务的优先级相关联多个执行队列。例如,处理单元510-1可以具有队列511和512。队列511是包括第一优先级(例如,高优先级)的任务队列,并且队列512是包括第二优先级(例如,低优先级)的任务队列。应理解,处理单元510-1至510-N中的任一个处理单元可以包括更多或更少的队列。
根据最少任务原则,任务调度单元101确定接收第一任务520的处理单元。例如,处理单元510-1可以被确定为具有最少的待执行任务。因此,任务调度单元101可以将第一任务520分配给处理单元510-1。在一些实施例中,基于第一任务520的优先级信息,将第一任务520添加到多个执行队列中对应的执行队列。在这种情况下,如果第一任务520具有第二优先级,则该任务可以被添加到队列512之中。
另外,如果处理单元集合501中的待执行任务最少的处理单元不是唯一的,即,两个或更多个处理单元的都是任务最少的处理单元,则任务调度单元101可以将任务520分配给与任务优先级对应的队列的任务数更少的那一个处理单元。备选地,任务调度单元101还可以将任务520分配给任一个具有最少待执行任务的处理单元。
在一些实施例中,处理单元510-1可以以轮询方式从其队列511和512中获取任务以用于执行,每次获取的任务的数目基于多个队列各自的优先级而确定。在一些实施例中,可以为不同的优先级队列配置权重,例如,为高优先级的队列配置更高的权重,由此每次从高优先级队列获取更多的任务。
以此方式,基于任务的业务类型和执行时间将任务分配给适当的处理资源来处理,使得具有不同执行时间的任务由不同的处理资源来处理。例如,高密计算类的长任务(例如,数据压缩、AI推理等)与存储业务逻辑相关的中任务和短任务(例如,协议处理、报文处理等)由此,在不同的场景下,在保证任务亲和性的前提下,能够更合理地调度任务,达到更好的负载均衡,从而更充分地利用处理资源。
图6示出了根据本公开的一些实施例的另一任务调度方法600的示意流程图。方法600可以由如图1或图2所示的任务调度单元101或由实现任务管理单元101的计算设备来执行。
在框610,任务调度单元101基于第二任务的业务类型和执行时间,从多个处理单元集合中选择第二处理单元集合。
这里,多个处理单元集合可以是例如参照图4描述的多个处理单元集合,其中每个处理单元集合被配置为执行属于特定的业务类型、并且具有特定的执行时间级别的任务。在一实施例中,处理单元可以是控制器、处理器、或者处理器核心。
在一些实施例中,经由前端网卡120,存储管理系统130从主机110接收第二任务。第二任务可以具有相关联的属性信息,例如,业务类型、执行时间、优先级信息等。为了方便理解而非限制本公开,假设第二任务是具有中等执行时间的中任务并且属于业务类型1,优先级为第一优先级。任务调度101选择第二处理单元集合的过程与参照图3的框310描述的过程类似,这里不再赘述。
在框620,任务调度单元101确定所选择的第二处理单元集合是否处于高负载状态。在一些实施例中,任务调度单元101可以确定第二处理单元集合中的处理单元的待执行任务的平均数或总数,如果该平均数或总数超过对应的预设阈值,则认为第二处理单元集合处于高负载状态。备选地,任务调度单元101还可以确定第二处理单元集合中的待执行任务最少的处理单元的待执行任务数,如果最少执行任务数超过对应的阈值,则认为第二处理单元集合处于高负载状态。
如果第二处理单元集合被确定为不处于高负载状态,方法600前进到框630,任务处理单元101将第二任务分配给第二处理单元集合中的处理单元以用于执行。任务调度101将第二任务分配给第二处理单元集合来执行的过程630与参照图3的框320描述的过程类似,这里不再赘述。
应当理解,如果将第二任务分配给处于高负载状态的第二处理单元集合,可能导致第二任务的执行被延迟,这是不利的。本公开的实施例提供了一种共享任务队列来应对该问题。
因此,如果第二处理单元集合被确定为处于高负载状态,则方法前进到框640,任务调度单元101将第二任务添加到由第二处理单元集合和多个处理单元集合中的第三处理单元集合共享的任务队列。这里,第二处理单元集合和第三处理单元集合可以具有相同的执行时间级别,并且具有不同的业务类型。
图7示出了根据本公开的一些实施例的共享任务队列的示意图。如图7所示,提供了跨业务类型的处理单元集合701和702之间的共享任务队列703。
如上所述,假设第二任务是中任务并且属于业务类型1,那么第二处理单元集合是被配置为执行业务类型1的中任务的处理单元集合701。响应于确定第二处理单元集合701处于高负载状态(例如,每个处理单元710都具有较多的待执行任务),在共享任务队列703中添加第二任务720。以此方式,第二任务720能够被第三处理单元集合702中的处理单元从共享队列被获取和执行,而不必在高负载的第二处理单元集合的队列中等待太长时间。
需要注意的是,任务队列703在与不同业务类型相关联,但是与相同执行时间级别相关联的处理单元集合之间共享。也就是说,长任务总是由与长任务相关联的一组处理单元集合来执行,中任务或短任务总是由与中任务或短任务相关联的一组处理单元集合来处理。这样做是有益的,因为在每个任务的执行时间大致相同或相似的情况下,在处理单元集合内使用最少任务原则来分配任务能够具有良好的调度效率。
另外,虽然图7中示出了共享任务队列703在两个处理单元集合701和702之间共享,但是应当理解,共享任务队列703可以在更多的处理单元集合之间共享,这些处理单元结合与相同的执行时间级别相关联,并且与不同的业务类型相关联。也就是说,在参考图4描述的布局400中,位于同一行的处理单元集合之间可以具有共享的任务队列。
在一些实施例中,如果第二处理单元集合702和第三处理单元集合703中存在空闲的处理单元,则任务调度单元101可以使该空闲处理单元从共享队列703中取出任务来执行。例如,参考图7,第三处理单元集合702相比于第二处理单元集合701具有较低的负载,一旦第三处理单元集合702中的某个处理单元处理完对应的优先级队列中的任务,就可以从共享任务队列703选择相应优先级的任务来执行。该处理单元从共享队列703获取任务的数量可以基于优先级的权重来确定,该过程与参照图3的框320描述的过程类似。备选或附加地,还可以在处理单元执行完所有队列的任务之后才从共享任务队列703获取任务。以此方式,可以借助轻负载的处理单元来及时消费共享队列中的任务,达到负载均衡的效果。
在一些实施例中,为了应对异常场景下第二处理单元集合701和第三处理单元集合702一直处于高负载或繁忙的状态,可以周期性地将共享的任务队列703中的任务分配给第二处理单元集合701或第三处理单元集合702以用于执行。以此方式来保证共享任务队列中的任务能够得到执行。
以上详细描述根据本公开的多个实施例的任务调度方法。在一些实施例中,执行时间相同或接近的任务可以被分配给相同的处理资源来执行,使得处理资源之间的负载分配更为均衡,从而提升了任务调度效率和系统性能。在另一些实施例中,提供了跨处理单元集合的全局共享队列,其覆盖相同执行时间级别的处理单元集合。当场景变化导致负载不均衡时,轻负载的处理单元可以获取该全局共享队列的任务来执行,使得处理资源之间的任务分配更为均衡,从而提升了任务调度效率和系统性能。
例如,在传统的调度技术中,由于场景复杂,各个处理单元集合的处理资源(例如,CPU)占用率差距会达到50%,甚至更多。使用本公开的技术方案后,能够将处理资源占用率差距降低到10%左右。
图8示出了根据本公开的一些实施例的任务调度装置800的示意框图。任务调度装置800可以被实现在如图1或图2所示的任务调度单元101或实现任务管理单元101的计算设备之中。
任务调度装置800包括选择单元810和分配单元820。选择单元810被配置为基于第一任务的业务类型和执行时间,从多个处理单元集合中选择第一处理单元集合。分配单元820被配置为将第一任务分配给第一处理单元集合中的处理单元以用于执行。
在一些实施例中,多个处理单元集合可以与不同的业务类型和不同的执行时间级别相关联。也就是说,多个处理单元集合中的一个处理单元集合可以被配置为用于执行属于特定业务类型、并且特定执行时间级别的任务。
在一些实施例中,分配单元820可以根据最少任务原则在处理单元集合内分配任务。因此,分配单元820可以将第一任务分配给第一处理单元集合中待执行任务最少的处理单元。
在一些实施例中,处理单元集合中的处理单元可以具有与优先级相关联的多个执行队列。多个执行队列可以包括与第一优先级相关联的第一队列和与第二优先级相关联的第二队列。第一队列包括第一优先级的任务,第二队列包括第二优先级的任务。在一些实施例中,第一优先级的优先于第二优先级,也就是说,第一优先级的任务具有更高的实时性要求。
在一些实施例中,分配单元820还可以被配置为基于第一任务的优先级将第一任务添加到所述多个执行队列中的一个执行队列。
在一些实施例中,分配单元820还可以被配置为使处理单元以轮询方式从多个队列中获取任务以用于执行,处理单元每次获取的任务的数目基于所述多个队列各自的优先级而确定。以此方式,可以根据针对不同优先级来获取数量的任务,例如,每次为从高优先级的队列获取更多的任务,由此可以满足不同任务的实时性要求。
在一些实施例中,处理单元可以是控制器、处理器、或者处理器核心之一。以此方式,可以以不同的粒度来管理处理资源。
图9示出了根据本公开的一些实施例的另一任务调度装置900的示意框图。任务调度装置900可以被实现在如图1或图2所示的任务调度单元101或实现任务管理单元101的计算设备之中。
任务调度装置900包括选择单元910、负载确定单元920和均衡单元930。选择单元910被配置为基于第二任务的业务类型和执行时间,从多个处理单元集合中选择第二处理单元集合。负载确定单元920被配置为确定第二处理单元集合处于高负载状态。均衡单元930被配置为响应于上述确定,将第二任务添加到由第二处理单元集合和多个处理单元集合中的第三处理单元集合共享的任务队列。第二处理单元集合和第三处理单元集合与相同的执行时间级别相关联,并且与不同的业务类型相关联。
在一些实施例中,任务调度装置还可以包括分配单元940。分配单元940可以被配置为:如果确定第二处理单元集合和第三处理单元集合中存在空闲的处理单元,将共享的任务队列中的任务分配给空闲的处理单元以用于执行。
在一些实施例中,分配单元940还可以被配置为将共享的任务队列中的任务分配给第二处理单元集合或第三处理单元集合以用于执行。以此方式,在一些异常情况下,例如,这些处理单元集合一直处于高负载或繁忙时,共享任务队列中的任务可以被及时被执行。
在一些实施例中,分配单元940还可以被配置为:如果确定第二处理单元集合和第三处理单元集合中存在空闲的处理单元,将共享的任务队列中的任务分配给空闲的处理单元以用于执行。以此方式,共享的任务队列中的任务可以被负载较低的处理单元执行,从而保证了任务及时被执行。
在一些实施例中,分配单元940还可以被配置为:将共享的任务队列中的任务分配给第二处理单元集合或第三处理单元集合以用于执行。以此方式,在一些异常情况下,例如,这些处理单元集合一直处于高负载或繁忙时,共享的任务队列中的任务仍然能够被分配和执行(例如,周期性地),而不是一直挂在队列中无法得到执行。
在一些实施例中,处理单元可以是控制器、处理器、或者处理器核心之一。以此方式,可以以不同的粒度来管理处理资源。
图10示出了可以用来实施本公开的实施例的示例设备1000的示意性框图。设备1000可以用于实现如图1和图2所示的任务调度单元101或者运行程序代码以实现任务调度单元101的计算设备。如图所示,设备1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序指令或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300和/或600,可由处理单元1001执行。例如,在一些实施例中,方法300和/或600可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序被加载到RAM1003并由CPU 1001执行时,可以执行上文描述的方法300和/或600的一个或多个动作。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。
- 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
- 模态框构建方法、装置、电子设备、计算机可读存储介质
- 电子设备、音量调节方法及装置、计算机可读存储介质
- 数据库同步恢复方法、装置、计算机可读存储介质和电子设备
- 数据处理方法、装置、计算机可读存储介质和电子设备
- 任务调度方法、装置、电子设备及计算机可读存储介质
- 任务调度方法和装置、电子设备以及计算机可读存储介质