CN109814985A - 一种任务调度方法及调度器、计算设备、系统 - Google Patents
一种任务调度方法及调度器、计算设备、系统 Download PDFInfo
- Publication number
- CN109814985A CN109814985A CN201711153920.7A CN201711153920A CN109814985A CN 109814985 A CN109814985 A CN 109814985A CN 201711153920 A CN201711153920 A CN 201711153920A CN 109814985 A CN109814985 A CN 109814985A
- Authority
- CN
- China
- Prior art keywords
- task
- rank
- scheduling queue
- seize
- sub
- 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.)
- Granted
Links
Landscapes
- Telephonic Communication Services (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明实施例公开了一种任务调度方法及调度器、计算设备、系统。该方法包括:调度器从调度队列中获取第一任务;所述调度队列包括依次待所述调度器处理的至少一个任务;根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系;通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。采用本发明实施例,使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种任务调度方法及调度器、计算设备、系统。
背景技术
随着应用和服务对大数据中心计算、存储和通信等能力需求的不断提高,多核技术以及现场可编程门阵列(Field Programmable Gate Arry,FPGA)技术被组合使用来提高数据处理能力。合理地对任务进行调度,可充分利用FPGA资源,提高FPGA资源的利用率。
现有技术中任务的调度策略根据任务在对响应时间的需求的紧急程度上对任务进行调度,使得对响应时间更为迫切的任务优先下发给FPGA引擎来执行。
例如,在调度器中包括两种等待下发的任务,在对响应的紧急程度上第二任务(task2)>第一任务(task1),调度器会对任务进行优先排序,优先下发实时性要求较高的task2。然而,当task2在短时间内大量下发时,可能会出现task2长时间占用资源,task1无法被执行。
发明内容
本发明实施例所要解决的技术问题在于,提供一种任务调度方法及调度器、计算设备、系统,使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
第一方面,本发明实施例提供了一种任务调度方法,该方法包括:
从调度队列中获取第一任务;所述调度队列包括依次待所述调度器处理的至少一个任务;
根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系;
通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
可以理解,执行该方法的主体可以是调度器,也可以是包括调度器的计算设备或FPGA。
通过执行上述方法,可以实现高可抢占级别的任务可轮询较多FPGA引擎资源,低可抢占级别的任务可轮询较少FPGA引擎资源,使得资源的分配更合理,同时,也使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
在一种可能的实现方式中,所述从调度队列中获取第一任务之后,所述根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎之前,所述方法还包括:根据资源列表以及所述第一任务的任务类型,确定所述第一任务的任务类型对应的调度列表;其中,所述资源列表包括至少一个任务类型以及所述至少一个任务类型中每个任务类型对应的资源池,一个资源池对应一个调度列表。
通过执行上述方法,资源可以包括多个资源池,根据第一任务的任务类型确定该第一任务可用的调度列表,可以实现多种任务类型的任务的同时处理。
在又一种可能的实现方式中,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别。
通过执行上述方法,将不同可抢占级别的任务分类放置,便于统计各个可抢占级别的待处理任务的任务量。
在又一种可能的实现方式中,所述方法还包括:当第一子调度队列中任务的任务量大于第一阈值时,增加所述调度列表中第一可抢占级别对应的FPGA引擎标识;其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
通过执行上述方法,通过各个子调度队列的任务量的大小动态调整调度列表,进一步优化FPGA引擎资源的分配,提高任务处理效率。
在又一种可能的实现方式中,所述方法还包括:当第一子调度队列中任务的任务量小于第二阈值时,减少所述调度列表中第一可抢占级别对应的FPGA引擎标识;其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
通过执行上述方法,通过各个子调度队列的任务量的大小动态调整调度列表,进一步优化FPGA引擎资源的分配,提高任务处理效率。
在又一种可能的实现方式中,所述方法还包括:
若最低可抢占级别对应的子调度队列中任务的任务量大于第三阈值时,增加所述调度列表中所述最低可抢占级别对应的FPGA引擎标识;
若最高可抢占级别对应的子调度队列中任务的任务量小于第四阈值时,增加所述调度列表中次最高可抢占级别对应的FPGA引擎标识。
通过执行上述方法,通过各个子调度队列的任务量的大小动态调整调度列表,进一步优化FPGA引擎资源的分配,提高任务处理效率。
第二方面,本发明实施例还提供了一种任务调度方法,所述方法包括:
接收通过接口下发的第一任务;所述第一任务包括所述第一任务的可抢占级别;
将所述第一任务写入到调度队列,以使第一调度器通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
可以理解,执行上述方法的主体可以是计算设备。
通过执行上述方法,可以实现高可抢占级别的任务可轮询较多FPGA引擎资源,低可抢占级别的任务可轮询较少FPGA引擎资源,使得资源的分配更合理,同时,也使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
在一种可能的实现方式中,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别;所述将所述第一任务写入到调度队列包括:
根据所述第一任务的可抢占级别将所述第一任务写入所述第一任务的可抢占级别对应的子调度队列。
在又一种可能的实现方式中,资源系统被划分为多个资源子系统,所述多个资源子系统的每个资源子系统对应至少一个任务类型,所述每个资源子系统对应一个调度器;所述将所述第一任务写入到调度队列之前,所述方法还包括:根据第一任务的任务类型,确定所述第一任务对应的第一资源子系统以及确定与所述第一资源子系统对应的第一调度器。其中,所述调度列表包括待所述第一调度器处理的至少一个任务。
通过执行上述方法,计算设备将第一任务下发到可调度该第一任务的第一调度器,进而实现第一调度器对第一任务调度。
在又一种可能的实现方式中,所述接收通过接口下发的第一任务之前,所述方法还包括:根据所述第一资源子系统对应的任务类型,确定与所述第一资源子系统对应的任务类型相匹配的调度算法;根据所述调度算法,生成所述第一调度器。
通过执行上述方法,计算设备可以根据待处理的第一任务烧录生成第一调度器,进而实现计算设备对调度器的管理。
第三方面,本发明实施例还提供了一种调度器,所述调度器包括:
获取单元,用于从调度队列中获取第一任务;所述调度队列包括依次待所述调度器处理的至少一个任务;
第一确定单元,用于根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系;
调度单元,用于通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
通过实施本发明实施例,可以实现高可抢占级别的任务可轮询较多FPGA引擎资源,低可抢占级别的任务可轮询较少FPGA引擎资源,使得资源的分配更合理,同时,也使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
在一种可能的实现方式中,所述调度器还包括:
第二确定单元,用于在所述获取单元从调度队列中获取第一任务之后,所述第一确定单元根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎之前,根据资源列表以及所述第一任务的任务类型,确定所述第一任务的任务类型对应的调度列表;
其中,所述资源列表包括至少一个任务类型以及所述至少一个任务类型中每个任务类型对应的资源池,一个资源池对应一个调度列表。
在又一种可能的实现方式中,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别。
在又一种可能的实现方式中,所述调度器还包括:
资源调整单元,用于当第一子调度队列中任务的任务量大于第一阈值时,增加所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
在又一种可能的实现方式中,所述调度器还包括:
资源调整单元,用于当第一子调度队列中任务的任务量小于第二阈值时,减少所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
在又一种可能的实现方式中,所述调度器还包括:资源调整单元,用于:
若最低可抢占级别对应的子调度队列中任务的任务量大于第三阈值时,增加所述调度列表中所述最低可抢占级别对应的FPGA引擎标识;
若最高可抢占级别对应的子调度队列中任务的任务量小于第四阈值时,增加所述调度列表中次最高可抢占级别对应的FPGA引擎标识。
第四方面,本发明实施例还提供了一种计算设备,所述计算设备包括:
接收单元,用于接收通过接口下发的第一任务;所述第一任务包括所述第一任务的可抢占级别;
处理单元,用于将所述第一任务写入到调度队列,以使第一调度器通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
通过实施本发明实施例,可以实现高可抢占级别的任务可轮询较多FPGA引擎资源,低可抢占级别的任务可轮询较少FPGA引擎资源,使得资源的分配更合理,同时,也使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
在一种可能的实现方式中,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别;所述处理单元具体用于:
根据所述第一任务的可抢占级别将所述第一任务写入所述第一任务的可抢占级别对应的子调度队列。
在又一种可能的实现方式中,资源系统被划分为多个资源子系统,所述多个资源子系统的每个资源子系统对应至少一个任务类型,所述每个资源子系统对应一个调度器;所述处理单元还用于:
在将所述第一任务写入到调度队列之前,根据第一任务的任务类型,确定所述第一任务对应的第一资源子系统以及确定与所述第一资源子系统对应的第一调度器。
在又一种可能的实现方式中,所述处理单元还用于:
在接收单元接收通过接口下发的第一任务之前,根据所述第一资源子系统对应的任务类型,确定与所述第一资源子系统对应的任务类型相匹配的调度算法;
根据所述调度算法,生成所述第一调度器。
第五方面,本发明实施例还提供了一种任务调度方法,所述方法包括:
接收通过接口下发的第一任务;
将所述第一任务写入到调度队列;所述调度队列包括依次待所述调度器处理的至少一个任务;
从所述调度队列中获取所述第一任务;
根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系;
通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
可以理解,执行该任务调度方法的主体可以是任务调度系统、也可以是单独的计算设备。
第六方面,本发明实施例还提供了一种计算设备,所述计算设备包括:至少一个处理器、存储器以及调度器,调度器连接到多个FPGA引擎;所述处理器通过总线连接到所述存储器、所述调度器以及所述多个FPGA引擎,其中,
所述处理器用于调用所述存储器内程序代码和数据执行:接收通过接口下发的第一任务;以及,将所述第一任务写入到调度队列;所述调度队列包括依次待所述调度器处理的至少一个任务;
所述调度器用于执行:从所述调度队列中获取所述第一任务;根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;以及,通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系。
第七方面,本发明实施例还提供了一种任务调度系统,所述系统包括:计算机系统、调度系统以及系统资源,其中,所述计算系统包括至少一个计算设备;所述调度系统包括至少一个调度器;所述系统资源包括至少一个资源子系统,所述至少一个资源子系统与所述至少一个调度器一一对应;所述计算机系统、所述调度系统以及所述系统资源之间通信连接;
所述计算设备用于:接收通过接口下发的第一任务;以及,将所述第一任务写入到调度队列;所述调度队列包括依次待所述调度器处理的至少一个任务;
所述调度器用于:从所述调度队列中获取所述第一任务;根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;以及,通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系。
第八方面,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在调度器或计算设备上运行时,使调度器或计算设备执行上述第一方面所描述的方法或者第一方面的任一可能实现方式所描述的方法。
第九方面,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算设备上运行时,使计算设备执行上述第二方面所描述的方法或者第二方面的任一可能实现方式所描述的方法。
第十方面,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算设备上运行时,使计算设备执行上述第五方面所描述的方法或者第五方面的任一可能实现方式所描述的方法。
通过实施本发明实施例,计算设备接收通过接口下发的第一任务,将第一任务写入到调度队列;调度器从调度队列中获取第一任务,该调度队列包括依次待调度器处理的至少一个任务,调度器根据第一任务的可抢占级别与调度列表,确定第一任务的可抢占级别对应的FPGA引擎,并通过第一任务的可抢占级别对应的FPGA引擎执行第一任务,其中,调度列表包括至少一个可抢占级别以及至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系,使得高可抢占级别的任务可轮询较多FPGA引擎资源,低可抢占级别的任务可轮询较少FPGA引擎资源,使得资源的分配更合理,使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
而且,通过各个子调度队列的任务量的大小动态调整调度列表,进一步优化FPGA引擎资源的分配,提高任务处理效率。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本发明实施例提供的一种任务调度系统的框架示意图;
图2是本发明实施例提供的另一种任务调度系统的架构示意图;
图3是本发明实施例提供的一种任务调度方法的流程示意图;
图4是本发明实施例提供的一种调度队列的示意性说明图;
图5是本发明实施例提供的另一种调度队列的示意性说明图;
图6是本发明实施例提供的一种调度器的结构示意图;
图7是本发明实施例提供的另一种调度器的结构示意图;
图8是本发明实施例提供的一种计算设备的结构示意图;
图9是本发明实施例提供的一种计算设备的结构示意图。
具体实施方式
下面对本发明各个实施例涉及的相关概念进行简要介绍:
现场可编程门阵列(Field Programmable GateArry,FPGA),是一种半定制电路,一个FPGA可以包括一个或多个FGPA引擎,可以执行一种或多种任务。
FGPA引擎(FGPA Engine),一个烧录好的具有特定功能的硬件电路单元,可以由一个或多个FPGA组成,一个FGPA也可以包括一个或多个FGPA引擎,一个FGPA引擎可以执行一种或多种任务。
资源池,包括至少一个FGPA引擎,可以通过其内FGPA引擎可执行的任务类型将资源划分为多个资源池,一个资源池内所有的FGPA引擎可以执行相同任务类型的任务。
系统资源,包括所有的FGPA引擎,被划分为多个至少一个资源子系统,每个资源子系统对应一个调度器,每个资源子系统对应至少一个任务类型。
调度器,用于管理其对应的资源子系统中所有的FPGA引擎。
应用程序编程接口(Application Programming Interface,API),为预先定义的函数,帮助应用程序或开发人员等访问功能或资源。
任务(Task),通过API下发,由计算设备接收,被执行时占用一个FGPA引擎。
可抢占级别,为任务携带的参数,用于指示任务的可轮询的FGPA引擎的范围。
子调度队列,包括特定可抢占级别的任务。
本发明实施例可应用于分布式计算机系统中,也可以应用于独立计算设备。请参阅图1,图1是本发明实施例提供的一种任务调度系统的示意性框架图,该任务调度系统10可以包括分布式计算系统11、调度系统12、资源系统13等。其中,
分布式计算机系统11可以由一个或多个同构或异构计算设备组合构成,可以接收用户下发的任务,根据该任务的任务类型确定可以运行该任务的资源池,也可以根据该任务的可抢占级别确定该任务的调度队列,将任务写入到调度队列中。
可以理解,计算设备可以是计算机、服务器、云端计算设备等设备。该计算设备包括操作系统以及至少一个API,该API的接口参数可以包括任务类型、可抢占级别等。
资源系统13,包括所有的FGPA引擎,被划分为多个资源子系统,多个资源子系统的每个资源子系统对应至少一个任务类型,每个资源子系统可以包括多个资源池,每个资源子系统对应一个调度器。
资源池,包括至少一个FGPA引擎,可以通过其内FGPA引擎可执行的任务类型将资源划分为多个资源池,一个资源池内所有的FGPA引擎可以执行相同任务类型的任务。
调度系统12可以包括至少一个调度器,一个调度器可以管理其对应的资源子系统上所有的FGPA引擎,管理其对应的资源子系统中所有资源池。
调度器可以部署于一个或多个计算设备上;还可以部署于一个或多个FGPA上;也可以作为独立的物理设备,用于同一管理FGPA引擎资源,并为上层的计算设备提供FGPA引擎资源调度的能力。
调度器为硬件单元,在烧录FGPA资源时,也会对调度器进行烧录,生成调度器。调度器可以缓存计算机设备下发的任务列表,并将从任务列表中获取的任务调度给FPGA引擎执行。
可选地,调度器在烧录完成后,调度器内存储器可以包括为N个缓存模块分别用来存储N种可抢占级别对应的子调度队列。存储器还存储调度列表,该调度列表包括可抢占级别、可抢占级别对应的FPGA引擎标识。调度器可以根据任务的可抢占级别,将任务在该可抢占级别对应的FPGA引擎中轮询,以使空闲的FPGA引擎执行该任务。
可以理解,对于独立的计算设备,调度系统、系统资源等可以部署于该计算设备中。调度器可以接收计算设备通过API下发的任务,该API的接口参数可以包括任务类型、可抢占级别等。该计算设备可以是服务器、计算机、手机、平板电脑或其他设备等,本发明不作限制。
请参阅图2,图2是本发明实施例提供的另一种任务调度系统的架构示意图。该任务调度系统包括软件层、驱动层以及硬件层,驱动层包括操作系统和API,API的接口参数可以包括任务类型、可抢占级别,API可以接收软件层下发的任务,操作系统将该任务下发到硬件层的存储器或缓冲器中,存储器或缓冲器存储依次存储驱动层下发的任务,形成调度队列。调度列表可包括多个子调度队列,如图2所示,第一调度队列、第二调度队列、第三调度队列分别对应可抢占级别“0”、可抢占级别“1”、可抢占级别“2”,用于缓存具有其对应的可抢占级别的任务。调度器从子调度队列中获取任务,根据调度列表将任务在资源池中该任务的可抢占级别对应的FPGA引擎范围中轮询,使得该应的FPGA引擎范围中空闲的FPGA引擎执行该任务。
需要说明的是,图2仅仅以多个子调度队列为例,可以理解,硬件层可以仅包括一个调度队列,不对可抢占级别区分,调度器识别任务的可抢占级别,并将该任务分配到对应的FPGA引擎范围中轮询。图2仅仅以一个资源池为例来说明,调度器还可以管理多个资源池。
下面结合本发明实施例中的附图对本发明实施例进行描述。
请参阅图3,图3是本发明实施例提供的一种任务调度方法的流程示意图,该任务调度方法可以包括以下部分或全部步骤:
步骤S300:计算设备接收通过API下发的第一任务。
可选地,该API的接口参数可以包括任务类型和可抢占级别。可以理解,该第一任务携带该任务的任务类型、可抢占级别等信息。该第一任务可以是计算设备的应用下发的任务,也可以是接收其他设备,比如用户设备发送的任务。
其中,可抢占级别可以是计算设备或用户设备基于任务的参数通过预设算法生成的,也可以是用户输入的,也可以是API接口自带的接口参数,本发明不作限制。
可选地,该API的接口参数可以包括任务类型。接口参数还可以包括其他信息,本发明不作限定。计算设备可以根据接收到的第一任务的任务类型和/或账户信息、VIP信息等其他参数,确定第一任务的可抢占级别。例如,计算设备可以设定对实时性要求高的任务的具有较高的可抢占级别。又例如,计算设备可以设定根具有VIP的任务具有较高的可抢占级别。
例如,计算设备为视频服务器,多个用户设备,如用户设备1、用户设备2等分别向视频服务器发送请求同一视频资源的任务一(用户账户“user1”,VIP信息“1”)、任务二(用户账户“user2”,VIP信息“0”),视频服务器接收到任务一、任务二后,设定VIP信息为“1”(即为VIP账户)的任务一的可抢占级别为“1”,设定VIP信息为“0”(即为非VIP账户)的任务二的可抢占级别为“0”。
可以理解,可抢占级别的值仅用于区分可抢占级别。可选地,高可抢占级别对应的可抢占级别的值大,其对应的FPGA引擎个数多或范围大;相反,低可抢占级别对应的可抢占级别的值小,其对应的FPGA引擎个数少或范围小。也就是说,具有高可抢占级别的任务可轮询的FPGA引擎个数大于具有低可抢占级别的任务可轮询的FPGA引擎个数。
步骤S302:计算设备将第一任务写入到调度队列。
其中,调度队列可以缓存在调度器中,也可以缓存在计算设备,本发明不做限制。调度队列中的任务可以遵循先入先出原则,使得先接收到任务可以先执行。
可选地,对于不包括可抢占级别的任务,计算设备还可以将第一任务的可抢占级别写入到调度队列中。
可选地,调度队列可以包括可抢占级别不同的任务。
请参阅图4,图4是本发明实施例提供的一种调度队列的示意性说明图,调度队列可以缓存在缓存器中,一个缓存单元缓存一个任务,调度队列包括依次接收到的任务,例如,任务一(task1)、任务二(task2)、任务三(task3),任务四(task4),任务五(task5)等。其中,各个任务的可抢占级别可以不同,例如,task1、task2的可抢占级别为“0”,task3、task4的可抢占级别为“2”,task5的可抢占级别为“1”,调度器可以依次为task1、task2、task3、task4、task5分配资源。
可选地,调度队列包括至少一个子调度队列,子调度队列中所有任务具有相同的可抢占级别;步骤S302的一种实现方式为:计算设备根据第一任务的可抢占级别将第一任务写入第一任务的可抢占级别对应的子调度队列。
请参阅图5,图5是本发明实施例提供的另一种调度队列的示意性说明图,缓冲器可以划分为多个缓存模块,分别用于缓存不同可抢占级别的任务。例如,任务包括3个可抢占级别,分别为:可抢占级别“0”、可抢占级别“1”、可抢占级别“2”。3个缓存模块分别用于缓存3个子调度队列,第一子调度队列包括依次接收到的可抢占级别为“0”的任务,例如任务一(task1)、任务二(task2)、任务三(task3)等;第二子调度队列包括依次接收到的可抢占级别为“1”的任务,例如任务四(task4)、任务五(task5)、任务六(task6)等;第三子调度队列包括依次接收到的可抢占级别为“2”的任务,例如任务七(task7)、任务八(task8)、任务九(task9)等。
本发明一实施例中,资源系统被划分为多个资源子系统,多个资源子系统的每个资源子系统对应至少一个任务类型,每个资源子系统对应一个调度器;步骤S302之前,该方法还可以包括:步骤S301:计算设备根据第一任务的任务类型,确定第一任务对应的第一资源子系统以及确定与所述第一资源子系统对应的第一调度器。
本发明一实施例中,计算设备可以根据待处理任务的任务类型确定资源系统包含的FPGA引擎,进一步地,可烧录调度器以及FPGA,形成系统资源、资源子系统、资源池、调度器等。其中,在步骤S300之前,计算设备还可以根据第一资源子系统对应的任务类型,确定与第一资源子系统对应的任务类型相匹配的调度算法,根据该调度算法,生成第一调度器。
步骤S304:调度器从调度队列中获取第一任务。
其中,调度队列可以参阅上述图3或图4中相关描述,本发明不再赘述。第一任务为该调度队列或子调度队列中最先写入的任务。
步骤S306:调度器根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎。
其中,调度列表包括至少一个可抢占级别以及该至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系。其中,FPGA引擎标识可以是FPGA引擎编号,调度器可以对各个FPGA引擎进行编号,以区分各个FPGA引擎。可以理解,FPGA引擎标识还可以具有其他形式,本发明不作限定。请参阅表1所示的调度列表的示意性说明:
可抢占级别 | FPGA引擎编号 |
0 | 0、1 |
1 | 2、3、4、5 |
2 | 0、1、2、3、4 |
表1
由表1可见,调度列表规定了可抢占级别分别为“0”、“1”、“2”的任务可轮询的FPGA引擎。
需要说明的是,本发明实施例仅仅以表1所示的可抢占级别与至少一个FPGA引擎标识的对应关系为例来说明调度列表,调度列表还可以包括其他形式,本发明不作限定。
步骤S308:调度器通过第一任务的可抢占级别对应的FPGA引擎执行第一任务。
具体地,调度器可以将第一任务在该第一任务的可抢占级别对应的FPGA引擎中轮询,使得该第一任务的可抢占级别对应的FPGA引擎中空闲的FPGA引擎执行该第一任务。
本发明一实施例中,调度器内还可以包括资源列表,该资源列表包括至少一个任务类型以及所述至少一个任务类型中每个任务类型对应的资源池,一个资源池对应一个调度列表。请参阅表2所示的资源列表的示意性说明:
表2
需要说明的是,本发明实施例仅仅以表2为例来说明资源列表,资源列表还可以包括其他形式,本发明不作限定。
步骤S304之后,步骤S306之前,该方法还可以包括:
步骤S305:调度器根据资源列表以及第一任务的任务类型,确定第一任务的任务类型对应的调度列表。
如表2所示,当第一任务的任务类型为第一任务类型时,通过第一调度列表对第一任务进行调度。该第一调度列表的形式可以如表1所示,本发明不再赘述。当第一任务的任务类型为第三任务类型时,通过第二调度列表对第一任务进行调度。
本发明一实施例中,调度队列包括至少一个子调度队列,子调度队列中所有任务具有相同的可抢占级别。可参见图4中相关描述,本发明不再赘述。
可选地,调度器可以根据各个子调度队列中待处理的任务量动态调整调度列表中第一可抢占级别对应的FPGA引擎标识的数目或范围,以避免该子调度队列中任务的堵塞。
可选地,当第一子调度队列中任务的任务量大于第一阈值时,增加调度列表中第一可抢占级别对应的FPGA引擎标识。
可选地,当第一子调度队列中任务的任务量小于第二阈值时,减少调度列表中第一可抢占级别对应的FPGA引擎标识。第二阈值不大于第一阈值。
其中,子调度队列中任务的任务量指该子调度队列中任务的总个数,第一阈值可以是10、13、20、25、33或其他数值等,第二阈值可以是1、4、7、10、17或其他数值等;或者,子调度队列中任务的任务量指执行该子调度队列中任务的需要的总时间,第一阈值可以是50ms、150ms、300ms、450ms、1000ms或其他数值等,第二阈值可以是5ms、20ms、40ms、80ms、100ms或其他数值等。
其中,第一子调度队列为该调度队列中任意一个子调度队列,第一可抢占级别为第一调度队列对应的可抢占级别。
例如,第一子调度队列对应的可抢占级别为“0”,第一子调度队列中任务的任务量大于第一阈值;第一子调度队列对应的可抢占级别为“2”,第二子调度队列中任务的任务量小于第二阈值,调整后的调度列表如表3所示:
可抢占级别 | FPGA引擎编号 |
0 | 0、1、2 |
1 | 2、3、4 |
2 | 0、1、2、3、4 |
表3
可选地,当第一子调度队列中任务的任务量小于第一阈值时,在调整后的调度列表中去除第一调度队列对应的FPGA引擎标识中增加的FPGA引擎标识,以恢复调度列表。
可选地,当第一子调度队列中任务的任务量大于第二阈值时,在调整后的调度列表中去除第一调度队列对应的FPGA引擎标识中减少的FPGA引擎标识,以恢复调度列表。
可选地,不同可抢占级别的第一子调度队列对应的第一阈值或第二阈值可以不同。
本发明一实施例中,假定高可抢占级别对应的FPGA引擎标识总数多或范围大;相反,低可抢占级别对应的FPGA引擎标识总数少或范围小。也就是说,具有高可抢占级别的任务可轮询的FPGA引擎个数大于具有低可抢占级别的任务可轮询的FPGA引擎个数。
若最低可抢占级别对应的子调度队列中任务的任务量大于第三阈值时,增加调度列表中所述最低可抢占级别对应的FPGA引擎标识。例如,当最低可抢占级别“0”中任务的任务量大于第三阈值时,基于表1调整后的调度列表如表4所示:
可抢占级别 | FPGA引擎编号 |
0 | 0、1、2 |
1 | 2、3、4、5 |
2 | 0、1、2、3、4 |
表4
可选的,当该最低可抢占级别对应的子调度队列中任务的任务量小于第三阈值时,恢复该调度列表,即在调整后的调度列表中去除该最低可抢占级别对应的FPGA引擎标识中增加的FPGA引擎标识,以恢复调度列表。
若最高可抢占级别对应的子调度队列中任务的任务量小于第四阈值时,增加调度列表中次最高可抢占级别对应的FPGA引擎标识,以充分利用资源,提高资源利用率。例如,当最高可抢占级别“2”中任务的任务量大于第三阈值时,调整次最高可抢占级别(即可抢占级别“1”)对应的FPGA引擎标识,可选地,可以将次最高可抢占级别(即可抢占级别“1”)对应的FPGA引擎标识扩大至整个资源池,基于表1调整后的调度列表如表5所示:
可抢占级别 | FPGA引擎编号 |
0 | 0、1 |
1 | 0、1、2、3、4、5 |
2 | 0、1、2、3、4 |
表5
可选的,当最高可抢占级别对应的子调度队列中任务的任务量大于第四阈值时,恢复该调度列表,即在调整后的调度列表中去除该次最高可抢占级别对应的FPGA引擎标识中增加的FPGA引擎标识,以恢复调度列表。
其中,子调度队列中任务的任务量指该子调度队列中任务的总个数,第三阈值可以是9、13、23、29、38或其他数值等,第二阈值可以是1、3、7、11、18或其他数值等;或者,子调度队列中任务的任务量指执行该子调度队列中任务的需要的总时间,第四阈值可以是50ms、140ms、340ms、480ms、900ms或其他数值等,第二阈值可以是4ms、15ms、30ms、65ms、80ms或其他数值等。
需要说明的是,调度器可以部署于计算设备,为计算设备的一部分,上述各步骤中执行主体调度器也可以替换为计算设备;调度器也可以部署于FPGA,作为FPGA的一部分,上述各步骤中执行主体调度器也可以替换为FPGA;调度器也可以作为独立设备单独存在。
本发明实施例中,计算设备接收通过接口下发的第一任务,将第一任务写入到调度队列;调度器从调度队列中获取第一任务,该调度队列包括依次待调度器处理的至少一个任务,调度器根据第一任务的可抢占级别与调度列表,确定第一任务的可抢占级别对应的FPGA引擎,并通过第一任务的可抢占级别对应的FPGA引擎执行第一任务,其中,调度列表包括至少一个可抢占级别以及至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系,使得高可抢占级别的任务可轮询较多FPGA引擎资源,低可抢占级别的任务可轮询较少FPGA引擎资源,使得资源的分配更合理,使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
而且,通过各个子调度队列的任务量的大小动态调整调度列表,进一步优化FPGA引擎资源的分配,提高任务处理效率。
下面介绍本发明实施例涉及的调度器、计算设备。
请参阅图6,图6是本发明实施例提供的一种调度器的结构示意图。该调度器包括:获取单元610、第一确定单元620以及调度单元630.其中
获取单元610,用于从调度队列中获取第一任务;所述调度队列包括依次待所述调度器处理的至少一个任务;
第一确定单元620,用于根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系;
调度单元630,用于通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
通过实施本发明实施例,可以实现高可抢占级别的任务可轮询较多FPGA引擎资源,低可抢占级别的任务可轮询较少FPGA引擎资源,使得资源的分配更合理,同时,也使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
请参阅图7,图7是本发明实施例提供的另一种调度器的结构示意图。该调度器除包括图6中各个单元外,还包括:第二确定单元640,其中,
第二确定单元640,用于在所述获取单元从调度队列中获取第一任务之后,所述第一确定单元根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎之前,根据资源列表以及所述第一任务的任务类型,确定所述第一任务的任务类型对应的调度列表;
其中,所述资源列表包括至少一个任务类型以及所述至少一个任务类型中每个任务类型对应的资源池,一个资源池对应一个调度列表。
本发明一实施例中,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别。
可选地,调度队列位于调度器内,如图7所示,调度器还可以包括缓存单元650,用于缓存调度队列中任务。
本发明一实施例中,如图7所示,所述调度器还包括:
资源调整单元670,用于当第一子调度队列中任务的任务量大于第一阈值时,增加所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
本发明一实施例中,如图7所示,所述调度器还包括:
资源调整单元670,用于当第一子调度队列中任务的任务量小于第二阈值时,减少所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
本发明一实施例中,如图7所示,所述调度器还包括:
资源调整单元670,用于:
若最低可抢占级别对应的子调度队列中任务的任务量大于第三阈值时,增加所述调度列表中所述最低可抢占级别对应的FPGA引擎标识;
若最高可抢占级别对应的子调度队列中任务的任务量小于第四阈值时,增加所述调度列表中次最高可抢占级别对应的FPGA引擎标识。
本发明实施例中,调度器从调度队列中获取第一任务,该调度队列包括依次待调度器处理的至少一个任务,调度器根据第一任务的可抢占级别与调度列表,确定第一任务的可抢占级别对应的FPGA引擎,并通过第一任务的可抢占级别对应的FPGA引擎执行第一任务,其中,调度列表包括至少一个可抢占级别以及至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系,使得高可抢占级别的任务可轮询较多FPGA引擎资源,低可抢占级别的任务可轮询较少FPGA引擎资源,使得资源的分配更合理,使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
而且,通过各个子调度队列的任务量的大小动态调整调度列表,进一步优化FPGA引擎资源的分配,提高任务处理效率。
请参阅图8,图8是本发明实施例提供的一种计算设备的结构示意图。该计算设备包括:接收单元810以及处理单元820,其中
接收单元810,用于接收通过接口下发的第一任务;所述第一任务包括所述第一任务的任务类型;
处理单元820,用于将所述第一任务写入到调度队列,以使第一调度器通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
本发明一实施例中,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别;所述处理单元820具体用于:
根据所述第一任务的可抢占级别将所述第一任务写入所述第一任务的可抢占级别对应的子调度队列。
本发明一实施例中,资源系统被划分为多个资源子系统,所述多个资源子系统的每个资源子系统对应至少一个任务类型,所述每个资源子系统对应一个调度器;所述处理单元820还用于:
在将所述第一任务写入到调度队列之前,根据第一任务的任务类型,确定所述第一任务对应的第一资源子系统以及确定与所述第一资源子系统对应的第一调度器。
本发明一实施例中,所述处理单元820还用于:
在接收单元接收通过接口下发的第一任务之前,根据所述第一资源子系统对应的任务类型,确定与所述第一资源子系统对应的任务类型相匹配的调度算法;
根据所述调度算法,生成所述第一调度器。
请参阅图9,图9是本发明实施例提供的另一种计算设备的结构示意图。该计算设备包括:至少一个处理器910、存储器920、调度器930以及多个FPGA引擎940;所述处理器910通过总线950连接到所述存储器920、所述调度器930,调度器930连接到所述多个FPGA引擎940,其中,
所述处理器910用于调用所述存储器920内程序代码和数据执行:接收通过接口下发的第一任务;以及,将所述第一任务写入到调度队列;所述调度队列包括依次待所述调度器处理的至少一个任务;
所述调度器930用于执行:从所述调度队列中获取所述第一任务;根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;以及,通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系。
其中,计算设备可以通过接收器接收第一任务,也可以通过通信接口接收第一任务。
本发明一实施例中,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别;所述处理器910执行所述将所述第一任务写入到调度队列,具体包括:根据所述第一任务的可抢占级别将所述第一任务写入所述第一任务的可抢占级别对应的子调度队列。
本发明一实施例中,资源系统被划分为多个资源子系统,所述多个资源子系统的每个资源子系统对应至少一个任务类型,所述每个资源子系统对应一个调度器;所述将所述第一任务写入到调度队列之前,所述处理器910还用于执行:
根据第一任务的任务类型,确定所述第一任务对应的第一资源子系统以及确定与所述第一资源子系统对应的调度器。
本发明一实施例中,所述处理器910执行所述接收通过接口下发的第一任务之前,所述处理器910还用于执行:
根据所述第一资源子系统对应的任务类型,确定与所述第一资源子系统对应的任务类型相匹配的调度算法;
根据所述调度算法,生成调度器。
本发明一实施例中,所述从调度队列中获取第一任务之后,所述根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎之前,所述方法还包括:
根据资源列表以及所述第一任务的任务类型,确定所述第一任务的任务类型对应的调度列表;
其中,所述资源列表包括至少一个任务类型以及所述至少一个任务类型中每个任务类型对应的资源池,一个资源池对应一个调度列表。
本发明一实施例中,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别。
其中,所述调度队列可以缓存在存储器920中,也可以缓存在调度器930包括的存储单元中,本发明不作限定。
本发明一实施例中,所述调度器930还用于执行:
当第一子调度队列中任务的任务量大于第一阈值时,增加所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
本发明一实施例中,所述调度器930还用于执行:
当第一子调度队列中任务的任务量小于第二阈值时,减少所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
本发明一实施例中,所述调度器930还用于执行:
若最低可抢占级别对应的子调度队列中任务的任务量大于第三阈值时,增加所述调度列表中所述最低可抢占级别对应的FPGA引擎标识;
若最高可抢占级别对应的子调度队列中任务的任务量小于第四阈值时,增加所述调度列表中次最高可抢占级别对应的FPGA引擎标识。
需要说明的是,计算设备还可以包括输入装置、输出装置、通信接口等中的一种或多种的组合或其他装置,本发明不作限制。
其中,存储器920可用于存储计算机程序以及模块,存储器920可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器920还可以包括存储器控制器,以提供处理器910的访问。
其中,处理器910是计算设备的控制中心,利用各种接口和线路连接整个计算设备的各个部分,通过运行或执行存储在存储器920内的计算机程序和/或模块,以及调用存储在存储器920内的数据,执行计算设备的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器910可包括一个或多个处理核心。
其中,通信接口用于建立通信信道,通过所述通信信道以连接至通信对端,并通过所述通信信道与所述通信对端交互数据。输入装置用于实现信息的输入,输入装置可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。输出装置可用于显示由用户输入的信息或提供给用户的信息以及可翻折终端的各种图形用户界面(比如本发明实施例中所描述的移动轨迹显示界面置等),这些图形用户界面可以由图形、文本、图标、视频和其任意组合来构成。
需要说明的是,本发明实施例中各个指令的实现可参见方法实施例中相关描述,本发明不再赘述。
还需要说明的是,虽然图9示出了多个FPGA引擎940,调度器930,可以理解,多个FPGA引擎940组成的系统资源、调度器940也可以作为计算设备的外围设备,本发明不作限定。
综上所述,通过实施本发明实施例,计算设备接收通过接口下发的第一任务,将第一任务写入到调度队列;调度器从调度队列中获取第一任务,该调度队列包括依次待调度器处理的至少一个任务,调度器根据第一任务的可抢占级别与调度列表,确定第一任务的可抢占级别对应的FPGA引擎,并通过第一任务的可抢占级别对应的FPGA引擎执行第一任务,其中,调度列表包括至少一个可抢占级别以及至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系,使得高可抢占级别的任务可轮询较多FPGA引擎资源,低可抢占级别的任务可轮询较少FPGA引擎资源,使得资源的分配更合理,使得低可抢占级别的任务也有对资源轮询的权利,避免多个任务之间的相互阻塞,提高FPGA引擎资源的利用率。
而且,通过各个子调度队列的任务量的大小动态调整调度列表,进一步优化FPGA引擎资源的分配,提高任务处理效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。
Claims (23)
1.一种任务调度方法,其特征在于,所述方法包括:
从调度队列中获取第一任务;所述调度队列包括依次待所述调度器处理的至少一个任务;
根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的现场可编程门阵列(Field Programmable Gate Arry,FPGA)引擎;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系;
通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
2.如权利要求1所述的方法,其特征在于,所述从调度队列中获取第一任务之后,所述根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎之前,所述方法还包括:
根据资源列表以及所述第一任务的任务类型,确定所述第一任务的任务类型对应的调度列表;
其中,所述资源列表包括至少一个任务类型以及所述至少一个任务类型中每个任务类型对应的资源池,一个资源池对应一个调度列表。
3.如权利要求1或2所述的方法,其特征在于,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
当第一子调度队列中任务的任务量大于第一阈值时,增加所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
5.如权利要求3所述的方法,其特征在于,所述方法还包括:
当第一子调度队列中任务的任务量小于第二阈值时,减少所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
6.如权利要求3所述的方法,其特征在于,所述方法还包括:
若最低可抢占级别对应的子调度队列中任务的任务量大于第三阈值时,增加所述调度列表中所述最低可抢占级别对应的FPGA引擎标识;
若最高可抢占级别对应的子调度队列中任务的任务量小于第四阈值时,增加所述调度列表中次最高可抢占级别对应的FPGA引擎标识。
7.一种任务调度方法,其特征在于,所述方法包括:
接收通过接口下发的第一任务;所述第一任务包括所述第一任务的可抢占级别;
将所述第一任务写入到调度队列,以使第一调度器通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
8.如权利要求7所述的方法,其特征在于,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别;所述将所述第一任务写入到调度队列包括:
根据所述第一任务的可抢占级别将所述第一任务写入所述第一任务的可抢占级别对应的子调度队列。
9.如权利要求7或8所述的方法,其特征在于,资源系统被划分为多个资源子系统,所述多个资源子系统的每个资源子系统对应至少一个任务类型,所述每个资源子系统对应一个调度器;所述将所述第一任务写入到调度队列之前,所述方法还包括:
根据第一任务的任务类型,确定所述第一任务对应的第一资源子系统以及确定与所述第一资源子系统对应的第一调度器。
10.如权利要求9所述的方法,其特征在于,所述接收通过接口下发的第一任务之前,所述方法还包括:
根据所述第一资源子系统对应的任务类型,确定与所述第一资源子系统对应的任务类型相匹配的调度算法;
根据所述调度算法,生成所述第一调度器。
11.一种调度器,其特征在于,所述调度器包括:
获取单元,用于从调度队列中获取第一任务;所述调度队列包括依次待所述调度器处理的至少一个任务;
第一确定单元,用于根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系;
调度单元,用于通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
12.如权利要求11所述的调度器,其特征在于,所述调度器还包括:
第二确定单元,用于在所述获取单元从调度队列中获取第一任务之后,所述第一确定单元根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎之前,根据资源列表以及所述第一任务的任务类型,确定所述第一任务的任务类型对应的调度列表;
其中,所述资源列表包括至少一个任务类型以及所述至少一个任务类型中每个任务类型对应的资源池,一个资源池对应一个调度列表。
13.如权利要求11或12所述的调度器,其特征在于,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别。
14.如权利要求13所述的调度器,其特征在于,所述调度器还包括:
资源调整单元,用于当第一子调度队列中任务的任务量大于第一阈值时,增加所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
15.如权利要求13所述的调度器,其特征在于,所述调度器还包括:
资源调整单元,用于当第一子调度队列中任务的任务量小于第二阈值时,减少所述调度列表中第一可抢占级别对应的FPGA引擎标识;
其中,所述第一子调度队列为所述至少一个子调度队列中任意一个子调度队列,所述第一可抢占级别为所述第一子调度队列对应的可抢占级别。
16.如权利要求13所述的调度器,其特征在于,所述调度器还包括:资源调整单元,用于:
若最低可抢占级别对应的子调度队列中任务的任务量大于第三阈值时,增加所述调度列表中所述最低可抢占级别对应的FPGA引擎标识;
若最高可抢占级别对应的子调度队列中任务的任务量小于第四阈值时,增加所述调度列表中次最高可抢占级别对应的FPGA引擎标识。
17.一种计算设备,其特征在于,所述计算设备包括:
接收单元,用于接收通过接口下发的第一任务;
处理单元,用于将所述第一任务写入到调度队列,以使第一调度器通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
18.如权利要求17所述的计算设备,其特征在于,所述调度队列包括至少一个子调度队列,所述子调度队列中所有任务具有相同的可抢占级别;所述处理单元具体用于:
根据所述第一任务的可抢占级别将所述第一任务写入所述第一任务的可抢占级别对应的子调度队列。
19.如权利要求17或18所述的计算设备,其特征在于,资源系统被划分为多个资源子系统,所述多个资源子系统的每个资源子系统对应至少一个任务类型,所述每个资源子系统对应一个调度器;所述处理单元还用于:
在将所述第一任务写入到调度队列之前,根据第一任务的任务类型,确定所述第一任务对应的第一资源子系统以及确定与所述第一资源子系统对应的第一调度器。
20.如权利要求19所述的计算设备,其特征在于,所述处理单元还用于:
在接收单元接收通过接口下发的第一任务之前,根据所述第一资源子系统对应的任务类型,确定与所述第一资源子系统对应的任务类型相匹配的调度算法;
根据所述调度算法,生成所述第一调度器。
21.一种任务调度方法,其特征在于,所述方法包括:
接收通过接口下发的第一任务;
将所述第一任务写入到调度队列;所述调度队列包括依次待所述调度器处理的至少一个任务;
从所述调度队列中获取所述第一任务;
根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系;
通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务。
22.一种计算设备,其特征在于,所述计算设备包括:至少一个处理器、存储器、调度器以及多个FPGA引擎;所述处理器通过总线连接到所述存储器以及所述调度器,所述调度器连接到所述多个FPGA引擎,其中,
所述处理器用于调用所述存储器内程序代码和数据执行:接收通过接口下发的第一任务;以及,将所述第一任务写入到调度队列;所述调度队列包括依次待所述调度器处理的至少一个任务;
所述调度器用于执行:从所述调度队列中获取所述第一任务;根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;以及,通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系。
23.一种任务调度系统,其特征在于,所述系统包括:计算机系统、调度系统以及系统资源,其中,所述计算系统包括至少一个计算设备;所述调度系统包括至少一个调度器;所述系统资源包括至少一个资源子系统,所述至少一个资源子系统与所述至少一个调度器一一对应;所述计算机系统、所述调度系统以及所述系统资源之间通信连接;
所述计算设备用于:接收通过接口下发的第一任务;以及,将所述第一任务写入到调度队列;所述调度队列包括依次待所述调度器处理的至少一个任务;
所述调度器用于:从所述调度队列中获取所述第一任务;根据所述第一任务的可抢占级别与调度列表,确定所述第一任务的可抢占级别对应的FPGA引擎;以及,通过所述第一任务的可抢占级别对应的FPGA引擎执行所述第一任务;其中,所述调度列表包括至少一个可抢占级别以及所述至少一个可抢占级别中每个可抢占级别与至少一个FPGA引擎标识的对应关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711153920.7A CN109814985B (zh) | 2017-11-20 | 2017-11-20 | 一种任务调度方法及调度器、计算设备、系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711153920.7A CN109814985B (zh) | 2017-11-20 | 2017-11-20 | 一种任务调度方法及调度器、计算设备、系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109814985A true CN109814985A (zh) | 2019-05-28 |
CN109814985B CN109814985B (zh) | 2021-07-16 |
Family
ID=66597899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711153920.7A Active CN109814985B (zh) | 2017-11-20 | 2017-11-20 | 一种任务调度方法及调度器、计算设备、系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109814985B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110231986A (zh) * | 2019-06-18 | 2019-09-13 | 北京邮电大学 | 基于多fpga的动态可重配置的多任务调度和放置方法 |
CN110399221A (zh) * | 2019-07-23 | 2019-11-01 | 江苏鼎速网络科技有限公司 | 数据处理方法、系统及终端设备 |
CN111290959A (zh) * | 2020-02-20 | 2020-06-16 | 中国建设银行股份有限公司 | 一种测试任务的调度方法、装置、电子设备及存储介质 |
CN111401560A (zh) * | 2020-03-24 | 2020-07-10 | 北京觉非科技有限公司 | 推理任务的处理方法、设备和存储介质 |
CN111459645A (zh) * | 2020-04-22 | 2020-07-28 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置和电子设备 |
CN112654092A (zh) * | 2019-10-09 | 2021-04-13 | 中盈优创资讯科技有限公司 | 资源调度方法、装置及系统 |
CN113127178A (zh) * | 2019-12-30 | 2021-07-16 | 医渡云(北京)技术有限公司 | 资源抢占方法及装置、计算机可读存储介质、电子设备 |
CN113726636A (zh) * | 2021-08-31 | 2021-11-30 | 华云数据控股集团有限公司 | 软件转发设备的数据转发方法、系统及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101414271A (zh) * | 2008-12-04 | 2009-04-22 | 浙江大学 | 多核平台下基于硬件计时器与任务队列的调度方法 |
CN101458634A (zh) * | 2008-01-22 | 2009-06-17 | 中兴通讯股份有限公司 | 负载均衡调度方法和装置 |
CN102455934A (zh) * | 2010-10-25 | 2012-05-16 | 北大方正集团有限公司 | 工作流的调度方法和装置 |
CN103019856A (zh) * | 2012-11-23 | 2013-04-03 | 上海寰创通信科技股份有限公司 | 一种多核处理器的非对称调度方法 |
CN103677990A (zh) * | 2013-12-13 | 2014-03-26 | 清华大学 | 虚拟机实时任务的调度方法、装置和虚拟机 |
CN103823706A (zh) * | 2014-02-12 | 2014-05-28 | 浙江大学 | 一种基于RTLinux的被控对象模型模拟仿真实时调度方法 |
CN106569891A (zh) * | 2016-11-09 | 2017-04-19 | 郑州云海信息技术有限公司 | 一种存储系统中任务调度执行的方法和装置 |
CN106897132A (zh) * | 2017-02-27 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种服务器任务调度的方法以及装置 |
JP2017134692A (ja) * | 2016-01-28 | 2017-08-03 | 富士通株式会社 | デバイス起動の優先順位制御装置及び優先順位制御方法 |
-
2017
- 2017-11-20 CN CN201711153920.7A patent/CN109814985B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101458634A (zh) * | 2008-01-22 | 2009-06-17 | 中兴通讯股份有限公司 | 负载均衡调度方法和装置 |
CN101414271A (zh) * | 2008-12-04 | 2009-04-22 | 浙江大学 | 多核平台下基于硬件计时器与任务队列的调度方法 |
CN102455934A (zh) * | 2010-10-25 | 2012-05-16 | 北大方正集团有限公司 | 工作流的调度方法和装置 |
CN103019856A (zh) * | 2012-11-23 | 2013-04-03 | 上海寰创通信科技股份有限公司 | 一种多核处理器的非对称调度方法 |
CN103677990A (zh) * | 2013-12-13 | 2014-03-26 | 清华大学 | 虚拟机实时任务的调度方法、装置和虚拟机 |
CN103823706A (zh) * | 2014-02-12 | 2014-05-28 | 浙江大学 | 一种基于RTLinux的被控对象模型模拟仿真实时调度方法 |
JP2017134692A (ja) * | 2016-01-28 | 2017-08-03 | 富士通株式会社 | デバイス起動の優先順位制御装置及び優先順位制御方法 |
CN106569891A (zh) * | 2016-11-09 | 2017-04-19 | 郑州云海信息技术有限公司 | 一种存储系统中任务调度执行的方法和装置 |
CN106897132A (zh) * | 2017-02-27 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种服务器任务调度的方法以及装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110231986A (zh) * | 2019-06-18 | 2019-09-13 | 北京邮电大学 | 基于多fpga的动态可重配置的多任务调度和放置方法 |
CN110399221A (zh) * | 2019-07-23 | 2019-11-01 | 江苏鼎速网络科技有限公司 | 数据处理方法、系统及终端设备 |
CN112654092A (zh) * | 2019-10-09 | 2021-04-13 | 中盈优创资讯科技有限公司 | 资源调度方法、装置及系统 |
CN112654092B (zh) * | 2019-10-09 | 2023-05-30 | 中盈优创资讯科技有限公司 | 资源调度方法、装置及系统 |
CN113127178A (zh) * | 2019-12-30 | 2021-07-16 | 医渡云(北京)技术有限公司 | 资源抢占方法及装置、计算机可读存储介质、电子设备 |
CN113127178B (zh) * | 2019-12-30 | 2024-03-29 | 医渡云(北京)技术有限公司 | 资源抢占方法及装置、计算机可读存储介质、电子设备 |
CN111290959A (zh) * | 2020-02-20 | 2020-06-16 | 中国建设银行股份有限公司 | 一种测试任务的调度方法、装置、电子设备及存储介质 |
CN111401560A (zh) * | 2020-03-24 | 2020-07-10 | 北京觉非科技有限公司 | 推理任务的处理方法、设备和存储介质 |
CN111459645A (zh) * | 2020-04-22 | 2020-07-28 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置和电子设备 |
CN111459645B (zh) * | 2020-04-22 | 2023-06-30 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置和电子设备 |
CN113726636A (zh) * | 2021-08-31 | 2021-11-30 | 华云数据控股集团有限公司 | 软件转发设备的数据转发方法、系统及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109814985B (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109814985A (zh) | 一种任务调度方法及调度器、计算设备、系统 | |
CN108536538A (zh) | 处理器核心调度方法、装置、终端及存储介质 | |
CN110808922B (zh) | 一种消息处理方法、装置、存储介质及电子设备 | |
CN108984282A (zh) | 具有闭环性能控制器的amp体系结构的调度器 | |
CN110333937A (zh) | 任务分发方法、装置、计算机设备和存储介质 | |
CN106503791A (zh) | 用于有效神经网络部署的系统和方法 | |
CN108268318A (zh) | 一种分布式系统任务分配的方法和装置 | |
CN109117260A (zh) | 一种任务调度方法、装置、设备和介质 | |
CN107590002A (zh) | 任务分配方法、装置、存储介质、设备及分布式任务系统 | |
CN109300217B (zh) | 排队叫号方法、计算机存储介质、排队叫号服务器及系统 | |
CN109697122A (zh) | 任务处理方法、设备及计算机存储介质 | |
CN104268018B (zh) | 一种Hadoop集群中的作业调度方法和作业调度器 | |
CN103873587B (zh) | 一种基于云平台实现调度的方法及装置 | |
CN111338791A (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
CN103593234A (zh) | 自适应进程重要性 | |
KR102238034B1 (ko) | 태스크 할당 시스템에서의 행동 페어링을 위한 기술들 | |
CN110308982A (zh) | 一种共享内存复用方法及装置 | |
US20170097854A1 (en) | Task placement for related tasks in a cluster based multi-core system | |
CN107797848A (zh) | 进程调度方法、装置和主机设备 | |
CN110532100A (zh) | 调度资源的方法、装置、终端及存储介质 | |
CN113472690A (zh) | 一种业务报文处理方法及装置 | |
CN101374109B (zh) | 一种报文调度方法和调度装置 | |
CN102609307A (zh) | 多核多线程双操作系统网络设备及其控制方法 | |
CN114064316A (zh) | 一种多路采集数据的同步方法及系统 | |
CN111193802A (zh) | 基于用户组的资源动态分配方法、系统、终端及存储介质 |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200417 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 301, A building, room 3, building 301, foreshore Road, No. 310053, Binjiang District, Zhejiang, Hangzhou Applicant before: Huawei Technologies Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |