CN104838359B - 等待时间敏感的软件中断和线程调度 - Google Patents
等待时间敏感的软件中断和线程调度 Download PDFInfo
- Publication number
- CN104838359B CN104838359B CN201380054204.7A CN201380054204A CN104838359B CN 104838359 B CN104838359 B CN 104838359B CN 201380054204 A CN201380054204 A CN 201380054204A CN 104838359 B CN104838359 B CN 104838359B
- Authority
- CN
- China
- Prior art keywords
- processor core
- task
- software
- sensitive
- core
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
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
背景技术
本发明涉及计算机技术领域,尤其涉及调用软件中断和/或软件线程的方法。
现今,计算设备具有在许多级别上进行多任务的能力。例如,在从多个输入设备(键盘、触摸屏、鼠标等)键入输入时,计算设备的用户可以拥有同时运行的多个应用。随后,这些应用、输入设备等中的每一个竞争处理器时间。相关联的计算设备和/或处理器可以通过若干方式来管理多任务,比如通过在请求到该处理器的访问的那些任务之间按优先级排序(prioritize)和/或划分(split)时间。例如,计算设备可以对应用和/线程指派优先级(priority)等级,以及根据该优先级等级来分配到该处理器的访问。这确保了请求到该处理器的访问的那些任务将最终接收在处理器上的时间分配。但有时,请求的任务具有更紧急或时间敏感的需要。在这些情况下,请求的应用和/或线程可以被设置为具有比当前运行的线程更高的优先级,这样导致当前运行的线程被先占。可替换地,设备通过诸如物理硬件中断或软件中断之类的中断机制来请求处理器时间。
当处理器接收到中断时,当前正被处理器所执行的任务通常被挂起(suspend)以便服务该中断。考虑一个简化的情况,其中应用有处理器的临时所有权来用图像更新显示,并且用户决定在该显示更新期间键入鼠标点击或触摸屏输入来作为优先放大该图像的手段。一般来说,鼠标点击生成到处理器的中断作为点击活动的通知。在接收到该中断时,该处理器临时挂起与该应用相关联的活动以便服务该中断,并且在完成中断服务例程后继续执行(resume)该被挂起的活动。时常,这种处理以对用户而言很少以至无法感知的区别而发生。但是,一些应用和/或任务对被挂起是更加时间敏感的。在这些情况下,如果该应用和/或任务未能以及时的方式继续执行,该用户可以注意到执行中的迟延,并且随后感知到该计算设备表现不佳或者发生故障。
发明内容
本发明内容被提供来以简化的方式引入概念的选择,这些概念将在下文在具体实施方式中被进一步描述。本发明内容不是旨在识别所要求保护的主题的关键特征或必要特征。
各种不同的实施例提供了至少部分基于一个或多个处理器核使用率度量(metric)来调度等待时间敏感的任务的能力。一些实施例搜集(gather)与一个或多个处理器核是否处在重负载状态相关联的信息。可替换地或附加地,一些实施例搜集识别等待时间敏感的任务的信息。在某些情况下,当已经确定被原始指派的处理器已经超过使用率阈值时,(多个)任务和/或中断可以被(重新)指派到不同的(多个)处理器核以供执行。
附图说明
具体实施方式是参考附图来进行描述的。在这些图中,附图标记最左边的(多个)数字识别该附图标记首次在其中出现的图。在说明书和图中的不同实例中使用相同的附图标记可以指示相似或相同的项目。
图1是根据一个或多个实施例的示例实现方式的图示。
图2a-d是根据一个或多个实施例的时序图的图示。
图3是根据一个或多个实施例的示例实现方式的图示。
图4是根据一个或多个实施例的时序图的图示。
图5图示了根据一个或多个实施例的流程图。
图6图示了根据一个或多个实施例的流程图。
图7图示了可以被使用来实现本文所描述的各种不同的实施例的示例计算设备。
具体实施方式
概述
各种不同的实施例提供了至少部分基于处理器核使用率度量来调度等待时间敏感的任务的能力。与给定的系统相关联的一个或多个处理器核可以被配置来识别何时特定的处理器核使用率已经超过某一阈值、何时该处理器核忙于处理中断等。可替换地或附加地,这些度量可以被周期性地搜集和/或更新来识别给定的系统中的处理器核比其他核更加重负载的时间,和/或处理器核资源是相对空闲以供使用的时间。在将任务指派给处理器核之前,例如将软件中断指派和/或将等待时间敏感的线程调度给特定的处理器以便处理之前,这些度量可以被分析来确定哪个处理器核当前拥有更多资源可用于该任务。进而,该任务可以通过运行来高效地完成而不会被挂起。除了分析处理器核度量之外,一些实施例可以确定任务的特性,比如该任务是否是等待时间敏感的。可以结合处理器核度量一起和/或单独地来分析这些任务特性,以确定该任务是否将被(重新)指派给不同的(多个)处理器核以供执行。
在下面的讨论中,题为“示例操作环境”的章节被提供并且其描述其中可以使用一个或多个实施例的一个环境。接着这个章节,题为“调度等待时间敏感的任务”的章节描述了等待时间敏感的任务如何能够被指派和/或重新指派给系统中比其他(多个)CPU更可用的(多个)处理器核。最后,题为“示例设备”的章节描述了可以被用来实现一个或多个实施例的示例设备。
已经提供了将要在下文被描述的各种不同实施例的概述,现在考虑一个或多个实施例可以在其中被实现的示例操作环境。
示例操作环境
图1是可操作来使用本文档所描述的技术的示例实现方式的图示。该图示的示例包括可能以多种方式进行配置的计算设备102。例如,计算设备102可以被配置为传统的计算机(例如,台式个人计算机、膝上型计算机等)、移动站、娱乐装置、被可通信地耦合到电视机上的机顶盒、无线电话、上网本、游戏控制台、手持设备等。因此,计算设备102的范围可以是从具有大量存储器和处理器资源的完全资源设备(例如,个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(例如传统的机顶盒、手持游戏控制台)。计算设备102也包括使得计算设备102执行如下所述的一个或多个操作的软件。
除了别的以外,计算设备102包括(多个)处理器核104。在这个特定的示例中,计算设备102包括“n”个处理器核,此处由符号104(0)—104(n-1)所表示。每个处理器核104表示可以执行机器级别处理器指令(比如分支、跳转、相加、相减、移动数据等)的功能。可替换地或附加地,每个处理器核104被配置来和与计算设备102相关联的其他处理器核并行地执行处理器指令。尽管在图1中被图示为分开的模块,但是将会意识到单个硬件模块可以被配置来包括多个处理器核。例如,在一些实施例中,计算设备102可以包括双核处理器(例如,包括两个处理器核104的单个硬件处理器单元),四核处理器(例如,包括四个处理器核104的单个硬件处理器单元)等。可替换地或附加地,计算设备102可以包括多个硬件模块,它们中每一个都包含多个处理器核。因而,计算设备102可以包括以任何合适的硬件配置的多个处理器核104。
计算设备102也包括一个或多个计算机可读存储媒体106。作为示例而非限制,该计算机可读存储媒体可以包括通常与计算设备相关联的所有形式的易失性或非易失性存储器和/或存储媒体。这样的媒体可以包括ROM、RAM、闪存、硬盘、可移除的媒体等。除了别的之外,计算机可读存储媒体106包括一个或多个操作系统(OS)模块108、一个或多个应用110、处理器核加载模块112以及一个或多个数据结构114。
除了别的以外,(多个)操作系统(OS)模块108表示被配置来管理计算设备102的(多个)软件和/或硬件资源的功能。这可以通过任何合适的方式来完成,比如一个模块或若干模块共同工作。在一些实施例中,(多个)操作系统模块108包括关于处理和/或管理软件和/或硬件中断的生成和/或服务的功能。
(多个)应用110表示包含可以被(多个)处理器核104(0)—(n-1)的任何组合执行的指令的一个或多个应用。(多个)应用110可以包括具有与计算设备102的用户交互的功能的(多个)高级别应用,可以包括与软件线程相关联的处理器核指令,和/或可以包括与(多个)低级别应用相关联的指令,该(多个)低级别应用与计算设备102的诸如驱动软件、中断服务例程等之类的低级别和/或基本方面进行交互。可替换地或附加地,(多个)应用110可以访问和/或使用操作系统108所提供的功能。因而,计算设备102可以包括范围广泛的(多个)应用。
处理器核加载模块112表示可以将(多个)任务指派和/或重新指派给(多个)处理器核104(0)—(n-1)的功能,比如(重新)指派一个或多个应用110。尽管在图1中被图示为与(多个)操作系统模块108分开的模块,但是将会意识到和理解在不偏离要求保护的主题的范围的情况下可以将处理器核加载模块112包括作为(多个)操作系统模块108的一部分。在一些情况下,处理器核加载模块112可以基于处理器核的特性来将任务指派到一个或多个处理器核。可替换地或附加地,如下文进一步所描述的,处理器核加载模块112可以基于正在被指派的任务的特性来将任务(重新)指派给一个或多个处理器核。这包括搜集数据来识别在给定时刻处理器核的“负载”或“忙碌”程度,和/或将任务指派给各种不同的处理器核来作为在计算设备102上更平均地分配处理工作量的手段。
(多个)数据结构114表示包含诸如标志(flag)、数字、字符串等之类信息的一个或多个数据结构。在一些实施例中,某个或某些数据结构114可以包括描述与一个或多个处理器核相关联的特性的信息。可替换地或附加地,某个或某些数据结构114可以包括与一个或多个应用110、(多个)操作系统模块108和/或处理器核加载模块112相关联的信息。在任一和/或两种情况下,(多个)数据结构114可以以任何合适的格式来存储信息,该信息可以被用来传送诸如处理器速度、处理器核加载百分比、处理器核重负载状态标志、应用是否包括(多个)时间敏感特性、时序测量等之类的任何合适的关联的特性。
计算设备102也包括一个或多个内部设备116,并且拥有一个或多个附接的外部设备118。在这个示例中,多个内部和/或外部设备使用符号m-1和k-1进行指示,其中“m”指示内部设备的数量,以及“k”指示所附接的外部设备的数量。除了其他能力之外,(多个)内部设备116和(多个)外部设备118包括在(多个)处理器核104上中断和/或请求任务执行的能力,比如中断服务例程。尽管图1将“m”和“k”图示为具有大于1的数值,但是可以意识到和理解,在不偏离要求保护的主题的范围的情况下,计算设备可以简单地包括一个内部设备和/或一个外部设备。
一般来说,本文所描述的功能中的任一个都可以使用软件、固件、硬件(例如,固定逻辑电路)、人工处理或这些实现方式的组合来实现。本文所使用的术语“模块”、“功能”和“逻辑”通常表示软件、固件、硬件或它们的组合。在软件实现方式的情况下,模块、功能或逻辑表示当在处理器(例如,一个或多个CPU)上被执行或被处理器(例如,一个或多个CPU)执行时执行指定任务的程序代码。该程序代码可以被存储在一个或多个计算机可读存储器设备中。下文所述的手势技术的特征是与平台无关的,从而意味着这些技术可以在具有多种处理器的多种商业计算平台上来被实现。
已经描述了各种不同的实施例可以在其中被使用的示例操作环境,现在考虑对于根据一个或多个实施例调度等待时间敏感的任务的讨论。
调度等待时间敏感的任务
通常现今,计算设备包括多任务能力,比如并行运行多个应用,并行监控来自多个设备的输入等等。随着技术进步,用户不仅期望计算设备支持多任务,另外还希望在进行多任务时来自计算设备的无缝性能。这意味着用户希望并行运行若干应用,并且在正工作的应用之间进行平滑的切换。当多任务未被无缝地执行时,用户可以感知到在(多个)应用如何执行中的故障和/或停止。为了使得能够实现更加稳健的性能,作为一种促进多任务和/或并行处理的方式,一些计算设备包含多个处理器核。但是,在给定系统中的一些处理器核在一些时候可能变得比其他处理器核更加重负载。在不监控系统中处理器核如何负载的情况下,当任务被指派给更加重负载的(多个)处理器核时,任务可能在运行中停止。
作为一个示例,考虑图2a-d,其图示了计算设备的多个处理器核在如上所述的若干任务和/或应用之间进行多任务的时序图。这些图示捕获了与诸如图1的计算设备102之类的计算设备的“核0”和“核1”相关联的时序图。尽管这些示例图示了两个处理器核,但是可以被意识到和理解,在不偏离要求保护的主题的范围的情况下,关于图2a-d所描述的概念可以被应用到任何数量的处理器核。为了简洁起见,这些图将核图示为简单地是“忙碌”或“空闲”。但是,其他实施例可以将处理器核忙碌的程度区分到更精细的粒度(即,处理器核为45%忙碌)等。图2a和2b讨论关于调度软件中断的示例时序图,而图2c和2d描述了关于调度任务的示例时序图。
为了讨论的目的,图2a将核0和核1图示为在0时刻是空闲的,其中0时刻表示时间上任意起始点。尽管此处将每个核图示为在时刻0空闲,但是可以被意识到,替代地,一个和/或两个核可以交替地忙于处理指令。在点202处,核0开始处理和/或执行任务1,并且转换到“忙碌”状态。任务1表示任何合适的处理器核指令集,比如线程、应用、处理器核指令分组等。在一些情况下,任务1另外还可以具有指派的优先次序(prioritization),该优先次序相对于其他任务将任务1访问处理器核的优先级进行分级。例如,相对于任务1具有更高优先级的任务可以潜在地先占和/或临时挂起任务1对核0的访问。
在点204处,核1开始处理任务2,并且在点206处完成处理任务2。与在任务1的情况下一样,任务2可以是具有如前所述的等级和/或优先次序的任何合适的处理器指令分组。也可以观察到在点204处和点206处的时间之间,核0和核1两者都并行活跃地忙于处理任务。在完成任务2时,核1没有其他任务指派,并转换到“空闲”状态。
在点208处,到达的中断被检测到并被指派为在核0上运行。此处,核0已经被预先识别和/或被指派来处理该到达的中断。由于任务1尚未运行完成,其在核0上被临时挂起,并且替代地,运行中断服务例程。此处,在从点208到点210所标记的时间量期间,该到达的中断由核0来服务。该时间长度表示任意的持续时间。因此,此处被图示为与该到达的中断相关联的中断服务例程的先占任务可以潜在地占用几纳秒、几微秒、几毫秒、几秒等来执行。当该先占的中断服务例程已经完成(此处在点210处图示)时,该中断已经被服务并且核0继续执行处理任务1直到在点212处完成。因此,任务1的总共被感知的执行时间可以被计算为点202到点212之间的时间。根据在点208到点210之间的完成中断服务例程所花的持续时间,用户可以在任务1的执行中注意到延迟,尤其是如果任务1具有时间敏感特性的话。另外可以指出的是,核1在时间208与210之间保持空闲和未使用。一些实施例可以识别一个处理器核在何时比另一个更加重负载,并且相应地将任务(重新)指派给不同的处理器核。
考虑图2b,其图示了任务如何被重新指派给不同处理器核的替换的时序图。与在图2a的情况下一样,图2b包括在任意起始时间0处对处理器核0和1的观察。核0在点202处开始处理任务1,而核1分别在点204处和点206处开始和完成处理任务2。在完成任务2时,核1转换为“空闲”状态,而核0继续忙于处理任务1。如在图2a的情况下所同样描述的,在点208处检测到达的中断。但是,在这种情况下,给出另外的考虑以便将该中断服务任务指派给“空闲”的或者负载较少的处理器核。
在将任务指派和/或调度给处理器核时,一些实施例至少部分基于(多个)处理器核的使用率度量来调度任务。例如,在图2b中当检测到该到达的中断时,核0正忙于处理任务1而核1处于空闲。一些实施例监控处理器核何时处于忙碌和/或空闲,并且基于这个度量来(重新)指派任务。此处,由于核0已经被识别为忙碌,所以该中断服务任务被(重新)指派给核1。这允许相关联的计算设备在整体上更加高效地处理任务。通过将该中断服务任务(重新)指派给核1,不仅该中断服务任务立刻被执行,而且该计算设备可以继续并行地在核0上执行任务1。此处,可以测量在开始点202和结束点214之间任务1总共的执行时间。当将图2a和图2b比较时,可以指出,使用在图2b中采用的被讨论的技术,所有任务都比图2a所图示的任务更快地完成。
现在考虑图2c,其图示了处理器核0处理始于点216的中断和/或中断服务例程1。与上述讨论类似地,点216表示时间上的任意点。中断服务例程1完成,并且在完成时,在点218检测到导致中断服务例程2运行的另一个中断。在一些实施例中,这种中断和/或中断处理的快速接续可以被识别,并进一步导致处理器核0被分类为“忙碌”和/或“中断繁重”。尽管这个示例在将处理器核分类为“忙碌”和/或“中断繁重”时使用两个中断,但是将被意识到和理解,在不偏离要求保护的主题的范围的情况下,以任何速率发生的任何数量的中断都可以被用作用于这种分类的阈值。在点220处,任务1被指派和/或调度为在处理器核0上运行,并且开始执行。在任务1的执行期间,第三中断在点222处被检测。此处,任务1被挂起,并且处理器核0开始处理与该第三中断相关联的中断服务例程。在点224处,中断服务例程3完成,并且任务1继续执行直到其在点226处完成。因此,任务1被感知的执行时间可以被测量为在点220和点226之间的时间,并且也包括此处被示为在点222到点224之间的时间的用于中断服务例程3的处理时间。假设任务1不是等待时间敏感的,这个延迟对用户而言可能是不显著的和/或无法感知的。但是,如果任务1是等待时间敏感的任务,则用户可以潜在地注意到点222和点224之间的延迟(以及后续当任务1运行时)。也可以指出,在此时间期间,核1处于空闲状态和/或当前没有忙于处理任何指令。
图2d图示了替换的实施例,其中在调度任务1时考虑与(多个)处理器核和任务相关联的特性。与在图2c的情况下一样,处理器核0在点216处开始处理中断服务例程1,并且在点218处开始处理中断服务例程2,因此如上文进一步所述,将处理器核0分类为处于“中断繁重”和/或“忙碌”状态。在点220处,任务1的调度开始。在这个示例中,该调度过程考虑处理器核0作为“忙碌”的状态和/或分类。可替换地或附加地,该调度过程可以识别影响将任务1指派给什么处理器核的任务1的特性。在这个示例中,任务1已经被识别为等待时间敏感的任务,并且处理器核0已经被识别为处于“忙碌”和/或“中断繁重”状态。响应于这些识别,该调度过程将任务1指派给处理器核1,而不是处理器核0。随后,当中断3在点222处来到,并且在点224处完成时,其不影响任务1的执行时间。替代地,任务1继续其执行而不被中断,并在点228处完成,因此消除了在任务1的执行时间中的任何外部延迟,所述任务1的执行时间此处被图示为在点220到点228之间。
尽管前面的示例描述了基于处理器核的使用率来将一般的任务和/或中断服务任务调度给不同的核,但是任务的任何合适的组合和/或任何合适类型的任务都可以被调度。可替换地或附加地,任务可以基于任务度量来被调度,该度量比如是该任务是否是等待时间敏感的、该任务上次运行在哪个处理器核上等。例如,与触摸屏相关联的输入和/或任务可以具有将其识别为等待时间敏感任务的度量,而屏幕保护程序任务可以具有将其识别为不是等待时间敏感的度量。相应地,基于这个识别,该输入和/或任务可以被(重新)指派给空闲的或者不太忙碌的处理器核,而该屏幕保护程序任务不会被(重新)指派。在一些实施例中,基于诸如(多个)处理器核的总使用率之类的系统目标和/或度量来调度任务。在任何情况下,调度算法都使用表征计算设备各种不同方面的信息。
图3图示了根据一个或多个实施例的示例计算设备102。更特别地,图3图示了如图1所描述的计算设备102详细视图。如图1所图示的,计算设备102包括(多个)处理器核104、(多个)内部设备116以及(多个)附接的外部设备118。为了讨论的简洁,已经移除相对于图1所描述的计算设备102的其他方面。
计算设备102包括用户模式存储器302和特许模式存储器304。用户模式存储器302表示主要专门供用户模式应用和/或者能够有限直接访问到无法直接访问与计算设备102相关联的系统资源的应用使用的存储器空间。相反地,特许模式存储器304表示主要专用于系统应用和/或具有受限访问的敏感信息的存储器空间。除了别的以外,特许模式存储器304包括若干不同的数据结构,作为示例而非限制,其包括(多个)软件中断结构306、(多个)线程结构308以及(多个)核数据结构310。
(多个)软件中断结构306表示与一个或多个软件中断相关联的一个或多个结构。这种结构可以包括任何合适类型和数量的数据,例如(多个)标志、不同种类的(多个)指针(数组指针、函数指针、类指针等)、文本、数值、布尔值等。在这个示例中,软件中断结构306包括“等待时间敏感 SW(软件) 中断线程”标志,其可以被使用来指示相关联的软件中断任务是否是等待时间敏感的。例如,值“1”或“真”可以指示任务是等待时间敏感的,以及值“0”或“假”可以指示该任务不是等待时间敏感的。在一些实施例中,在创建相关联的中断和/或迟延的过程调用(DPC)结构时,可以创建这种结构。在一些情况下,每个软件中断任务可以拥有被指派给它的相关联的专用软件中断结构(例如,在软件中断任务和软件中断结构306之间存在一一对应)。可替换地或附加地,单个的软件中断结构可以包括多个标识符以及用于每个标识符的对应的等待时间敏感标志,每个所述标识符都与软件中断相关联。例如,被创建的结构可以被存储在被配置来提供中断信息和/或相关联的计算设备的特性的更大的结构中。
与(多个)软件中断结构306相似地,(多个)线程结构308表示与一个或多个任务相关联的一个或多个结构。除了别的以外,线程结构308包括“等待时间敏感线程标志”,与上述描述类似,其可以被使用来将线程识别为是否是等待时间敏感的。如上文同样描述的,将被意识到和被理解的是,(多个)线程结构308可以包括以各种不同形式的各种不同的数据量。在一些实施例中,这种结构可以在相关联的任务和/或线程被创建时而被创建,并且除非在创建时刻另外指定,这种结构可以被设置为默认值。特许模式存储器304可以包括用于每个识别的线程的唯一的线程结构308(例如,多个线程结构308)和/或拥有包括多个线程标识符和相应的等待时间敏感标志的一个线程结构308。
(多个)核数据结构310表示与处理器核相关联的一个或多个结构。如上所述,核数据结构310可以被关联于一个处理器核或多个处理器核。在这个示例中,在(多个)处理器核104和(多个)核数据结构310之间存在一一对应。因此,处理器核104(0)拥有对应的核数据结构310(0),处理器核104(1)拥有对应的核数据结构310(1),依此类推。标记被包含在(多个)核数据结构310中,此处表示为“SWIntBusy”标志,其可以被用来指示相关联的处理器核是否正忙于处理软件中断。
上文所述的数据结构的组合可以被使用来确定如何在多个处理器核中间划拨(appropriate)任务。这进而可以导致如用户所感知的计算设备更好的性能。例如,如图3所图示,考虑(多个)处理器核104。在这个时间上的捕获处,处理器核0被图示为正忙于运行软件中断,处理器核1被图示为正在忙于运行线程,并且处理器核2到n-1被图示为正处于空闲。计算设备102也包括任务312,其准备好运行和/或正在竞争访问处理器核。此处,以一般的意义来使用术语“任务”,并且其可以被用来表达如组织的软件应用和/或线程般复杂的事物(something),或者其可以被用来表达如机器级指令分组般简单的事物,或者其可以被用来表达在中间的机器级指令的任何集成(collection)。可替换地或附加地,可以以任何合适的方式来调用和/或识别任务,包括通过硬件通知和/或软件通知,比如通过内部设备116和/或外部设备118。在图3中,任务312已经被图示成包括四个任务:要运行的软件中断(SWInt)、准备好运行的线程、要运行的等待时间敏感的SWInt以及准备好运行的等待时间敏感的线程。将被意识到和理解的是,在不偏离要求保护的主题的范围的情况下,任何数量的任务都可以被识别。
一些实施例在将任务和/或机器级指令指派给处理器核之前分析信息,例如包含在(多个)软件中断结构306、(多个)线程结构308和/或(多个)核数据结构310中的信息。在这个示例中,(多个)软件中断结构306可以被分析来确定要在任务312中运行的第一(如图示在最上面)SWInt不是等待时间敏感的,而第二SWInt(如图示从上面第三个)是等待时间敏感的。类似地,(多个)线程结构308可以被分析来确定准备好运行的第一线程(如图示从上面第二个)不是等待时间敏感的,而准备好运行的第二线程(如图示的底部动作)是等待时间敏感的。虽然该讨论按照是否等待时间敏感来表征任务和/或动作,但是将被意识到和理解的是,可以以类似的方式使用任务和/或动作的其他特征。
在识别了与一个或多个任务相关联的(多个)特征时,一些实施例诸如通过分析(多个)核数据结构310来进一步确定与一个或多个处理器核相关联的信息和/或特征。包含在(多个)核数据结构310中的信息可以被用来识别处理器0和1当前分别正在忙于运行SWInt和线程。这个信息也可以被用来识别处理器核2至n-1当前是空闲的。可替换地或附加地,一些实施例使用软件中断结构306来识别在处理器核“0”上运行的SWInt是否是等待时间敏感的。类似地,线程结构308可以被用来识别在处理器核“1”上运行的线程是否是等待时间敏感的,该正在运行的线程拥有什么优先次序等。因此,应该指出,可以获得多种信息:表征(多个)处理器核的信息、表征运行在处理器核上的(多个)任务的信息,以及表征准备好被指派到处理器核的(多个)任务的信息。基于这个信息,一个或多个任务可以被(重新)指派到处理器核。例如,任务312的等待时间敏感的SWInt和等待时间敏感的线程可能已经被原始指派到处理器核0或1,但是由于(多个)任务的等待时间敏感性质和/或由于被原始指派的(多个)处理器核的忙碌状态,其被重新指派到空闲的处理器核。非等待时间敏感的SWInt和/或线程或者可以被(重新)指派到空闲的处理器核,或者可以被指派到忙碌的处理器核以便保证空闲的(多个)处理器核容易地可用于等待时间敏感的任务。因此,不仅基于任务的特性,也基于(多个)处理器核的特性以及基于(多个)处理器核可能当前正在运行什么(例如,中断,任务等),来将任务(重新)指派给(多个)处理器核。
应该指出,图3图示在时间上的某个捕获处的计算设备的状态。在这个捕获时间期间,处理器核“0”和处理器核“1”被图示为处于忙碌状态,而其他(多个)处理器核被图示为处于空闲状态。但是,由于(多个)处理器核开始和完成各种不同的状态,其状态可以随着时间推移而变化。一些实施例搜集和/或保持与计算设备的系统状态相关联的信息,比如处理器核何时变得忙碌、处理器核何时变得空闲、处理器核何时在运行高优先级任务(和/或机器级指令分组)、处理器核何时在运行可中断的任务等等。这个信息可以以任何合适的格式进行存储,比如与图3所讨论的各种不同的数据结构。但是,为了保持该系统状态的精确表示,一些实施例多于一次地和/或以连续的方式来搜集信息。
考虑图4,其图示与处理器核相关联的时间线。这里,处理器核被指代为核“x”来指示哪个处理核执行这个功能的一般性质。一系列记号(tick)402被标记在时间线上。尽管该系列记号402被图示为本质上是周期性的,但是将被意识到和被理解的是,在不偏离要求保护的主题的范围的情况下该系列标记402可以本质上是非周期性的。记号402可以以任何合适方式生成,例如与核“x”相关联的时钟记号、可编程的定时器中断等等。另外,记号之间的时间可以是任何合适的持续时间,从纳秒、微秒、毫秒、秒等。每次记号一出现,核“x”就执行任务404以搜集与该系统状态相关联的信息,比如系统中的(多个)处理器核是忙碌还是空闲,(多个)处理器核是否正在处理中断、(多个)处理器核正在什么模式(中断模式、特许模式、用户模式、空闲模式)中运行、处理器核正在被如何使用、处理器核使用率随时间推移的百分比等等。在一些实施例中,如此处在图4中所图示的,核“x”可以被专门用于保持系统状态信息。但是,其他实施例在空闲时段期间在核“x”上调度任务。
作为任务404的一部分,一些实施例保持跟踪处理器核花费多少时间来执行硬件和/或软件中断。该时间可以以任何合适的方式来测量,诸如以与执行的处理器核相关联的时钟周期等方式。可替换地或附加地,可以将该时间与阈值相比较来确定随时间推移处理器核处理中断的忙碌程度和/或“负载繁重”程度。类似地,随着测量的处理时间降到给定阈值以下,这些值可以被调整。因此,根据数据搜集的频繁程度,可以保持该系统状态的相当准确的表示。在确定处理器核的特性(例如,“负载繁重”、忙于处理中断、空闲等)时,一些实施例可以更新和/或存储这个信息,例如存储于在图3中所讨论的(多个)核数据结构310中的数据。通过随时间推移重复地继续搜集信息,可以基于描述系统状态的当前信息来将任务指派给处理器核。
为了进一步演示,考虑图5,其图示了描述根据一个或多个实施例的方法中的步骤的流程图。该方法可以通过任何合适的硬件、软件、固件或它们的组合来执行。在至少一些实施例中,该方法的各方面可以由在一个或多个计算设备上执行的一个或多个被合适地配置的软件模块来实现,例如图1的处理器核加载模块112。
步骤500接收软件中断。响应于接收该软件中断,步骤502确定该软件中断是否是等待时间敏感的。这可以通过任何合适的方式被确定。例如,该软件中断的通知可以包括描述该软件中断是否是等待时间敏感的特征。可替换地或附加地,在结构中的一个或多个标志可以被分析,例如在图3中所描述的软件中断结构306。响应于确定该软件中断不是等待时间敏感的,步骤504在当前的处理器核或指定的目标处理器核上执行该软件中断。当前的处理器核表示做出等待时间敏感判断的处理器核。指定的目标处理器核可以是预先指派的处理器核,如前进一步描述的,其可以是当前的处理器核,也可以不是当前的处理器核。
响应于确定该软件中断是等待时间敏感的,步骤506确定当前处理器核或指定的目标处理器核是否是中断繁重的。这可以以任何合适的方式来被确定,其示例由上文所提供。响应于确定当前的处理器核和/或指定的目标处理器核不是中断繁重的,该流程过程进行到步骤504并且在该当前处理器核或该指定的目标核上执行软件中断。
响应于确定当前的处理器核或指定的目标处理器核是中断繁重的,步骤508为该软件中断确定期望的处理器核。例如,该期望的处理器核可以简单地是空闲的处理器核。可替换地或附加地,该期望的处理器核可以基于诸如处理器速度、软件中断在其上运行的最后的处理器核、功率消耗和/或平衡等之类的附加特性来选择。例如,基于哪个处理器核最后运行软件中断和/或任务来选择处理器核有时可以增加在处理器核高速缓冲存储器(cache)中拥有相关日期的机会。响应于确定该期望的处理器核,步骤510在该确定的处理器核上执行该软件中断。
作为附加的示例,考虑图6,其图示了描述根据一个或多个实施例的方法中的步骤的流程图。该方法可以通过任何合适的硬件、软件、固件或它们的组合来执行。在至少一些实施例中,该方法的各方面可以由在一个或多个计算设备上执行的一个或多个被合适地配置的软件模块来实现,例如图1的处理器核加载模块112。
步骤600准备要运行的软件线程。响应于准备要运行的软件线程,步骤602确定该软件线程是否是等待时间敏感的。这可以以任何合适的方式来确定,例如通过分析存储在和图3一起所描述的线程结构308中的数据。
响应于确定该软件线程不是等待时间敏感的,步骤604从可用的处理器核中确定期望的处理器核来运行该软件线程。这可以包括基于被搜集和/或存储在图2的核数据结构310中的信息来选择期望的处理器、通过选择当前运行的处理器核来选择期望的处理器核、基于预先确定的指派来选择期望的处理器核等等。响应于确定期望的处理器核,步骤606在所确定的处理器核上运行该软件线程。
响应于确定该软件线程是等待时间敏感的,步骤608搜集处理器核使用率信息。在一些实施例中,这需要访问存储在结构中的预先搜集的信息,比如如前所述的处理器核中断繁重状态信息,和或需要执行一个或多个任务来探查(probe)系统状态。可替换地或附加地,这可以包括确定处理器核百分比使用率信息。
响应于搜集处理器使用率信息,步骤610基于处理器核使用率信息确定期望的处理器核来运行该软件线程。在确定期望的处理器核时,该流程进行到步骤606并在所确定的处理器核上运行该软件线程。
已经考虑了调度等待时间敏感的软件中断和/或线程的讨论,现在考虑可以被用来实现上述实施例的示例设备的讨论。
示例设备
图7图示了示例设备700的各种不同的组件实现本文所述的等待时间敏感的线程和/或中断调度技术的实施例,所述示例设备700可以被实现为参考图1所述的任何类型的便携式和/或计算机设备。设备700包括使得能够实现设备数据704(例如,接收到的数据,正在被接收的数据,被调度用于广播的数据,数据的数据分组等)的有线和/或无线通信的通信设备702。该设备数据704或其他设备内容可以包括设备的配置设置、存储在设备上的媒体内容和/或与设备的用户相关联的信息。存储在设备704上的媒体内容可以包括任何类型的音频、视频和/或图像数据。设备700包括一个或多个数据输入706,通过上述数据输入,可以接收任何类型的数据、媒体内容和/或输入,比如用户可选择的输入、消息、音乐、电视媒体内容、记录的视频内容以及从任何内容和/或数据源所接收的任何其他类型的音频、视频和/或图像数据。
设备700也包括可以被实现为串行和/或并行接口、无线接口、任何类型的网络接口、调制解调器以及任何其他类型的通信接口中的任一个或多个的通信接口708。该通信接口708在设备700和通信网络之间提供连接和/或通信链路,通过上述连接和/或通信链路,其他电子、计算和通信设备与设备700通信数据。
设备700包括处理各种不同的计算机可执行或可读指令来控制设备700的操作以及来实现上述实施例的一个或多个处理器核710(例如,微处理器、控制器等中的任一个)。可替换地或附加地,可以利用与通常在712处识别的处理和控制电路结合地实现的硬件、固件或固定逻辑电路中的任何一个或其组合来实现设备700。尽管未被示出,设备700可以包括将该设备内的各种不同的组件进行耦合的系统总线或数据传输系统。系统总线可以包括诸如存储器总线或存储器控制器、外设总线、通用串行总线和/或利用多种总线架构中任何一种的处理器或局部总线之类的不同的总线结构中的任何一个或其组合。
设备700也包括诸如一个或多个硬件存储器组件之类的计算机可读媒体714,其示例包括随机存取存储器(RAM)、非易失性存储器(例如,只读存储器(ROM)、闪存、EPROM、EEPROM等中的任何一个或多个)以及盘存储设备。盘存储设备可以被实现为任何类型的磁或光存储设备,比如硬盘驱动器、可记录和/或可重写紧致盘(CD)、任何类型的数字通用盘(DVD)等。设备700也可以包括大容量存储媒体设备716。
计算机可读媒体714提供数据存储机构来存储设备数据704以及各种不同的设备应用718和与设备700的操作方面相关的任何其他类型的信息和/或数据。例如,操作系统模块720可以利用计算机可读媒体714作为计算机应用来被保持,并且可以在(多个)处理器核710上被执行。该设备应用718可以包括设备管理器(例如,控制应用、软件应用、信号处理以及控制模块、对特定设备而言是本机的代码、用于特定设备的硬件抽象层等)以及可以包括web浏览器、图像处理应用、诸如即时消息发送应用之类的通信应用、字处理应用和多种其他不同应用的其他应用。该设备应用718也包括实现本文所述的技术的实施例的任何系统组件或模块。在这个示例中,该设备应用718另外包括被示为软件模块和/或计算机应用的处理器核加载模块722。处理器核加载模块722代表被用来基于处理器核、软件中断和/或任务的特征将软件中断和/或任务(重新)指派给处理器核的软件。可替换地或附加地,处理器核模块722可以被实现为硬件、软件、固件或它们的任何组合。
设备700也包括向音频系统726提供音频数据和/或向显示系统728提供视频数据的音频和/或视频输入—输出系统724。该音频系统726和/或显示系统728可以包括处理、显示和/或以其他方式呈现音频、视频和图像数据的任何设备。可以通过RF(射频)链路、S-视频链路、复合视频链路、分量视频链路、DV1(数字视频接口)、模拟音频连接或其他类似的通信链路来将视频信号和音频信号从设备700传送到音频设备和/或传送到显示设备。在一个实施例中,该音频系统726和/或该显示系统728被实现为设备700的外部组件。可替换地,该音频系统726和/或该显示系统728被实现为示例设备700的集成组件。
结论
各种不同的实施例提供了至少部分基于一个或多个处理器核使用率度量来调度等待时间敏感的任务的能力。一些实施例搜集与一个或多个处理器核是否处于重负载状态相关联的信息。可替换地或附加地,一些实施例搜集识别等待时间敏感任务的信息。当已经确定被原始指派的处理器核已经超过使用率阈值时,(多个)任务可以被(重新)指派给不同的(多个)处理器核以供执行。
尽管已经以特定于结构特征和/或方法动作的语言描述了实施例,但是应理解的是,在所附的权利要求中定义的实施例不一定受限于所述的特定的特征或动作。相反,特定的特征和动作是作为实现要求保护的实施例的示例方式而被公开。
Claims (11)
1.一种计算机实现的调用软件中断的方法,包括:
接收软件中断;
响应于接收该软件中断,确定该软件中断是否是等待时间敏感的;
响应于确定该软件中断是等待时间敏感的,确定当前处理器核是否是中断繁重的;
响应于确定该当前处理器是中断繁重的,确定除该当前处理器核之外的期望的处理器核来运行该软件中断;以及
响应于确定除该当前处理器核之外的该期望的处理器核,在该期望的处理器核上执行该软件中断。
2.权利要求1的方法,还包括:
响应于确定该当前处理器核不是中断繁重的,在该当前处理器核上执行该中断。
3.权利要求1的方法,其中确定该软件中断是否是等待时间敏感的还包括分析与该软件中断相关联的数据结构。
4.权利要求3的方法,其中该数据结构被配置来包括等待时间敏感标志来指示该软件中断是否是等待时间敏感的。
5.权利要求4的方法,其中确定当前处理器核是中断繁重的包括分析第二数据结构。
6.权利要求1的方法,其中确定除该当前处理器核之外的期望的处理器核还包括识别其负载低于该当前处理器核的处理器核。
7.权利要求1的方法,还包括:
至少部分基于该期望的处理器核不是中断繁重的,识别该期望的处理器核。
8.权利要求1的方法,其中该软件中断与输入设备相关联。
9.一种计算机实现的调用软件线程的方法,所述方法包括:
准备要运行的软件线程;
确定该软件线程是否是等待时间敏感的;
响应于确定该软件线程是等待时间敏感的,搜集处理器核使用率信息;
至少部分基于该处理器核使用率信息,确定期望的处理器核来运行该软件线程;
响应于确定该期望的处理器核,在所述确定的处理器核上运行该软件线程。
10.权利要求9的方法,其中该软件线程包括与软件应用相关联的软件线程。
11.包含计算机可读指令的一个或多个计算机可读存储媒体,该计算机可读指令在被执行时实现如权利要求1-10中任意一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/587737 | 2012-08-16 | ||
US13/587,737 US8943252B2 (en) | 2012-08-16 | 2012-08-16 | Latency sensitive software interrupt and thread scheduling |
PCT/US2013/054595 WO2014028411A1 (en) | 2012-08-16 | 2013-08-13 | Latency sensitive software interrupt and thread scheduling |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104838359A CN104838359A (zh) | 2015-08-12 |
CN104838359B true CN104838359B (zh) | 2018-08-03 |
Family
ID=49083752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380054204.7A Active CN104838359B (zh) | 2012-08-16 | 2013-08-13 | 等待时间敏感的软件中断和线程调度 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8943252B2 (zh) |
EP (1) | EP2885707B1 (zh) |
CN (1) | CN104838359B (zh) |
WO (1) | WO2014028411A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3039540B1 (en) | 2013-08-26 | 2021-08-11 | VMware, Inc. | Virtual machine monitor configured to support latency sensitive virtual machines |
US10558924B2 (en) | 2014-05-23 | 2020-02-11 | DataRobot, Inc. | Systems for second-order predictive data analytics, and related methods and apparatus |
US9852005B2 (en) * | 2014-10-02 | 2017-12-26 | Mediatek Inc. | Multi-core processor systems and methods for assigning tasks in a multi-core processor system |
US9760511B2 (en) | 2014-10-08 | 2017-09-12 | International Business Machines Corporation | Efficient interruption routing for a multithreaded processor |
ITUA20161426A1 (it) * | 2016-03-07 | 2017-09-07 | Ibm | Dispaccio di lavori per esecuzione in parallelo da processori multipli |
US10218628B2 (en) * | 2017-04-12 | 2019-02-26 | General Electric Company | Time sensitive network (TSN) scheduler with verification |
US10095305B2 (en) * | 2016-06-18 | 2018-10-09 | Qualcomm Incorporated | Wake lock aware system wide job scheduling for energy efficiency on mobile devices |
GB2571651B (en) * | 2016-10-21 | 2022-09-21 | Datarobot Inc | Systems for predictive data analytics, and related methods and apparatus |
US10346327B2 (en) | 2017-03-22 | 2019-07-09 | International Business Machines Corporation | Timer placement optimization |
US10754706B1 (en) | 2018-04-16 | 2020-08-25 | Microstrategy Incorporated | Task scheduling for multiprocessor systems |
CN110543148B (zh) * | 2018-05-28 | 2021-04-09 | 华为技术有限公司 | 一种任务调度方法及装置 |
CN110633133A (zh) * | 2018-06-21 | 2019-12-31 | 中兴通讯股份有限公司 | 一种任务处理方法、装置及计算机可读存储介质 |
US10915359B2 (en) * | 2018-11-19 | 2021-02-09 | Ati Technologies Ulc | Variable latency request arbitration |
US20220129327A1 (en) * | 2020-10-27 | 2022-04-28 | Red Hat, Inc. | Latency sensitive workload balancing |
CN115437755A (zh) * | 2021-06-02 | 2022-12-06 | 华为技术有限公司 | 中断调度方法、电子设备及存储介质 |
CN113300800B (zh) * | 2021-07-27 | 2021-10-29 | 之江实验室 | 一种多模式确定性数据处理装置及方法 |
US20230100059A1 (en) * | 2021-09-21 | 2023-03-30 | Intel Corporation | Interrupt handling by migrating interrupts between processing cores |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1474971A (zh) * | 2000-11-17 | 2004-02-11 | �Ƚ�װ�ù�˾ | 用于电脑系统中执行多级中断方案的系统及方法 |
CN101354664A (zh) * | 2008-08-19 | 2009-01-28 | 中兴通讯股份有限公司 | 多核处理器中断负载均衡方法和装置 |
CN101546276A (zh) * | 2008-03-26 | 2009-09-30 | 国际商业机器公司 | 多核环境下实现中断调度的方法及多核处理器 |
CN102289390A (zh) * | 2010-06-01 | 2011-12-21 | 微软公司 | 系统管理程序调度器 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5542035A (en) | 1993-10-27 | 1996-07-30 | Elonex Technologies | Timer-controlled computer system shutdown and startup |
US5724565A (en) | 1995-02-03 | 1998-03-03 | International Business Machines Corporation | Method and system for processing first and second sets of instructions by first and second types of processing systems |
US6542991B1 (en) | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
AU2003300948A1 (en) | 2002-12-16 | 2004-07-22 | Globespanvirata Incorporated | System and method for scheduling thread execution |
US7565562B2 (en) | 2004-09-03 | 2009-07-21 | Intel Corporation | Context based power management |
US7526661B2 (en) | 2004-12-02 | 2009-04-28 | Intel Corporation | Performance state-based thread management |
US7861098B2 (en) | 2006-06-30 | 2010-12-28 | Intel Corporation | Method and apparatus for user-activity-based dynamic power management and policy creation for mobile platforms |
US7552347B2 (en) | 2006-06-13 | 2009-06-23 | Scientific-Atlanta, Inc. | Adaptive power management of a disk drive based on user activity |
US7953906B2 (en) | 2007-02-20 | 2011-05-31 | Ati Technologies Ulc | Multiple interrupt handling method, devices and software |
US20090172229A1 (en) * | 2007-12-28 | 2009-07-02 | Krystof Zmudzinski | Methods for selecting cores to execute system management interrupts |
JP5167844B2 (ja) * | 2008-02-05 | 2013-03-21 | 日本電気株式会社 | プロセッサ、電子機器、割込み制御方法及び割込み制御プログラム |
US20090210888A1 (en) | 2008-02-14 | 2009-08-20 | Microsoft Corporation | Software isolated device driver architecture |
US8010822B2 (en) | 2008-03-28 | 2011-08-30 | Microsoft Corporation | Power-aware thread scheduling and dynamic use of processors |
US9027027B2 (en) | 2008-06-09 | 2015-05-05 | Microsoft Technology Licensing, Llc | Thread management based on device power state |
US20090320031A1 (en) | 2008-06-19 | 2009-12-24 | Song Justin J | Power state-aware thread scheduling mechanism |
US8296773B2 (en) | 2008-06-30 | 2012-10-23 | International Business Machines Corporation | Systems and methods for thread assignment and core turn-off for integrated circuit energy efficiency and high-performance |
TWI360742B (en) | 2008-10-17 | 2012-03-21 | Kinpo Elect Inc | Power management method for input device |
US8954977B2 (en) | 2008-12-09 | 2015-02-10 | Intel Corporation | Software-based thread remapping for power savings |
US9043795B2 (en) | 2008-12-11 | 2015-05-26 | Qualcomm Incorporated | Apparatus and methods for adaptive thread scheduling on asymmetric multiprocessor |
US8346203B2 (en) | 2009-08-14 | 2013-01-01 | Apple Inc. | Power management techniques for buffering and playback of audio broadcast data |
US20110055838A1 (en) | 2009-08-28 | 2011-03-03 | Moyes William A | Optimized thread scheduling via hardware performance monitoring |
KR101610828B1 (ko) * | 2009-09-23 | 2016-04-08 | 삼성전자주식회사 | 멀티코어 프로세서의 인터럽트 온/오프 관리 장치와 방법 |
US8321615B2 (en) * | 2009-12-18 | 2012-11-27 | Intel Corporation | Source core interrupt steering |
US8866791B2 (en) | 2010-01-06 | 2014-10-21 | Apple Inc. | Portable electronic device having mode dependent user input controls |
US8381004B2 (en) | 2010-05-26 | 2013-02-19 | International Business Machines Corporation | Optimizing energy consumption and application performance in a multi-core multi-threaded processor system |
US20120284543A1 (en) | 2011-05-02 | 2012-11-08 | Microsoft Corporation | User input triggered device power management |
US20120284729A1 (en) | 2011-05-03 | 2012-11-08 | Microsoft Corporation | Processor state-based thread scheduling |
US9354934B2 (en) * | 2012-01-05 | 2016-05-31 | International Business Machines Corporation | Partitioned shared processor interrupt-intensive task segregator |
-
2012
- 2012-08-16 US US13/587,737 patent/US8943252B2/en active Active
-
2013
- 2013-08-13 EP EP13753937.5A patent/EP2885707B1/en active Active
- 2013-08-13 CN CN201380054204.7A patent/CN104838359B/zh active Active
- 2013-08-13 WO PCT/US2013/054595 patent/WO2014028411A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1474971A (zh) * | 2000-11-17 | 2004-02-11 | �Ƚ�װ�ù�˾ | 用于电脑系统中执行多级中断方案的系统及方法 |
CN101546276A (zh) * | 2008-03-26 | 2009-09-30 | 国际商业机器公司 | 多核环境下实现中断调度的方法及多核处理器 |
CN101354664A (zh) * | 2008-08-19 | 2009-01-28 | 中兴通讯股份有限公司 | 多核处理器中断负载均衡方法和装置 |
CN102289390A (zh) * | 2010-06-01 | 2011-12-21 | 微软公司 | 系统管理程序调度器 |
Also Published As
Publication number | Publication date |
---|---|
CN104838359A (zh) | 2015-08-12 |
EP2885707B1 (en) | 2020-01-01 |
WO2014028411A1 (en) | 2014-02-20 |
US20140052882A1 (en) | 2014-02-20 |
EP2885707A1 (en) | 2015-06-24 |
US8943252B2 (en) | 2015-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104838359B (zh) | 等待时间敏感的软件中断和线程调度 | |
US10628216B2 (en) | I/O request scheduling method and apparatus by adjusting queue depth associated with storage device based on hige or low priority status | |
US10437639B2 (en) | Scheduler and CPU performance controller cooperation | |
CN108090731B (zh) | 一种信息处理方法及设备 | |
EP3008594B1 (en) | Assigning and scheduling threads for multiple prioritized queues | |
US9015724B2 (en) | Job dispatching with scheduler record updates containing characteristics combinations of job characteristics | |
US7853950B2 (en) | Executing multiple threads in a processor | |
JP2011192281A (ja) | 仮想マシンモニター及び仮想マシンモニターのスケジューリング方法 | |
CN101097514A (zh) | 启用同时多线程(smt)的系统及其管理方法 | |
US10120721B2 (en) | Pluggable engine for application specific schedule control | |
CN111104210A (zh) | 一种任务处理方法、装置及计算机系统 | |
CN113495780A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
CN111831414A (zh) | 线程迁移方法、装置、存储介质及电子设备 | |
WO2013035246A1 (ja) | 仮想計算機制御装置、仮想計算機制御方法、仮想計算機制御プログラム、及び集積回路 | |
CN114327894A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN111831432B (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN111831436A (zh) | Io请求的调度方法、装置、存储介质及电子设备 | |
CN111831439A (zh) | Io请求的处理方法、装置、存储介质及电子设备 | |
CN115756866A (zh) | 负载均衡方法、装置及存储介质 | |
Dudak et al. | Utilization of RTOS solutions in IoT modules based on RISC microcontrollers | |
KR102407781B1 (ko) | 플립 큐 관리에 기초한 그래픽스 컨텍스트 스케줄링 | |
CN111831409A (zh) | 线程调度方法、装置、存储介质及电子设备 | |
Alzahrani et al. | adCFS: Adaptive completely fair scheduling policy for containerised workflows systems | |
Walser et al. | Real-time Container Orchestration Based on Time-utility Functions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |