CN103279388B - 用于执行一个或更多个任务的系统和方法 - Google Patents
用于执行一个或更多个任务的系统和方法 Download PDFInfo
- Publication number
- CN103279388B CN103279388B CN201310002305.1A CN201310002305A CN103279388B CN 103279388 B CN103279388 B CN 103279388B CN 201310002305 A CN201310002305 A CN 201310002305A CN 103279388 B CN103279388 B CN 103279388B
- Authority
- CN
- China
- Prior art keywords
- task
- thread
- subtask
- processing engine
- stopping criterion
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/505—Allocation 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 load
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请提供用于执行任务的系统和方法。一种示例性方法包括:如果任务分配度量指示与处理器(14)关联的负载均衡低于第一阈值,则确定该任务是否是可再入任务;如果该任务是可再入任务,则确定是否满足停止标准;如果不满足停止标准且该任务是可再入任务,则使该任务重新进入任务队列(26)中;如果该任务分配度量指示与至少一个处理器(14)关联的核心(29)相关性低于第二阈值,则确定该任务是否是主要任务;如果该任务不是主要任务,则确定是否满足停止标准;如果满足停止标准且该任务不是主要任务,则将与该任务关联的父级任务拉入线程(31)。
Description
技术领域
本公开的领域一般涉及用于由至少一个处理引擎执行任务的系统和方法。
背景技术
众所周知,处理器通常通过使用由与处理器关联的操作系统提供的线程来执行任务。线程执行由操作系统生成的或来自任务队列的任务,该任务队列将被执行以便在计算环境中完成一个或更多个计算、操作、处理、动作和/或步骤。
通常,操作系统提供多个线程,其为将由此执行的被分配的各种不同任务。已知的操作系统将任务分配给线程以执行该任务。在各种实施方式中,任务可能依赖于一个或更多个其它任务或子任务。当任务被分配给线程时,任务占有线程直到所有必要的从属任务和/或子任务完成,从而线程可以执行该任务。当任务被分割成多个任务(它们自身被分割成多个任务)时,一个或更多个任务可以在延长的时间段内分配给线程,同时执行从属任务。将任务或子任务分配给线程的时间以及等待其他任务完成的时间常常导致处理器的非有效使用,并且在某些情况下导致线程饥饿。
发明内容
在一个方面,提供一种用于由至少一个处理引擎执行任务的方法。该方法包括确定与具有至少一个处理引擎的至少一个处理器关联的任务分配度量。该至少一个处理引擎具有一个或更多个线程。该方法进一步包括向一个或更多个线程分配任务,并且如果任务分配度量指示与至少一个处理器关联的负载均衡低于第一阈值,则由至少一个处理引擎确定之前分配给与至少一个处理引擎关联的一个或更多个线程中的任一个线程的任务是否是可再入任务。该方法还包括,如果该任务是可再入任务,则由至少一个处理引擎确定是否满足停止标准,如果不满足停止标准且该任务是可再入的任务,则使该任务重新进入与至少一个处理引擎关联的任务队列。该方法包括,如果任务分配度量指示与至少一个处理器关联的核心相关性低于第二阈值,则由至少一个处理引擎确定该任务是否是主要任务,如果该任务不是主要任务,则由至少一个处理引擎确定是否满足停止标准,并且如果满足停止标准且该任务不是主要任务,则将与该任务关联的父级任务拉入一个或更多个线程中的一个线程中。
在另一方面,提供一种用于执行任务的计算设备。该计算设备包括用于存储任务队列的存储器设备以及与存储器设备关联且包括具有一个或更多个线程的至少一个处理引擎的处理器。该至少一个处理引擎包括任务管理器和被配置为管理所述任务队列的队列管理器。该任务管理器被配置为确定与所述处理器关联的任务分配度量并且将任务分配给一个或更多个线程中的一个线程。任务管理器被配置为,如果任务分配度量指示与所述处理器关联的负载均衡低于第一阈值,则确定之前分配给所述一个或更多个线程中任一个线程的任务是否是可再入任务,如果该任务是可再入任务,则确定是否满足停止标准,以及如果不满足停止标准且该任务是可再入任务,则经由所述队列管理器使该任务重新进入任务队列。任务管理器被配置为,如果任务分配度量指示与所述处理器关联的核心相关性低于第二阈值,则确定该任务是否是主要任务,如果该任务不是主要任务,则确定是否满足停止标准,以及如果满足停止标准且该任务不是主要任务,则将与该任务关联的父级任务拉入一个或更多个线程中的所述一个线程中。
已经讨论的特征、功能和优势可以在各个实施例中单独实现,或者可以与其他实施例结合,其进一步细节可以参考下列描述和绘图。
附图说明
图1是可用于执行一个或更多个任务的示例性计算设备的框图。
图2是用于执行一个或更多个任务的示例性方法的框图。
图3是用于执行一个或更多个任务的另一示例性方法的框图,其可以与图2的示例性方法一起使用。
具体实施方式
本文所述的主题一般涉及用于执行具有多个子任务的一个或更多个任务同时管理任务队列并储存与用于完成任务的一个或更多个处理引擎关联的线程的系统和方法。
在某些实施例中,本文所述的方法、系统和计算机可读介质的技术效果包括以下至少一种:(a)确定与具有至少一个处理引擎的至少一个处理器关联的任务分配度量,所述至少一个处理引擎具有一个或更多个线程,(b)将任务分配给一个或更多个线程中的一个线程,(c)如果任务分配度量指示与至少一个处理器关联的负载均衡低于第一阈值,则由至少一个处理引擎确定之前分配给与至少一个处理引擎关联的所述一个或更多个线程中任一个线程的任务是否是可再入任务,(d)如果该任务是可再入任务,则由至少一个处理引擎确定是否满足停止标准,(e)如果不满足停止标准且该任务是可再入任务,则使该任务重新进入与至少一个处理引擎关联的任务队列中,(f)如果任务分配度量指示与至少一个处理器关联的核心相关性低于第二阈值,则由至少一个处理引擎确定该任务是否是主要任务,(g)如果该任务不是主要任务,则由至少一个处理引擎确定是否满足停止标准,以及(h)如果满足停止标准且该任务不是主要任务,则将与该任务关联的父级任务拉入一个或更多个线程中的所述一个线程中。
正如本文所使用的,以单数形式描述并以词语“一”或“一个”引领的元件或步骤应当理解为不排除复数个元件或步骤,除非明确限定这样的排除。而且,引用本发明的“一个实施例”和/或“示例性实施例”不应解释为排除也包含所列举特征的附加实施例的存在。
图1是示例性计算设备10的框图。在该示例性实施例中,计算设备10包括存储器12和耦合到存储器以便执行编程指令的处理器14。处理器14可以包括一个或更多个处理引擎(例如在多核配置中)。计算设备10可编程以在处理器14处建立一个或更多个处理引擎以便执行本文描述的一个或更多个操作。例如,处理器14可以通过将操作编码为一个或更多个可执行指令并在存储器12中提供所述可执行指令而被编程。
处理器14可以包括但不限于通用中央处理单元(CPU)、微控制器、简化指令集计算机(RISC)处理器、专用集成电路(ASIC)、可编程逻辑电路(PLC)和/或能够执行本文所述功能的任何其他电路或处理器。本文所述方法可以被编码为嵌入到包括但不限于存储设备和/或存储器设备的计算机可读介质中的可执行指令。当被处理器14执行时,此类指令促使处理器14执行本文所述方法的至少一部分。上述例子仅是示例性的,因此不意欲以任何方式限制术语“处理器”的定义和/或意思。
如本文所述,存储器12是使得能够存储和检索例如可执行指令和/或其他数据的信息的一个或更多个设备。存储器12可以包括一个或更多个计算机可读介质,例如但不限于高速缓存器、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、固态盘和/或硬盘。如图所示,存储器12包括用于存储将要执行的一个或更多个任务的队列26。存储器12可以被配置为存储(不限于)操作指令、固件、软件、子任务计数器、空闲任务和/或适用于本文所述方法和系统的任何其他类型的数据。此外,虽然存储器12和处理器14被图示为独立的,但应当理解包括处理器14和存储器12的集成电路可用于若干计算设备实施例。
在该示例性实施例中,计算设备10包括耦合到处理器14的展示接口16。展示接口16向用户20输出(例如,显示、打印和/或以其他方式输出)信息,该信息为例如但不限于安装数据、配置数据、测试数据、错误消息和/或任何其他类型的数据。例如,展示接口16可以包括耦合到显示设备的显示适配器(图1中未示出),该显示设备例如为阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)显示器、有机LED(OLED)显示器和/或“电子墨水”显示器。在某些实施例中,展示接口16包括多于一个显示设备。
在该示例性实施例中,计算设备10包括从用户20接收输入的输入接口18。在该示例性实施例中,输入接口18耦合到处理器14并且可以包括例如键盘、读取器、定点设备、鼠标、指示笔、触敏面板(例如触摸板或触摸屏)、陀螺仪、加速计和/或音频输入接口。
操作系统的指令和应用程序以功能形式存在于永久性存储器12上,以便由处理器14执行,从而实施本文所述的一个或更多个进程。在不同实施例中,这些指令可以嵌入在不同的物理或有形计算机可读介质上,该计算机可读介质例如为存储器12或其他存储器,例如可以包括但不限于闪存驱动器、CD-ROM、拇指驱动器、软盘等的计算机可读介质22。
进一步地,指令以功能形式存在于永久性计算机可读介质22上,该计算机可读介质可以包括但不限于闪存驱动器、CD-ROM、拇指驱动器、软盘等。计算机可读介质22选择性地可插入计算设备10和/或从计算设备10可移除,以便允许处理器14存取和/或执行。在一个示例中,计算机可读介质22包括插入或放置在CD/DVD驱动器或与存储器12和/或处理器14关联的其他设备中的光盘或磁盘。在某些实例中,计算机可读介质22可以是不可移除的。
计算设备10可以被包含在各种处理环境中以便如本文所述进行执行。具体地,例如,计算设备10可以包括但不限于个人计算机、嵌入式系统、工作站、服务器、服务器系统、网络计算机、便携计算机(例如iPad)、智能电话、写字板和/或适于执行一个或更多个操作的其他设备中的一个或更多个。应当理解本文所述的计算设备10可以由处理系统和/或设备的一个或更多个组合提供。
一般情况下,处理器14被提供以执行一个或更多个任务。每个任务可以包括多个子任务,并且每个子任务可以进一步包括子任务。以此方式,任务能够分解成可以由处理引擎执行的子任务。本文所用的术语“任务”可以指代任务和子任务之一或两者。进一步地,分层术语(例如父级或主要)可以结合任务一起使用以便指示一个任务与一个或更多个其它任务的关系。如图1所示,在该示例性实施例中,处理器14以软件、固件或硬件的形式提供一个或更多个处理引擎24。一个或更多个处理引擎24包括队列管理器25和任务管理器27。
在该示例性实施例中,队列管理器25被配置为管理任务进入和输出队列26的运动,而任务管理器27被配置为确定由哪种方法执行和/或在线程中处理一次任务,如下面的图2和图3所示。每个处理引擎24包括一个或多个处理核29,每个处理核29具有一个或多个线程31,所述处理核29由软件和/或固件提供。任务管理器27用于将来自队列26的任务和/或子任务分配给一个或更多个线程31,如本文所述用于执行特定的任务。
在该示例性实施例中,任务管理器27被配置为基于核心相关性阈值和/或负载均衡阈值确定任务分配度量。更具体地,任务管理器27可以基于处理器14的当前状况和/或从来自队列26的待处理的一个或更多个下一个任务(如队列管理器25所指示)预测的处理器14的状况来确定一个或更多个任务分配度量。进一步地,任务管理器27可以将基于当前状况和/或预测状况的任务分配度量与核心相关性阈值和/或负载均衡阈值作比较。基于该比较,任务管理器27可以依据核心相关性阈值将下一个任务分配给特定的处理引擎24,或者可选地,依据负载均衡阈值将下一个任务分配给另一个处理引擎24。附加地或可替代地,任务管理器27可以基于下一个任务是否是可再入任务和/或任务能否分成子任务来分配下一个任务。
以此方式,任务管理器27可以依据由队列管理器25管理和处理引擎24执行的任务的类型(例如可再入任务、主要任务)预测性地和/或实时控制分配任务给可用处理引擎24。与已知方法相比,本文所述的核心相关性和/或负载均衡能力进一步使能横跨可用处理引擎24的更有效任务执行,同时在一个或更多个处理引擎24之间提供负载均衡。
图2示出用于执行一个或更多个任务的示例性方法100。在此所述的方法包括由与处理器14关联的至少一个处理引擎执行的至少一个步骤和/或进程。例如,在图2的示例性实施例中,方法100由在一个或更多个计算设备10中提供的与处理器14关联的处理引擎执行。
当在计算设备10中生成任务时,该任务进入队列26中的一个位置。队列26是先入先出(FIFO)队列,从而当线程31变得可用时任务以其进入队列26的顺序被分配给线程31。应当理解,其他类型的队列26(例如后进先出(LIFO)队列或其他非FIFO队列)和/或与一个或更多个线程的交互作用以及多个队列都可用于其他实施例。还应当理解,虽然上述队列26示出在存储器12内,但是该队列可以包括在存储器12中并且可以在处理器14内部或外部。
当方法100开始时,由处理引擎24或处理器14内的其他处理资源确定101与处理器14关联的任务分配度量。该任务分配度量可以指示例如负载均衡、核心相关性或与包括在处理引擎24中的线程内的一个或更多个任务的分配/执行相关的其他度量。在确定101任务分配度量时,处理引擎24可以将该度量与一个或更多个阈值作比较,以便确定与处理器14关联的核心相关性和/或负载均衡是否足以、是否不足、是否最佳或是否非最佳实现处理器14的一个或更多个不同的期望性能。
例如,任务分配度量可以包括对存储器的读取和/或写入数量。阈值可以是对存储器12的读取和/或写入数量,从而当对存储器12的实际读取和/或写入数量超出第一预定数量时,与处理器14关联的核心相关性低于第二阈值。相反,如果对存储器12的实际读取和/或写入数量少于第二预定数量(与第一预定数量相同或不同)时或者如果处理器14的核心空闲时,与处理器14关联的负载均衡低于第一阈值。在其他实施例中,处理器14的各种其他特征和/或性能可以提供指示核心相关性和/或负载均衡的任务分配度量。
例如,如果任务分配度量指示与至少一个处理器14关联的负载均衡低于第一阈值,则任务管理器27将任务分配给线程以便处理。在接收到任务后,线程进行操作以确定102之前分配给多个线程中任一个的任务是否是可再入任务。正如在该示例性实施例中,术语“可再入”任务是指之前已经分配给处理引擎24的线程并且已经经历本文所述方法100的一个或更多个其它步骤的任务。
如图2所示,如果该任务不是可再入任务,则方法100前进以确定104该任务是否可分成多个子任务。该任务可以基于一个或更多个不同标准例如任务内的操作关系、任务内的操作数量、任务内的操作复杂性等是可分的。在某些实施例中,任务的可分性可能进一步涉及所用的线程、处理引擎24和/或处理器14的类型和/或容量。
如果该任务是可分的,则该线程使该任务的多个子任务进入106队列26中。在子任务进入队列26中后,该线程设置108指示该任务已经被分配给线程的状态。此外,该线程使该任务重新进入110队列26中以便后续处理,并且释放116该线程以用于其他任务。如果该线程确定104该任务是不可分的,则该线程将执行112该任务。在执行该任务之后,该线程设置114该任务的状态为完成并且释放116该线程以便由一个或更多个其他任务使用。
进一步地,由于该任务重新进入队列26,该线程自由地完成与重新进入的任务关联或非关联的其他任务。因此,方法100与已知方法的不同之处在于释放线程,而不是允许任务留在线程中直到完成。在一个或更多个实施例中,可以采用方法100来减少、限制和/或消除处理引擎24、处理器14和/或计算设备10内的线程饥饿、死锁和/或活锁。此外,应当理解,由于方法100在步骤116结束,即释放线程,方法100和本文所述的其他方法适于在处理器14内的分配资源内有效地执行各种复杂任务。在至少一个实施例中,处理引擎24包括执行多个任务的单个线程,其中至少一个任务具有多个子任务。
再次参考图2,如果该线程确定102该任务之前已经被分配给线程(例如,由在步骤108中设置的任务状态指示),则该线程确定120是否已经满足停止标准。停止标准例如可以包括与已经完成的任务关联的一个、一些、一定百分比和/或全部子任务,或者与该任务关联的某些任务已经完成。在至少一个实施例中,当任务被分成多个子任务并进入106队列26中时,生成子任务计数,其可以在每次子任务之一完成后递减。在这样的实施例中,停止标准可以包括当子任务计数等于零时,即从属于该任务的多个子任务中的每一个都已完成。在某些示例中,停止标准可以包括当多个子任务中的至少一个子任务完成时。在各种实施例中,可以提供各种不同标准指示已经完成最小数量的处理从而向前移动任务。在其他实施例中,其他标准可用于确定已经达到适当的完成水平和/或任务已经完全被执行。应当理解,停止标准可以基于执行的任务的类型和/或与执行任务的方式关联的一个或更多个参数(例如精度)而改变。
当不满足停止标准时,该线程使该任务重新进入110队列26中以用于后续处理,从而释放线程以用于其他任务。否则,当满足停止标准时,该线程可选地执行122与该任务关联的一个或更多个累积任务。例如,累积任务可以包括但不限于在多个已完成的子任务的结果上操作,例如计算多个结果的总和。在至少一个实施例中,在步骤122没有执行累积任务。在累积任务完成后,如果需要,该线程设置114该任务的状态为完成并且释放116该线程以便由一个或更多个其他任务使用。
在图2中示出的方法100通过将线程从等待其他任务完成的空闲任务释放来提供由处理引擎处理任务。方法100可用于向处理引擎24分配数千、数十万、数百万或更多任务和/或子任务以便比已知方法更快捷且更有效地完成任务。在该示例性实施例中,方法100进一步提供在几个线程之间改善的负载均衡,这是因为线程被释放并被分配给来自队列26的下一个任务,而不管该任务的类型或该任务与其他任务的关系如何。因此,方法100强调在几个处理引擎24之间的增强负载均衡,其可以在一个或更多个实施例中提供对处理引擎24的核心相关性的降低的强调。
此外,在不同方面,由于每个线程处理任务或将任务移入队列26中,本文所述的方法有效地利用线程,使得可以使用更少的线程(例如,单个线程)来执行任务,而这在已知方法中会产生问题(例如,线程饥饿、死锁和/或活锁)。
如果任务分配度量指示与至少一个处理器14关联的核心相关性低于第二阈值,正如在方法100内所确定101,则处理引擎24在节点A处向示例性方法200分岔以便执行一个或更多个任务。该示例性方法200在图3中示出。
类似于方法100,当在计算设备10中生成任务时,该任务进入队列26中的一个位置。队列26是先入先出(FIFO)队列,从而当线程变得可用时任务以其进入队列26的顺序被分配给线程。如上所述,应当理解其他类型的队列26和/或与线程的交互作用可以用在其他实施例中。当处理引擎24的线程变得可用时,任务被分配给该线程以便处理。在图3的示例性实施例中,在接收到该任务后,该线程进行操作以确定202该任务是否可以被分成多个子任务。如上所示,任务可以基于一个或更多个不同标准例如任务内的操作关系、任务内的操作数量等是可分的。
如果该任务是可分的,该线程使该任务的多个子任务进入204队列26中,并且释放212该线程以执行其他任务。
相反,如果该任务是不可分的,则该线程执行206该任务,并且确定208该任务是否是主要任务。正如本文所使用的,术语“主要任务”是指具有至少一个子任务但不是其他任务的子任务的任务。如果确定该任务是主要任务,则该线程确定该任务是完成的,设置210任务的状态为完成,并且释放212该线程以执行其他任务。但是,如果该任务不是主要任务,则该线程确定214是否已经满足父级任务的停止标准。正如上面所指出,停止标准可以是在任务被分成多个子任务时生成的子任务计数值,或者任务或子任务完成的各种其他度量值。
如果不满足父级任务的停止标准,则该线程确定该任务是完成的,设置210任务的状态为完成,并且释放212该线程以执行其他任务。
相反,如果满足父级任务的停止标准,则处理引擎24将父级任务拉入216到线程中并且根据需要执行218与父级任务关联的累积任务。在完成累积任务(如果有的话)后,该线程循环返回以确定208父级任务是否是主要任务。本文所述的进程继续进行直到确定主要任务完成,并且线程被释放212。通过将父级任务拉入到线程中,在执行该任务后,与执行具有多个子任务的任务的已知方法相比,方法200强调了增强的核心相关性,并且可以在一个或更多个实施例中提供对处理引擎24之间的负载均衡的降低的强调。更具体地,子任务或父级任务下面的任务基本由相同的线程执行,从而与已知方法相比,主要任务的相关任务更有可能在相同的处理引擎24中执行。
此外,通过将线程从等待其他任务完成的空闲任务释放212,在满足停止标准之前,方法200能够比已知方法更快捷和更有效地完成任务。以此方式,每个线程处理任务或将任务移入队列26中,使得处理引擎24有效地利用其一个或更多个线程。
这种有效利用保证了可以使用更少的线程来执行任务,而这在已知方法中可能产生问题(例如,线程饥饿、死锁和/或活锁)。以此方式,本文所述的方法可用在具有有限线程数量的特定处理环境中和/或优选效率而又限制和/或消除线程饥饿、死锁和/或活锁情况的其他处理环境中。
应当理解,虽然本文所述的方法100和方法200彼此结合,但是这些方法中的一个或两者和/或其置换可以单独用在各种其他实施例中。例如,在负载均衡是控制设计考虑因素的计算设备中,可以不结合方法200单独采用方法100。在另一个示例中,在核心相关性是控制设计考虑因素的计算设备中,可以不结合方法100单独采用方法200。在此类实施例中,用于确定任务分配度量的步骤可以被修改或忽略。
在正文和附图中,公开一种用于由至少一个处理引擎24执行任务的计算机实施方法,该方法包括:确定与具有至少一个处理引擎24的至少一个处理器14关联的任务分配度量,该至少一个处理引擎24具有一个或更多个线程31;将任务分配给一个或更多个线程中的一个线程;如果任务分配度量指示与至少一个处理器14关联的负载均衡低于第一阈值,则由至少一个处理引擎24确定之前分配给与至少一个处理引擎24关联的所述一个或更多个线程31中任一个线程的任务是否是可再入任务;如果该任务是可再入任务,则由至少一个处理引擎24确定是否满足停止标准;如果不满足停止标准且该任务是可再入任务,则使该任务重新进入与至少一个处理引擎24关联的任务队列26中;如果任务分配度量指示与至少一个处理器14关联的核心29相关性低于第二阈值,则由至少一个处理引擎24确定该任务是否是主要任务;如果该任务不是主要任务,则由至少一个处理引擎24确定是否满足停止标准;以及如果满足停止标准且该任务不是主要任务,则将与该任务关联的父级任务拉入一个或更多个线程31中的所述一个线程中。
在一个变体中,该方法包括,其中如果该任务是可再入任务,则确定是否满足停止标准包括确定从属于该任务的多个子任务中的至少一个是否完成。在另一个变体中,该方法进一步包括在使该任务重新进入任务队列26后释放所述一个或更多个线程31中的所述一个线程。在另一个变体中,该方法进一步包括,如果任务不是可再入任务,则确定该任务是否可分成多个子任务。在一个实例中,该方法进一步包括,如果该任务是可分的,则由至少一个处理引擎24使该任务的多个子任务进入队列26中。在另一个实例中,该方法进一步包括,如果满足停止标准,则由至少一个处理引擎24执行至少一个累积任务。在一个示例中,该方法进一步包括在父级任务被拉入一个或更多个线程31中的所述一个线程中之后执行与父级任务关联的至少一个累积任务。在另一个示例中,该方法包括,其中如果该任务不是主要任务,则确定是否满足停止标准包括确定从属于该任务的多个子任务中的每一个子任务是否完成。在另一个示例中,该方法进一步包括,如果不满足停止标准且该任务不是主要任务,则设置该任务的状态为完成并且在使该任务重新进入任务队列26后释放一个或更多个线程31中的所述一个线程。在一个可替换实施例中,该方法进一步包括在确定该任务是否是主要任务之前确定该任务是否可分成多个子任务。在另一个可替换实施例中,该方法进一步包括,如果该任务是可分的,则使该任务的多个子任务进入任务队列26中。
在一个方面,公开一种用于执行任务的计算设备,该计算设备包括:用于存储任务队列26的存储器12设备;以及与存储器12设备关联并包括具有一个或更多个线程的至少一个处理引擎24的处理器14,所述至少一个处理引擎24包括任务管理器27和被配置为管理所述任务队列26的队列管理器25,所述任务管理器27被配置为确定与所述处理器14关联的任务分配度量并且将任务分配给一个或更多个线程31中的一个线程;其中所述任务管理器27被配置为,如果任务分配度量指示与所述处理器14关联的负载均衡低于第一阈值,则确定之前分配给所述一个或更多个线程31中任一个线程的任务是否是可再入任务,如果该任务是可再入任务,则确定是否满足停止标准,如果不满足停止标准且该任务是可再入任务,则经由所述队列管理器25使该任务重新进入任务队列26;其中所述任务管理器27被配置为,如果任务分配度量指示与所述处理器14关联的核心29相关性低于第二阈值,则确定该任务是否是主要任务,如果该任务不是主要任务,则确定是否满足停止标准,以及如果满足停止标准且该任务不是主要任务,则将与该任务关联的父级任务拉入一个或更多个线程31中的所述一个线程中。
在一个变体中,该计算设备包括,其中所述任务管理器27被进一步配置为如果该任务不是可再入任务,则确定该任务是否可分成多个子任务。在另一个变体中,该计算设备包括,其中所述任务管理器27被进一步配置为如果该任务是可分的,则使该任务的多个子任务经由所述队列管理器25进入队列26中。在另一个变体中,该计算设备包括,其中所述任务管理器27被进一步配置为将多个子任务中的一个分配给一个或更多个线程31中的第二个线程并确定多个子任务中的所述一个子任务是否是可再入任务。在一个实例中,该计算设备包括,其中所述任务管理器27被进一步配置为在满足停止标准时执行至少一个累积任务。在另一个实例中,该计算设备包括,其中所述任务管理器27被进一步配置为在确定该任务是否是主要任务之前确定该任务是否可分成多个子任务。在一个示例中,该计算设备包括,其中所述任务管理器27被进一步配置为如果该任务是可分的,则使该任务的多个子任务经由所述队列管理器25进入队列26中。在另一个示例中,该计算设备包括,其中所述任务管理器27被进一步配置为在父级任务被拉入一个或更多个线程31中的所述一个线程中之后执行与父级任务关联的至少一个累积任务。
此外,应当理解本公开的一个或多个方面在被配置为执行在此描述的功能、方法和/或进程时将通用计算设备转换成专用计算设备。
该书面说明书使用示例来公开各种实施例,其包括最佳模式,以使得本领域技术人员能够实践这些实施例,包括制作和使用任何设备或系统以及执行任何合并的方法。可授予专利权的范围由权利要求定义,并且可以包括本领域技术人员容易想到的其他示例。此类其他示例如果不具有异于权利要求的文本语言的结构要素,或者如果它们包括与权利要求的文本语言无实质差异的等同结构要素,则希望它们在这些权利要求的范围内。
Claims (17)
1.一种用于由至少一个处理引擎执行任务的计算机实施方法,所述方法包括:
确定与具有至少一个处理引擎的至少一个处理器关联的任务分配度量,所述至少一个处理引擎具有多个处理核,每个处理核具有一个或更多个线程,其中所述任务包括多个子任务;
将所述任务分配给所述一个或更多个线程中的一个线程并且根据指示应该利用(a)负载均衡方法或(b)核心相关性方法来执行任务的所述任务分配度量执行任务分配;
如果所述任务分配度量指示与所述至少一个处理器关联的负载均衡低于第一阈值,则执行负载均衡方法,所述负载均衡方法包括:
由所述至少一个处理引擎确定所述任务是否是可再入任务,其中如果所述任务之前已被分配给与所述至少一个处理引擎关联的所述一个或更多个线程中的任意一个线程,则所述任务是可再入任务;
如果所述任务是可再入任务,则由所述至少一个处理引擎确定是否满足停止标准,其中所述停止标准包括确定从属于所述任务的所述子任务中的一些或全部是否已完成;以及
如果不满足所述停止标准且所述任务是可再入任务,则在使所述任务重新进入与所述至少一个处理引擎关联的任务队列中之后,释放所述一个或更多个线程中的所述一个线程;
如果所述任务分配度量指示与所述至少一个处理器关联的核心相关性低于第二阈值,则执行核心相关性方法,其中所述核心相关性方法包括:
由所述至少一个处理引擎确定所述任务是否是主要任务,其中所述主要任务是具有至少一个子任务但不是其他任务的子任务的任务;
如果所述任务不是主要任务,则由所述至少一个处理引擎确定是否满足所述停止标准,其中当与所述任务关联的一个或全部子任务已经完成时,所述停止标准被确定为已经得到满足;以及
如果满足所述停止标准且所述任务不是主要任务,则将所述任务的父级任务分配给所述一个或更多个线程中的同一个线程。
2.根据权利要求1所述的方法,其进一步包括:如果所述任务不是可再入任务,则确定所述任务是否可分成多个子任务。
3.根据权利要求2所述的方法,其进一步包括:如果所述任务是可分的,则由所述至少一个处理引擎使所述任务的所述多个子任务进入所述队列。
4.根据权利要求1所述的方法,其进一步包括:如果满足所述停止标准,则由所述至少一个处理引擎执行至少一个累积任务。
5.根据权利要求1所述的方法,其进一步包括:在所述父级任务被分配给所述一个或更多个线程的所述一个线程后,执行与所述父级任务关联的至少一个累积任务。
6.根据权利要求1所述的方法,其中如果所述任务不是主要任务,则确定是否满足所述停止标准包括:确定从属于所述任务的多个子任务中的每个是否完成。
7.根据权利要求1所述的方法,其进一步包括:如果不满足所述停止标准且任务不是主要任务,则将所述任务的状态设置为完成并且在使所述任务重新进入任务队列后,释放所述一个或更多个线程中的所述一个线程。
8.根据权利要求1所述的方法,其进一步包括:在确定所述任务是否是主要任务之前,确定所述任务是否可分成多个子任务。
9.根据权利要求8所述的方法,其进一步包括:如果所述任务是可分的,则使所述任务的所述多个子任务进入任务队列。
10.一种用于执行任务的计算设备,所述计算设备包括:
用于存储任务队列的存储器设备,其中所述任务包括多个子任务;以及
与所述存储器设备关联并且包括至少一个处理引擎的处理器,其中所述处理引擎具有多个处理核,每个处理核具有一个或更多个线程,所述至少一个处理引擎包括任务管理器和被配置为管理所述任务队列的队列管理器,所述任务管理器被配置为确定与所述处理器关联的任务分配度量并将所述任务分配到所述一个或更多个线程中的一个线程并且根据指示应该利用(a)负载均衡方法或(b)核心相关性方法来执行任务的所述任务分配度量执行任务分配;
其中如果所述任务分配度量指示与所述处理器关联的负载均衡低于第一阈值,则所述任务管理器执行负载均衡方法,并且其中所述负载均衡确定所述任务是否是可再入任务,其中如果所述任务之前已被分配给所述一个或更多个线程中的任意一个线程,则所述任务是可再入任务,如果所述任务是可再入任务,则确定是否满足停止标准,其中所述停止标准包括确定从属于所述任务的所述子任务中的一些或全部是否已完成;以及如果不满足所述停止标准且所述任务是可再入任务,则在经由所述队列管理器使所述任务重新进入任务队列之后,释放所述一个或更多个线程中的所述一个线程;
其中如果所述任务分配度量指示与所述处理器关联的核心相关性低于第二阈值,则所述任务管理器执行核心相关性方法,其中所述核心相关性方法确定所述任务是否是主要任务,其中所述主要任务是具有至少一个子任务但不是其他任务的子任务的任务,如果所述任务不是主要任务,则确定是否满足所述停止标准,其中当与所述任务关联的一个或全部子任务已经完成时,所述停止标准被确定为已经得到满足,以及如果满足所述停止标准且所述任务不是主要任务,则将与所述任务关联的父级任务分配给所述一个或更多个线程中的同一个线程。
11.根据权利要求10所述的计算设备,其中所述任务管理器被进一步配置为,如果所述任务不是可再入任务,则确定所述任务是否可分成多个子任务。
12.根据权利要求11所述的计算设备,其中所述至少一个任务管理器被进一步配置为,如果所述任务是可分的,则经由所述队列管理器使所述任务的所述多个子任务进入所述队列中。
13.根据权利要求12所述的计算设备,其中所述任务管理器被进一步配置为将所述多个子任务中的一个子任务分配到所述一个或更多个线程中的第二个线程并确定所述多个子任务中的所述一个子任务是否是可再入任务。
14.根据权利要求10所述的计算设备,其中所述任务管理器被进一步配置为当满足所述停止标准时执行至少一个累积任务。
15.根据权利要求10所述的计算设备,其中所述任务管理器被进一步配置为在确定所述任务是否是主要任务之前确定所述任务是否可分成多个子任务。
16.根据权利要求15所述的计算设备,其中所述任务管理器被进一步配置为,如果所述任务是可分的,则经由所述队列管理器使所述任务的所述多个子任务进入所述队列。
17.根据权利要求10所述的计算设备,其中所述任务管理器被进一步配置为在所述父级任务被分配给所述一个或更多个线程中的所述同一个线程之后,执行与所述父级任务关联的至少一个累积任务。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/344,474 | 2012-01-05 | ||
US13/344,474 US8621479B2 (en) | 2012-01-05 | 2012-01-05 | System and method for selecting task allocation method based on load balancing and core affinity metrics |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103279388A CN103279388A (zh) | 2013-09-04 |
CN103279388B true CN103279388B (zh) | 2016-04-06 |
Family
ID=47754263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310002305.1A Active CN103279388B (zh) | 2012-01-05 | 2013-01-05 | 用于执行一个或更多个任务的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8621479B2 (zh) |
EP (1) | EP2613257B1 (zh) |
JP (1) | JP5718378B2 (zh) |
CN (1) | CN103279388B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130332910A1 (en) * | 2012-05-22 | 2013-12-12 | Nec Laboratories America, Inc. | Dynamic livelock analysis of multi-threaded programs |
CN103593240B (zh) * | 2013-11-08 | 2016-11-23 | 华为技术有限公司 | 一种优化的调度方法及管理设备 |
JP6532385B2 (ja) * | 2015-11-02 | 2019-06-19 | キヤノン株式会社 | 情報処理システムおよびその制御方法、並びにプログラム |
CN105893147A (zh) * | 2016-03-29 | 2016-08-24 | 乐视控股(北京)有限公司 | 多任务队列管理方法、设备及系统 |
DE102016222375A1 (de) * | 2016-11-15 | 2018-05-17 | Robert Bosch Gmbh | Vorrichtung und Verfahren zum Bearbeiten von Aufträgen |
US20190102274A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Utilization Metrics for Processing Engines |
CN108920258A (zh) * | 2018-06-26 | 2018-11-30 | 北京中电普华信息技术有限公司 | 一种事务处理方法及应用服务中间件 |
JP7197794B2 (ja) * | 2019-03-28 | 2022-12-28 | 富士通株式会社 | 情報処理装置および実行制御プログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923491A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
CN102184125A (zh) * | 2011-06-02 | 2011-09-14 | 首都师范大学 | 异构多核环境下基于程序行为在线分析的负载均衡方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5872972A (en) | 1996-07-05 | 1999-02-16 | Ncr Corporation | Method for load balancing a per processor affinity scheduler wherein processes are strictly affinitized to processors and the migration of a process from an affinitized processor to another available processor is limited |
US20020099759A1 (en) | 2001-01-24 | 2002-07-25 | Gootherts Paul David | Load balancer with starvation avoidance |
US20030037091A1 (en) * | 2001-08-09 | 2003-02-20 | Kozo Nishimura | Task scheduling device |
US7167916B2 (en) | 2002-08-30 | 2007-01-23 | Unisys Corporation | Computer OS dispatcher operation with virtual switching queue and IP queues |
US7441101B1 (en) | 2003-12-10 | 2008-10-21 | Cisco Technology, Inc. | Thread-aware instruction fetching in a multithreaded embedded processor |
US7793299B2 (en) * | 2005-08-30 | 2010-09-07 | International Business Machines Corporation | System and method for scheduling tasks for execution |
US8296727B2 (en) * | 2005-10-14 | 2012-10-23 | Oracle Corporation | Sub-task mechanism for development of task-based user interfaces |
US7941805B2 (en) | 2006-08-15 | 2011-05-10 | International Business Machines Corporation | Affinity dispatching load balancer with precise CPU consumption data |
US8356284B2 (en) | 2006-12-28 | 2013-01-15 | International Business Machines Corporation | Threading model analysis system and method |
US7895415B2 (en) | 2007-02-14 | 2011-02-22 | Intel Corporation | Cache sharing based thread control |
US8156495B2 (en) | 2008-01-17 | 2012-04-10 | Oracle America, Inc. | Scheduling threads on processors |
US8407674B2 (en) | 2008-02-08 | 2013-03-26 | International Business Machines Corporation | Detecting thread starvation |
US8239699B2 (en) * | 2009-06-26 | 2012-08-07 | Intel Corporation | Method and apparatus for performing energy-efficient network packet processing in a multi processor core system |
US8381216B2 (en) | 2010-03-05 | 2013-02-19 | Microsoft Corporation | Dynamic thread pool management |
-
2012
- 2012-01-05 US US13/344,474 patent/US8621479B2/en active Active
- 2012-12-20 EP EP12198684.8A patent/EP2613257B1/en active Active
-
2013
- 2013-01-04 JP JP2013000082A patent/JP5718378B2/ja active Active
- 2013-01-05 CN CN201310002305.1A patent/CN103279388B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923491A (zh) * | 2010-08-11 | 2010-12-22 | 上海交通大学 | 多核环境下线程组地址空间调度和切换线程的方法 |
CN102184125A (zh) * | 2011-06-02 | 2011-09-14 | 首都师范大学 | 异构多核环境下基于程序行为在线分析的负载均衡方法 |
Also Published As
Publication number | Publication date |
---|---|
US8621479B2 (en) | 2013-12-31 |
JP5718378B2 (ja) | 2015-05-13 |
EP2613257B1 (en) | 2020-02-19 |
US20130179891A1 (en) | 2013-07-11 |
CN103279388A (zh) | 2013-09-04 |
EP2613257A1 (en) | 2013-07-10 |
JP2013140593A (ja) | 2013-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103279388B (zh) | 用于执行一个或更多个任务的系统和方法 | |
US11550627B2 (en) | Hardware accelerated dynamic work creation on a graphics processing unit | |
JP6241300B2 (ja) | ジョブスケジューリング装置、ジョブスケジューリング方法、およびジョブスケジューリングプログラム | |
JP6294586B2 (ja) | 命令スレッドを組み合わせた実行の管理システムおよび管理方法 | |
JP5650952B2 (ja) | マルチコア/スレッドのワークグループ計算スケジューラ | |
US10552213B2 (en) | Thread pool and task queuing method and system | |
CN101960428B (zh) | 路由工作负载计算方法及系统 | |
KR101640848B1 (ko) | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 | |
CN106569891B (zh) | 一种存储系统中任务调度执行的方法和装置 | |
CN103019810A (zh) | 具有不同执行优先级的计算任务的调度和管理 | |
US20140137121A1 (en) | Job management system and job control method | |
CN103942033A (zh) | 基于推测度量将资源分配给线程 | |
CN102870096A (zh) | 子缓冲器对象 | |
US10067793B2 (en) | Data processing method and apparatus for executing task code using reservation instruction and release instruction | |
JP2011186701A (ja) | リソース割当装置、リソース割当方法、およびリソース割当プログラム | |
CN105378668A (zh) | 多处理器系统中的操作系统管理的中断引导 | |
JP2017041191A (ja) | リソース管理装置、リソース管理プログラム、及びリソース管理方法 | |
CN103207810A (zh) | 计算任务状态封装 | |
CN111177984B (zh) | 电子设计自动化中异构计算单元的资源利用 | |
CN103902369A (zh) | 陷阱处理期间的协作线程阵列的粒度上下文切换 | |
CN112783652B (zh) | 当前任务的运行状态获取方法、装置、设备及存储介质 | |
US8719829B2 (en) | Synchronizing processes in a computing resource by locking a resource for a process at a predicted time slot | |
US9612907B2 (en) | Power efficient distribution and execution of tasks upon hardware fault with multiple processors | |
Zhou et al. | An out-of-core eigensolver on SSD-equipped clusters | |
CN103703449A (zh) | 存储器合并的计算机实现方法、系统以及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |