CN109964206B - 用于处理任务的设备和方法 - Google Patents

用于处理任务的设备和方法 Download PDF

Info

Publication number
CN109964206B
CN109964206B CN201780070284.3A CN201780070284A CN109964206B CN 109964206 B CN109964206 B CN 109964206B CN 201780070284 A CN201780070284 A CN 201780070284A CN 109964206 B CN109964206 B CN 109964206B
Authority
CN
China
Prior art keywords
thread
threads
tasks
computer system
task
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
Application number
CN201780070284.3A
Other languages
English (en)
Other versions
CN109964206A (zh
Inventor
S.施图尔默
E.奥特
S.克拉默
M.普雷斯勒
J.布雷根策尔
J.弗里德里希
B.萨巴卢斯
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of CN109964206A publication Critical patent/CN109964206A/zh
Application granted granted Critical
Publication of CN109964206B publication Critical patent/CN109964206B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • 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/505Allocation 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
    • 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
    • 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/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

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

用于运行计算机系统(100)的设备和方法,其中能将要由所述计算机系统(100)处理的任务分配给来自多个线程(120)中的线程(120),用于进行处理,其中所要处理的任务根据比较的结果来分配,其中在所述比较中将第一值与第二值进行比较,其中所述第一值表征第一计算花费,所述第一计算花费应在所述计算机系统(100)中通过处理要在所述多个线程(120)中的第一线程(120)中处理的任务来预期,其中所述第二值表征第二计算花费,所述第二计算花费应在所述计算机系统(100)中通过处理要在所述多个线程(120)中的第二线程(120)中处理的任务来预期。

Description

用于处理任务的设备和方法
背景技术
在具有多个计算内核和硬实时要求的嵌入式计算机系统中,要通过嵌入式计算机系统来处理的任务根据静态规定来分派给线程(Task)。所要执行的线程被分派给计算能力足够的计算内核之一。在该计算内核上给所要执行的线程提供足够的计算时间。排队等候的任务或者单独地或者一个接一个地在相应的线程中被处理。
例如,这样的任务可以触发已知的重复的内部事件。为了处理这些任务,例如周期性地启动线程。任务也可以通过中断或偶尔触发已知的紧急的或重要的内部事件。这些任务可以在额外地为了处理这样的任务而启动的线程中被处理。在这种情况下,“内部”意味着:事件与在嵌入式计算机系统中的过程有关,而事件的发生能计划或至少能在统计学上预测。借此,将计算时间和计算内核分派到线程同样能计划或者至少能在统计学上预测。
为了在嵌入式计算机系统中满足实时要求,同样通过静态规定来对任务进行预先计划,这些任务通过外部事件不同步地来触发。实时要求例如是对直至任务被完成的时长的要求。如果嵌入式计算机系统对机器进行操控,则该时长例如取决于动态性,该动态性对于机器操控来说是必需的。
为了在嵌入式计算机系统中满足实时要求,避免对不同步地出现的任务的动态的分派,因为在没有静态的可预测性的情况下也许不再能满足实时要求。关于对线程的实施方面关键的是在处理实时性关键的线程时的相互干扰和/或附加的计算时间需求,该计算时间需求由于也许对于启动附加的实时性关键的线程来说所需的开销(Overhead)而造成。
在具有多个计算内核、例如用于服务器的多个计算内核的高性能系统中,动态地启动线程并且将这些线程分配到这些计算内核上,以便处理任务。不过,在此既没有考虑对于启动附加的线程来说附加的计算时间需求又没有考虑对于处理任务来说所需的时间。
这虽然导致良好的平均执行时间,但是并不满足实时系统的要求。
发明内容
因而,在处理任务方面的改进是值得期望的。
该改进通过根据本发明的方法以及根据本发明的计算机系统来解决。
关于用于运行计算机系统的方法,在该方法中能将要由该计算机系统处理的任务分配给来自多个线程中的线程,用于进行处理,其中所要处理的任务根据比较的结果来分配,其中在该比较中将第一值与第二值进行比较,其中第一值表征第一计算花费,该第一计算花费应在计算机系统中通过处理要在所述多个线程中的第一线程中处理的任务来预期,其中第二值表征第二计算花费,该第二计算花费应在计算机系统中通过处理要在所述多个线程中的第二线程中处理的任务来预期。为了处理任务,已经可以在计算机系统上运行不同的线程,或者为此可以启动不同的线程。不同的线程可能造成计算机系统中的不同的计算花费。可能造成不同的线程来处理一个任务的附加的计算花费在分配新任务时借助于该比较来考虑。因此,能简单地选择对于在计算机系统中处理任务的执行时间来说被改善的分配。
优选地,能给线程分配多个计算内核,其中根据另一比较的结果来对这些计算内核之一进行分配,其中在该另一比较中将第三值与第四值进行比较,其中第三值表征第三计算花费,该第三计算花费应在计算机系统中通过处理要在所述多个计算内核中的第一计算内核上处理的任务来预期,其中第四值表征第四计算花费,该第四计算花费应在计算机系统中通过处理要在所述多个计算内核中的第二计算内核上处理的任务来预期。该附加的比较能够实现:简单地选择良好地适合于满足实时要求的计算内核。由此,可以进一步改善在计算机系统中处理任务的执行时间。
优选地,第一值、第二值、第三值和/或第四值取决于由于在计算机系统中执行相应的线程而要预期的负荷、由于在计算机系统中初始化该线程而要预期的计算花费、任务的所要预期的执行时长和/或任务到达计算机系统的到达时间的统计学分布。这些特征参量特别好地适合于动态地改变任务到线程的分配。例如在统计学上检测所要预期的计算花费、所要预期的执行时间或执行时长。对于初始化、也就是说启动线程来说所需的计算花费是公知的,因为该计算花费例如取决于计算机系统。也可以分别使用关于最大值的假定。这些值例如在该方法运行时被确定或预先给定。
优选地,将关于正在运行的线程的数目的信息与关于所要处理的任务的数目的信息进行比较。在这种情况下,根据比较的结果将所要处理的任务分配到正在运行的线程上。除此之外或替选于此,根据比较的结果,启动至少一个线程,用于处理至少一个任务。正在运行的线程的数目可对应于所要处理的线程的数目。那么可能的是给每个任务分配一个线程。如果正在运行的线程的数目小于所要处理的线程的数目,则或者可以启动新的线程或者可以等待,直至新的任务在已经正在运行的线程中被处理。因此,根据这些计算内核中的一个或多个计算内核的当前的负荷率以及对于启动新的线程来说所需的开销,可以选择该做法或其它做法。由此,计算机系统可以根据不同的任务情况和负荷率灵活地来适配。
优选地,当用于通过计算机系统来处理任务的平均运行时间超过在任务到达计算机系统的到达时间之间的平均间隔时,和/或当对一个线程或多个线程的处理导致计算机系统的响应时间不满足预先给定的要求时,启动线程来处理所要处理的任务。例如,在该方法期间确定平均运行时间和平均间隔。根据所要操控的系统来确定预先给定的要求。通过在判断是启动线程还是不启动线程时考虑这些要求,能使计算机系统与所要操控的系统进行适配。
优选地,通过至少一个线程来检查是否提供由该线程来处理的任务。这样,线程可以在不等待计算机系统之外的信号的情况下、例如在完成任务之后识别新的任务。该新的任务可以接着在没有时间损失的情况下被处理。
优选地,该线程检查:要由该线程处理的任务是包含在被分配给该线程的等待队列中还是包含在被分配给多个线程的任务列表中。或者可以从该线程的等待队列中找出事先已经被分配给该线程的任务,或者可以从一般的全系统的任务列表中找出新的还没有被分配给该线程的任务。该任务可以接着在没有时间损失的情况下被处理。
优选地,使用至少一个信号来将任务分配到线程,其中该至少一个信号被构造为:为了执行任务而规定用于进行处理的线程。信号、例如信号量(Semaphor)是用于使在计算机系统中的线程同步的数据结构。该信号量是特别好地适合于将任务单级地分配到线程的实现方案。
优选地,该至少一个信号被构造为规定处理的起始时间点,其中该至少一个信号或者对于每个线程来说单独地、尤其是二元地来构造,或者对于所有正在运行的线程来说全局地来构造。由此,不仅在使用被分配给某个线程的信号时避免了用于规定起始时间点的附加的开销,而且对于全系统的信号来说都避免了用于规定起始时间点的附加的开销。该信号优选地是信号量。
该计算机系统具有调度程序,该调度程序被构造为将要由该计算机系统处理的任务分配给来自多个线程中的线程,用于进行处理,其中所要处理的任务根据比较的结果来分配,其中在该比较中将第一值与第二值进行比较,其中第一值表征第一计算花费,该第一计算花费应在计算机系统中通过处理要在所述多个线程中的第一线程中处理的任务来预期,其中第二值表征第二计算花费,该第二计算花费应在计算机系统中通过处理要在所述多个线程中的第二线程中处理的任务来预期。该调度程序本身被动地来实现。也就是说,该调度程序不需要自己的线程并且在调用该调度程序的线程的上下文中运行。由此,该调度程序不需要自己的线程资源而且取消了用于进行同步或协调的附加的花费。
优选地,该计算机程序包括多个计算内核,其中能给线程分配多个计算内核,其中根据另一比较的结果来对这些计算内核之一进行分配,其中在该另一比较中将第三值与第四值进行比较,其中第三值表征第三计算花费,该第三计算花费应在计算机系统中通过处理要在所述多个计算内核中的第一计算内核上处理的任务来预期,其中第四值表征第四计算花费,该第四计算花费应在计算机系统中通过处理要在所述多个计算内核中的第二计算内核上处理的任务来预期。
同样规定了一种被构造用于执行该方法的计算机程序和一种机器可读存储器,该机器可读存储器包括该计算机程序。
附图说明
其它有利的设计方案从如下的描述和附图中得到。在附图中:
图1示意性地示出了用于处理任务的计算机系统和方法的部分;
图2示意性地示出了按照第一示例的程序流程的部分;
图3示意性地示出了按照第二示例的程序流程的部分。
具体实施方式
图1示意性地示出了用于处理任务的计算机系统100的部分。在图1中,也示意性地示出了用于处理任务的方法的步骤。计算机系统100优选地是满足实时要求的嵌入式计算机系统100。优选地,计算机系统是控制设备的一部分。
计算机系统100包括微处理器,该微处理器被构造为实施该方法。微处理器具有一个计算内核或者具有多个计算内核。微处理器包括调度程序110,该调度程序被构造为将任务分配到线程120。调度程序110例如控制对供支配的线程120的最优的使用而且确保用于处理任务的相对应的信息流。在微处理器上运行的操作系统的线程管理的框架内,微处理器的计算时间被分派给各个线程120。在此,调度程序110用于剥夺当前活跃的线程120对计算时间的动用权并且紧接着给下一个线程120分配计算时间。例如由调度器来判断哪个线程120是下一个线程,为此,该调度器被调度程序110调用。调度器可以给线程120分派计算时间。如果设置多个计算内核,则该调度器可以给线程120分派确定的计算内核。
计算机系统100例如被用于对机器进行操控。在用于该机器的计算机系统100中,例如规定要周期性地执行的任务,用于对该机器进行操控。通过在一个或多个线程120中进行处理来执行这些任务。一个线程120在一个计算内核上运行。这意味着:用于借助于微处理器来执行某个功能或任务的具有命令序列的程序在如下进程中被执行,该进程被分配给计算内核来运行。不同的线程120可以在同一计算内核上运行或者可以在多个计算内核上运行。
在该示例中,计算机系统100与用于用户交互的接口101连接。接口101尤其构造为从用户103接收任务102。在此,用户103例如是操作该机器的人。接口101例如是具有用于与计算机系统100进行交互的屏幕、鼠标和/或键盘的计算机。例如,在该计算机上运行其它操作系统和能够实现交互的程序。
例如,计算机系统100被构造为对机器进行操控。
第一任务102a例如是创建关于该机器的运行状态的统计。为此,计算机系统100例如检测并且存储微处理器的内部数据或者布置在该机器上的传感器的数据。
另一任务102b例如是对关于统计的信息的询问。为此,访问所存储的统计数据。
在接口101与计算机系统100之间的连接可通过无线或有线电信网络、尤其是借助于传输控制协议(TransmissionControlProtokoll)和因特网协议(InternetProtokoll)来建立。优选地,为此,在计算机系统100中设置超文本传输协议(HyperTextTransferProtokoll)接口,该超文本传输协议接口被构造为接收超文本传输协议询问,这些超文本传输协议询问包含一个或多个任务。超文本传输协议接口也可以构造为发送超文本传输协议应答。例如将统计数据作为超文本传输协议应答来发送。任务102也可以由与计算机系统100连接的触摸屏发送给计算机系统100。在这种情况下,可以在触摸屏上输出数据。
调度程序110被构造为接受从接口101接收到的任务102。一个或多个计算内核被构造为执行线程120,为了执行任务而必须处理这些线程。线程120可以在接收到任务之前已经被启动或者可以在需要时才被启动。已经正在运行的线程120可以由针对线程的调度程序110激活。这意味着:线程120被调度程序110授权来处理任务。这不一定意味着线程120已经直接处理任务。调度器可以被构造为只给被激活的线程120分派计算时间。如果设置多个计算内核,则该调度器可以构造为只给被激活的线程120分派确定的计算内核。
调度程序110、调度器和线程120例如都是以软件或固件来实现的具有指令的程序,微处理器执行这些指令。软件或固件以可在计算机系统100中执行的方式来存储。
用于处理任务的方法在该示例中始于从接口101接收到任务102。在下文,该方法借助于调度程序110和线程120来阐述。该方法的在多个线程120的情况下的应用同样是可能的。在这种情况下,在下文针对线程120所描述的将任务102分配到线程120类似地实现。
在消息104中,第一任务102a被调度程序110接收到。例如由用户103或其它外部来源引起第一任务102a。
在步骤105中,第一任务102a被调度程序110接受。这意味着:关于第一任务102a的信息例如被存储在计算机系统100中,该信息包含在消息104中。此外,对信息、例如对信息的存储位置的参阅可以被存储在任务列表中。
任务列表可以已经包含对不同于第一任务102a的其它任务的参阅。在这种情况下,对第一任务102a的参阅例如被添加在列表结尾。例如,该列表已经包含对如下任务的参阅,这些任务已经在接收到第一任务102a之前通过中断来触发。也可以涉及对要周期性地执行的任务或其它要偶尔执行的任务的参阅。
当接收到其它任务102时,重复步骤105。例如,第二任务102b和第三任务102c被接收到。由此,在该列表中形成相对应的参阅。
利用消息106,调度程序110将所要处理的任务之一分派给线程120。优选地,首先分派在该列表开头处的任务。在该示例中,该分派也意味着分派给计算内核来处理任务。相对应地,调度程序110将多个任务分配到线程120。为此可以规定:将任务分配到多个供支配的线程120或计算内核之一上。如果已经将所要处理的任务分派给线程120,则对该任务的参阅在列表中相对应地被标记。
调度程序110例如通过信号、尤其是信号量来控制将任务分配给线程120。在该示例中,使用用于使在计算机系统100中的线程120同步的数据结构,作为信号、尤其是信号量。例如,当在数据结构中的计数器表明线程120被开启来进行处理时,可以通过该线程120来处理任务。为此,可以使用整数计数器,该整数计数器被分配给确定的线程120,被初始化到最大值并且在每次将任务分配给线程120时减一。在这种情况下,当计数器为零时,线程120不被开启来进行处理或者不再能分配。一旦任务被完成,则该计数器可以重新增加一。例如,调度程序110被构造为在该数据结构上执行相对应的操作。调度程序110例如被构造为:在此,使用执行线程120的计算内核的当前的系统负荷、其它供支配的执行线程120的计算内核的当前的系统负荷、关于已经在处理中的线程120的信息或者关于要新启动的线程120的信息,用来将任务分配给线程120。也可以从历史中找来关于对线程120的处理方面类似的情况的信息,用来进行判断。例如属于该历史的是新的任务的到达时间以及这些新的任务的执行时长的统计学分布或时间分布。该历史例如在计算机系统100的运行时间期间被确定。
例如,根据系统负荷或历史,应用不同的策略,以便最优地充分利用微处理器。
如所描述的那样,要由计算机系统100处理的任务能被分配给多个线程120中的一个线程120。调度程序110被构造为:将某个任务正好分配给多个线程120中的一个线程120,用于进行处理。为此,使用特征参量,这些特征参量表征在计算机系统100中的相应的计算花费。针对第一线程,确定第一计算花费,该第一计算花费应通过对要在第一线程中处理的任务的处理来预期。针对第二线程,确定第二计算花费,该第二计算花费应通过对要在第二线程中处理的任务的处理来预期。为了在第一计算花费与第二计算花费之间进行比较,将表征第一计算花费的第一值与表征第二计算花费的第二值进行比较。第一值也表征第一线程,第二值也表征第二线程。
所述多个线程120也可以是能被分配给多个计算内核的。在这种情况下,附加地或替选地,可以使用如下特征参量,这些特征参量表征在计算机系统100中的相应的计算花费,该计算花费应通过在相应的计算内核上处理要在相应的线程120中处理的任务来预期。为了在第一计算内核上进行处理时形成的第三计算花费与在第二计算内核上进行处理时形成的第四计算花费之间进行另一比较,将第三值与第四值进行比较。第三值表征第三计算花费或第一计算内核,第四值表征第四计算花费或第二计算内核。这意味着:根据该另一比较的结果,将这些计算内核之一分配给如下线程,该线程已经分配有所要处理的任务来进行处理。为此,也可以重新使用适合的第一值或第二值,作为第三值或第四值。
例如,根据对不同的线程120的特征参量的比较的结果和/或根据对不同的线程120的特征参量的比较的结果来进行分配。针对多个线程和/或多个计算内核,确定相应的值并且将这些相应的值进行比较。优选地,通过确定所有被确定的值中的最大值或最小值来确定线程或计算内核并且将该线程或该计算内核分配给所要处理的任务。
这些特征参量,也就是说第一值、第二值、第三值和/或第四值可以取决于由于在计算机系统100中执行相应的线程120而要预期的负荷、由于在计算机系统100中初始化该线程120而要预期的计算花费、任务的所要预期的执行时长和/或任务到达计算机系统100的到达时间的统计学分布。
也可以规定:调度程序110和线程120合作来分配任务。在下文,依据图2和3来描述该合作。
在线程120中对任务的处理在分配之后在步骤107中、在该示例中在已经分派有任务来处理的线程120中进行。在该示例中,为了处理第一任务102a,检测并且存储对于统计来说所需的数据。在该示例中,为了处理第二任务102b,访问所存储的统计数据并且输出关于统计的信息。
在计算机系统100中,由于有第一任务102a、第二任务102b和/或第三任务102c,需要将附加的任务102分配到线程120上。除了已经存在的要周期性地处理的任务之外,这些任务102出现。这些附加的任务102与已经存在的任务不同步。这些附加的任务102不能在统计学上预测并且不能计划。
为了对这种偶尔的询问适当地做出反应,线程120和调度程序110可以合作。
在下文,描述了两种用于使线程120和调度程序110合作的方法。
依据图2,描述了一种用于使线程120与调度程序110合作的方法,在该方法中,线程120在每次成功地完成任务之后通过信号量来检查是否有其它任务提供给该线程。在图2左侧的路径中,示意性地示出了在调度程序110上的方法的流程。在图2右侧的路径中,示意性地示出了在线程120中运行的方法的流程。
例如在步骤201中启动线程120。在该示例中,当线程120启动时,调度程序110已经被执行。之前、即在启动线程120期间,或者之后,调度程序110在步骤211中将任务添加到任务列表。关于排队等候的任务的信息例如包含在该列表中。在该示例中,对任务的参阅被存储在该列表中。例如,将第一任务102a或第二任务102b作为任务添加给该列表。
在步骤201之后,在步骤202中检查对于线程120来说是否有任务可支配。为此,例如检查是否有任务包含在线程120应该处理的任务的等待队列中。如果任务已经由调度程序110分派给线程120来处理,则等待队列包含该任务。在该示例中,第一任务102a已经被分派。在下文描述该分派本身。如果有任务包含在等待队列中,则执行步骤203,否则执行步骤204。
在步骤203中执行该任务。例如,执行第一任务102a。紧接着,尤其是当第一任务102a被执行时,执行步骤204。
在步骤204中,线程120要求新的任务。为此,例如使用信号量。例如,在信号量中的计数器的值是针对调度程序110的将来自任务列表中的任务分派给线程120来处理的信号。紧接着,线程120一并以步骤202来继续。
在步骤212中,调度程序110将该信号量识别为表明要将来自任务列表中的任务分派给线程120来处理的信号。在该示例中,分派第二任务102a。为此,例如使用该信号量,以便使计数器的值增加一。例如,将来自任务列表中的任务分派给线程120,其方式是用任务填充该线程的等待队列。可以规定:给等待队列填充多个任务,只要等待队列的容量容许这一点并且在列表中包含足够的任务。在该示例中,当有新的任务到达调度程序110或者信号量给出相对应的信号时,重复步骤211和212。
在下文,依据图3来描述用于使调度程序110和线程120合作的另一方法,在该方法中,只要任务列表包含任务,线程120就可以在不绕道的情况下通过信号量来从该列表中提取任务。在图3左侧的路径中,示意性地示出了在调度程序110上的方法的流程。在图3右侧的路径中,示意性地示出了在线程120中运行的方法的流程。
例如在步骤301中启动线程120。在该示例中,当线程120启动时,调度程序110已经被执行。
在步骤301之后,在步骤302中检查对于线程120来说是否有任务可支配。为此,例如检查在任务列表中是否包含应该由线程120来处理的任务。如果针对线程120的任务已经由调度程序110分派给线程120或线程类型来处理,则该列表包含该任务。如果有任务包含在该列表中,则执行步骤303,否则执行步骤304。
在步骤303中执行该任务。例如,执行第一任务102a。紧接着,尤其是当该任务被执行时,执行步骤302。
在步骤304中,线程120要求新的任务。为此,例如使用信号量。如所描述的那样,该信号量包含针对调度程序110的将来自任务列表中的任务分派给线程120来处理的信号。紧接着,线程120一并以步骤302来继续。
之前、即在步骤301中启动线程120期间,或者之后,调度程序110在步骤311中将任务像在图1的示例中那样添加到任务列表。关于任务的信息例如包含在该列表中。在该示例中,对任务的参阅被存储在该列表中。在该示例中,在该列表中的任务被分配给确定的线程类型或者确定的线程120。分配到线程类型允许并行地运行并且可执行同一任务的不同的线程120访问同一列表。例如,通过相对应地附加地录入到限定相应的任务的列表元素中来进行分配。
在步骤311之后,在可选的步骤312中检查:是否已经有与存储在列表中的任务一样多的线程120正在运行或者有比存储在列表中的任务更多的线程120正在运行。优选地检查:是否有具有某个线程类型的比要求该线程类型的任务更多的线程120正在运行。如果已经有与存储在列表中的任务一样多个线程120正在运行或者有比存储在列表中的任务更多的线程120正在运行,则执行步骤311。否则执行步骤313。这样,在步骤312中,调度程序110将正在运行的线程120的数目与任务的数目进行比较,并且根据该比较的结果来对这些任务进行分配。如果步骤312是可选的,则在步骤311之后执行步骤313。
在步骤313中,将来自任务列表中的任务、尤其是在该示例中第二任务102b分派给线程120。可以规定:只要在该列表中包含足够的任务,就对多个任务进行分派。紧接着执行步骤311。
在图3的示例中没有设置像图2的示例中那样的等待队列。但是可以规定:在线程120中实现两种合作的可能性。在这种情况下,也可以将多个有关线程120的询问来得到的任务暂存在等待队列中。
在根据图2的示例中,由于对信号量的询问而引起的开销虽然更大,但是调度程序110的控制可能性同样更大。
信号、尤其是信号量可具有不同的结构。尤其是,使用对于每个线程120来说单独地、也就是说二元地构造的信号量,或者使用全局地构造的信号量。信号量可以被构造为:为了执行任务,规定所要处理的线程120和/或该处理的起始时间点。这意味着:信号、尤其是信号量可以被构造为将对各个任务的执行分配给确定的线程120和/或有针对性地规定该执行的起始时间点。
因此,根据信号、尤其是信号量的结构,调度程序110能够不仅将对每个单个的任务的执行分配给确定的线程而且有针对性地规定起始时间点。调度程序110可以判断是立即转交任务还是在收集到一定数目的任务之后来转交任务。调度程序110可以规定最大处理多少个线程120以及依次处理多少个任务。
对任务的分配由调度程序110优选地根据被微处理器控制的系统的特性或者根据在该系统中使用的任务的特性来规定。
例如考虑如下系统特性,如在两个任务之间的时间段、用于处理任务的运行时间、在一个时间段内所要预期的新的任务的数目以及由操作系统在启动线程120时生成的开销。如果该系统的由于实时性关键的线程引起的目前的负荷率目前超过阈值,则任务也可能延迟。
例如,如果用于处理任务的平均运行时间超过在这些任务的到达时间之间的平均间隔,则调度程序110在其中这些任务在没有附加的信号量的情况下相继被处理的配置下激活其它线程120。
例如,如果对线程120的处理导致响应时间不满足所希望的或所需的要求,则调度程序110在其中这些任务在没有附加的信号量的情况下相继被处理的配置下激活其它线程120。这些所希望的或所需的要求也可能是硬实时要求。
替选地,当用于处理任务的平均运行时间少并且用于启动线程120的开销很高时,可以阻止其它激活。这降低了该系统在有线程120未被使用的情况下的不必要的负荷率,减少了未被使用的线程120与对于实时系统的内部功能来说所需的线程120的干扰,而且仍保持对于不同步的外部任务来说足够快的响应时间。

Claims (10)

1.一种用于运行计算机系统(100)的方法,其特征在于,能将要由所述计算机系统(100)处理的任务分配给来自多个线程(120)中的线程(120),用于进行处理,其中所要处理的任务根据比较的结果来被分配,其中在所述比较中将第一值与第二值进行比较,其中所述第一值表征第一计算花费,所述第一计算花费应在所述计算机系统(100)中通过处理要在所述多个线程(120)中的第一线程(120)中处理的任务来预期,其中所述第二值表征第二计算花费,所述第二计算花费应在所述计算机系统(100)中通过处理要在所述多个线程(120)中的第二线程(120)中处理的任务来预期,其中能给所述线程(120)分配多个计算内核,其中根据另一比较的结果来对所述计算内核之一进行分配,其中在所述另一比较中将第三值与第四值进行比较,其中所述第三值表征第三计算花费,所述第三计算花费应在所述计算机系统(100)中通过处理要在所述多个计算内核中的第一计算内核上处理的任务来预期,其中所述第四值表征第四计算花费,所述第四计算花费应在所述计算机系统(100)中通过处理要在所述多个计算内核中的第二计算内核上处理的任务来预期。
2.根据权利要求1所述的方法,其特征在于,所述第一值、所述第二值、所述第三值和/或所述第四值取决于由于在所述计算机系统(100)中执行相应的线程(120)而所要预期的负荷、由于在所述计算机系统(100)中初始化所述线程(120)而所要预期的计算花费、任务的所要预期的执行时长和/或任务到达所述计算机系统(100)的到达时间的统计学分布。
3.根据权利要求1或2所述的方法,其特征在于,将关于正在运行的线程(120)的数目的信息与关于所要处理的任务的数目的信息进行比较,而且根据所述比较的结果将所要处理的任务分配到正在运行的线程(120)上,和/或根据所述比较的结果,启动至少一个线程(120),用于处理至少一个任务。
4.根据权利要求1或2所述的方法,其特征在于,当用于通过所述计算机系统(100)来处理任务的平均运行时间超过在所述任务到达所述计算机系统(100)的到达时间之间的平均间隔时,和/或当对一个线程(120)或多个线程(120)的处理导致所述计算机系统(100)的响应时间不满足预先给定的要求时,启动线程(120)来处理所要处理的任务。
5.根据权利要求1或2所述的方法,其特征在于,通过至少一个线程(120)来检查是否提供由所述线程(120)来处理的任务。
6.根据权利要求5所述的方法,其特征在于,所述线程(120)检查:要由所述线程(120)处理的任务是包含在被分配给所述线程(120)的等待队列中还是包含在被分配给多个线程(120)的任务列表中。
7.根据权利要求1或2所述的方法,其特征在于,使用至少一个信号来将任务分配到线程(120),其中所述至少一个信号被构造为:为了执行任务而规定用于进行处理的线程。
8.根据权利要求7所述的方法,其特征在于,所述至少一个信号被构造为规定处理的起始时间点,而且其中所述至少一个信号或者对于每个线程(120)来说单独地、尤其是二元地来构造,或者对于所有正在运行的线程(120)来说全局地来构造。
9.一种计算机系统(100),其特征在于,所述计算机系统(100)具有调度程序(120),所述调度程序被构造为将要由所述计算机系统(100)处理的任务分配给来自多个线程(120)中的线程(120),用于进行处理,其中所要处理的任务根据比较的结果来被分配,其中在所述比较中将第一值与第二值进行比较,其中所述第一值表征第一计算花费,所述第一计算花费应在所述计算机系统(100)中通过处理要在所述多个线程(120)中的第一线程(120)中处理的任务来预期,其中所述第二值表征第二计算花费,所述第二计算花费应在所述计算机系统(100)中通过处理要在所述多个线程(120)中的第二线程(120)中处理的任务来预期,其中所述计算机程序(100)包括多个计算内核,其中能给所述线程(120)分配所述多个计算内核,其中根据另一比较的结果来对所述计算内核之一进行分配,其中在所述另一比较中将第三值与第四值进行比较,其中所述第三值表征第三计算花费,所述第三计算花费应在所述计算机系统(100)中通过处理要在所述多个计算内核中的第一计算内核上处理的任务来预期,其中所述第四值表征第四计算花费,所述第四计算花费应在所述计算机系统(100)中通过处理要在所述多个计算内核中的第二计算内核上处理的任务来预期。
10.一种机器可读存储器,其包括计算机程序,所述计算机程序被构造用于执行根据权利要求1至8之一所述的方法。
CN201780070284.3A 2016-11-15 2017-11-08 用于处理任务的设备和方法 Active CN109964206B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102016222375.5A DE102016222375A1 (de) 2016-11-15 2016-11-15 Vorrichtung und Verfahren zum Bearbeiten von Aufträgen
DE102016222375.5 2016-11-15
PCT/EP2017/078580 WO2018091329A1 (de) 2016-11-15 2017-11-08 Vorrichtung und verfahren zum bearbeiten von aufträgen

Publications (2)

Publication Number Publication Date
CN109964206A CN109964206A (zh) 2019-07-02
CN109964206B true CN109964206B (zh) 2024-01-09

Family

ID=60515317

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780070284.3A Active CN109964206B (zh) 2016-11-15 2017-11-08 用于处理任务的设备和方法

Country Status (4)

Country Link
US (1) US11275621B2 (zh)
CN (1) CN109964206B (zh)
DE (1) DE102016222375A1 (zh)
WO (1) WO2018091329A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3853726A1 (en) * 2018-10-22 2021-07-28 Siemens Industry Software Inc. Dynamic allocation of computing resources for electronic design automation operations
DE102022115421A1 (de) 2022-06-21 2024-01-11 Focke & Co. (Gmbh & Co. Kg) Maschine sowie Verfahren zum Betrieb derselben

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09167141A (ja) * 1995-12-18 1997-06-24 Hitachi Ltd 負荷分散制御方法
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
US7167916B2 (en) * 2002-08-30 2007-01-23 Unisys Corporation Computer OS dispatcher operation with virtual switching queue and IP queues
US7207043B2 (en) * 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
US7793293B2 (en) * 2004-11-01 2010-09-07 Hewlett-Packard Development Company, L.P. Per processor set scheduling
US7941805B2 (en) * 2006-08-15 2011-05-10 International Business Machines Corporation Affinity dispatching load balancer with precise CPU consumption data
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US8156495B2 (en) * 2008-01-17 2012-04-10 Oracle America, Inc. Scheduling threads on processors
US20110161294A1 (en) * 2009-12-30 2011-06-30 Sun Microsystems, Inc. Method for determining whether to dynamically replicate data
US20120066683A1 (en) 2010-09-09 2012-03-15 Srinath Nadig S Balanced thread creation and task allocation
US8621479B2 (en) * 2012-01-05 2013-12-31 The Boeing Company System and method for selecting task allocation method based on load balancing and core affinity metrics
KR101834195B1 (ko) * 2012-03-15 2018-04-13 삼성전자주식회사 다중코어 시스템 및 로드 밸런싱 방법
US20150205614A1 (en) * 2012-03-21 2015-07-23 Mika Lähteenmäki Method in a processor, an apparatus and a computer program product
US9336057B2 (en) * 2012-12-21 2016-05-10 Microsoft Technology Licensing, Llc Assigning jobs to heterogeneous processing modules
US9329899B2 (en) * 2013-06-24 2016-05-03 Sap Se Parallel execution of parsed query based on a concurrency level corresponding to an average number of available worker threads
US9584588B2 (en) * 2013-08-21 2017-02-28 Sap Se Multi-stage feedback controller for prioritizing tenants for multi-tenant applications
US9547521B2 (en) * 2014-09-25 2017-01-17 Oracle International Corporation System and method for supporting dynamic thread pool sizing in a distributed data grid

Also Published As

Publication number Publication date
US11275621B2 (en) 2022-03-15
US20190340034A1 (en) 2019-11-07
CN109964206A (zh) 2019-07-02
DE102016222375A1 (de) 2018-05-17
WO2018091329A1 (de) 2018-05-24

Similar Documents

Publication Publication Date Title
CN107291547B (zh) 一种任务调度处理方法、装置及系统
US10764125B2 (en) Method and device for training model in distributed system
US11507420B2 (en) Systems and methods for scheduling tasks using sliding time windows
CN106980546B (zh) 一种任务异步执行方法、装置及系统
CN109428912B (zh) 一种分布式系统资源分配方法、装置及系统
US9563585B2 (en) System and method for isolating I/O execution via compiler and OS support
US20110022809A1 (en) Consolidated electronic control unit and relay program implemented in the same
CN111625331A (zh) 任务调度方法、装置、平台、服务器及存储介质
CN111897637B (zh) 作业调度方法、装置、主机及存储介质
CN106569887B (zh) 一种云环境下细粒度任务调度方法
CN108681481B (zh) 业务请求的处理方法及装置
CN109964206B (zh) 用于处理任务的设备和方法
CN114168302A (zh) 任务调度方法、装置、设备及存储介质
CN111651864A (zh) 一种事件集中发射式多异构时间队列优化仿真执行方法及系统
CN115617497B (zh) 线程处理方法、调度组件、监测组件、服务器和存储介质
US10452425B2 (en) Apparatus and method for processing a plurality of tasks
US10853133B2 (en) Method and apparatus for scheduling tasks to a cyclic schedule
CN107102966B (zh) 多核处理器芯片、中断控制方法及控制器
CN116302420A (zh) 并发调度方法、装置、计算机设备及计算机可读存储介质
CN112988340A (zh) 一种任务调度方法、装置及系统
US20240231946A9 (en) Process allocation control device, process allocation control method, and recording medium storing process allocation control program
KR102497258B1 (ko) 차량용 운영체제의 태스크 실행 시스템 및 방법
US20110185365A1 (en) Data processing system, method for processing data and computer program product
CN110737520B (zh) 集群系统调度控制定时任务的方法及集群系统
JP7355456B2 (ja) Cpuリソース管理装置

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
GR01 Patent grant
GR01 Patent grant