CN107015862B - 用于具有不同能力的核心的线程和/或虚拟机调度 - Google Patents
用于具有不同能力的核心的线程和/或虚拟机调度 Download PDFInfo
- Publication number
- CN107015862B CN107015862B CN201611028185.2A CN201611028185A CN107015862B CN 107015862 B CN107015862 B CN 107015862B CN 201611028185 A CN201611028185 A CN 201611028185A CN 107015862 B CN107015862 B CN 107015862B
- Authority
- CN
- China
- Prior art keywords
- cores
- core
- capabilities
- execution
- capability
- 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
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/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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/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/5038—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 execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/5044—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 hardware capabilities
-
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
Abstract
本文公开与线程和/或虚拟机的调度关联的设备、方法和存储介质。在实施例中,设备可提供有操作系统的调度器和/或虚拟机监测器。调度器要检索或接收具有不同能力的,设备的一个或多个多核处理器的核心的能力,并且至少部分基于核心的能力和多个执行线程的特性来调度多个执行线程以供在核心的所选的一个或多个核心上执行。虚拟机监测器检索或接收核心的能力,并且至少部分基于核心的能力和虚拟机的相应优先级来调度多个虚拟机以供在核心的所选的一个或多个核心上执行。可描述和/或要求保护其他实施例。
Description
技术领域
本公开涉及计算领域。更具体来说,本公开涉及用于具有不同(diverse)能力的线程和/或虚拟机调度方法及设备。
背景技术
本文所提供的背景描述是为了一般呈现本公开的上下文的目的。除非本文另加指示,否则本章节中所描述的材料不是本申请中的权利要求的现有技术,并且不是通过包括在本章节中而承认是现有技术。
管芯内变化(IDV)自然产生具有比其他核心更好(更高性能或更低电压)的一些核心的多核处理器。按照这些核心的原始(native)能力的其枚举和使用可提供能够实现和上市的优势加速(upside turbo)性能。一些多核处理器、例如Intel® x64多核处理器识别能够以比标准频率范围要高的频率运行的核心。对于x64多核处理器,这些所识别的较高性能核心称作优势(favored)核心,以及硬件特征称作不对称核心加速(ACT)。
现有操作系统(OS)软件不知道各种核心的性能能力中的这种隐式异构性。因此,为了利用该特征,系统管理员必须使用白名单来手动识别重要的性能敏感或者另外高优先级执行线程,以及采用驱动程序来建立白名单中的线程与优势核心之间的密切关系(affinity)。
主要缺点在于,管理员需要对不相同情形/工作负荷保持更新白名单,这根本不是可缩放解决方案。另外,用户应用常常可能建立其他工作负荷(不在白名单中)与优势核心的密切关系,由此引起不利的性能影响。
附图说明
通过以下结合附图的详细描述,将易于了解实施例。为了促进本描述,相同的参考标号表示相同的结构元件。通过示例而不是通过限制来在附图的图形中示出实施例。
图1示出按照各种实施例的具有本公开的线程调度技术的示例计算装置。
图2示出按照各种实施例的用于调度执行线程的示例过程。
图3示出按照各种实施例的处理器标识和能力分级(ranked)核心集合的概念。
图4示出按照各种实施例的用于基于线程特性和核心或者核心集合能力来调度线程的执行的示例过程。
图5示出按照各种实施例的具有本公开的虚拟机调度技术的示例计算装置。
图6示出按照各种实施例的用于调度虚拟机的示例过程。
图7示出按照各种实施例的适合于用来实施本公开的方面的示例计算机系统。
图8示出按照各种实施例的具有用于实施参照图2-4和图6所描述的方法的指令的存储介质。
具体实施方式
本文公开与调度线程和/或虚拟机关联的设备、方法和存储介质。在实施例中,设备可包括一个或多个多核处理器,其各具有有不同能力的多个核心。此外,该设备可提供有操作系统的调度器和/或虚拟机监测器。调度器可配置成检索或接收核心的能力,并且至少部分基于核心的能力和多个执行线程的特性来调度设备的多个执行线程以供在核心的所选的一个或多个核心上执行。虚拟机监测器可配置成检索或接收核心的能力,并且至少部分基于核心的能力和虚拟机的相应优先级来调度设备的多个虚拟机以供在核心的所选的一个或多个核心上执行。
在以下详细描述中,对形成其部分的附图进行参照,其中相同标号通篇表示相同的部分,并且其中通过说明示出可实施的实施例。要理解,可利用其他实施例,并且可进行结构或逻辑更改,而没有背离本公开的范围。因此,以下详细描述不是以限制意义来采用,而是实施例的范围由所附权利要求及其等效物来定义。
在所附描述中公开本公开的方面。可设计本公开的备选实施例及其等效物,而没有背离本公开的精神或范围。应当注意,以下所公开的相同元件在附图中通过相同参考标号来指示。
各种操作可通过最有助于理解要求保护主题的方式依次描述为多个分立动作或操作。但是,描述的顺序不应当被解释为暗示这些操作必须是顺序相关的。具体来说,这些操作可以不按照呈现的顺序来执行。所描述的操作可按照与所描述实施例不相同的顺序来执行。可执行各种附加操作,和/或在附加实施例中可省略所描述的操作。
为了本公开的目的,短语“A和/或B”表示(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或者(A、B和C)。
本描述可使用短语“在一实施例中”或“在实施例中”,其各可表示相同或不相同实施例的一个或多个。此外,如针对本公开的实施例所使用的术语“包括”、“包含”、“具有”等是同义的。
如本文所使用的术语“核心”表示多核处理器的处理器核心。术语“模块”可表示包括执行一个或多个软件或固件程序的专用集成电路(ASIC)、电子电路、处理器(共享、专用或编组)和/或存储器(共享、专用或编组),组合逻辑电路和/或提供所描述功能性的其他适当组件或者作为其中一部分。
现在参照图1,其中示出按照各种实施例的具有本公开的线程和/或虚拟机调度技术的计算装置。如所示的,在实施例中,计算装置100可包括硬件101、固件(FW)/基本输入/输出服务(BIOS)106、OS 112和应用114,其如所示的操作地相互耦合。硬件101可包括一个或多个多核处理器102,其各具有有不同能力的多个核心,其中一些核心的能力高于其他核心的能力。核心能力的示例可包括但不限于最大操作频率和/或电压。OS 112可包括多个服务和实用程序(utility)130。应用114和/或OS 112可具有一个或多个执行线程(又可简单地称作线程)。服务和实用程序130可包括服务/实用程序,例如存储器管理、输入/输出(I/O)装置分配等等。具体来说,服务和实用程序130可包括调度器128,其配置成调度OS 112和应用114的执行线程在(一个或多个)多核处理器102的核心的所选的核心中的执行。如以下将更详细描述的,调度器128可配置有本公开的执行线程调度技术,以至少部分基于核心的能力和执行线程的特性来调度执行线程在(一个或多个)多核处理器102的核心的所选的一个或多个核心中的执行。执行线程的特性的示例可包括但不限于静态特性(例如线程将要在前台还是在后台执行、或者其所指配优先级)和动态特性(例如线程是否为超过执行时间阈值的长运行线程、或者具有超过预取阈值的大量预取的线程等等)。在实施例中,调度器128可配置成至少部分基于核心集合的能力和执行线程的特性来调度执行线程在(一个或多个)多核处理器102的核心的所选的一个或多个集合中的执行,其中各集合具有一个或多个核心。结果,可自动调度某些执行线程(例如更重要、更关键、更加性能敏感或者更加计算密集的执行线程)以供在具更大能力的核心或核心集合上执行,而不要求系统管理员介入。下面将参照图2-4进一步描述与基于核心能力的执行线程调度相关的这些和其他方面。
除了具有较高能力的核心的利用之外,(一个或多个)多核处理器102另外可以是本领域已知的多个多核处理器的任一个。在实施例中,硬件101还可包括存储器104、I/O装置108或其他元件(未示出)。存储器104可以是本领域已知的适合存储数据的任何已知易失性或者非易失性存储器。存储器104可包括系统存储器和高速缓冲存储器的分层结构。高速缓冲和系统存储器均可分别组织为高速缓存页面和存储器页面。I/O装置108的示例可包括通信或连网接口(例如以太网、WiFi、3G/4G、Bluetooth®、近场通信、通用串行总线(USB)等等)、存储装置(例如固态、磁和/或光驱动器)、输入装置(例如键盘、鼠标、触摸敏感屏幕等等)和输出装置(例如显示装置、打印机等等)。
FW/BIOS 106可以是本领域已知的多个FW/BIOS的任一个。除了配备有本公开的基于核心能力和/或线程特性的执行线程调度的调度器128之外,OS 112同样可以是本领域已知的多个OS的任一个,例如来自Microsoft® Corporation的Windows OS。类似地,应用114可以是本领域已知的多个应用的任一个。
现在参照图2,其中示出按照各种实施例的用于调度线程的执行的示例过程。如所示的,用于执行线程的基于核心能力和/或线程特性的调度的过程200可包括在框202-216所执行的操作。在框202-216的操作可由例如图1的调度器128来执行(由多核处理器102的一个或多个处理器核心所执行)。
过程200可开始于框202。在框202,可进行关于核心能力信息是否可用的确定。在由调度器128所执行时,确定可例如在调度器128的启动时进行。在实施例中,可通过例如从相应处理器核心访问多核处理器的标识(其可隐式地传送核心能力信息是否可用)进行确定。
现在参照图3,其中示出按照一些实施例的处理器标识和能力分级核心集合的概念。如所示的,多核处理器102可包括n个核心302a-302n。此外,多核处理器102可配置有标识(例如CPUID)。在实施例中,标识可通知调度器128各种核心302a-302n的核心能力信息(例如频率、电压等等)是否可用。对于实施例,各种核心302a-302n的核心能力信息可分别存储在各种核心302a-302n的所指定控制寄存器306(例如模型特定寄存器(MSR))中。
返回参照图2,在确定核心能力信息可用时,过程200可继续到框204。在框204,相应核心能力可从各种核心中(例如,对于图3的实施例,从相应控制寄存器306中)读取和检索。在一些实施例中,在相应核心能力的检索时,核心还可根据其能力在逻辑上分级并且根据其分级来识别。此外,能力分级和识别的核心还可在逻辑上组织为能力分级核心集合,其中各核心集合具有一个或多个能力分级核心。
再次参照图3,如所示的,核心可根据其能力在逻辑上分级、排序和识别为核心1、核心2、…核心n(302a-302n)。对于所示的实施例,在各种核心302a-302n之中,核心1 302a是具最大能力的,核心2 302b是接下来具最大能力的…,等等。然后,核心集合1 304a可在逻辑上通过核心1 302a来形成;核心集合2 304b可在逻辑上采用核心1 302a和核心2 302b来形成,…,以及最终核心集合n 304n可在逻辑上采用全部n个核心302a-302n来形成。相应地,核心集合304a具有单一具最大能力的核心,核心集合2 304b具有两个具最大能力的核心,等等。
再次回到图2,从框204,过程200可划分为两个并行分支,调度分支和学习分支,并且分别继续到框206和212。对于调度分支,在框206,可进行关于是否存在要求调度的至少一个线程的确定。如果已经调度所有线程,则过程200的调度分支可在框206循环,直到存在将要调度的至少一个线程。在确定存在将要调度的至少一个线程时,过程200可继续到框208。在框208,可检索将要调度的接下来的执行线程的先前学习的特性(若可用的话)。将要调度的执行线程的学习的特性可存储在例如线程的控制段或者永久数据结构(例如与调度器128关联的永久数据结构)中。
接下来在框210,线程可至少部分基于核心能力和/或线程特性来调度,以供在所选的单独核心或核心集合上执行。下面将参照图4进一步描述在框210的操作的示例实施例。此后,过程200的调度分支可返回到框206,并且如先前所描述从其中继续。在框206-210的操作可重复进行,只要系统100在操作。
对于学习分支,在框212,可进行是否存在执行的线程的确定。如果不存在执行的线程,则过程200的学习分支可在框212循环,直到存在执行的至少一个线程。在确定存在执行的至少一个线程时,过程200的学习分支可继续到框214。在214,可学习和更新执行线程的动态特性(例如但不限于运行时间、预取数量等等)。此后,过程200的学习分支可返回到框212,并且如先前所描述的从其中继续。在框212-214的操作可重复进行,只要系统100在操作。
在实施例中,一个或多个核心的能力或核心能力(例如频率或电压)可由系统管理员在操作期间重新配置/调整。对于这些实施例,已更新核心能力可例如通过通知(例如中断)来提供给调度器。在接收时,如果有必要,则可重新形成能力排序(ordered)核心集合。此后,过程200的调度分支可如先前所描述使用已更新核心能力继续进行。
返回到框202,如果确定的结果指示核心能力信息不可用,则过程200可继续到框216。在框216,线程的执行的调度可如在现有技术中一样继续进行,而无需考虑核心能力和/或线程的特性。在框216的操作可重复进行,只要系统100在操作。
现在参照图4,其中示出按照各种实施例的用于至少部分基于核心能力和/或线程特性来调度线程执行的示例过程。如所示的,用于至少部分基于核心能力和/或线程特性来调度线程执行的过程400可包括在框402-414所执行的操作。在框402-414的操作可由例如图1的调度器128来执行(由多核处理器102的一个或多个核心所执行)。
过程400可开始于框402。在框402,可进行关于执行线程是否将要在前台执行、是否为长运行线程或者两者的确定。在实施例中,将被认为是长运行线程的运行时间阈值可以是缺省的或者是管理员可配置的。在确定执行线程将要在前台执行和/或是长运行线程时,过程400可继续到框404,并且调度线程以在具更大能力的核心中执行。所指配的核心的能力等级可按照一个或多个缺省操作策略或者由系统管理员来定制。在调度时,过程400可返回到框402以用于将要调度的接下来的线程。
如果在框402的确定的结果为否定,则过程400可继续到框406。在框406,可进行关于线程是否被指配(例如由OS)高优先级的确定。在实施例中,将被认为指配了高优先级的线程的优先级阈值可类似地为缺省阈值或者由管理员来配置。在确定执行线程是高优先级线程时,过程400可继续到框408,并且调度线程以用于在具更大能力的核心中执行。类似地,所指配的核心的能力等级可按照一个或多个缺省操作策略或者由系统管理员来定制。在调度时,过程400可返回到框402以用于将要调度的接下来的线程。
如果在框406的确定的结果为否定,则过程400可继续到框410。在框410,可进行关于线程是否在执行期间执行超过预取阈值的预取量的确定。在确定执行线程在执行期间执行超过预取阈值的预取时,过程400可继续到框412,并且调度线程以在具更大能力的核心中执行。所指配的核心的能力等级可按照一个或多个缺省操作策略或者由系统管理员来定制。在调度时,过程400可返回到框402以用于将要调度的接下来的线程。
如果在框410的确定的结果为否定,则过程400可继续到框414。在框414,可调度线程以供执行,而没有考虑其特性,例如只基于核心或核心集合能力和/或可用性。在调度时,过程400可返回到框402以用于将要调度的接下来的线程。
虽然图4示出将要调度以供在具更大能力的核心上执行的三种类型的线程,但是在备选实施例中,可调度更多或更少类型的阈值以供在具更大能力的核心上执行。
因此,参照图1-4,描述了与至少部分基于原始执行环境的核心能力和/或线程特性的线程调度关联的设备、方法和存储介质。
现在参照图5,其中示出按照各种实施例的具有本公开的虚拟机调度技术的示例计算装置。如所示的,与计算装置100相似,计算装置500可包括硬件101(具有(一个或多个)多核处理器102、存储器104和I/O装置108)和FW/BIOS 106。此外,计算装置500还可包括应用114和OS 112(具有服务和实用程序130)。但是,各种应用114和OS 112位于各种虚拟机504中,其各具有一个或多个虚拟处理器506,其被调度以供在处理器102的核心的所选的核心上执行。更进一步,计算装置500可配置有虚拟机监测器(VMM)502,以监测和管理虚拟机504的操作。VMM 502可配置成执行其传统功能,包括但不限于将虚拟处理器506映射到处理器102的核心的所选的核心以及将VM 504的虚拟存储器映射到存储器104。在实施例中,VMM502可配置有本公开的虚拟机调度技术,其至少部分基于核心的能力和虚拟机504的优先级来调度虚拟机以供在处理器102的处理器核心的所选的处理器核心上执行。
现在参照图6,其中示出按照各种实施例的用于调度虚拟机以供执行的示例过程。如所示的,用于虚拟机的基于核心能力的调度的过程600可包括在框602-612所执行的操作。在框602-612的操作可由例如图5的VMM 502来执行(由多核处理器102的一个或多个核心所执行)。
过程600可开始于框602。在框602,可进行关于核心能力信息是否可用的确定。在由VMM 502所执行时,确定可例如在VMM 502的启动时进行。在实施例中,可通过例如从相应处理器核心访问多核处理器的标识(其可隐式地传送核心能力信息是否可用)进行确定。在实施例中,如先前所描述的,VMM 502可读取多核处理器的CPUID,并且从CPUID来推断核心能力信息是否可用。
在确定核心能力信息为可用时,过程600可继续到框604。在框604,相应核心能力可从各种处理器核心中(例如,对于图3的实施例,如先前所描述的,从相应控制寄存器306(例如MSR)中)读取和检索。在一些实施例中,与用于原始执行的先前所描述调度器实施例相似,在相应核心能力的检索时,处理器核心还可根据其能力在逻辑上分级并且根据其分级来识别。此外,能力分级和识别的核心还可在逻辑上组织为能力分级处理器核心集合,其中各核心集合具有一个或多个核心。
接下来,在框606,可进行关于是否存在要求调度的至少一个VM的确定。如果已经调度所有VM,则过程600可在框606循环,直到存在将要调度的至少一个VM。在确定存在将要调度的至少一个VM时,过程600可继续到框608。在框608,可检索如由OS所指配的VM的优先级。在实施例中,如由OS所指配的VM的优先级可存储在VM的相应控制段中或者与OS关联的永久控制数据结构中。
接下来在框610,VM可至少部分基于核心能力和/或VM的优先级来调度,以供在所选的单独核心或核心集合上执行。此后,过程600可返回到框606,并且如先前所描述从其中继续进行。在框606-610的操作可重复进行,只要系统100在操作。
在实施例中,一个或多个核心的能力或核心能力(例如频率或电压)可在操作期间由系统管理员重新配置/调整。对于这些实施例,已更新核心能力可例如通过通知(例如中断)来提供给VMM。在接收时,如果有必要,则可重新形成能力排序核心集合。此后,过程600可如先前所描述使用已更新核心能力继续进行。
返回到框602,如果确定的结果指示核心能力不可用,则过程600可继续到框612。在框612,VM的执行的调度可如现有技术中一样继续进行,而无需考虑核心能力和/或VM的优先级。在框612的操作可重复进行,只要系统100在操作。
因此,参照图5-6,描述了与虚拟化执行环境的VM的基于核心能力的调度关联的设备、方法和存储介质。
图7示出可适合用来实施本公开的所选的方面的示例计算装置。如所示的,计算装置700可包括一个或多个处理器或处理器核心702、只读存储器(ROM)703和系统存储器704。另外,计算装置700可包括大容量存储装置706。 大容量存储装置706的示例可包括但不限于磁带驱动器、硬盘驱动器、光盘只读存储器(CD-ROM)等等。此外,计算机装置700可包括输入/输出装置708(例如显示器、键盘、光标控制等等)和通信接口710(例如网络接口卡、调制解调器等等)。元件可经由可表示一个或多个总线的系统总线712相互耦合。在多个总线的情况下,它们可通过一个或多个总线桥(未示出)来桥接。
这些元件的每个可执行本领域中已知的常规功能。具体来说,ROM 703可包括基本输入/输出系统服务(BIOS)705,其包括调度器128和/或VMM 502,如先前所描述的。可采用系统存储器704和大容量存储装置706来存储实现与调度器128和/或VMM 502关联的操作(如先前所描述的,其统称为计算逻辑722)的编程指令的工作副本和永久副本。各种元件可通过由一个或多个处理器702所支持的汇编指令或者能够编译成这类指令的高级语言(例如C语言)来实现。
这些元件710-712的数量、能力和/或容量可取决于计算装置700是用作移动装置(例如可穿戴装置、智能电话、计算机平板、膝上型计算机等等)还是固定装置(例如桌上型计算机、服务器、游戏控制台、机顶盒、信息娱乐控制台等等)而改变。另外,元件710-712的构成是已知的,并且相应地将不作进一步描述。
如本领域的技术人员将意识到的,本公开可作为方法或计算机程序产品来体现。相应地,本公开除了如先前所描述通过硬件来体现之外,还可采取全软件实施例(包括固件、驻留软件、微码等)或者组合软件和硬件方面的实施例(其一般全部可称作“电路”、“模块”或“系统”)的形式。此外,本公开可采取具有介质中体现的计算机可使用程序代码的表达的任何有形或者非暂时性介质中体现的计算机程序产品的形式。图8示出示例计算机可读非暂时性存储介质,其可适合用来存储指令,指令响应由设备对指令的执行而使设备实施本公开的所选方面。如所示的,非暂时性计算机可读存储介质802可包括多个编程指令704。编程指令804可配置成响应编程指令的执行而使装置(例如计算装置700)能够实现调度器128和/或VMM 502。在备选实施例中,编程指令804替代地是可设置在多个计算机可读非暂时性存储媒体802上。在又其他实施例中,编程指令804可设置在计算机可读暂时性存储媒体802(例如信号)上。
可利用一个或多个计算机可使用或计算机可读介质(一个或多个)的任何组合。计算机可使用或计算机可读介质非限制性地可以是例如电子、磁、光、电磁、红外线或半导体系统、设备、装置或传播介质。计算机可读介质的更具体示例(非详尽的列表)会包括下列项:具有一个或多个导线的电连接;便携计算机磁盘;硬盘;随机存取存储器(RAM);只读存储器(ROM);可擦可编程只读存储器(EPROM或闪速存储器);光纤;便携光盘只读存储器(CD-ROM);光存储装置;例如支持因特网或内联网的那些传输媒体的传输媒体;或者磁存储装置。注意,计算机可使用或计算机可读介质甚至可能是纸张或者在其上打印程序的另一种适当介质,因为能够经由例如对纸张或其他介质的光学扫描、然后编译、翻译或以其他方式如果需要以适当方式来处理并且然后存储在计算机存储器中,以电子方式来捕获程序。在本文档的上下文中,计算机可使用或计算机可读介质可以是任何介质,其能够包含、存储、传递、传播或传输程序以供指令执行系统、设备或装置使用或者与其结合使用。计算机可使用介质可包括具有其中体现的计算机可使用程序代码的传播数据信号(在基带中或者作为载波的一部分)。计算机可使用程序代码可使用任何适当介质来传送,包括但不限于无线、有线线路、光纤电缆、RF等。
用于执行本公开的操作的计算机程序代码可通过一个或多个编程语言的任何组合来编写(包括诸如Java、Smaltalk、C++等的面向对象编程语言以及诸如“C”编程语言或类似编程语言的常规过程编程语言)。程序代码可完全在用户的计算机上执行、部分在用户的计算机上作为独立软件包执行,部分在用户的计算机并且部分在远程计算机上或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过包括局域网(LAN)或广域网(WAN)的任何类型的网络来连接到用户的计算机,或者可进行到外部计算机的连接(例如通过使用因特网服务提供商的因特网)。
将参照按照本发明的实施例的方法、设备(系统)和计算机程序产品的流程说明和/或框图来描述本公开。将会理解,流程图说明和/或框图的每个框以及流程图说明和/或框图中的框的组合能够通过计算机程序指令来实现。可将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令创建用于实现在流程图和/或框图一个或多个框中指定的功能/动作的部件。
这些计算机程序指令还可存储在计算机可读介质中,其能够引导计算机或其他它可编程数据处理设备以特定方式起作用,使得存储在计算机可读介质中的指令产生制品,其包括实现在流程图和/或框图一个或多个框中指定的功能/动作的指令部件。
计算机程序指令还可加载到计算机或者其他可编程数据处理装置上,以便使一系列操作步骤在计算机或其他可编程装置上执行来产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图一个或多个框中所指定功能/动作的过程。
附图中的流程图和框图示出按照本公开的各种实施例的系统、方法和计算机程序产品可能的实现的架构、功能性和操作。在这方面,流程图或框图中的每个框可表示代码的模块、片段或部分,其包括用于实现(一个或多个)所指定逻辑功能的一个或多个可执行指令。还应当注意,在一些备选实现中,框中所注意到的功能可不按照图中所注意到的顺序发生。例如,连续示出的两个框实际上可基本上并发地执行,或者框有时可按照相反顺序执行,这取决于所涉及的功能性。还将会注意,框图和/或流程图说明的每个框以及框图和/或流程图说明中框的组合能够通过执行指定功能或动作的基于专用硬件的系统或者专用硬件和计算机指令的组合来实现。
本文所使用的术语仅为了描述具体实施例的目的,而不是意在限制本公开。如本文所使用的单数形式“一”、“一个”和“该”意在也包括复数形式,除非上下文另加明确指示。还将会理解,在本说明书中使用时,术语“包括(comprises)”和/或“包括(comprising)”指定存在所陈述特征、整数、步骤、操作、元件和/或组件,但并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或上述各项的编组。
实施例可实现为计算机过程(process)、计算机系统或者实现为制品,例如计算机可读媒体的计算机程序产品。计算机程序产品可以是由计算机系统可读的并且对计算机程序指令进行编码以用于执行计算机过程的计算机存储介质。
以下权利要求中的所有部件或步骤加上功能元件的对应结构、材料、动作和等效物意在包括具体要求保护的用于与其他要求保护的元件结合执行功能的任何结构、材料或动作。本公开的描述是为了说明和描述的目的而呈现,而并不意在是穷举的或者局限于所公开形式的本公开。许多修改和变化将是对技术人员显而易见的,而没有背离本公开的范围和精神。选择和描述了实施例,以便最好地说明本公开的原理和实际应用,并且使本领域的技术人员能够以适合所预期的具体使用的各种修改来理解实施例的公开。
返回参照图7,对于一个实施例,处理器702的至少一个可与具有调度器128和/或VMM 502的方面的存储器封装在一起。对于一个实施例,处理器702的至少一个可与具有调度器128和/或VMM 502的方面的存储器封装在一起,以形成系统级封装(SiP)。对于一个实施例,处理器702的至少一个可集成在具有调度器128和/或VMM 502的方面的存储器的相同管芯上。对于一个实施例,处理器602的至少一个可与具有调度器128和/或VMM 502的方面的存储器封装在一起,以形成片上系统(SoC)。对于至少一个实施例,SoC可利用在例如但不限于智能电话或计算平板中。
因此描述了本公开的各种实施例,包括但不限于:
示例1可以是用于计算的设备,包括:一个或多个多核处理器,各具有有不同能力的多个核心;以及操作系统的调度器或者虚拟机监测器;其中调度器可检索或接收核心的能力,并且至少部分基于核心的能力和多个执行线程的特性来调度多个执行线程以供在核心的所选的一个或多个核心上执行,并且其中虚拟机监测器可检索或接收核心的能力,并且至少部分基于核心的能力和虚拟机的相应优先级来调度设备的多个虚拟机以供在核心的所选的一个或多个核心上执行。
示例2可以是示例1,其中调度器或虚拟机监测器还可在设备的启动或复位时确定核心的能力是否可用来检索,并且在确定核心的能力可用来检索时执行检索,以及在核心能力的检索时至少部分基于核心的能力和多个执行线程的特性或虚拟机的优先级来执行调度。
示例3可以是示例2,其中调度器或虚拟机监测器可通过检查一个或多个多核处理器的(一个或多个)相应处理器标识来确定核心的能力是否可用。
示例4可以是示例3,其中调度器或虚拟机监测器可从核心的相应寄存器中检索核心的能力。
示例5可以是示例1,其中调度器或虚拟机监测器在核心的能力的检索时可至少部分基于核心的能力来形成一个或多个能力排序核心集合。
示例6可以是示例5,其中在一个或多个能力排序核心集合的形成时,调度器或虚拟机监测器可至少部分基于能力排序核心集合的能力和多个执行线程的特性或虚拟机的优先级来调度多个执行线程或虚拟机以供在能力排序核心集合的所选的一个或多个核心集合上执行。
示例7可以是示例1,其中调度器还可学习多个执行线程的特性。
示例8可以是示例7,其中调度器可调度以超过执行时间阈值的预计执行时间在前台执行的执行线程以供在具更大能力的核心或核心集合中执行。
示例9可以是示例7,其中调度器可调度具有超过优先级阈值的优先级的执行线程以供在具更大能力的核心或核心集合中执行。
示例10可以是示例7,其中调度器可调度在具更大能力的核心或核心集合中执行超过预取阈值的预取的执行线程。
示例11可以是示例7-10的任一个,其中在学习更多关于执行线程的特性的时,调度器可至少部分基于核心的能力以及对多个执行线程的特性的更好了解来执行调度。
示例12可以是示例1-10的任一个,其中在接收对一个或多个核心的一个或多个能力的一个或多个更新时,调度器或虚拟机监测器可至少部分基于核心的已更新能力和多个执行线程的特性或虚拟机的优先级来执行调度。
示例13可以是一种用于计算的方法,包括:由操作系统的调度器或者计算装置的虚拟机监测器来检索或接收计算装置的一个或多个多核处理器的多个核心的能力,其中多个核心具有不同能力;以及由调度器至少部分基于核心的能力和多个执行线程的特性来调度多个执行线程以供在核心的所选的一个或多个核心上执行,或者由虚拟机监测器至少部分基于核心的能力和虚拟机的优先级来调度计算装置的多个虚拟机以供在核心的所选的一个或多个核心上执行。
示例14可以是示例13,还包括:由调度器或虚拟机监测器在计算装置的启动或复位时确定核心的能力是否可用来检索,并且在确定核心的能力可用来检索时执行检索;以及在核心能力的检索时至少部分基于核心的能力和多个执行线程的特性或虚拟机的优先级来执行调度。
示例15可以是示例14,其中确定核心的能力是否可用可包括检查一个或多个多核处理器的(一个或多个)相应处理器标识。
示例16可以是示例15,其中检索核心的能力可包括从核心的相应寄存器中进行检索。
示例17可以是示例13,还包括在核心的能力的检索时由调度器或虚拟机监测器至少部分基于核心的能力来形成一个或多个能力排序核心集合。
示例18可以是示例17,其中在一个或多个能力排序核心集合的形成时,调度可包括至少部分基于能力排序核心集合的能力和多个执行线程的特性或虚拟机的优先级来调度多个执行线程或虚拟机以供在能力排序核心集合的所选的一个或多个核心集合上执行。
示例19可以是示例13,还包括由调度器来学习多个执行线程的特性。
示例20可以是示例19,其中调度可包括由调度器调度以超过执行时间阈值的预计执行时间在前台执行的执行线程以供在具更大能力的核心或核心集合中执行。
示例21可以是示例19,其中调度可包括由调度器调度具有超过优先级阈值的优先级的执行线程以供在具更大能力的核心或核心集合中执行。
示例22可以是示例19,其中调度可包括由调度器调度在具更大能力的核心或核心集合中执行超过预取阈值的预取的执行线程。
示例23可以是示例19-22的任一个,其中在学习更多关于执行线程的特性的时,调度可包括至少部分基于核心的能力以及对多个执行线程的特性的更好了解进行调度。
示例24可以是示例13-22的任一个,其中在接收对一个或多个核心的一个或多个能力的一个或多个更新时,调度可包括至少部分基于核心的已更新能力和多个执行线程的特性或虚拟机的优先级进行调度。
示例25可以是包括指令的一个或多个计算机可读媒体,指令响应由计算装置的一个或多个多核处理器的多个核心的一个或多个对指令的执行而使计算装置向计算装置提供操作系统的调度器或虚拟机监测器;其中多个核心具有不同能力;其中调度器可检索核心的能力,并且至少部分基于核心的能力和多个执行线程的特性来调度多个执行线程以供在核心的所选的一个或多个核心上执行;以及其中所述虚拟机监测器可检索核心的能力,并且至少部分基于核心的能力和虚拟机的相应优先级来调度计算装置的多个虚拟机以供在核心的所选的一个或多个核心上执行。
示例26可以是示例25,其中调度器或虚拟机监测器还可在计算装置的启动或复位时确定核心的能力是否可用来检索,并且在确定核心的能力可用来检索时执行检索,以及在核心能力的检索时至少部分基于核心的能力和多个执行线程的特性或虚拟机的优先级来执行调度。
示例27可以是示例26,其中调度器或虚拟机监测器可通过检查一个或多个多核处理器的(一个或多个)相应处理器标识来确定核心的能力是否可用。
示例28可以是示例27,其中调度器或虚拟机监测器可从核心的相应寄存器中检索核心的能力。
示例29可以是示例25,其中调度器或虚拟机监测器在核心的能力的检索时可至少部分基于核心的能力来形成一个或多个能力排序核心集合。
示例30可以是示例29,其中在一个或多个能力排序核心集合的形成时,调度器或虚拟机监测器可至少部分基于能力排序核心集合的能力和多个执行线程的特性或虚拟机的优先级来调度多个执行线程或虚拟机以供在能力排序核心集合的所选的一个或多个核心集合上执行。
示例31可以是示例25,其中调度器还可学习多个执行线程的特性。
示例32可以是示例31,其中调度器可调度以超过执行时间阈值的预计执行时间在前台执行的执行线程以供在具更大能力的核心或核心集合中执行。
示例33可以是示例31,其中调度器可调度具有超过优先级阈值的优先级的执行线程以供在具更大能力的核心或核心集合中执行。
示例34可以是示例31,其中调度器可调度在具更大能力的核心或核心集合中执行超过预取阈值的预取的执行线程。
示例35可以是示例31-34的任一个,其中在学习更多关于执行线程的特性的时,调度器可至少部分基于核心的能力以及对多个执行线程的特性的更好了解来执行调度。
示例36可以是示例25-34的任一个,其中在接收对一个或多个核心的一个或多个能力的一个或多个更新时,调度器或虚拟机监测器可至少部分基于核心的已更新能力和多个执行线程的特性或虚拟机的优先级来执行调度。
示例37可以是用于计算的设备,包括:用于检索设备的一个或多个多核处理器核心的多个核心的能力的第一部件,其中多个核心具有不同能力;以及用于至少部分基于核心的能力和多个执行线程的特性来调度设备的多个执行线程以供在核心的所选的一个或多个核心上执行的第二部件,或者用于至少部分基于核心的能力和虚拟机的优先级来调度设备的多个虚拟机以供在核心的所选的一个或多个核心上执行的第三部件。
示例38可以是示例37,其中所述第二或第三部件还包括用于在设备的启动或复位时确定核心的能力是否可用来检索并且在确定核心的能力可用来检索时执行检索的部件;其中第二或第三部件在核心能力的检索时至少部分基于核心的能力和多个执行线程的特性或虚拟机的优先级来执行调度。
示例39可以是示例38,其中用于确定核心的能力是否可用的部件可包括用于检查一个或多个多核处理器的(一个或多个)相应处理器标识的部件。
示例40可以是示例39,其中第一部件可包括用于从核心的相应寄存器中进行检索的部件。
示例41可以是示例37,其中第一部件还可包括用于在核心的能力的检索时至少部分基于核心的能力来形成一个或多个能力排序核心集合的部件。
示例42可以是示例41,其中第二或第三部件在一个或多个能力排序核心集合的形成时至少部分基于能力排序核心集合的能力和多个执行线程的特性或虚拟机的优先级来调度多个执行线程或虚拟机以供在能力排序核心集合的所选的一个或多个核心集合上执行。
示例43可以是示例37,其中第二部件还可包括用于学习多个执行线程的特性的部件。
示例44可以是示例43,其中第二部件调度以超过执行时间阈值的预计执行时间在前台执行的执行线程以供在具更大能力的核心或核心集合中执行。
示例45可以是示例43,其中第二部件调度具有超过优先级阈值的优先级的执行线程以供在具更大能力的核心或核心集合中执行。
示例46可以是示例43,其中第二部件调度在具更大能力的核心或核心集合中执行超过预取阈值的预取的执行线程。
示例47可以是示例43-46的任一个,其中第二部件在学习更多关于执行线程的特性的时至少部分基于核心的能力以及对多个执行线程的特性的更好了解进行调度。
示例48可以是示例37-46的任一个,其中第一或第二部件在接收对一个或多个核心的一个或多个能力的一个或多个更新时至少部分基于核心的已更新能力和多个执行线程的特性或虚拟机的优先级进行调度。
在所公开装置及关联方法的所公开实施例中能够进行各种修改和变化,而没有背离本公开的精神或范围将对本领域的技术人员是显而易见的。因此,意在本公开涵盖以上所公开实施例的修改和变化,只要修改和变化落入任何权利要求及其等效物的范围之内。
Claims (33)
1.一种用于计算的设备,包括:
一个或多个多核处理器,各具多个核心,其中所述多个核心中的至少两个核心具有不同的能力;以及
操作系统的调度器或者虚拟机监测器;
其中所述调度器要检索或接收所述核心的能力,并且至少部分基于第一多个能力排序的核心集合的能力和多个执行线程的特性来调度所述多个执行线程以供在所述第一多个核心集合的所选核心集合上执行;以及
其中所述虚拟机监测器要检索或接收所述核心的能力,并且至少部分基于第二多个能力排序的核心集合的能力和虚拟机的相应优先级来调度所述设备的多个虚拟机以供在所述第二多个核心集合的所选核心集合上执行;以及
其中所述调度器或所述虚拟机监测器在检索所述核心的能力时要至少部分地基于所述核心的能力来形成具有至少第一和第二核心集合的所述第一或所述第二多个能力排序的核心集合,其中具有N个核的所述第一核心集合总体上比具有N-1个核的所述第二核心集合具有更大的能力,N是大于2的整数,并且所述第一和第二核心集合具有至少一个公共核心。
2.如权利要求1所述的设备,其中,所述调度器或所述虚拟机监测器还要在所述设备的启动或复位时确定所述核心的能力是否可用来检索,并且在确定所述核心的所述能力可用来检索时执行所述检索,以及在所述核心能力的检索时至少部分基于所述核心的所述能力和所述多个执行线程的特性或所述虚拟机的优先级来执行所述调度。
3.如权利要求2所述的设备,其中,所述调度器或所述虚拟机监测器通过检查所述一个或多个多核处理器的一个或多个相应处理器标识来确定所述核心的能力是否可用。
4.如权利要求3所述的设备,其中,所述调度器或所述虚拟机监测器要从所述核心的相应寄存器中检索所述核心的所述能力。
5.如权利要求1所述的设备,其中,所述调度器或所述虚拟机监测器在所述核心的所述能力的检索时要至少部分基于所述核心的所述能力来形成一个或多个能力排序核心集合。
6.如权利要求5所述的设备,其中,在所述一个或多个能力排序核心集合的形成时,所述调度器或所述虚拟机监测器要至少部分基于所述能力排序核心集合的所述能力和所述多个执行线程的特性或所述虚拟机的优先级来调度所述多个执行线程或虚拟机以供在所述能力排序核心集合的所选的一个或多个核心集合上执行。
7.如权利要求1所述的设备,其中,所述调度器还要学习所述多个执行线程的所述特性。
8.如权利要求7所述的设备,其中,所述调度器要调度以超过执行时间阈值的预计执行时间在前台执行的执行线程以供在具有 更大能力的核心或核心集合中执行。
9.如权利要求7所述的设备,其中,所述调度器要调度具有超过优先级阈值的优先级的执行线程以供在具有 更大能力的核心或核心集合中执行。
10.如权利要求7所述的设备,其中,所述调度器要调度在具有 更大能力的核心或核心集合中执行超过预取阈值的预取的执行线程。
11.如权利要求7-10中的任一项所述的设备,其中,在学习更多关于所述执行线程的所述特性的时,所述调度器要至少部分基于所述核心的所述能力以及对所述多个执行线程的所述特性的更好了解来执行所述调度。
12.如权利要求1-10中的任一项所述的设备,其中,在接收对一个或多个核心的一个或多个能力的一个或多个更新时,所述调度器或所述虚拟机监测器要至少部分基于所述核心的已更新能力和所述多个执行线程的特性或所述虚拟机的优先级来执行所述调度。
13.一种用于计算的方法,包括:
由操作系统的调度器或计算装置的虚拟机监测器从多个核心的相应指定控制寄存器来检索或接收所述计算装置的一个或多个多核处理器的所述多个核心的能力,其中所述多个核心中的至少两个核心具有不同能力;
由所述调度器或所述虚拟机监测器至少部分地基于所述核心的能力来形成具有至少第一和第二核心集合的多个能力排序的核心集合,其中具有N个核的所述第一核心集合总体上比具有N-1个核的所述第二核心集合具有更大的能力,N是大于2的整数,并且所述第一和第二核心集合具有至少一个公共核心;以及
由所述调度器至少部分基于所述能力排序的核心集合的能力和多个执行线程的特性来调度所述多个执行线程以供在所述核心集合的所选核心集合上执行,或者由所述虚拟机监测器至少部分基于所述能力排序的核心集合的能力和虚拟机的优先级来调度所述计算装置的多个虚拟机以供在所述核心集合的所选核心集合上执行。
14.如权利要求13所述的方法,还包括:由所述调度器或所述虚拟机监测器在所述计算装置的启动或复位时确定所述核心的能力是否可用来检索,并且在确定所述核心的所述能力可用来检索时执行所述检索;以及在所述核心能力的检索时至少部分基于所述核心的所述能力和所述多个执行线程的特性或所述虚拟机的优先级来执行所述调度。
15.如权利要求14所述的方法,其中,确定所述核心的能力是否可用包括检查所述一个或多个多核处理器的一个或多个相应处理器标识。
16.如权利要求15所述的方法,其中,检索所述核心的所述能力包括从所述核心的相应寄存器中进行检索。
17.如权利要求13所述的方法,还包括在所述核心的所述能力的检索时由所述调度器或所述虚拟机监测器至少部分基于所述核心的所述能力来形成一个或多个能力排序核心集合。
18.如权利要求17所述的方法,其中,在所述一个或多个能力排序核心集合的形成时,调度包括至少部分基于所述能力排序核心集合的能力和所述多个执行线程的特性或所述虚拟机的优先级来调度所述多个执行线程或虚拟机以供在所述能力排序核心集合的所选的一个或多个核心集合上执行。
19.如权利要求13所述的方法,还包括由所述调度器来学习所述多个执行线程的所述特性。
20.如权利要求19所述的方法,其中,调度包括由所述调度器来调度以超过执行时间阈值的预计执行时间在前台执行的执行线程、具有超过优先级阈值的优先级的执行线程或者执行超过预取阈值的预取的执行线程以供在具有 更大能力的核心或核心集合中执行。
21.如权利要求19所述的方法,其中,在学习更多关于所述执行线程的所述特性的时,调度包括至少部分基于所述核心的所述能力以及对所述多个执行线程的所述特性的更好了解来进行调度。
22.如权利要求13所述的方法,其中,在接收对一个或多个核心的一个或多个能力的一个或多个更新时,调度包括至少部分基于所述核心的已更新能力和所述多个执行线程的特性或所述虚拟机的优先级进行调度。
23.一种用于计算的设备,包括:
用于从多个核心的相应指定控制寄存器检索或接收所述设备的一个或多个多核处理器核心的所述多个核心的能力的第一部件,其中所述多个核心中的至少两个核心具有不同能力;
用于至少部分地基于所述核心的能力来形成具有至少第一和第二核心集合的多个能力排序的核心集合的部件,其中具有N个核的所述第一核心集合总体上比具有N-1个核的所述第二核心集合具有更大的能力,N是大于2的整数,并且所述第一和第二核心集合具有至少一个公共核心;以及
用于至少部分基于所述能力排序的核心集合的能力和多个执行线程的特性来调度所述设备的所述多个执行线程以供在所述核心集合的所选核心集合上执行的第二部件,或者用于至少部分基于所述能力排序的核心集合的能力和虚拟机的优先级来调度所述设备的多个虚拟机以供在所述核心集合的所选核心集合上执行的第三部件。
24.如权利要求23所述的设备,其中,所述第一部件还包括用于在所述核心的所述能力的检索时至少部分基于所述核心的所述能力来形成一个或多个能力排序核心集合的部件。
25.如权利要求23所述的设备,还包括:用于在所述设备的启动或复位时确定所述核心的能力是否可用来检索的部件,并且用于在确定所述核心的所述能力可用来检索时执行所述检索的部件;以及用于在所述核心能力的检索时至少部分基于所述核心的所述能力和所述多个执行线程的特性或所述虚拟机的优先级来执行所述调度的部件。
26.如权利要求25所述的设备,其中,确定所述核心的能力是否可用包括检查所述一个或多个多核处理器的一个或多个相应处理器标识。
27.如权利要求26所述的设备,其中,检索所述核心的所述能力包括从所述核心的相应寄存器中进行检索。
28.如权利要求24所述的设备,其中,在所述一个或多个能力排序核心集合的形成时,调度包括至少部分基于所述能力排序核心集合的能力和所述多个执行线程的特性或所述虚拟机的优先级来调度所述多个执行线程或虚拟机以供在所述能力排序核心集合的所选的一个或多个核心集合上执行。
29.如权利要求23所述的设备,其中所述第二部件还要学习所述多个执行线程的所述特性。
30.如权利要求29所述的设备,其中,调度包括由调度器来调度以超过执行时间阈值的预计执行时间在前台执行的执行线程、具有超过优先级阈值的优先级的执行线程或者执行超过预取阈值的预取的执行线程以供在具有 更大能力的核心或核心集合中执行。
31.如权利要求29所述的设备,其中,在学习更多关于所述执行线程的所述特性的时,调度包括至少部分基于所述核心的所述能力以及对所述多个执行线程的所述特性的更好了解来进行调度。
32.如权利要求23所述的设备,其中,在接收对一个或多个核心的一个或多个能力的一个或多个更新时,调度包括至少部分基于所述核心的已更新能力和所述多个执行线程的特性或所述虚拟机的优先级进行调度。
33.一种计算机可读介质,具有存储在其上的指令,所述指令在被执行时使得计算装置执行根据权利要求13-22中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111147898.1A CN113835895B (zh) | 2015-12-22 | 2016-11-22 | 用于具有不同能力的核心的线程和/或虚拟机调度 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/978,182 US10372493B2 (en) | 2015-12-22 | 2015-12-22 | Thread and/or virtual machine scheduling for cores with diverse capabilities |
US14/978182 | 2015-12-22 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111147898.1A Division CN113835895B (zh) | 2015-12-22 | 2016-11-22 | 用于具有不同能力的核心的线程和/或虚拟机调度 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107015862A CN107015862A (zh) | 2017-08-04 |
CN107015862B true CN107015862B (zh) | 2021-10-22 |
Family
ID=59066351
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611028185.2A Active CN107015862B (zh) | 2015-12-22 | 2016-11-22 | 用于具有不同能力的核心的线程和/或虚拟机调度 |
CN202111147898.1A Active CN113835895B (zh) | 2015-12-22 | 2016-11-22 | 用于具有不同能力的核心的线程和/或虚拟机调度 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111147898.1A Active CN113835895B (zh) | 2015-12-22 | 2016-11-22 | 用于具有不同能力的核心的线程和/或虚拟机调度 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10372493B2 (zh) |
JP (1) | JP6370867B2 (zh) |
CN (2) | CN107015862B (zh) |
WO (1) | WO2017112149A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10073718B2 (en) | 2016-01-15 | 2018-09-11 | Intel Corporation | Systems, methods and devices for determining work placement on processor cores |
US12248560B2 (en) * | 2016-03-07 | 2025-03-11 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
CN108549574B (zh) * | 2018-03-12 | 2022-03-15 | 深圳市万普拉斯科技有限公司 | 线程调度管理方法、装置、计算机设备和存储介质 |
US11144473B2 (en) * | 2018-06-13 | 2021-10-12 | Advanced Micro Devices, Inc. | Quality of service for input/output memory management unit |
US11449357B2 (en) * | 2018-11-13 | 2022-09-20 | SK Hynix Inc. | Configurable integrated circuit to support new capability |
US11321144B2 (en) | 2019-06-29 | 2022-05-03 | Intel Corporation | Method and apparatus for efficiently managing offload work between processing units |
US11030000B2 (en) | 2019-06-29 | 2021-06-08 | Intel Corporation | Core advertisement of availability |
US10929129B2 (en) | 2019-06-29 | 2021-02-23 | Intel Corporation | Apparatus and method for modifying addresses, data, or program code associated with offloaded instructions |
US11016766B2 (en) | 2019-06-29 | 2021-05-25 | Intel Corporation | Apparatus and method for compiler hints for inter-core offload |
US10983796B2 (en) | 2019-06-29 | 2021-04-20 | Intel Corporation | Core-to-core end “offload” instruction(s) |
US11182208B2 (en) | 2019-06-29 | 2021-11-23 | Intel Corporation | Core-to-core start “offload” instruction(s) |
US11372711B2 (en) | 2019-06-29 | 2022-06-28 | Intel Corporation | Apparatus and method for fault handling of an offload transaction |
JP2021089601A (ja) * | 2019-12-04 | 2021-06-10 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
US11580060B2 (en) * | 2021-02-13 | 2023-02-14 | Drako Motors, Inc. | Policy driven latency control applied to a vehicular real time network apparatus |
CN117677929A (zh) * | 2021-06-08 | 2024-03-08 | 谷歌有限责任公司 | 机器学习硬件加速器中的分层编译和执行 |
US20230205592A1 (en) * | 2021-12-23 | 2023-06-29 | Intel Corporation | Asymmetric tuning |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473110A (zh) * | 2009-07-23 | 2012-05-23 | 英派尔科技开发有限公司 | 基于内核和应用特性针对多处理器系统上运行的应用的内核选择 |
CN102520912A (zh) * | 2010-12-22 | 2012-06-27 | 威盛电子股份有限公司 | 内核配置发现方法及其微处理器 |
CN103597449A (zh) * | 2011-06-08 | 2014-02-19 | 微软公司 | 操作系统解耦的异构计算 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4090908B2 (ja) | 2003-02-21 | 2008-05-28 | シャープ株式会社 | 画像処理装置および画像形成装置 |
US7707578B1 (en) * | 2004-12-16 | 2010-04-27 | Vmware, Inc. | Mechanism for scheduling execution of threads for fair resource allocation in a multi-threaded and/or multi-core processing system |
US20060212677A1 (en) * | 2005-03-15 | 2006-09-21 | Intel Corporation | Multicore processor having active and inactive execution cores |
US20080244221A1 (en) * | 2007-03-30 | 2008-10-02 | Newell Donald K | Exposing system topology to the execution environment |
US8055822B2 (en) * | 2007-08-21 | 2011-11-08 | International Business Machines Corporation | Multicore processor having storage for core-specific operational data |
JP2010039923A (ja) | 2008-08-07 | 2010-02-18 | Hitachi Ltd | 情報処理装置 |
US7990974B1 (en) | 2008-09-29 | 2011-08-02 | Sonicwall, Inc. | Packet processing on a multi-core processor |
US9507640B2 (en) | 2008-12-16 | 2016-11-29 | International Business Machines Corporation | Multicore processor and method of use that configures core functions based on executing instructions |
US8379872B2 (en) * | 2009-06-01 | 2013-02-19 | Red Tail Hawk Corporation | Talk-through listening device channel switching |
US8458676B2 (en) | 2009-06-30 | 2013-06-04 | International Business Machines Corporation | Executing platform-independent code on multi-core heterogeneous processors |
US8543857B2 (en) * | 2009-09-26 | 2013-09-24 | Intel Corporation | Method and apparatus for low power operation of multi-core processors |
CN101706742B (zh) * | 2009-11-20 | 2012-11-21 | 北京航空航天大学 | 一种基于多核动态划分的非对称虚拟机i/o调度方法 |
KR101640848B1 (ko) | 2009-12-28 | 2016-07-29 | 삼성전자주식회사 | 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치 |
US8468021B2 (en) * | 2010-07-15 | 2013-06-18 | King Abdulaziz City For Science And Technology | System and method for writing digits in words and pronunciation of numbers, fractions, and units |
US8418177B2 (en) * | 2010-10-01 | 2013-04-09 | Microsoft Corporation | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores |
US9678791B2 (en) * | 2012-02-14 | 2017-06-13 | International Business Machines Corporation | Shared resources in a docked mobile environment |
CN102750178B (zh) * | 2012-06-08 | 2015-04-29 | 华为技术有限公司 | 通信设备硬件资源的虚拟化管理方法及相关装置 |
US20140007097A1 (en) | 2012-06-29 | 2014-01-02 | Brocade Communications Systems, Inc. | Dynamic resource allocation for virtual machines |
JP5988148B2 (ja) * | 2012-07-31 | 2016-09-07 | 株式会社リコー | 潤滑剤供給装置、画像形成装置およびプロセスカートリッジ |
JP2014032621A (ja) | 2012-08-06 | 2014-02-20 | Sharp Corp | スケジューリング方法、及び情報処理装置 |
JP6051924B2 (ja) * | 2013-02-21 | 2016-12-27 | 富士通株式会社 | 情報処理装置の制御方法、制御プログラム、情報処理装置 |
US9785460B2 (en) * | 2013-05-03 | 2017-10-10 | Vmware, Inc. | Dynamic virtual machine sizing |
KR20140145748A (ko) * | 2013-06-14 | 2014-12-24 | 한국전자통신연구원 | 다중 코어 환경에서 프로세스의 할당 방법 및 장치 |
US9727361B2 (en) * | 2013-12-12 | 2017-08-08 | International Business Machines Corporation | Closed-loop feedback mechanism for achieving optimum performance in a consolidated workload environment |
US9697128B2 (en) * | 2015-06-08 | 2017-07-04 | International Business Machines Corporation | Prefetch threshold for cache restoration |
US10509677B2 (en) * | 2015-09-30 | 2019-12-17 | Lenova (Singapore) Pte. Ltd. | Granular quality of service for computing resources |
-
2015
- 2015-12-22 US US14/978,182 patent/US10372493B2/en not_active Expired - Fee Related
-
2016
- 2016-11-16 WO PCT/US2016/062327 patent/WO2017112149A1/en active Application Filing
- 2016-11-22 CN CN201611028185.2A patent/CN107015862B/zh active Active
- 2016-11-22 CN CN202111147898.1A patent/CN113835895B/zh active Active
- 2016-12-05 JP JP2016235553A patent/JP6370867B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473110A (zh) * | 2009-07-23 | 2012-05-23 | 英派尔科技开发有限公司 | 基于内核和应用特性针对多处理器系统上运行的应用的内核选择 |
CN102520912A (zh) * | 2010-12-22 | 2012-06-27 | 威盛电子股份有限公司 | 内核配置发现方法及其微处理器 |
CN103597449A (zh) * | 2011-06-08 | 2014-02-19 | 微软公司 | 操作系统解耦的异构计算 |
Also Published As
Publication number | Publication date |
---|---|
CN113835895B (zh) | 2024-04-26 |
US20170177415A1 (en) | 2017-06-22 |
CN107015862A (zh) | 2017-08-04 |
JP6370867B2 (ja) | 2018-08-08 |
WO2017112149A1 (en) | 2017-06-29 |
US10372493B2 (en) | 2019-08-06 |
CN113835895A (zh) | 2021-12-24 |
JP2017117450A (ja) | 2017-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107015862B (zh) | 用于具有不同能力的核心的线程和/或虚拟机调度 | |
US10452572B2 (en) | Automatic system service resource management for virtualizing low-latency workloads that are input/output intensive | |
EP3039540B1 (en) | Virtual machine monitor configured to support latency sensitive virtual machines | |
EP3866007B1 (en) | Intelligent gpu scheduling in a virtualization environment | |
KR101668399B1 (ko) | 프로세서 코어들의 하이퍼바이저 격리 | |
US20180129619A1 (en) | Virtualizing interrupt prioritization and delivery | |
CN107924325B (zh) | 用于多级虚拟化的设备和方法 | |
US10409633B2 (en) | Hypervisor-visible guest thread management | |
KR101821079B1 (ko) | 가상 컴퓨팅을 위한 장치 및 방법 | |
WO2011047906A1 (en) | Assigning a portion of physical computing resources to a logical partition | |
US9898307B2 (en) | Starting application processors of a virtual machine | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
US8291415B2 (en) | Paging instruction for a virtualization engine to local storage | |
US20120054773A1 (en) | Processor support for secure device driver architecture | |
US12014203B2 (en) | Communications across privilege domains within a central processing unit core |
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 |