CN115904644A - 任务调度方法、电子设备和计算机程序产品 - Google Patents
任务调度方法、电子设备和计算机程序产品 Download PDFInfo
- Publication number
- CN115904644A CN115904644A CN202111161588.5A CN202111161588A CN115904644A CN 115904644 A CN115904644 A CN 115904644A CN 202111161588 A CN202111161588 A CN 202111161588A CN 115904644 A CN115904644 A CN 115904644A
- Authority
- CN
- China
- Prior art keywords
- task
- task scheduling
- token
- computing resource
- computing
- 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
Links
Images
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
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
本公开的实施例提供了一种任务调度方法、电子设备和程序产品。该方法可以包括如果确定存在空闲的任务调度令牌,使计算系统中的第一计算资源获取所述空闲的任务调度令牌作为第一任务调度令牌,以执行任务队列中的第一任务。该方法还可以包括如果确定优先级高于所述第一任务的第二任务待被执行,使所述第一计算资源丢弃所述第一任务调度令牌,以从执行所述第一任务切换至执行所述第二任务。此外,该方法可以包括如果确定所述第二任务执行结束,使所述第一计算资源取回所述第一任务调度令牌,以继续执行所述第一任务。本公开的实施例能够通过创建任务调度令牌的方式优化任务调度的效率,提升计算系统的性能。
Description
技术领域
本公开的实施例涉及计算机领域,并且更具体地,涉及任务调度方法、电子设备和计算机程序产品。
背景技术
计算系统中的任务调度器的作用很重要,其负责调度来自大多数关键组件的异步任务。通常,计算系统利用内核定制来实现任务调度,最大限度地利用系统中的计算资源,从而实现良好的性能,例如,去重性能。随着计算系统的发展,越来越多的任务调度器不断涌现,它们不依赖于任何内核定制并且表现出更好的性能。然而,在计算资源执行任务期间,可能会遇到诸如睡眠、互斥(mutex)、锁、读/写等操作来阻塞该计算资源。一旦计算资源被阻塞,另一等待线程执行的任务就必须等待,这会导致计算系统的性能变差。
发明内容
本公开的实施例提供了用于管理计算资源的方案。
在本公开的第一方面中,提供了一种任务调度方法。该方法可以包括如果确定存在空闲的任务调度令牌,使计算系统中的第一计算资源获取所述空闲的任务调度令牌作为第一任务调度令牌,以执行任务队列中的第一任务,所述任务队列中的任务分别基于预先创建的任务调度令牌集合中的任务调度令牌而被执行。该方法还可以包括如果确定优先级高于所述第一任务的第二任务待被执行,使所述第一计算资源丢弃所述第一任务调度令牌,以从执行所述第一任务切换至执行所述第二任务。此外,该方法可以包括如果确定所述第二任务执行结束,使所述第一计算资源取回所述第一任务调度令牌,以继续执行所述第一任务。
在本公开的第二方面中,提供了一种电子设备,包括处理器;以及与处理器耦合的存储器,存储器具有存储于其中的指令,指令在被处理器执行时使电子设备执行动作,动作包括:如果确定存在空闲的任务调度令牌,使计算系统中的第一计算资源获取所述空闲的任务调度令牌作为第一任务调度令牌,以执行任务队列中的第一任务,所述任务队列中的任务分别基于预先创建的任务调度令牌集合中的任务调度令牌而被执行;如果确定优先级高于所述第一任务的第二任务待被执行,使所述第一计算资源丢弃所述第一任务调度令牌,以从执行所述第一任务切换至执行所述第二任务;以及如果确定所述第二任务执行结束,使所述第一计算资源取回所述第一任务调度令牌,以继续执行所述第一任务。
在本公开的第三方面中,提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,机器可执行指令在被执行时使机器执行根据第一方面的方法的任意步骤。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同或相似的参考标号通常代表相同或相似的部件。在附图中:
图1示出了根据本公开的实施例的示例环境的示意图;
图2示出了根据本公开的实施例的用于任务调度的任务状态的示意图;
图3示出了根据本公开的实施例的用于任务调度的过程的流程图;
图4示出了根据本公开的实施例的用于任务调度的线程状态的示意图;以及
图5示出了可以用来实施本公开的实施例的示例设备的框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“一组示例实施例”。术语“另一实施例”表示“一组另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所讨论的,在诸如线程的计算资源执行任务序列中的某个任务期间,可能会遇到诸如睡眠、互斥(mutex)、锁、读/写等的操作,使得该计算资源不得不暂停正在处理的任务,并优先执行上述操作。一旦该线程被阻塞,其他等待线程执行的任务就必须等待,由此劣化了计算系统的性能。在传统的调度设计中,系统内核中的调度系统被配置为检查所有线程的状态并收集各个线程的状态(例如,可用、不可用、被阻塞等)。如果没有足够的可用线程,系统内核就会唤醒用户可编程的空间中的回调线程,以创建新的线程来执行被阻塞任务。
该方案的缺点在于,与系统内核关联的用户定制过程兼容性较差,并且在某些阻塞和争用情形出现较多的情况时,传统的任务调度方式并未展示良好的性能。
为了至少部分地解决上述缺点,本公开的实施例提供了一种新颖的任务调度方案。该方案能够在不依赖于系统内核的前提下优化任务调度的效率,提升计算系统的性能。也就是说,通过重新设计系统调度的流程,尤其是为诸如线程的计算资源创建令牌机制,可以更准确、细致地获知各计算资源的当前状态,从而在符合条件时充分利用处于暂停、挂起等状态的计算资源。由此,即使仍然存在任务阻塞的情况,计算资源也可以得到充分利用,并且任务队列中的任务也可以被及时地执行。
图1示出了根据本公开的实施例的示例环境100的示意图。在该示例环境100中,根据本公开实施例的设备和/或过程可以被实施。如图1所示,示例环境100可以包括计算资源队列110、任务调度器120以及任务队列130。
在某些实施例中,计算资源队列110可以包含如图1所示的计算资源111、112、…、N,这些计算资源可以是线程。应理解,线程可以被创建以用于被有序地调度,从而执行相应任务。
在某些实施例中,任务调度器120可以是任何具有调度能力的设备或模块。作为非限制性示例,任务调度器120可以被设置在任意类型的固定计算设备、移动计算设备或便携式计算设备,包括但不限于台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、智能手机等。任务调度器120的全部或一部分还可以分布在云端。
在某些实施例中,任务队列130可以包含如图1所示的任务131、132、…、M。为了更清晰地示出任务在整个执行周期中可能出现的各种状态,先参照图2描述各种状态之间的转换。图2示出了根据本公开的实施例的用于任务调度的任务状态200的示意图。
如图2所示,任务状态200包含至少五个状态:任务初始化状态201、任务执行状态202、任务完成状态203、任务系统调用状态204、和任务未决(pending)状态205。
对于任务初始化状态201,如上所述,计算资源队列110中的诸如线程的计算资源负责从任务队列130中获取异步任务,诸如任务131。一旦该任务被计算资源获取,该任务就进入任务初始化状态201。在该状态下,计算资源可以为该任务分配一个任务结构、一个任务运行所在的独立堆栈、一个独立的调度器上下文(包括一些任务执行寄存器,如EBP、ESP、EIP等,以及其他有助于链接或统计的数据结构)。之后,需要设置任务上下文(寄存器)来为任务准备函数入口和堆栈。
接下来,进入任务执行状态202。此时,我们需要一个任务上下文交换(taskcontext swap),用于将当前线程的上下文(堆栈、EIP等)保存至线程的数据结构中,并将任务的上下文移动至CPU的寄存器中。以此方式,可以确保任务执行中的所有本地数据都保存在任务堆栈中,并使任务可以跨线程迁移。
如果没有发生阻塞,该任务可以直接被执行完成,即,任务完成状态203。此时,任务调度器120可以基于任务执行的时间等参数来评估并报告任务成本,并且执行该任务的线程可以被释放。
应理解,在任务被执行过程中,可能会遇到一些可能阻塞线程运行的函数调用,如pthread_mutex_lock、pthread_cond_wait、sleep、IO读/写等。在这些情况下,任务可以被设置为进入任务系统调用状态204。在系统调用的任务被实际执行之前,正在执行任务的线程可以被设置为放弃其获得的令牌,该令牌可以是该线程占用CPU线程,以执行相应任务。令牌可以是根据用户需求和系统性能预先创建的。
在系统调用的任务完成后,线程返回并尝试重新取回它丢弃的令牌,或者该线程还可以尝试获取其他空闲的令牌。如果两者都失败,则该线程没有令牌,故仍然无法执行该任务。由此,该任务进入任务未决状态205。未决的任务将与当前线程交换上下文,以返回调度器,并将其当前上下文保存到该任务的数据结构中。接下来,调度器将未决的异步任务排入未决任务队列。一旦一个线程完成了分配给它的任务,该线程就能够从未决任务队列中获取未决的任务,并恢复其上下文,然后继续进入任务执行状态202,进而进入任务完成状态203。
在描述了任务的各个状态之后,下文将结合图3详细描述根据本公开实施例的任务调度的过程。为了便于理解,在下文描述中提及的具体数据均是示例性的,并不用于限定本公开的保护范围。可以理解,以下描述的实施例还可以包括未示出的附加动作和/或可以省略所示出的动作,本公开的范围在此方面不受限制。
图3示出了根据本公开的实施例的用于任务调度的过程300的流程图。在某些实施例中,过程300可以在图1中的任务调度器120中实施。现参照图1描述根据本公开实施例的用于任务调度的过程300。为了便于理解,在下文描述中提及的具体实例均是示例性的,并不用于限定本公开的保护范围。
如图3所示,在302,任务调度器120在为线程分配任务前先确定是否存在空闲的任务调度令牌。应理解,任务调度令牌是由用户创建的、可以使计算系统中的计算资源能够执行任务队列中的任务的标签。换言之,只有被分配了任务调度令牌的线程才是CPU线程。如果存在空闲的任务调度令牌,则进入304。
在304,任务调度器120可以使计算系统中的第一计算资源(例如,图1中的计算资源111)获取空闲的任务调度令牌作为第一任务调度令牌,以执行任务队列130中的第一任务(例如,图1中的任务131),任务队列130中的任务分别基于预先创建的任务调度令牌集合中的任务调度令牌而被执行。应理解,任务调度令牌集合中的任务调度令牌的数目是根据用户需求和/或系统性能预先确定的。
在某些实施例中,如果确定任务队列130中不存在待执行的第一任务131或其他任务,则任务调度器120可以使第一计算资源暂停。应理解,任务调度器120可以会不断监测任务队列130,当任务队列130中存在待执行的第一任务131或其他任务时,任务调度器120可以重新启用第一计算资源,以便执行相应任务。由于第一计算资源已经如前所述获得了任务调度令牌,故其无需等待,即可迅速执行任务,从而提升了任务调度的效率。
在某些实施例中,如果确定不存在空闲的任务调度令牌,则任务调度器120可以使第一计算资源挂起,直至存在空闲的任务调度令牌。应理解,线程的挂起(suspend)与暂停(spinning)略有不同。当获取了任务调度令牌的线程被停用(比如没任务)时,可以称为该线程被暂停,而当没有获取到任务调度令牌的线程被停用时,可以称为该线程被挂起。
在上述过程中,诸如睡眠、互斥(mutex)、锁、读/写等的优先级较高的操作任务可能会随时出现,因此,在306,任务调度器120需要随时确定是否存在比第一任务的优先级更高的第二任务。如果存在优先级更高的第二任务,则进入308。
在308,任务调度器120可以使第一计算资源丢弃第一任务调度令牌,以从执行第一任务切换至执行第二任务(例如,图1的任务队列130中的任务132)。在某些实施例中,为了合理使用任务调度令牌,任务调度器120可以重新启用计算系统中的被挂起的第二计算资源,以取回被丢弃的任务调度令牌。
备选地或附加,代替重新启用计算资源的方式,还可以创建附加的计算资源。作为示例,任务调度器120可以先检查计算系统中的计算资源的总数目是否小于一阈值数目。如果确定计算系统中的计算资源的总数目小于该阈值数目,则任务调度器120可以创建第三计算资源,以取回被丢弃的任务调度令牌。由此,即使在被挂起的计算资源不足时,也可以通过创建新的计算资源来继续任务处理。
然而,应理解,被创建的计算资源的总数目是有限的。因此,该阈值数目可以被设置为小于或等于可用于执行优先级高于第一任务的第三任务(例如,上述系统调度任务)的计算资源的最大数目与任务调度令牌集合中的令牌数目之和。作为示例,所需的诸如线程的计算资源的总数目可以按照如下等式确定:
所需线程的总数目=Nmst+Ntt+裕度值。
其中Nmst表示系统调度线程的最大数目,Ntt表示任务调度令牌的最大数目,并且裕度值是由用户确定的任意正整数。
应理解,为了保证系统性能,暂停的计算资源的数目是有限的。因此,需要任务调度器120确定计算系统中的暂停的计算资源的总数目,并且在确定该总数目大于一阈值数目时,使第一计算资源挂起,直至暂停的计算资源的总数目小于或等于该阈值数目。因此,该阈值数目可以被设置为小于任务调度令牌集合中的令牌数目。作为示例,所需的诸如线程的计算资源的总数目可以按照如下等式确定:
暂停线程的总数目=k*Ntt。
其中k<1并且k>0。
在310,任务调度器120可以在确定上述第二任务执行结束的情况下,使第一计算资源取回第一任务调度令牌,以继续执行第一任务。在某些实施例中,如果确定第一计算资源未取回任务调度令牌,则任务调度器120可以使第一计算资源从任务调度令牌集合中获取第二任务调度令牌,以继续执行第一任务。该第二任务调度令牌可以是令牌集合中不同于第一任务调度令牌的任一任务调度令牌。
应理解,如果任务调度令牌集合中不存在空闲的其他任务调度令牌,则任务调度器120可以使第一计算资源挂起,直至存在空闲的任务调度令牌。
在某些实施例中,为了有效评估任务成本,任务调度器120可以基于第一计算资源被启用的开始时间、结束时间以及第一任务被暂停的时间,确定执行第一任务所需的时间长度。由于每个任务在被执行之后均可以评估该任务的成本,故可以基于该成本确定计算资源集合中的哪个计算资源可以优先处理接下来的任务,也就是说,任务调度器120可以基于每个任务的成本确定或修改每个计算资源执行下一个任务的顺序。以此方式,可以合理、均衡的使用每个计算资源。
在某些实施例中,上文所述的线程或计算资源是操作系统线程,并且上文所述的任务调度令牌是CPU线程。
此外,应理解,优先级较高的任务通常是指诸如中断(ISR)的任务。此外,对于普通的异步任务,未决的任务具有更高的优先级,因为未决的任务通常是被诸如中断的系统调用任务打断的任务。
为了更详细的解释图3中的任务调度的具体过程,现结合图4进一步描述根据本公开的实施例的用于任务调度的线程状态400的示意图。如图4所示,线程状态400至少可以包含线程初始化状态401、线程令牌绑定状态402、线程工作状态403、线程系统调用状态404、线程挂起状态405、以及线程暂停状态406。
如图4所示,当作为计算资源的线程被创建后,进入线程初始化状态401。在该状态下,线程将设置其关联属性并将其自身添加到计算资源队列110中。在对该线程的数据结构进行初始化之后,可以尝试从任务调度令牌集合中寻找一个任务调度令牌。如果能找到该任务调度令牌,则该线程进入线程令牌绑定状态402。
在线程令牌绑定状态402,线程就获得了全局任务运行队列中的异步任务的令牌。如果任务队列中包含待处理的任务,该线程就可以进入线程工作状态403,从而可以使该线程执行该任务。应理解,当该任务完成后,该线程可以重新进入线程令牌绑定状态402,并继续从任务队列中获取待处理的任务并且进入线程工作状态403。
如上所述,在执行任务的过程中,如果接收到诸如系统调用任务的优先级更高的任务,则线程进入线程系统调用状态404。在该状态下,线程将丢弃任务调度令牌,然后尝试通知线程队列中的另一线程成为获取该任务调度令牌,以便持续执行任务队列中的任务。作为示例,可以重新启用被挂起的线程,或者创建一个新的线程。此外,当系统调用任务完成后,该线程首先可以尝试重新获取其丢弃的任务调度令牌。如果失败,则可以遍历调度器中的所有任务调度令牌,以尝试获得一个空闲CPU线程。如果全部失败,则需要将其当前任务上下文转移至线程上下文,从而将当前任务排入挂起任务队列,然后进入线程挂起状态405。此外,当线程初始化时发现没有可用的任务调度令牌时,线程可以进入线程挂起状态405。相应地,如果后续发现可用的任务调度令牌,则挂起状态的线程可以被唤醒或重新启用,从而回到线程初始化状态401。
此外,当线程没有从任务队列中获取到待执行的任务时,线程可以被设置为进入线程暂停状态406。线程暂停状态406即线程在获取到任务调度令牌但没有找到待执行的任务的状态。当后续确定任务队列中存在待执行的任务时,被暂定的线程将被唤醒并尝试直接从任务队列中获取任务。此时,该线程不需要再次获取任务调度令牌,因此相比于挂起的线程,暂停的线程能够更快速的执行任务。应理解,暂停的线程的数目越多,系统的任务调度的性能就会越好。然而,过多的暂停线程可能会导致线程之间的严重争用,因此需要如前所述确定暂停线程的总数目。如果暂停线程的数目过多,就需要将多余的暂停线程转换为线程挂起状态405。
如上所述,通过创建任务调度令牌,本公开增加了更多了线程状态,从而可以更为精细地感测和控制每个线程,从而提升任务调度的效率。
图5示出了可以用来实现本公开的实施例的示例电子设备500的示意性框图。例如,电子设备500可被用于实现图1中所示的任务调度器120。如图所示,电子设备500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的计算机程序指令或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序指令,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元501执行上文所描述的各个方法和处理,例如过程300。例如,在一些实施例中,上文所描述的各个方法和处理可以被实现为计算机软件程序或计算机程序产品,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由CPU 501执行时,可以执行上文描述的任何过程中的一个或多个步骤。备选地,在其他实施例中,CPU 501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行诸如过程300的过程。
本公开可以是方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、任意的非暂时性存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施方式。
Claims (15)
1.一种任务调度方法,包括:
如果确定存在空闲的任务调度令牌,使计算系统中的第一计算资源获取所述空闲的任务调度令牌作为第一任务调度令牌,以执行任务队列中的第一任务,所述任务队列中的任务分别基于预先创建的任务调度令牌集合中的任务调度令牌而被执行;
如果确定优先级高于所述第一任务的第二任务待被执行,使所述第一计算资源丢弃所述第一任务调度令牌,以从执行所述第一任务切换至执行所述第二任务;以及
如果确定所述第二任务执行结束,使所述第一计算资源取回所述第一任务调度令牌,以继续执行所述第一任务。
2.根据权利要求1所述的方法,还包括:
如果确定不存在空闲的任务调度令牌,使所述第一计算资源挂起,直至存在空闲的任务调度令牌。
3.根据权利要求1所述的方法,其中获取所述空闲的任务调度令牌以执行所述第一任务包括:
如果确定所述任务队列中不存在待执行的所述第一任务,使所述第一计算资源暂停,直至所述任务队列中存在待执行的所述第一任务。
4.根据权利要求1所述的方法,还包括:
确定所述计算系统中的暂停的计算资源的总数目;以及
如果确定所述暂停的计算资源的总数目大于第一阈值数目,使所述第一计算资源挂起,直至暂停的计算资源的总数目小于或等于所述第一阈值数目,
其中所述第一阈值数目小于所述任务调度令牌集合中的令牌数目。
5.根据权利要求1所述的方法,还包括:
如果确定所述第一计算资源未取回所述任务调度令牌,使所述第一计算资源从所述任务调度令牌集合中获取空闲的第二任务调度令牌,以继续执行所述第一任务,
其中如果所述任务调度令牌集合中不存在空闲的所述第二任务调度令牌,使所述第一计算资源挂起,直至存在空闲的任务调度令牌。
6.根据权利要求1所述的方法,其中使所述第一计算资源丢弃所述任务调度令牌包括:
重新启用所述计算系统中的被挂起的第二计算资源,以取回被丢弃的所述任务调度令牌;或者
如果确定所述计算系统中的计算资源的总数目小于第二阈值数目,创建第三计算资源,以取回被丢弃的所述任务调度令牌,
其中所述第二阈值数目小于或等于可用于执行优先级高于所述第一任务的第三任务的计算资源的最大数目与所述任务调度令牌集合中的令牌数目之和。
7.根据权利要求1所述的方法,还包括:
基于所述第一计算资源被启用的开始时间、结束时间以及所述第一任务被暂停的时间,确定执行所述第一任务所需的时间长度,以更新所述第一计算资源的优先级。
8.一种电子设备,包括:
处理器;以及
与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述电子设备执行动作,所述动作包括:
如果确定存在空闲的任务调度令牌,使计算系统中的第一计算资源获取所述空闲的任务调度令牌作为第一任务调度令牌,以执行任务队列中的第一任务,所述任务队列中的任务分别基于预先创建的任务调度令牌集合中的任务调度令牌而被执行;
如果确定优先级高于所述第一任务的第二任务待被执行,使所述第一计算资源丢弃所述第一任务调度令牌,以从执行所述第一任务切换至执行所述第二任务;以及
如果确定所述第二任务执行结束,使所述第一计算资源取回所述第一任务调度令牌,以继续执行所述第一任务。
9.根据权利要求8所述的电子设备,所述动作还包括:
如果确定不存在空闲的任务调度令牌,使所述第一计算资源挂起,直至存在空闲的任务调度令牌。
10.根据权利要求8所述的电子设备,其中获取所述空闲的任务调度令牌以执行所述第一任务包括:
如果确定所述任务队列中不存在待执行的所述第一任务,使所述第一计算资源暂停,直至所述任务队列中存在待执行的所述第一任务。
11.根据权利要求8所述的电子设备,所述动作还包括:
确定所述计算系统中的暂停的计算资源的总数目;以及
如果确定所述暂停的计算资源的总数目大于第一阈值数目,使所述第一计算资源挂起,直至暂停的计算资源的总数目小于或等于所述第一阈值数目,
其中所述第一阈值数目小于所述任务调度令牌集合中的令牌数目。
12.根据权利要求8所述的电子设备,所述动作还包括:
如果确定所述第一计算资源未取回所述任务调度令牌,使所述第一计算资源从所述任务调度令牌集合中获取空闲的第二任务调度令牌,以继续执行所述第一任务,
其中如果所述任务调度令牌集合中不存在空闲的所述第二任务调度令牌,使所述第一计算资源挂起,直至存在空闲的任务调度令牌。
13.根据权利要求8所述的电子设备,其中使所述第一计算资源丢弃所述任务调度令牌包括:
重新启用所述计算系统中的被挂起的第二计算资源,以取回被丢弃的所述任务调度令牌;或者
如果确定所述计算系统中的计算资源的总数目小于第二阈值数目,创建第三计算资源,以取回被丢弃的所述任务调度令牌,
其中所述第二阈值数目小于或等于可用于执行优先级高于所述第一任务的第三任务的计算资源的最大数目与所述任务调度令牌集合中的令牌数目之和。
14.根据权利要求8所述的电子设备,所述动作还包括:
基于所述第一计算资源被启用的开始时间、结束时间以及所述第一任务被暂停的时间,确定执行所述第一任务所需的时间长度,以更新所述第一计算资源的优先级。
15.一种计算机程序产品,所述计算机程序产品被有形地存储在计算机可读介质上并且包括机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1至7中的任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111161588.5A CN115904644A (zh) | 2021-09-30 | 2021-09-30 | 任务调度方法、电子设备和计算机程序产品 |
US17/530,997 US20230096015A1 (en) | 2021-09-30 | 2021-11-19 | Method, electronic deviice, and computer program product for task scheduling |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111161588.5A CN115904644A (zh) | 2021-09-30 | 2021-09-30 | 任务调度方法、电子设备和计算机程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904644A true CN115904644A (zh) | 2023-04-04 |
Family
ID=85718856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111161588.5A Pending CN115904644A (zh) | 2021-09-30 | 2021-09-30 | 任务调度方法、电子设备和计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230096015A1 (zh) |
CN (1) | CN115904644A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117376373B (zh) * | 2023-12-07 | 2024-02-23 | 新华三技术有限公司 | 元数据操作请求的处理方法、装置、设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070156928A1 (en) * | 2005-12-30 | 2007-07-05 | Makaram Raghunandan | Token passing scheme for multithreaded multiprocessor system |
US8286173B2 (en) * | 2007-03-23 | 2012-10-09 | Oracle America, Inc. | Methods and apparatus for window-based fair priority scheduling |
US9183109B2 (en) * | 2010-05-25 | 2015-11-10 | Intel Corporation | Method and system for analyzing the performance of multi-threaded applications |
US20130061233A1 (en) * | 2011-09-02 | 2013-03-07 | Exludus Inc. | Efficient method for the scheduling of work loads in a multi-core computing environment |
US9477526B2 (en) * | 2013-09-04 | 2016-10-25 | Nvidia Corporation | Cache utilization and eviction based on allocated priority tokens |
US11099890B2 (en) * | 2016-12-13 | 2021-08-24 | Intel Corporation | Devices and methods for prioritized resource allocation based on communication channel conditions |
US10929186B2 (en) * | 2018-12-12 | 2021-02-23 | Servicenow, Inc. | Control token and hierarchical dynamic control |
US11561826B1 (en) * | 2020-11-12 | 2023-01-24 | Xilinx, Inc. | Scheduling processing of machine learning tasks on heterogeneous compute circuits |
-
2021
- 2021-09-30 CN CN202111161588.5A patent/CN115904644A/zh active Pending
- 2021-11-19 US US17/530,997 patent/US20230096015A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230096015A1 (en) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107015862B (zh) | 用于具有不同能力的核心的线程和/或虚拟机调度 | |
AU2013206117B2 (en) | Hierarchical allocation of network bandwidth for quality of service | |
US8561070B2 (en) | Creating a thread of execution in a computer processor without operating system intervention | |
US9753851B2 (en) | Multi-section garbage collection system including real-time garbage collection scheduling | |
US9798582B2 (en) | Low latency scheduling on simultaneous multi-threading cores | |
EP3598310B1 (en) | Network interface device and host processing device | |
US10579416B2 (en) | Thread interrupt offload re-prioritization | |
CN110851276A (zh) | 一种业务请求处理方法、装置、服务器和存储介质 | |
US10318456B2 (en) | Validation of correctness of interrupt triggers and delivery | |
US9606827B2 (en) | Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest | |
EP1693743A2 (en) | System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock | |
US9229716B2 (en) | Time-based task priority boost management using boost register values | |
CN110413210B (zh) | 用于处理数据的方法、设备和计算机程序产品 | |
CN115904644A (zh) | 任务调度方法、电子设备和计算机程序产品 | |
US8868876B2 (en) | Dedicated large page memory pools | |
US10838763B2 (en) | Network interface device and host processing device | |
US9612860B2 (en) | Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest | |
US20200004586A1 (en) | Cooperative workgroup scheduling and context prefetching | |
US20150324133A1 (en) | Systems and methods facilitating multi-word atomic operation support for system on chip environments | |
CN107632893B (zh) | 消息队列处理方法及装置 | |
US9619277B2 (en) | Computer with plurality of processors sharing process queue, and process dispatch processing method | |
US10949367B2 (en) | Method for handling kernel service request for interrupt routines in multi-core environment and electronic device thereof | |
CN113778910A (zh) | 一种数据缓存的处理方法及装置 | |
CN114518833A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
US9811396B2 (en) | Direct application-level control of multiple asynchronous events |
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 |