CN114721790A - Fpga任务调度方法、调度器和调度系统 - Google Patents

Fpga任务调度方法、调度器和调度系统 Download PDF

Info

Publication number
CN114721790A
CN114721790A CN202210138572.0A CN202210138572A CN114721790A CN 114721790 A CN114721790 A CN 114721790A CN 202210138572 A CN202210138572 A CN 202210138572A CN 114721790 A CN114721790 A CN 114721790A
Authority
CN
China
Prior art keywords
fpga
task
tasks
scheduler
kernel
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.)
Pending
Application number
CN202210138572.0A
Other languages
English (en)
Inventor
李峰
龙欣
张振祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba China Co Ltd
Original Assignee
Alibaba China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba China Co Ltd filed Critical Alibaba China Co Ltd
Priority to CN202210138572.0A priority Critical patent/CN114721790A/zh
Publication of CN114721790A publication Critical patent/CN114721790A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)

Abstract

公开了一种FPGA任务调度方法、调度器和调度系统。所述方法包括:用户态调度器从线程接收任务;所述用户态调度器基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给所述FPGA;通知内核态调度器接收剩余任务;以及所述内核态调度器控制CPU核执行接收的所述剩余任务。由此,通过采用用户态和内核态两级配合的调度器模式,将所有的调度都放在主机侧实现。其中,用户态调度器可对线程进行打标,标识延迟敏感型任务和带宽消耗型任务,通过优先分配和选择来保障延迟敏感型任务的延迟要求,同时满足带宽消耗型任务的正常执行。

Description

FPGA任务调度方法、调度器和调度系统
技术领域
本公开涉及数据库领域,尤其涉及一种FPGA任务调度方法、调度器和调度系统。
背景技术
在大数据时代,数据中心需要更多的存储设备承载海量数据,同时也要通过大量计算将无序的数据加以提取,形成有用信息,从而服务于人们的生活。面对海量的数据分析,只凭借CPU来进行大数据计算远远无法满足需求,FPGA因其可编程性和并行操作性能以及计算加速上的优势,能够在数据中心用作降低用户运营和数据分析成本的通用加速器,并且适用于多种场景(包括图片、视频、加解密、压缩等)。例如,数据库通过FPGA加速compaction(压实)操作可以有效降低数据库上的CPU的负载并由此提升性能。
如何对FPGA上的计算能力进行有效的调度是在数据中心使用FPGA所面临一个问题。针对异构FPGA卡的调度通常采用基于内核CFS或者基于拉取的方式,FPGA侧则采用保证最大流水线并行的方式。但现有方式无法对CPU以及与其协同的FPGA进行有效利用,也无法应对各种复杂的场景。
为此,需要一种改进的FPGA任务调度方案。
发明内容
本公开要解决的一个技术问题是提供一种改进的FPGA任务调度方案。该方案设计一种位于CPU侧的FPGA加速场景下的调度器,分为用户态和内核态两部分,用户态调度器可以根据FPGA使用情况来决定任务向FPGA的调度,或是经由内核态调度器调度CPU核来实现计算。可以对线程进行分类,从而保障延迟敏感型任务在FPGA和CPU上的优先执行。
根据本公开的第一个方面,提供了一种FPGA任务调度方法,包括:用户态调度器从线程接收任务;所述用户态调度器基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给所述FPGA;通知内核态调度器接收剩余任务;以及所述内核态调度器控制CPU核执行接收的所述剩余任务。
可选地,所述方法还包括:所述用户态调度器基于向所述FPGA发送的任务以及所述FPGA报告的当前状态,持续维护所述FPGA可用逻辑资源状态。
可选地,所述方法还包括:所述所述用户态调度器从接收到的任务中识别延迟敏感型任务;以及使得所述FPGA在可用时,优先执行所述延迟敏感型任务。
可选地,使得所述FPGA在可用时,优先执行所述延迟敏感型任务包括:在FPGA上的不同可用逻辑资源需要组合来完成任务的情况下,使得所述延迟敏感型任务优先选择关键可用逻辑资源。
可选地,所述方法还包括:所述用户态调度器从接收到的任务中识别带宽占用型任务,并且使得所述FPGA在可用时,优先执行所述延迟敏感型任务包括:使得所述FPGA暂停执行中的带宽占用型任务,优先执行中途插入的所述延迟敏感型任务。
可选地,所述方法还包括:所述用户态调度器在所述FPGA不可用时,通知所述内核态调度器进行CPU抢占以执行所述延迟敏感型任务。
可选地,所述方法还包括:基于接收到的任务,预先划分由所述用户态调度器管控的FPGA逻辑资源,以及由所述内核态调度器管控的CPU核资源。
可选地,所述内核态调度器控制CPU核执行接收的所述剩余任务包括:所述内核态调度器基于核分配规则创建队列;基于队列执行状态,将所述剩余任务分配至特定队列;以及由与所述特定队列相对应的CPU核执行所述剩余任务。
根据本公开的第二个方面,提供了一种FPGA任务调度方法,包括:主机的用户态调度器从线程接收任务;所述用户态调度器基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给FPGA,并通知主机的内核态调度器接收剩余任务,所述方法还包括:所述FPGA的任务处理器接收来自所述主机的任务和命令,并根据所述命令控制内部逻辑进行组合完成所述命令指定的任务;以及所述内核态调度器控制CPU核执行接收的所述剩余任务。
根据本公开的第三个方面,提供了一种FPGA任务调度器,包括:用户态调度器,用于:从线程接收任务;所述用户态调度器基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给所述FPGA;通知内核态调度器接收剩余任务;以及所述内核态调度器,用于:控制CPU核执行接收的所述剩余任务。
根据本公开的第四个方面,提供了一种FPGA任务调度系统,包括:位于CPU上的如第三方面所述的FPGA任务调度器;以及位于所述FPGA上的任务处理器,用于接收来自所述FPGA任务调度器的命令,并根据所述命令控制内部逻辑进行组合完成所述命令指定的任务。
可选地,所述用户态调度器基于eBPF通知所述内核态调度器进行调度;并且所述任务处理器是由所述CPU编程的eBPF兼容寄存器架构的处理器。
根据本公开的第五个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一和第二方面所述的方法。
根据本公开的第六个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一和第二方面所述的方法。
由此,通过采用用户态和内核态两级配合的调度器模式,将所有的调度都放在主机侧实现。其中,用户态调度器可对线程进行打标,标识延迟敏感型任务和带宽消耗型任务,通过优先分配和选择来保障延迟敏感型任务的延迟要求,同时满足带宽消耗型任务的正常执行。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了FPGA加速数据库架构的一个例子。
图2示出了根据本发明一个实施例的FPGA任务调度方法的示意性流程图。
图3示出了根据本发明进行任务调度的一个例子。
图4示出了根据本发明一实施例可用于实现上述FPGA任务调度方法的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
数据中心需要更多的存储设备来承载海量数据,同时也要通过大量计算将无序的数据加以提取,以形成有用信息。面对海量的数据分析,只凭借CPU来进行大数据计算远远无法满足需求,FPGA因其可编程性和并行操作性能以及计算加速上的优势,能够在数据中心用作降低用户运营和数据分析成本的通用加速器,并且适用于多种场景(包括图片、视频、加解密、压缩等)。例如,数据库通过FPGA加速compaction(压实)操作可以有效降低数据库上的CPU的负载并由此提升性能。
具体地,FPGA(现场可编程逻辑门阵列)作为特殊应用集成电路中的一种半定制电路,它既能弥补全定制电路(例如ASIC)灵活性不足的问题,又能克服原有可编程逻辑控制器门电路数有限的缺点。FPGA非常适合执行特定应用的功能或算法。这些功能的范围从非常具体的应用领域(例如专有安全算法)到更通用的要求(例如时间戳、数据包过滤或重复数据删除)。重复性和CPU密集型任务是卸载(offload)到FPGA的理想选择。
图1示出了FPGA加速数据库架构的一个例子。如图所示,FPGA通过例如PCIe的接口与主机连接,数据则可通过DMA(直接内存访问)的方式进行传输。只要主机(例如,CPU)对FPGA的offload操作计算足够密集,上述将FPGA作为协处理器的混合架构所带来的数据传输的代价就是可以接受的。对于compaction(压实)这一复杂操作而言,主机可以从内存中获取要处理的数据,在经由FPGA处理后,在存入永久性存储器。
虽然如图1所示通过利用FPGA作为异构加速卡能够有效降低CPU(主机)负载并提升性能,但如何对FPGA上的计算能力进行有效的调度是在数据中心使用FPGA所面临一个问题。
通常在异构FPGA卡加速一个线程可以分为以下几个步骤:
1)执行CPU侧的工作;
2)将任务和数据DMA到FPGA上;
3)设置异步callback(回调)等待FPGA上逻辑进行相应的运算;
4)CPU通过中断或轮询的方式取回计算结果;
5)CPU侧执行后续的计算工作。
加速任务的调度工作主要是CPU侧根据任务抵达的先后顺序,基于内核CFS(绝对公平调度)或者基于拉取的方式进行工作,FPGA只需要保证最大流水线即可。上述调度方法通常能够满足单一任务的简单加速场景,但在复杂场景下无法实现对FPGA或者CPU资源的有效利用。例如,在数据库的加速场景涉及到的Query(查询)任务中包括sort(分类)、filter(过滤)及groupby(分组)等混合操作时,现有的调度方式无法对FPGA和CPU资源进行有效利用,从而变相降低了数据库的整体性能。
为此,本发明针对采用FPGA异构卡模式的加速场景设计了一种处理复杂任务的高效的调度器,可以更有效的将任务调度到CPU和FPGA异构卡上,满足FPGA加速场景下业务的延迟和带宽要求,在FPGA逻辑需要组合配置的场景下有优势。具体地,本发明的改进的FPGA任务调度方案。该方案设计一种位于CPU侧的FPGA加速场景下的调度器,分为用户态和内核态两部分,用户态调度器可以根据FPGA使用情况来决定任务向FPGA的调度,或是经由内核态调度器调度CPU核来实现计算。可以对线程进行分类,从而保障延迟敏感型任务在FPGA和CPU上的优先执行。
图2示出了根据本发明一个实施例的FPGA任务调度方法的示意性流程图。该方法是由CPU侧(主机侧)实现的,具体地,可由CPU侧设置的用户态和内核态两级调度器实现的。
在步骤S210,用户态调度器从线程接收任务。用户态调度器可以接受来自不同线程的不同任务。
在步骤S220,用户态调度器可以基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给FPGA。由于在空闲状态下,FPGA执行单个任务的速度要远高于CPU,因此用户态调度器将接收的任务优先发送给FPGA指的是用户态调度器在FPGA具有执行能力的时候,优先将分配给FPGA执行。例如,在FPGA和CPU都空闲时,将任务交由FPGA执行;在FPGA忙碌时,CPU空闲时,可以考虑将任务交由CPU执行,在FPGA和CPU都忙碌时,交由预计能率先空闲的执行。另外,也可以对重要任务(例如,如下将详述的延迟敏感型任务)进行优先执行。
在步骤S230,用户态调度器可以通知内核态调度器接收剩余任务。在此,剩余任务可以指代用户态调度器接收到的且没有分配给FPGA的任务,即,在向FPGA分配任务之后“剩余”的任务。。
随后,在步骤S240,内核态调度器控制CPU核执行接收的剩余任务。
由此,CPU侧通过设置用户态和内核态两级调度器,由用户态负责向FPGA的任务调度,内核态调度器负责剩余任务的处理,由此提升对FPGA和CPU的利用效率,并能够轻松满足内核版本兼容以及热升级的要求。
应该理解的是,如上接收任务、分配任务和执行任务的操作S210~S240是持续不断进行的,即,用户态调度器持续获取来自线程的任务,持续基FPGA可用逻辑资源状态来优先向FPGA分配任务。如果FPGA无法处理全部的任务,即,优先分配给FPGA后还有任务剩余,则用户态调度器可以发送消息给内核态调度器,由内核态调度器根据CPU的当前处理状态(例如,CPU核的空闲状态)来选择合适的CPU核来执行内容。
为此,用户态调度器可以基于向FPGA之前发送的任务以及FPGA持续的当前状态报告,来持续性地维护所述FPGA可用逻辑资源状态。例如,FPGA上可以具有多个逻辑处理单元(processelement,PE),不同的PE可被编程用于处理不同的操作,例如,用于执行聚合操作的聚合PE、执行连接操作的连接PE,执行压缩操作的压缩PE以及执行解压操作的解压PE等。在当前的可编程状态,每个PE用于进行哪种操作是相对固定的。因此,FPGA向用户态调度器报告当前状态时,可以报告各类PE的当前使用情况。用户态调度器可以维护一个FPGA可用逻辑资源状态表,来记录当前各类PE的可用状态。
另一方面,用户态调度器在接收到任务时,可以根据任务中所包含的操作来预估该任务需要使用哪些资源,并且可以基于接收到的任务,预先划分由所述用户态调度器管控的FPGA逻辑资源。而内核态调度器则可在用户态调度器的通知下预先划分管控的CPU核资源。上述调度器下的管控资源可以动态增加或减少,例如,根据接收到的任务所包含的操作而动态增加或是减少。进一步地,在FPGA维护待执行任务队列,内核态调度器为CPU核维护待执行任务队列时,还可以对队列中尚未执行的任务所需要的计算资源进行评估,上述评估可以用于决定对后续任务的调度,例如,是分配给FPGA执行还是CPU核执行,是否要优先执行等。
由于在交由本发明的CPU或FPGA处理的任务中包括需要及时执行的任务,例如,用户在自己终端上查询“已购买到的商品”时,不应该让用户等待太长时间,也包括对响应时间不那么敏感的任务,例如,写盘任务。因此在一个优选实施例中,本发明应该对需要及时执行的任务进行优先处理。为此,本发明的任务调度方法还可以包括:所述用户态调度器从接收到的任务中识别延迟敏感型任务,并且可以通过调度使得所述延迟敏感型任务被优先执行。具体地,用户态调度器可以使得在FPGA在可用时,优先执行所述延迟敏感型任务;在FPGA无法及时执行时,使得CPU核能够率先执行延迟敏感型任务。
如前所述,在步骤S210,用户态调度器从线程接收任务。具体地,用户态调度器可以接受来自不同线程的不同任务。上述任务可以是用SQL(标准查询语言)写成的查询任务,用户态调度器可以根据任务中包含的具体操作、可以根据任务的来源线程等来判断该任务是否是延迟敏感型任务。在判断该任务是延迟敏感型任务时,可以向对该任务进行打标,例如将延迟敏感标签置1。由此,在将该任务分配给FPGA或是下层内核态调度器时,FPGA和内核态调度器能够基于标签识别出任务的延迟敏感型身份,并进行优先执行。
在将延迟敏感型分配给FPGA执行时,可以在FPGA上的不同可用逻辑资源需要组合来完成任务的情况下,使得所述延迟敏感型任务优先选择关键可用逻辑资源。例如,一个延迟敏感型任务包括如下SQL语句:SELECT cat,count(*),avg(ax)FROM t0 NATURAL JOINt1 GROUP by cat;(即,包括读取数据,连接两个表再做统计的操作)。在该任务中,既有连接操作也有聚合操作。由于FPGA中的聚合逻辑PE和连接PE数量是固定的,当在前的任务使用了一定数量的聚合和连接PE后,再有新的任务进来就需要根据新任务所需PE和当前使用PE情况来选择是否占有PE进行工作。如果在前任务不是延迟敏感型任务,而新分配的任务是如上SQL语句的延迟敏感型任务,则可由该新任务来优先使用所需的聚合PE和连接PE。
进一步地,用户态调度器还可以从接收到的任务中识别带宽占用型任务。用户态调度器可以根据任务中包含的具体操作、可以根据任务的来源线程等来判断该任务是否是带宽占用型任务。在判断该任务是带宽占用型任务时,可以向对该任务进行打标,例如将带宽占用标签置1。带宽占用性任务指代相比于常规任务,需要占用更多计算带宽的任务。因此,在一个实施例中,可以为带宽占用标签置1的任务预先划分更多的计算资源。而在另一个实施例中,带宽占用标签置1不仅意味着指示该任务会占用更多的计算带宽,还意味着该任务并没有那么高的时间敏感性。换句话说,延迟敏感标签和带宽占用标签不会被同时置1。因此,在带宽占用型任务的执行与新分配的延迟敏感型任务产生冲突时,可以使得所述FPGA暂停执行中的带宽占用型任务,优先执行中途插入的所述延迟敏感型任务。而在FPGA资源不足的情况下带宽占用型任务可以选择使用CPU资源或等待。
另外,在某些实施例中,除了如上所述的延迟敏感型任务和带宽占用型任务之外,还可以包括常规任务,即,既对延迟不那么敏感也不会占用过多带宽的任务。上述任务可以是延迟敏感标签和带宽占用标签同时被置0的任务。在分配到这种任务时,FPGA和内核态调度器可以对其进行常规的执行,例如,不需要被优先执行(不需要带宽占用型任务暂停以优先执行),而在遇到延迟敏感型任务时由于延迟敏感型任务被优先执行而自身被延后执行。
另外,在针对延迟敏感型任务,用户态调度器还可以在FPGA不可用时,通知所述内核态调度器进行CPU抢占以执行所述延迟敏感型任务。
在具体实现中,内核态调度器控制CPU核执行接收的所述剩余任务可以包括:所述内核态调度器基于核分配规则创建队列;基于队列执行状态,将所述剩余任务分配至特定队列;以及由与所述特定队列相对应的CPU核执行所述剩余任务。内核态调度器可以根据CPU核的分组策略,为每个CPU核的分组分配一个队列,该分组内的CPU核可以轮番,或是在自己空闲时选取队列内的任务进行执行。而在遭遇到如前所述的需要CPU来执行延迟敏感型任务时,用户态调度器则可用消息通过内核态调度器来抢占一个CPU核,进行插入队列的延迟敏感型任务的执行。
图3示出了根据本发明进行任务调度的一个例子。该图示的例子中同时示出了CPU侧以及FPGA侧(即,FPGA侧基于CPU侧的指示)所进行的操作,并且在用户(user)态(或“用户空间”)、内核(kernel)态(或“内核空间”)和硬件三个层面上进行了说明。
Linux系统分为内核空间和用户空间。内核空间是操作系统的核心,对所有硬件都具备不受限制的完整的访问能力,例如内存、存储以及CPU等。内核既然具备了这样的超级权限,势必需要严加保护,仅允许运行最可靠的代码。而用户空间运行的就是非内核的进程——例如I/O、文件系统等。这些进程仅能通过内核开放的系统调用,对硬件进行有限的访问。换句话说,用户空间的程序一定要经过内核空间的过滤。
由此,本发明通过在用户空间设置调度器来提供充分灵活的调度功能,并通过在内核空间再设置一级调度器来实现对CPU核的控制,并提供调度器的兼容能力。
如图左侧所示,出于热升级以及与不同内核版本兼容的需求,在主机侧分别设置位于用户态的调度器和位于内核态的调度器。换句话说,在内核态也设置一级调度器能够方便兼容不同的Linux内核版本,并且满足热升级的要求。
位于应用层的用户态调度器可以从线程接收任务。如图所示,来自不同线程的任务可以自动进入用户态调度器中的任务队列。用户态调度器可以从任务队列中取出任务进行分配调度。在一个实施例中,线程(下发的任务)可被简单分为延迟敏感型任务和带宽占用型,延迟敏感型需要保障任务完成的延迟时间。用户态调度器可以基于接收到的任务,预先划分CPU资源和FPGA的逻辑资源,调度器下的管控资源可动态增加或减少。
进一步地,用户态调度器对待执行线程进行打标,分为两种类型l和b,分别对应于如上所述的延迟敏感型任务和带宽占用型;同时需要维护FPGA可用逻辑资源状态。具体地,用户态调度器需要获取FPGA中资源状态,根据FPGA当前可用的逻辑资源选择控制逻辑资源用于不同的类型任务。另外,针对不同的任务需要FPGA中逻辑进行组合的情况(例如,如上SQL语句的执行同时需要聚合逻辑PE和连接逻辑PE的情况下),可以在用户态调度器对FPGA的具体资源进行管控。
在一个实施例中,内核态调度器可以基于CFS进行调度。内核态调度器对用户态调度器下发的消息进行处理,并基于CPU核的分组创建相应的队列。在图示的例子中,可以一个队列对应一个CPU核(core)。内核态调度器能够在微秒级对当前CPU上的线程进行调度,实现CPU的抢占,保障在需要时(即,FPGA无法执行延迟敏感型任务而由CPU执行时),延迟敏感型任务对CPU的抢占。
用户态调度器接收需要调度线程并同内核态调度器通信,为保障延迟敏感型任务的延迟需求,可以采用eBPF来进行用户态调度器同内核态调度器的控制。eBPF是在Berkeley Packet Filter(伯克利包过滤,BPF)基础之上构建的一个内核虚拟机级别的包过滤机制。eBPF在内核中被事件触发。在一些特定的指令被执行时时,这些事件会在钩子处被捕获。钩子被触发就会执行eBPF程序,对数据进行捕获和操作。为此,在本发明中,用户态调度器发送的消息(抢占CPU)可由钩子捕获,并实现延迟敏感型任务对CPU的抢占。
根据图3和如下图4所示,本发明还可以实现为一种由主机(例如,CPU及基于CPU实现的操作系统)和FPGA协同实现的FPGA任务调度方法,包括:主机的用户态调度器从线程接收任务;所述用户态调度器基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给FPGA,并通知主机的内核态调度器接收剩余任务,所述方法还包括:所述FPGA的任务处理器接收来自所述主机的任务和命令,并根据所述命令控制内部逻辑进行组合完成所述命令指定的任务;以及所述内核态调度器控制CPU核执行接收的所述剩余任务。
在本发明的一个方面,还可以实现为一种FPGA任务调度器,例如图3的虚线左侧所示,该FPGA任务调度器在CPU侧实现,并且包括用户态调度器核内核态调度器。
用户态调度器用于:从线程接收任务;所述用户态调度器基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给所述FPGA;通知内核态调度器接收剩余任务。所述内核态调度器则用于控制CPU核执行接收的所述剩余任务。
进一步地,本发明还可以实现为一种FPGA任务调度系统,不仅包括如图3左侧所示的位于CPU上的FPGA任务调度器,还可以包括位于FPGA上的任务处理器。该任务处理器可以与CPU上的任务调度器相配合,用于接收来自所述FPGA任务调度器的命令,并根据所述命令控制内部逻辑进行组合完成所述命令指定的任务。
在用户态调度器基于eBPF通知内核态调度器进行调度时,CPU与FPGA之间也可以的交互也可以兼容eBPF。为此,任务处理器可以是由所述CPU编程的eBPF兼容寄存器架构的处理器。由此进一步提升CPU与作为其协处理器的FPGA之间的交互效率。
图4示出了根据本发明一实施例可用于实现上述FPGA任务调度方法的计算设备的结构示意图。
参见图4,计算设备900包括存储器410、处理器420以及协处理器430。处理器420可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器420可以实现为一个或多个通用的主处理器(CPU),并且与由FPGA实现的协处理器430相连接。
存储器410可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器420或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器410可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器410可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器410上存储有可执行代码,当可执行代码被处理器420处理时,可以使处理器420执行上文述及的FPGA任务调度方法,由此完成向协处理器FPGA 430的任务调度以及针对自身CPU核的任务调度。
上文中已经参考附图详细描述了根据本发明的FPGA任务调度方案。具体地,本发明提出了一种FPGA加速器场景下的调度器,调度器位于CPU侧,分为用户态和内核态两部分,内核态可以实现一个基于CFS工作的线程调度器,用户态则通过消息来调度待运行线程。线程类型分为延迟敏感型和带宽占用型两种,可以在用户态调度器中对线程进行类型打标;在需要使用CPU处理延迟敏感型任务时,用户态调度器下发消息来通知内核态进行微秒级的CPU抢占,保障延迟敏感型任务被及时执行。
另外,本发明还可以在FPGA中实现一个eBPF兼容寄存器架构的处理器,用来接收CPU侧发送的命令,并根据命令控制FPGA内部的逻辑进行组合完成任务,从而实现CPU和FPGA控制命令的一致性。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (14)

1.一种FPGA任务调度方法,包括:
用户态调度器从线程接收任务;
所述用户态调度器基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给所述FPGA;
通知内核态调度器接收剩余任务;以及
所述内核态调度器控制CPU核执行接收的所述剩余任务。
2.如权利要求1所述的方法,还包括:
所述用户态调度器基于向所述FPGA发送的任务以及所述FPGA报告的当前状态,持续维护所述FPGA可用逻辑资源状态。
3.如权利要求1所述的方法,还包括:
所述所述用户态调度器从接收到的任务中识别延迟敏感型任务;以及
使得所述FPGA在可用时,优先执行所述延迟敏感型任务。
4.如权利要求3所述的方法,其中,使得所述FPGA在可用时,优先执行所述延迟敏感型任务包括:
在FPGA上的不同可用逻辑资源需要组合来完成任务的情况下,使得所述延迟敏感型任务优先选择关键可用逻辑资源。
5.如权利要求3所述的方法,还包括:
所述用户态调度器从接收到的任务中识别带宽占用型任务,并且
使得所述FPGA在可用时,优先执行所述延迟敏感型任务包括:
使得所述FPGA暂停执行中的带宽占用型任务,优先执行中途插入的所述延迟敏感型任务。
6.如权利要求1所述的方法,还包括:
所述用户态调度器在所述FPGA不可用时,通知所述内核态调度器进行CPU抢占以执行所述延迟敏感型任务。
7.如权利要求1所述的方法,还包括:
基于接收到的任务,预先划分由所述用户态调度器管控的FPGA逻辑资源,以及由所述内核态调度器管控的CPU核资源。
8.如权利要求1所述的方法,其中,所述内核态调度器控制CPU核执行接收的所述剩余任务包括:
所述内核态调度器基于核分配规则创建队列;
基于队列执行状态,将所述剩余任务分配至特定队列;以及
由与所述特定队列相对应的CPU核执行所述剩余任务。
9.一种FPGA任务调度方法,包括:
主机的用户态调度器从线程接收任务;
所述用户态调度器基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给FPGA,并通知主机的内核态调度器接收剩余任务,
所述方法还包括:
所述FPGA的任务处理器接收来自所述主机的任务和命令,并根据所述命令控制内部逻辑进行组合完成所述命令指定的任务;以及
所述内核态调度器控制CPU核执行接收的所述剩余任务。
10.一种FPGA任务调度器,包括:
用户态调度器,用于:
从线程接收任务;
所述用户态调度器基于维护的FPGA可用逻辑资源状态,将接收的任务优先发送给所述FPGA;
通知内核态调度器接收剩余任务;以及
所述内核态调度器,用于:
控制CPU核执行接收的所述剩余任务。
11.一种FPGA任务调度系统,包括:
位于CPU上的如权利要求10所述的FPGA任务调度器;以及
位于所述FPGA上的任务处理器,用于接收来自所述FPGA任务调度器的命令,并根据所述命令控制内部逻辑进行组合完成所述命令指定的任务。
12.如权利要求11所述的系统,其中,所述用户态调度器基于eBPF通知所述内核态调度器进行调度;并且
所述任务处理器是由所述CPU编程的eBPF兼容寄存器架构的处理器。
13.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1-9中任一项所述的方法。
14.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1-9中任一项所述的方法。
CN202210138572.0A 2022-02-15 2022-02-15 Fpga任务调度方法、调度器和调度系统 Pending CN114721790A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210138572.0A CN114721790A (zh) 2022-02-15 2022-02-15 Fpga任务调度方法、调度器和调度系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210138572.0A CN114721790A (zh) 2022-02-15 2022-02-15 Fpga任务调度方法、调度器和调度系统

Publications (1)

Publication Number Publication Date
CN114721790A true CN114721790A (zh) 2022-07-08

Family

ID=82236240

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210138572.0A Pending CN114721790A (zh) 2022-02-15 2022-02-15 Fpga任务调度方法、调度器和调度系统

Country Status (1)

Country Link
CN (1) CN114721790A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116073890A (zh) * 2023-03-06 2023-05-05 成都星联芯通科技有限公司 业务数据处理方法、装置、接收设备、地球站及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101840355A (zh) * 2003-02-18 2010-09-22 微软公司 用于增强协处理器性能的系统和方法
CN103389913A (zh) * 2013-07-30 2013-11-13 武汉邮电科学研究院 一种用于Linux系统的实时中断处理方法
US8954968B1 (en) * 2011-08-03 2015-02-10 Juniper Networks, Inc. Measuring by the kernel the amount of time a monitored thread spends in a queue in order to monitor scheduler delays in a computing device
CN112269536A (zh) * 2020-10-16 2021-01-26 苏州浪潮智能科技有限公司 存储软件系统调优方法、装置及计算机可读存储介质
EP3901780A1 (de) * 2020-04-20 2021-10-27 Siemens Aktiengesellschaft Digitale schaltanordnung und verfahren zur konfiguration zumindest einer konfigurierbaren hardwarekomponente

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101840355A (zh) * 2003-02-18 2010-09-22 微软公司 用于增强协处理器性能的系统和方法
US8954968B1 (en) * 2011-08-03 2015-02-10 Juniper Networks, Inc. Measuring by the kernel the amount of time a monitored thread spends in a queue in order to monitor scheduler delays in a computing device
CN103389913A (zh) * 2013-07-30 2013-11-13 武汉邮电科学研究院 一种用于Linux系统的实时中断处理方法
EP3901780A1 (de) * 2020-04-20 2021-10-27 Siemens Aktiengesellschaft Digitale schaltanordnung und verfahren zur konfiguration zumindest einer konfigurierbaren hardwarekomponente
CN112269536A (zh) * 2020-10-16 2021-01-26 苏州浪潮智能科技有限公司 存储软件系统调优方法、装置及计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
OTHON TOMOUTZOGLOU 等: "Efficient Job Offloading in Heterogeneous Systems Through Hardware-Assisted Packet-Based Dispatching and User-Level Runtime Infrastructure", 《IEEE TRANSACTIONS ON COMPUTER-AIDED DESIGN OF INTEGRATED CIRCUITS AND SYSTEMS》, vol. 39, no. 5, 31 May 2020 (2020-05-31), pages 1017 - 1030, XP011784828, DOI: 10.1109/TCAD.2019.2907912 *
陈天洲 等: "CPU/FPGA 混合架构上的硬件线程加速方法", 《软件学报》, vol. 20, 31 December 2009 (2009-12-31), pages 15 - 22 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116073890A (zh) * 2023-03-06 2023-05-05 成都星联芯通科技有限公司 业务数据处理方法、装置、接收设备、地球站及存储介质
CN116073890B (zh) * 2023-03-06 2023-06-02 成都星联芯通科技有限公司 业务数据处理方法、装置、接收设备、地球站及存储介质

Similar Documents

Publication Publication Date Title
US9507631B2 (en) Migrating a running, preempted workload in a grid computing system
CN110489213B (zh) 一种任务处理方法及处理装置、计算机系统
US9710310B2 (en) Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
JP6571078B2 (ja) メモリにアクセスするための並列処理装置、コンピュータにより実施される方法、システム、コンピュータ可読媒体
US8424007B1 (en) Prioritizing tasks from virtual machines
US7370326B2 (en) Prerequisite-based scheduler
US10459773B2 (en) PLD management method and PLD management system
US9430411B2 (en) Method and system for communicating with non-volatile memory
JPH05189251A (ja) 多重タスク処理オペレーティング・システム及びそのコンピュータの動作方法
US11995016B2 (en) Input/output command rebalancing in a virtualized computer system
US9390033B2 (en) Method and system for communicating with non-volatile memory via multiple data paths
CN114579285B (zh) 一种任务运行系统、方法及计算设备
CN115167996A (zh) 调度方法及装置、芯片、电子设备及存储介质
US20190286582A1 (en) Method for processing client requests in a cluster system, a method and an apparatus for processing i/o according to the client requests
CN115237556A (zh) 调度方法及装置、芯片、电子设备及存储介质
CN114721790A (zh) Fpga任务调度方法、调度器和调度系统
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
US20150134882A1 (en) Method and system for using templates to communicate with non-volatile memory
CN113918336A (zh) 基于多核CPU的FreeRTOS运行任务方法及装置
CN115904671B (zh) 一种边缘计算环境下的任务调度方法、装置、设备及介质
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
CN109450803B (zh) 流量调度方法、装置和系统
CN113296957B (zh) 一种用于动态分配片上网络带宽的方法及装置
CN114911538A (zh) 一种运行系统的启动方法及计算设备
KR101915945B1 (ko) 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치

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