CN102402458B - 具有非对称处理器核的系统上的虚拟机和/或多级调度支持 - Google Patents
具有非对称处理器核的系统上的虚拟机和/或多级调度支持 Download PDFInfo
- Publication number
- CN102402458B CN102402458B CN201110317869.5A CN201110317869A CN102402458B CN 102402458 B CN102402458 B CN 102402458B CN 201110317869 A CN201110317869 A CN 201110317869A CN 102402458 B CN102402458 B CN 102402458B
- Authority
- CN
- China
- Prior art keywords
- processor core
- core
- feature
- virtual
- virtual machine
- 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/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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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/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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及具有非对称处理器核的系统上的虚拟机和/或多级调度支持。计算设备中的不同处理器核可支持不同的特征。在一个或多个实施例中,标识计算设备的多个物理处理器核中的每一个所支持的特征。至少部分地基于多个物理处理器核中的每一个所支持的一个或多个特征以及虚拟机的虚拟处理器核的数量来确定要使其对虚拟机的虚拟处理器核可用的多个物理处理器核的一组一个或多个特征。在附加实施例中,使用多级调度模型。操作系统的操作系统级调度程序调度多个应用程序以便在多个处理器核上执行,而应用程序的用户级调度程序调度该应用程序的应用程序线程以便在多个处理器核中的一个或多个上执行。
Description
技术领域
本发明涉及计算机,尤其涉及具有非对称处理器核的系统。
背景技术
计算机制造商常常使用包括多个处理器核的芯片以提升性能。可能发生这种情况:同一芯片上的不同处理器核支持不同的特征,这可被称为非对称处理器核。然而,在计算机中使用非对称处理器核并非没有自己的问题。一个这样的问题是可能难以在这样的计算机上运行具有多个虚拟处理器核的虚拟机,因为在虚拟处理器核以及运行该虚拟处理器核的计算机的特定处理器核之间通常不存在永久的关联。这可导致这样的情况:虚拟处理器核被限于只使用全部物理处理器核所支持的特征,这减少了具有非对称处理器核的益处。
在计算机中使用非对称处理器核的另一问题是操作系统和应用程序可能难以管理它们在其上运行的系统的异构本质。这可导致这样的情况:系统线程或应用程序线程被调度在不支持该线程所使用的功能的核上,并且由于要执行未对特定核定义的指令的尝试,在某些情况下可导致功能问题,在其他情况下可能导致性能问题。
发明内容
提供本发明内容以便以简化形式介绍将在以下的具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键或必要特征,也不旨在用于限定所要求保护的主题的范围。
根据一个或多个方面,标识计算设备的一个或多个处理器的多个物理处理器核中的每一个所支持的一个或多个特征。还标识计算设备的虚拟机的多个虚拟处理器核。还至少部分地基于多个物理处理器核中的每一个所支持的一个或多个特征以及虚拟机的虚拟处理器核的数量来确定要对虚拟机的虚拟处理器核可用的多个物理处理器核的一组一个或多个特征。使得多个物理核的该组一个或多个特征对虚拟机的虚拟处理器核可用。
根据一个或多个方面,从其上对计算设备的虚拟机管理器所管理的虚拟机的虚拟处理器核进行调度的物理处理器核接收未定义的操作码异常。标识引起未定义操作码异常的指令,并作出关于该指令是否被计算设备的一个或多个物理处理器核支持的检查。如果指令不被一个或多个物理处理器核支持,则将该指令提供给计算设备的操作系统(例如,包括虚拟处理器核的虚拟机的主操作系统或客操作系统)。如果指令被一个或多个物理处理器核支持,则将虚拟处理器核调度在与当未定义操作码异常产生时该虚拟处理器核被调度在其上的不同的物理处理器核上,并且在将虚拟处理器核调度到不同的物理处理器核上之后,向该虚拟处理器核指示要再次执行该指令的尝试。
根据一个或多个方面,对于计算设备的多个处理器核中的每一个,标识处理器所支持的一个或多个特征。计算设备的操作系统的操作系统级调度程序调度多个应用程序以便在多个处理器核上执行。一个应用程序的用户级调度程序调度多个应用程序中的一个应用程序的应用线程以便在一个或多个处理器核上执行。
附图说明
在全部附图中,使用相同的附图标记来指示相同的特征。
图1示出根据一个或多个实施例的实现具有非对称处理器核的系统上的虚拟机和/或多级调度支持的示例计算设备的框图。
图2示出了根据一个或多个实施例的运行多个虚拟机的示例计算设备。
图3示出了根据一个或多个实施例的运行多个虚拟机的示例计算设备。
图4是示出根据一个或多个实施例的虚拟机管理器确定可用于虚拟机的虚拟核的一组特征的示例过程的流程图。
图5是示出根据一个或多个实施例的用于对虚拟核进行重新调度的示例过程的流程图。
图6示出根据一个或多个实施例的实现多级调度程序模型的示例计算设备。
图7是示出根据一个或多个实施例的用于实现多级调度程序模型的示例计算设备的示例过程的流程图。
图8示出根据一个或多个实施例的可被配置成实现具有非对称处理器核的系统上的虚拟机和/或多级调度支持的示例计算设备。
具体实施方式
本文描述了具有非对称处理器核的系统上的虚拟机和/或多级调度支持。在一个或多个实施例中,计算设备上的虚拟机管理器标识由计算设备的物理处理器核中的每一个所支持的特征。虚拟机管理器确定要使得哪些物理处理器核的特征对计算设备上的虚拟机的虚拟处理器核可用。这一判断是例如基于各个处理器核中的每一个的特征以及虚拟机中包括多少虚拟处理器核来作出的。另外,可能发生这样的情形,其中要在虚拟处理器核上执行指令的尝试导致来自其上调度虚拟处理器核的物理处理器核的、指示该指令是未定义的指示(指示该物理处理器核不支持该指令)。在这种情形中,虚拟机管理器为支持该指令的另一物理处理器核调度该虚拟处理器核。
另外,在一个或多个实施例中,特征目录管理器标识并维护计算设备的多个处理器核中的每一个所支持的特征以及相关联的特征属性的记录。使用两级调度程序模型,其中操作系统中的第一级调度程序为多个处理器核调度应用程序。每一应用程序包括为该应用程序调度用户模式调度(UMS)的线程以在特定的处理器核上运行的第二级调度程序。第二级调度程序可至少部分地基于处理器核所支持的特征(如在特征目录管理器中标识的)和/或该线程以内核模式还是以用户模式执行来调度UMS线程。
图1是示出根据一个或多个实施例的实现具有非对称处理器核的系统上的虚拟机和/或多级调度支持的示例计算设备100的框图。计算设备100可以是各种不同类型的设备。例如,计算设备100可以是服务器计算机、分布式处理环境中的节点、台式计算机、移动站、笔记本电脑或膝上型计算机、笔记本型或平板计算机、娱乐设备、通信地耦合到显示设备的机顶盒、电视机、蜂窝式或其他无线电话、游戏控制台、车载计算机等等。因而,计算设备100的范围可以是从具有充足存储器和处理器资源的全资源设备(如个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(如传统机顶盒、手持式游戏控制台)。
虚拟机(VM)管理器104在一个或多个(x)物理处理器核106(1),...,106(x)上运行或执行。一个或多个虚拟机管理器104可在物理处理器核106上运行。每一物理处理器核106,也被称为物理核,是用于执行指令的独特的硬件处理器或执行核。多个物理核通常被包括在单个芯片或集成电路中,这也可被称为多核芯片或多核处理器。虽然多个物理核可被包括在单个芯片中,但应该注意,多个这样的芯片(各自包括多个核)可被包括在计算设备100中。计算设备100的各种附加组件也可对虚拟机(VM)管理器104可用,诸如存储器组件、存储设备、通信组件等等。虽然被分开地示出,但应该注意,虚拟机管理器104可另选地作为主操作系统102的一部分来包括。
虚拟机管理器104允许主操作系统102和一个或多个虚拟机在计算设备100上运行。虚拟机指的是与物理计算设备类似的、可运行程序的计算设备(或其他机器或系统)的软件实现。虚拟机包括与计算设备的物理核相似(但作为其软件实现)的一个或多个虚拟处理器核,也被称为虚拟核。操作系统以及其他应用程序可以像它们在物理核上执行一样地在虚拟核上执行——在虚拟核上执行的操作系统和其他应用程序不知道它们正在虚拟核上执行。
单个虚拟机108被示为在计算设备100中,虽然另选地多个虚拟机可在计算设备100上运行。虚拟机管理器104调度虚拟核以便在一个或多个物理核106上执行,以使得要由虚拟核执行的操作系统和其他应用程序指令由物理核106执行。为其调度虚拟核的特定物理核106可随着时间改变。
虚拟机108包括客操作系统112、一个或多个应用程序114以及一个或多个(y)虚拟核116(1),...,116(y)。客操作系统112在一个或多个虚拟核116(1),...,116(y)上运行或执行,并管理应用程序114的执行。
虚拟机管理器104包括虚拟机控制模块122。虚拟机控制模块122通过与虚拟机108通信并调度虚拟核116以便在物理核106上执行来管理虚拟机108。
虚拟机管理器104支持其中物理核106支持不同特征(被称为非对称物理核)的情形。应该注意,两个或更多个物理核106可支持相同的特征,虽然对于非对称物理核,至少一个物理核106支持与至少一个其他物理核106不同的特征。
主操作系统102包括为每一物理核106标识该物理核106支持的特征的核特征跟踪模块124。物理核106的特征指的是物理核106支持的特定功能。如果物理核106可执行提供一特征的类型的指令(例如,理解操作码(opcode)),则物理核106支持该特征。可用不同方式来标识物理核106支持的特征,诸如按特定功能(例如,包括多个指令类型的特征的名称或类型)、按各个指令类型等。例如,物理核106可指示其支持作为特征的基础x86指令集,其支持作为特征的硬件AES(高级加密标准)加密/解密,其支持作为特征的快速128位向量扩展(例如,流SIMD扩展(SSE))等等。核特征跟踪模块124可标识物理核106支持的所有特征,或另选地仅标识所选特征。例如,所有物理核106可被假定为支持特定特征(诸如基础x86指令集),而由核特征跟踪模块124标识的特征是对这些特定特征的扩展(例如,支持硬件AES加密/解密、支持快速128位向量扩展等等)。
核特征跟踪模块124可按各种不同的方式来标识特定物理核106支持的特征。在一个或多个实施例中,核特征跟踪模块124向物理核106查询对物理核106中的每一个所支持的特征的指示。核特征跟踪模块124可维护这些特征的记录(例如,已知特征以及支持那些特征的核106的树图),并在虚拟机管理器104在稍后被重新执行时检索该记录,或者另选地,可在每一次虚拟机管理器104执行时重新查询物理核106而非维护特征的记录。在其他实施例中,核特征跟踪模块124按不同方式来标识物理核106支持的特征,诸如通过向虚拟机管理器104查询对每一物理核106支持的特征的指示、访问将所支持的特征与特定物理核相关联(例如,基于序列号、型号或每一物理核106的其他标识符)的数据库或其他记录,等等。
核特征跟踪模块124还包括对提供物理核106所支持的特征的指令的指示。核特征跟踪模块124可按不同方式来标识哪些指令提供哪些特征,诸如通过被预先配置有对哪些指令提供哪些特征的指示、从物理核106接收对哪些指令提供哪些特征的指示、从操作系统102和/或计算设备100的其他组件或模块接收对哪些指令提供哪些特征的指示,等等。
虚拟机控制模块122确定一个或多个物理核106支持的、要对虚拟核116可用的一组特征。虚拟核116支持的特征是由虚拟机控制模块122使其对虚拟核116可用的特征。虚拟核116使得该组特征对客操作系统112可用(并因此对应用程序114可用)。应该注意,并非所有物理核106支持的所有特征都可对虚拟核116可用,如下文更详细地讨论的。
虚拟机管理器104具有有多少虚拟核116被包括在虚拟机108中的知识。通常在虚拟机管理器104接收到要创建或执行虚拟机108的请求时向虚拟机管理器104告知虚拟机108中的虚拟核116的数量。另选地,可在其他时间向虚拟机管理器104告知虚拟机108中的虚拟核116的数量。
在一个或多个实施例中,虚拟机控制模块122至少部分地基于虚拟机108中的虚拟核116的数量以及物理核106中的每一个所支持的特征来确定要使得哪些特征对虚拟核116可用。在这些实施例中,如果一特征由至少与虚拟机108中的虚拟核116一样多的物理核106支持,则虚拟机控制模块122确定要使得该特征对虚拟核116可用。例如,如果虚拟机108包括4个虚拟核116而仅有2个物理核106支持硬件AES加密/解密,则硬件AES加密/解密确定为不使其对虚拟核116可用的特征。作为另一示例,如果虚拟机108包括2个虚拟核116且两个或更多个物理核106支持快速128位向量扩展,则快速128位向量扩展被确定为要使其对虚拟核116可用的特征。因此,代替仅仅使得由所有物理核106支持的特征对虚拟核116可用,是否使得特定特征对虚拟核116可用是基于虚拟机108中的虚拟核116的数量以及支持该特定特征的物理核106的数量两者的。
图2示出根据一个或多个实施例的运行多个虚拟机的示例计算设备200。计算设备200可以是例如图1的计算设备100。计算设备200包括4个物理核202、204、206和208,其中的每一个支持不同的特征集合。各种不同的特征可由物理核202-208支持,而为便于解释起见,参考被称为特征A、B、C和D的四个不同特征来讨论图2。物理核202支持被称为特征A、B、C和D的四个特征。物理核204包括三个特征:特征A、B和C。物理核206包括三个特征:特征A、B和C。物理核208支持一个特征:特征A。
计算设备200还包括三个虚拟机:虚拟机210、虚拟机212和虚拟机214。虚拟机管理器220允许虚拟机210、212和214在计算设备200的物理核202-208上运行。虚拟机管理器220可以是例如图1的虚拟机管理器104。
虚拟机210包括一个虚拟核。因为存在支持特征A、B、C和D的至少一个物理核202-208,所以使得特征A、B、C和D对虚拟机210的虚拟核可用并被其支持。应该注意,虽然虚拟机210的虚拟核支持特征A、B、C和D,但虚拟机210的虚拟核可由虚拟机管理器220调度以在物理核202-208中的任一个上执行。
虚拟机212包括两个虚拟核。因为存在支持特征A、B和C的至少两个物理核202-208,所以使得特征A、B、和C对虚拟机212的虚拟核可用并被其支持。因为只存在支持特征D的一个物理核202-208,所以特征D并不被至少与虚拟机212中的虚拟核一样多的物理核202-208支持。由此,不使得特征D对虚拟机212的虚拟核可用。应该注意,虽然虚拟机212的虚拟核支持特征A、B和C,但虚拟机212的虚拟核可由虚拟机管理器220调度以在物理核202-208中的任一个上执行。
虚拟机214包括四个虚拟核。因为存在支持特征A的至少四个物理核202-208,所以使得特征A对虚拟机214的虚拟核可用并被其支持。因为支持特征B、C和D中的每一个的物理核202-208少于四个,所以特征B、C和D并不被至少与虚拟机214中的虚拟核一样多的物理核202-208支持。由此,不使得特征B、C和D对虚拟机212的虚拟核可用。应该注意,虚拟机214的虚拟核可由虚拟机管理器220调度以在物理核202-208中的任一个上执行。
回到图1,在其他实施例中,虚拟机控制模块122用其他方式来确定要使得哪些特征对虚拟核116可用。例如,如果一特征被至少一个物理核106支持,则虚拟机控制模块122可确定要使得该特征对虚拟核116可用。例如,如果硬件AES加密/解密被指晒一个物理核106支持,则硬件AES加密/解密被确定为要使其对虚拟核116可用的特征。
图3示出根据一个或多个实施例的运行多个虚拟机的另一示例计算设备300。在图3的示例中,如果一特征被至少一个物理核支持,则使得该特征对虚拟核可用。在图3的示例中,在确定是否要使得一特征对虚拟核可用时,不考虑虚拟核的数量。计算设备300可以是例如图1的计算设备100。计算设备300包括四个物理核302、304、306和308,其中的每一个支持不同的特征集合。各种不同的特征可由物理核302-308支持,而为便于解释起见,参考被称为特征A、B、C和D的四个不同特征来讨论图3。物理核302支持被称为特征A、B、C和D的四个特征。物理核304包括三个特征:特征A、B和C。物理核306支持两个特征:特征A和B。物理核308支持一个特征:特征A。
计算设备300还包括两个虚拟机:虚拟机310和虚拟机312。虚拟机管理器320允许虚拟机310和312在计算设备300的物理核302-308上运行。虚拟机管理器320可以是例如图1的虚拟机管理器104。
虚拟机310包括两个虚拟核。因为存在支持特征A、B、C和D的至少一个物理核302-308,所以使得特征A、B、C和D对虚拟机310的两个虚拟核可用并被其支持。类似地,虚拟机312包括四个虚拟核。因为存在支持特征A、B、C和D的至少一个物理核302-308,所以使得特征A、B、C和D对虚拟机310的四个虚拟核可用并被其支持。
图4是示出根据一个或多个实施例的虚拟机管理器确定要使其对虚拟机的虚拟核可用的一组特征的示例过程400的流程图。过程400由例如计算设备的虚拟机管理器(诸如图1的虚拟机管理器104)来执行,并可以用软件、固件、硬件、或其组合来实现。过程400被示为一组动作,不仅限于所示出的用于执行各种动作的操作的顺序。过程400是虚拟机管理器确定要使其对虚拟机的虚拟核可用的一组特征的示例过程;此处参考不同附图来包括对虚拟机管理器确定要使其对虚拟机的虚拟核可用的一组特征的另外讨论。
在过程400中,标识实现过程400的计算设备中的每一物理核所支持的一个或多个特征(动作402)。这些特征可如上所讨论地按不同方式来标识。
还标识虚拟机的多个虚拟核(动作404)。如上所讨论地在请求创建虚拟机时,通常标识虚拟机中有多少个虚拟核,虽然可另选地在其他时间进行标识。
至少部分地基于虚拟核的数量来确定要使其对虚拟核可用的一组特征(动作406)。该确定可以是例如如果如上所讨论地一特征被至少与虚拟机中的虚拟核一样多的物理核支持,则要使得该特征对虚拟核可用。
使得在动作406中确定的一组特征对虚拟核可用(动作408)。因而,虚拟核可支持在动作406中确定的该组特征。
回到图1,被虚拟核116执行的客操作系统112以及应用程序114的指令实际上被物理核106执行。虚拟机控制模块122为不同物理核106调度虚拟核116,以使得由特定虚拟核116执行的指令由为其调度虚拟核116的物理核106执行。应该注意,为其调度特定虚拟核116的特定物理核106可随着时间变化,并且可由虚拟机控制模块122改变。还应该注意,可为同一物理核106调度多个虚拟核116。
虚拟机控制模块122可在为物理核106调度虚拟核116时采用各种不同的技术。虚拟机控制模块122可使对虚拟核116在物理核106上的调度基于例如每一物理核106的可用性、每一虚拟核116和/或虚拟机108所使用的带宽,等等。
在一个或多个实施例中,虚拟机控制模块122使对虚拟核116在物理核106上的调度至少部分地基于每一物理核106所支持的特征。可发生这种情形,其中虚拟核116所支持的特征并不由在其上调度该虚拟核116的物理核106所支持。例如,参考图2,虚拟机212的虚拟核支持特征C,但如果为物理核206调度虚拟机212的虚拟核并尝试执行特征C的指令,则物理核206因为其不支持特征C而无法执行指令。
当其中虚拟核116尝试执行为其调度该虚拟核116的物理核106所不支持的指令的情形发生时,物理核106指示错误或异常。该错误或异常可以是例如未定义的操作码扩展(也被称为#UD)。(例如,由主操作系统102)将物理核106所指示的错误或异常返回至虚拟机控制模块122,而虚拟机控制模块122确定该错误或异常是否是向虚拟核116指示为受支持但并不受为其调度虚拟核116的物理核106支持的特征的结果。虚拟机控制模块122结合物理核106的已知特征以及哪些指令提供哪些特征(例如,如由核特征跟踪模块124所维护的)来维护要使其对物理核106可用的一组特征的记录,可容易地确定错误或异常是否是向虚拟核116指示为受支持的但并不受为其调度虚拟核116的物理核106支持的特征的结果。另选地,虚拟机控制模块122可用其他方式来确定错误或异常是否是向虚拟核116指示为受支持的但并不受为其调度虚拟核116的物理核106的支持的特征的结果,诸如通过为支持最多特征的物理核106(例如,图3的物理核302)调度该虚拟核—如果错误或异常持续存在,则该错误或异常不是向虚拟核116指示为受支持的但并不受为其调度虚拟核116的物理核106的支持的特征的结果。
如果虚拟机控制模块122确定该错误或异常是向虚拟核116指示为受支持但并不受为其调度虚拟核116的物理核106的支持的特征的结果,则虚拟机控制模块122为不同的物理核106调度该虚拟核116。在一个或多个实施例中,虚拟机控制模块122为支持包括引起该错误或异常的指令的特征的物理核106调度该虚拟核116。物理核106可将引起该错误或异常的指令的指示作为该错误或异常的一部分返回至虚拟机控制模块122。另选地,虚拟机控制模块122可用其他方式为物理核106调度虚拟核116。例如,虚拟机控制模块122可随机地或根据某一其他规则或准则选择另一物理核。
图5是示出根据一个或多个实施例的对虚拟核进行重新调度的示例过程500的流程图。过程500由例如计算设备的虚拟机管理器(诸如图1的虚拟机管理器104)来执行,并可以用软件、固件、硬件、或其组合来实现。过程500被示为一组动作,不仅限于所示出的用于执行各种动作的操作的顺序。过程500是用于对虚拟核进行重新调度的示例过程;此处参考不同附图来包括对虚拟核进行重新调度的附加讨论。
在过程500中,接收未定义操作码异常(动作502)。响应于要执行物理核不支持的指令的尝试,从物理核接收未定义操作码异常(#UD)。
响应于接收到未定义操作码异常,标识引起该未定义操作码异常的指令(动作504)。该指令可由例如从其接收未定义操作码异常的物理核来标识。
随后作出关于除在动作502中从其接收未定义操作码异常的物理核之外的另一物理核是否支持动作504中标识的指令的检查(动作506)。该检查可如上所讨论地例如基于对物理核所支持的特征的知识来作出。
如果没有其他的物理核支持在动作504中标识的指令,则将未定义操作码异常反映给操作系统(动作508)。该操作系统可以是主操作系统或客操作系统,取决于引起该未定义操作码异常的是主操作系统(或在主操作系统上运行的应用程序)的指令还是来自客操作系统(或在客操作系统上运行的应用程序)的指令。例如,如果引起该未定义操作码异常的指令是由特定虚拟机的虚拟核执行的,则将该未定义操作码异常反映给该特定虚拟机的客操作系统。如果没有物理核支持在动作504中标识的指令,则该未定义操作码异常是由于某一其他问题引起的,而非由于向虚拟核指示为受支持但并不受为其调度虚拟核的物理核的支持的特征。由此,将未定义操作码异常提供给操作系统以便解决。
然而,如果存在支持在动作504中标识的指令的另一物理核,则为支持所标识的指令的另一物理核调度尝试执行所标识的引起该未定义操作码异常的指令的虚拟核(动作510)。虚拟机控制模块则向虚拟核指示尝试再次执行所标识的指令(动作512)。因为为支持该指令的物理核调度该虚拟核,这一执行所标识的指令的后续尝试应该不会导致未定义操作码异常。在一个或多个实施例中,保持为支持该指令的物理核调度该虚拟核。因此向虚拟核提供了对该物理核的临时亲和性(affinity)或“粘性”,以使得在一时间量内(例如,直到经过了特定时间量、直到特定事件发生,诸如另一异常或调度另一虚拟核以便在该物理核上执行,等等)保持为该物理核调度该虚拟核。另选地,在执行了所标识的指令之后,可为不同的物理核(例如,在接收到未定义操作码异常时为其调度该虚拟核的物理核)重新调度该虚拟核。
在一替换实施例中,在动作506中使用试错法(trial and error)技术而非检查另一物理核是否支持所标识的指令。选择另一物理核(例如,随机选择的物理核、比在动作502中从其接收未定义操作码异常的物理核支持的特征多的物理核等等),在动作510中为所选物理核调度该虚拟核,随后在动作512中虚拟机控制模块向该虚拟核指示尝试要再次执行所标识的指令。如果对所标识的指令的尝试执行导致另一未定义操作码异常,则重复过程500直到选择了物理核中的每一个(或选择了支持最多特征的物理核)。如果所标识的指令被物理核执行,则可在一时间量内保持为该物理核调度该虚拟核。然而,如果所标识的指令导致来自每一物理核的未定义操作码异常,则在动作508中将该未定义操作码异常反映给主操作系统。
回到图1,在一个或多个实施例中,虚拟机控制模块122还监视使用不同特征的频率以及支持那些不同特征的物理核106。虚拟机控制模块122可使用这一监视来确定要使得哪些特征对后续虚拟机的虚拟核可用。例如,可为特征确定作为该特征的使用频率除以支持该特征的物理核106的数量的使用指示。如果特定特征的使用指示超过阈值量,则虚拟机控制模块122可确定不使得该特征对后续创建的虚拟机的虚拟核可用。虚拟机控制模块122因此在创建那些新的虚拟机时可动态地使得特征对新的虚拟机可用或不可用。
作为示例,假定有四个物理核106而硬件AES加密/解密特征仅由一个物理核106支持。如果硬件AES加密/解密是应用程序114和/或客操作系统112常用的特征,则支持硬件AES加密/解密特征的单个物理核106可能变为过度订阅或过度利用(例如,为其调度的虚拟核多于为其他物理核调度的虚拟核)。为了协助使跨所有物理核的虚拟核的调度均匀,虚拟机控制模块122可标识这一过度订阅或过度利用情形,并且作为响应如果后续在计算设备100创建另一虚拟机,则确定不使得该特征对另一虚拟机的虚拟核可用。
应该注意,虚拟机108不必具有且通常不具有对虚拟机管理器104确定要使得物理核106的哪些特征对虚拟机108可用的方式的知识。因而,虚拟机108不管虚拟机管理器104确定要使得物理核106支持的哪些特征对虚拟机108可用的方式而继续与虚拟核116一起操作。
另外,在一个或多个实施例中,使用多级调度程序模型来调度用户模式调度(UMS)应用程序线程以便在处理器核上执行。传统的调度模型通常只具有系统(例如,操作系统)线程和应用程序线程。系统线程通常在较高的特权级上(例如,以内核模式或环0)运行,而应用程序线程通常在执行用户或应用程序操作时在较低的特权级上(例如,以用户模式或环3)运行而在通过系统调用或异常来调用操作系统服务时进入较高的特权级(例如,环0)。与这些传统模型相反,多级调度程序模型利用UMS线程。UMS线程是使单个线程被拆分成作为用户线程和内核线程的不同部分的特定线程类。这一拆分被此处讨论的多级调度程序模块充分利用,以允许应用程序通过使得第二级调度程序以用户模式运行(不需要来自操作系统内核的帮助或干预)来调度用户线程而操作系统内核通过在内核服务运行时适当地调度内核线程来管理内核线程。
这一多级调度程序模型可充分利用处理器核的非对称本质,基于处理器核所支持的特征来调度应用程序线程以便执行。在一个或多个实施例中,多级调度程序模型包括操作系统中为多个处理器核调度应用程序并调度UMS线程的内核线程的第一级调度程序。每一应用程序包括为该应用程序调度UMS线程的用户线程以便在特定处理器核上运行的第二级调度程序。
图6示出根据一个或多个实施例的实现多级调度程序模型的示例计算设备600。计算设备600包括操作系统602、一个或多个(m)处理器核604(1),...,604(m)、以及一个或多个(n)应用程序606(1),...,606(n)。计算设备600可以是例如图1的计算设备100。操作系统602可以是例如图1的主操作系统102或客操作系统112。处理器核604(1),...,604(m)可以是例如图1的物理核106(1),...,106(x)或虚拟核116(1),...,116(y)。应用程序606(1),...,606(n)可以是例如图1的一个或多个应用程序114。因而,操作系统602和应用程序606(1),...,606(n)可本机地在物理处理器核上运行,或者可在虚拟机(例如,图1的虚拟机108)中运行。
操作系统602包括标识处理器核604支持的特征并维护特征的记录(也被称为目录)的特征目录管理器608。特征目录管理器608可以是例如图1的核特征跟踪模块124。特征目录管理器608维护的记录可以是处理器核604支持的全部特征,或另选地仅所选特征。例如,所有处理器核604可被假定支持特定特征(诸如基础x86指令集),而特征目录管理器608所标识的特征是对那些特定特征的扩展(例如,支持硬件AES加密/解密、支持快速128位向量扩展等等)。虽然被示为操作系统602的一部分,特征目录管理器608可另选地与操作系统602分开地实现。不同的处理器核604可如上所讨论的支持不同的特征。特征目录管理器608可按各种不同的方式来标识特定处理器核604支持的特征。
在一个或多个实施例中,在操作系统602的初始化处理期间,当操作系统602开始运行时,操作系统602调用特征目录管理器608。特征目录管理器608向处理器核604查询对每一处理器核604所支持的特征的指示。特征目录管理器608可在每一次操作系统602执行时重新查询处理器核604,或者另选地可维护这些特征的记录并在稍后操作系统602重新执行时检索该记录而非重新查询处理器核604。在其他实施例中,特征目录管理器608按不同方式来标识处理器核604支持的特征,诸如通过向操作系统602查询对每一处理器核604所支持的特征的指示、通过访问将所支持的特征与特定处理器核相关联(例如,基于序列号、型号或每一处理器核604的其他标识符)的数据库或其他记录等等。
特征目录管理器608还标识并维护与处理器核604所支持的特征相关联的一个或多个特征属性的记录。特征目录管理器608可按各种不同的方式来标识这些相关联的特征属性,与如上所讨论地标识处理器核604的特征相似的方式。与特征相关联的特征属性标识特征的性能特性和/或应用程序606为使用该特征而需要满足的要求。与特定特征相关联的特定一个或多个属性可取决于特征本身。例如,与特征相关联的特征属性可以是使用特征时的访问等待时间、使用特征时的实体数量和线程栈消耗、使用特征时的易失性/非易失性状态等等。
特征目录管理器608对操作系统602和应用程序606是可访问的。由此,操作系统602在调度应用程序606时以及应用程序606在调度应用程序线程时可如下文更详细地讨论地来使用特征及相关联的特征属性的记录。
操作系统602还包括操作系统级调度程序612,它是计算设备600采用的多级调度程序模型中的第一级调度程序。操作系统级调度程序612为不同处理器核604调度应用程序606,确定在哪些时间哪个应用程序606能够在哪些处理器核604上执行。操作系统级调度程序612还调度应用程序606中的UMS线程的内核线程。操作系统级调度程序612的这一调度可按各种方式中的任一种来执行,诸如通过使用循环技术、加权循环技术、允许一个或多个应用程序606与其他应用程序606相比具有优先级以便执行等等。操作系统级调度程序612还可任选地至少部分地基于特征目录管理器608维护的特征及相关联的特征属性的记录来调度应用程序606。例如,操作系统级调度程序612可基于处理器核604的特征和/或相关联的特征属性来确定要为处理器核604调度应用程序606的持续时间,可基于处理器核604的特征和/或相关联的特征属性来确定何时为处理器核604调度特定应用程序606,等等。
每一应用程序606还包括用户级调度程序614,它是计算设备600采用的多级调度程序模型中的第二级调度程序。每一用户级调度程序614调度应用程序线程616的用户线程(与用户级调度程序614在同一应用程序606中)以在特定处理器核604上运行。这些应用程序线程616是如上所讨论的可具有用户线程和内核线程两者的UMS线程。由此,第一级调度程序调度应用程序以便在处理器核604上执行,且当应用程序被调度以便在处理器核604上执行时,第二级调度程序为该应用程序调度用户线程以便在处理器核604上执行同时第一级调度程序为该应用程序调度内核线程以便在处理器核604上执行。
每一用户级调度程序614可至少部分地基于特征目录管理器616维护的特征及相关联的特征属性的记录来调度应用程序616。例如,用户级调度程序614可基于处理器核604的特征和/或相关联的特征属性来确定要为处理器核604调度应用程序线程616的持续时间,可基于处理器核604的特征和/或相关联的特征属性来确定何时为处理器核604调度特定应用程序线程616,等等。
在一个或多个实施例中,用户级调度程序614选择将在其上执行应用程序线程616的特定处理器核604。用户级调度程序614所选的处理器核可至少部分地基于特征目录管理器616维护的特征及相关联的特征属性的记录。例如,用户级调度程序614可调度应用程序线程616以便在支持特定特征(例如,支持硬件AES加密/解密)的处理器核604上执行,可调度应用程序线程以便在支持具有短于阈值访问等待时间的特定特征的处理器核604上执行,等等。
除了支持不同特征的处理器核604,具有不同性能水平的不同类型的处理器核可被包括在计算设备600中。不同类型的处理器核604可被包括在计算设备600中,诸如具有供执行指令的许多(例如,8个或更多个)流水线并消耗大量功率的高性能处理器核以及具有供执行指令的较少(例如,1个)流水线并消耗较少功率的较低性能处理器核。因而,这些不同类型的处理器核604可基于它们可多快地执行指令和/或它们消耗的功率量而非它们支持的特定特征来进行区分。标识哪些类型的处理器核被包括在计算设备600中以及哪些处理器核604是哪些类型的处理器核的信息可被包括在特征目录管理器608中或另选地由用户级调度程序614以其它方式获得(例如,从操作系统602)。例如,当特征目录管理器608如上所讨论地标识处理器核604支持的特征时,特征目录管理器608可获得标识哪些类型的处理器核被包括在计算设备600中(以及哪些处理器核604是哪些类型的处理器核)的信息。
用户级调度程序614还可基于处理器核604的类型来调度应用程序线程616以便在处理器核604上执行。例如,用户级调度程序614可调度应用程序线程616以便仅在高性能处理器核604上执行或另选地仅在较低性能的处理器核604上执行。另选地,用户级调度程序614可调度应用程序线程614以便跨所有处理器核604执行而不管处理器核604的性能水平。用户级调度程序614可按不同方式来标识其上可调度应用程序线程616来执行的处理器核604,诸如对其上可调度应用程序线程616的处理器核604被预先配置在用户级调度程序614中的指示、对其上可调度应用程序线程616的处理器核604由操作系统602或计算设备600的另一组件或模块提供给用户级调度程序614的指示,等等。
另外,计算设备600上的指令可通常按多个不同特权级别中的一个来执行,诸如如上所讨论的以用户模式或内核模式。被包括在应用程序606的业务逻辑中的指令通常以用户模式(例如,作为UMS线程的一个或多个用户线程)在应用程序线程616中执行,而应用程序线程616调用的操作系统功能通常以内核模式(例如,作为UMS线程的一个或多个内核线程)执行。虽然由操作系统级调度程序612为处理器核604调度应用程序606,但应用程序606既能以用户模式执行应用程序线程616又能调用以内核模式执行的操作系统功能。
用户级调度程序614如上所讨论地调度以用户模式在处理器核604上执行的应用程序线程616。然而,当应用程序线程616调用以内核模式执行的操作系统功能时,其上执行内核模式指令的处理器核604可能不同。用户级调度程序614(或另选地应用程序606的另一组件或模块)可将向操作系统602指示其上执行内核模式指令的特定处理器核604。另选地,操作系统602可用其他方式来确定其上执行内核模式指令的特定处理器核604,诸如操作系统级调度程序612确定其上执行内核模式指令的特定处理器核604,操作系统602被预先配置有对其上执行内核模式指令的特定处理器核604的指示,操作系统602访问指示其上执行内核模式指令的特定处理器核604的注册存储或其他数据库或记录,等等。
因而,应用程序线程616能以用户模式在一组处理器核604上执行,而操作系统功能能以内核模式在另一组处理器核604上执行。例如,应用程序线程616能以用户模式在所有处理器核604上执行,而操作系统功能能以内核模式仅在高性能处理器核604上执行。作为另一示例,应用程序线程616能以用户模式仅在较低性能的处理器核604上执行,而操作系统功能能以内核模式仅在高性能处理器核604上执行。
应该注意,这一多级调度程序模型支持各种附加的使用场景。例如,因为应用程序606的用户级调度程序614负责调度该应用程序606的应用程序线程616,所以从应用程序线程616中提取应用程序线程616所访问的组件的特性并减轻应用程序线程616需要关于这些特性的知识的负担。从应用程序线程中提取处理器核604所支持的不同特征,如计算设备600所使用的存储器拓扑结构(例如,计算设备600内部的和/或包括计算设备600的系统中的存储器拓扑结构)以及处理器核访问存储器拓扑结构的方式。然而,用户级调度程序614在调度应用程序线程616以便执行时可将这些特性考虑在内。因而,例如,用户级调度程序614在调度应用程序线程616时可将存储器拓扑结构和存储器等待时间(其可作为与存储器访问特征相关联的特征属性被包括在例如特征目录管理器608中)考虑在内。
图7是示出根据一个或多个实施例的用于实现多级调度程序模型的计算设备的示例过程700的流程图。过程700由诸如图1的计算设备600等计算设备来执行,并可以用软件、固件、硬件、或其组合来实现。过程700被示为一组动作,不仅限于所示出的用于执行各种动作的操作的顺序。过程700是计算设备实现多级调度程序模型的示例过程;此处参考不同附图包括了对计算设备实现多级调度程序模型的附加讨论。
在过程700中,标识处理器核的特征及相关联的特征属性(动作702)。这些处理器核可以是如上所讨论的虚拟核或物理核,而特征及相关联的特征属性可如上所讨论地按不同方式来标识。
操作系统级调度程序调度应用程序以便在处理器核上执行(动作704)。这一调度可如上所讨论地至少部分地基于在动作702中标识的处理器核特征及相关联的特征属性来确定。
当调度特定应用程序以便执行时,该特定应用程序的用户级调度程序调度应用程序的线程以便在特定处理器核上执行(动作706)。这一调度可如上所讨论地至少部分地基于在动作702中标识的处理器核特征及相关联的特征属性来确定。
图8示出根据一个或多个实施例的可被配置成实现具有非对称处理器核的系统上的虚拟机和/或多级调度支持的示例计算设备800。计算设备800可以是例如图1的计算设备100或图6的计算设备600。
计算设备800包括包含多个物理核的一个或多个处理器或处理单元802、可包含一个或多个存储器和/或存储组件806的一个或多个计算机可读介质804、一个或多个输入/输出(I/O)设备808、以及允许各组件和设备彼此通信的总线810。计算机可读介质804和/或一个或多个I/O设备808可以作为计算设备800的一部分被包括,或者可另选地可以耦合到计算设备500。总线810表示若干类型的总线结构中的任何一种总线结构的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口,以及使用各种不同的总线体系结构中的处理器或局部总线。总线810可包括有线和/或无线总线。
存储器/存储组件806表示一个或多个计算机存储介质。组件806可包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等等)。组件806可包括固定介质(例如,RAM、ROM、固定硬盘驱动器等等)以及可移动介质(例如,闪存驱动器、可移动硬盘驱动器、光盘等等)。
此处所讨论的技术可以以软件实现,指令由一个或多个处理单元802。可以理解,不同的指令可以存储在计算设备800的不同的组件中,诸如存储在处理单元802中,存储在处理单元802的各种缓存存储器中,存储在设备800(未示出)的其他缓存存储器中,存储在其他计算机可读介质上等等。另外,可以理解,指令存储在计算设备800中的位置可以随着时间而变化。
一个或多个输入/输出设备808可使用户向计算设备800输入命令和信息,以及可使信息被呈现给用户和/或其他组件或设备。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、话筒、扫描仪等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡等等。
此处可以在软件或程序模块的一般上下文中描述各种技术。一般而言,软件包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。这些模块和技术的实现可以存储在某种形式的计算机可读介质上或通过某种形式的计算机可读介质传输。计算机可读介质可以是可以被计算设备访问的任何可用介质。作为示例,而不是限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁性存储设备、或能用于存储所需信息且可以由计算机访问的任何其它介质。
“通信介质”通常用诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。通信介质还包括任何信息传送介质。术语“已调制数据信号”是指其一个或多个特征以这样的方式设置或改变以便在信号中对信息进行编码的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线连接,以及无线介质,诸如声学、RF、红外线和其他无线介质。以上的任一种的组合也包括在计算机可读介质的范围之内。
一般而言,此处所描述的任何功能或技术都可使用软件、固件、硬件(例如,固定逻辑电路)、手动处理或这些实现的组合来实现。如此处所使用的术语“模块”和“组件”一般代表软件、固件、硬件或其组合。在软件实现的情况下,模块或组件表示当在处理器(例如,一个或多个CPU)上执行时执行指定任务的程序代码。程序代码可以存储在一个或多个计算机可读的存储器设备中,可以参考图8发现关于其进一步的描述。此处所描述的具有非对称处理器核的系统上的虚拟机和/或多级调度支持的特征是平台无关的,这意味着这些技术可以在具有各种处理器的各种商业计算平台上实现。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但是可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。更确切而言,上述具体特征和动作是作为实现权利要求的示例形式公开的。
Claims (14)
1.一种在计算设备中实现的方法,包括:
为计算设备的一个或多个处理器的多个物理处理器核中的每一个标识(402)所述物理处理器核所支持的一个或多个特征;
标识(404)所述计算设备的虚拟机的虚拟处理器核的数量;
至少部分地基于将支持所标识的一个或多个特征的所述多个物理处理器核的数量与所述虚拟机的虚拟处理器核的数量进行比较来确定(406)要使其对所述虚拟机的虚拟处理器核可用的多个物理处理器核的一组一个或多个特征;
使得(408)所述多个物理核的所述一组一个或多个特征对所述虚拟机的虚拟处理器核可用;以及
调度所述虚拟处理器核以便多个应用程序在所述多个物理处理器核上执行,包括:至少部分地基于所述多个处理器核所支持的一个或多个特征使用多级调度程序模型来调度所述多个应用程序的一个应用程序的应用程序线程以便在所述多个物理处理器核中的一个或多个上执行,所述多级调度程序模型利用用户模式调度线程,其中所述用户模式调度线程将单个现场线程拆分成作为用户线程和内核线程的不同部分的特定线程类。
2.如权利要求1所述的方法,其特征在于,确定所述一组一个或多个特征是将受到所述数量的多个物理处理器核支持的每一特征包括在所述一组一个或多个特征中,所述多个物理处理器核的数量等于虚拟处理器核的数量。
3.如权利要求1所述的方法,其特征在于,调度所述虚拟处理器核以便在所述多个物理处理器核上执行是要:
从所述多个处理器核的第一物理处理器核接收未定义操作码异常,其中所述虚拟机的第一虚拟处理器核被调度在所述第一物理处理器核上;
标识引起所述未定义操作码异常的指令;
检查所述指令是否受到所述多个物理处理器核中的一个或多个支持;
如果所述指令不受到所述多个物理处理器核中的一个或多个支持,则将所述指令提供给所述计算设备的操作系统;
如果所述指令受到所述多个物理处理器核中的一个或多个支持,则:
将所述第一虚拟处理器核调度在所述多个物理处理器核的第二物理处理器核上,所述第二物理处理器核以及所述第一物理处理器核是所述多个物理处理器核中的不同的物理处理器核,以及
在将所述第一虚拟处理器核调度在所述第二物理处理器核上之后,向所述第一虚拟处理器核指示要尝试再次执行所述指令。
4.如权利要求1所述的方法,其特征在于,确定所述一组一个或多个特征是至少部分地基于所述多个物理处理器核中的每一个所支持的一个或多个特征、所述虚拟机的虚拟处理器核的数量、以及所述计算设备的其他虚拟机使用所述多个物理处理器核中的每一个所支持的一个或多个特征的频率来确定所述一组一个或多个特征。
5.如权利要求4所述的方法,其特征在于,确定所述一组一个或多个特征还要确定如果对所述多个物理核中的一个或多个所支持的一个或多个特征中的特定一个特征的使用指示超过阈值量时所述特定一个特征不被包括在所述一组一个或多个特征中。
6.如权利要求1所述的方法,其特征在于,所述计算设备包括一个或多个附加虚拟机,且使得不同特征组对所述一个或多个附加虚拟机的不同虚拟机的虚拟处理器核可用。
7.如权利要求1所述的方法,其特征在于,标识受到所述物理处理器核支持的一个或多个特征是要向所述物理处理器核查询对所述物理处理器核支持的特征的指示。
8.一种在计算设备中的方法,所述方法包括:
为所述计算设备的多个处理器核中的每一个标识(702)所述处理器核支持的一个或多个特征;
所述计算设备的操作系统的操作系统级调度器调度(704)多个应用程序以便在所述多个处理器核上执行;以及
所述多个应用程序的一个应用程序的用户级调度程序至少部分地基于所述多个处理器核所支持的一个或多个特征使用多级调度程序模型来调度(706)所述一个应用程序的应用程序线程以便在所述多个处理器核中的一个或多个上执行,所述多级调度程序模型利用用户模式调度线程,其中所述用户模式调度线程将单个现场线程拆分成作为用户线程和内核线程的不同部分的特定线程类。
9.如权利要求8所述的方法,其特征在于,所述标识还包括标识与所述一个或多个特征中的每一个相关联的一个或多个特征属性,且调度应用程序线程还包括至少部分地基于与所述一个或多个特征中的每一个相关联的一个或多个特征属性来调度所述应用程序的用户模式调度的应用程序线程。
10.如权利要求8所述的方法,其特征在于,还包括将以用户模式执行的应用程序线程调度在所述多个处理器核的第一组处理器核上,并且将以内核模式执行的操作系统功能调度在所述多个处理器核的第二组处理器核上,其中所述第一组处理器核和第二组处理器核包括所述多个处理器核中的不同处理器核。
11.如权利要求8所述的方法,其特征在于,所述用户级调度程序进行的调度还至少部分地基于从所述一个应用程序中提取所述计算设备所使用的存储器拓扑结构的一个或多个存储器访问特征。
12.如权利要求8所述的方法,其特征在于,还包括维护所述多个处理器核所支持的特征以及与所述多个处理器核所支持的特征中的一个或多个相关联的一个或多个特征属性的记录。
13.如权利要求8所述的方法,其特征在于,所述多个处理器核包括所述计算设备的虚拟机的多个虚拟处理器核。
14.如权利要求8所述的方法,其特征在于,所述多个处理器核包括所述计算设备的多个物理处理器核。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/896,415 | 2010-10-01 | ||
US12/896,415 US8418177B2 (en) | 2010-10-01 | 2010-10-01 | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102402458A CN102402458A (zh) | 2012-04-04 |
CN102402458B true CN102402458B (zh) | 2015-05-20 |
Family
ID=45884689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110317869.5A Active CN102402458B (zh) | 2010-10-01 | 2011-10-09 | 具有非对称处理器核的系统上的虚拟机和/或多级调度支持 |
Country Status (2)
Country | Link |
---|---|
US (2) | US8418177B2 (zh) |
CN (1) | CN102402458B (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8418177B2 (en) | 2010-10-01 | 2013-04-09 | Microsoft Corporation | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores |
KR101738641B1 (ko) * | 2010-12-17 | 2017-05-23 | 삼성전자주식회사 | 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법 |
WO2013132741A1 (ja) * | 2012-03-06 | 2013-09-12 | パナソニック株式会社 | マルチプロセッサシステム |
JP5748349B2 (ja) * | 2012-03-16 | 2015-07-15 | 株式会社日立製作所 | 仮想計算機の制御方法及び仮想計算機システム |
CN104471587B (zh) * | 2012-05-16 | 2018-01-23 | 诺基亚技术有限公司 | 处理器中的方法,装置和计算机程序产品 |
DE102012011584A1 (de) * | 2012-06-13 | 2013-12-19 | Robert Bosch Gmbh | Ressourcen-Managementsystem fürAutomatisierungsanlagen |
US9672046B2 (en) | 2012-12-28 | 2017-06-06 | Intel Corporation | Apparatus and method for intelligently powering heterogeneous processor components |
US9448829B2 (en) | 2012-12-28 | 2016-09-20 | Intel Corporation | Hetergeneous processor apparatus and method |
US9329900B2 (en) | 2012-12-28 | 2016-05-03 | Intel Corporation | Hetergeneous processor apparatus and method |
US9639372B2 (en) | 2012-12-28 | 2017-05-02 | Intel Corporation | Apparatus and method for heterogeneous processors mapping to virtual cores |
US9727345B2 (en) | 2013-03-15 | 2017-08-08 | Intel Corporation | Method for booting a heterogeneous system and presenting a symmetric core view |
US20150007196A1 (en) * | 2013-06-28 | 2015-01-01 | Intel Corporation | Processors having heterogeneous cores with different instructions and/or architecural features that are presented to software as homogeneous virtual cores |
US9760390B2 (en) | 2013-07-16 | 2017-09-12 | Empire Technology Development Llc | Processor identification for virtual machines |
WO2015030717A1 (en) * | 2013-08-27 | 2015-03-05 | Empire Technology Development Llc | Consolidating operations associated with a plurality of host devices |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US9218185B2 (en) | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
US9753770B2 (en) * | 2014-04-03 | 2017-09-05 | Strato Scale Ltd. | Register-type-aware scheduling of virtual central processing units |
GB2541570B (en) * | 2014-05-21 | 2021-05-12 | Pontus Networks 1 Ltd | Thread performance optimization |
GB2524346B (en) | 2014-09-19 | 2016-12-21 | Imagination Tech Ltd | Separating Cores |
CN106852173B (zh) * | 2014-10-29 | 2020-02-21 | 华为技术有限公司 | 访存的方法、内存控制器和处理器核 |
EP3268859A1 (en) | 2015-07-27 | 2018-01-17 | Hewlett-Packard Enterprise Development LP | Scheduling heterogenous processors |
US20170111221A1 (en) * | 2015-10-19 | 2017-04-20 | Netapp, Inc. | Methods and systems for managing configuration change in a networked storage environment |
GB2544530A (en) * | 2015-11-20 | 2017-05-24 | Pontus Networks 1 Ltd | Fuzzy Caching mechanism for thread execution layouts |
US10372493B2 (en) * | 2015-12-22 | 2019-08-06 | Intel Corporation | Thread and/or virtual machine scheduling for cores with diverse capabilities |
WO2017107091A1 (en) * | 2015-12-23 | 2017-06-29 | Intel IP Corporation | Virtual cpu consolidation to avoid physical cpu contention between virtual machines |
US10073718B2 (en) | 2016-01-15 | 2018-09-11 | Intel Corporation | Systems, methods and devices for determining work placement on processor cores |
CN106227578A (zh) * | 2016-07-12 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 一种虚拟机热迁移的方法、设备及系统 |
US10338970B2 (en) | 2016-09-20 | 2019-07-02 | International Business Machines Corporation | Multi-platform scheduler for permanent and transient applications |
US10489273B2 (en) | 2016-10-20 | 2019-11-26 | Microsoft Technology Licensing, Llc | Reuse of a related thread's cache while recording a trace file of code execution |
CN108182104B (zh) * | 2016-12-08 | 2021-07-09 | 中国移动通信有限公司研究院 | 一种分配虚拟处理器的方法、设备及系统 |
US10282226B2 (en) | 2016-12-20 | 2019-05-07 | Vmware, Inc. | Optimizing host CPU usage based on virtual machine guest OS power and performance management |
US10318332B2 (en) | 2017-04-01 | 2019-06-11 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
CN110741351B (zh) * | 2017-06-16 | 2023-05-09 | 阿里巴巴集团控股有限公司 | 确定虚拟化多处理系统的处理器利用率 |
US11169834B2 (en) * | 2017-09-28 | 2021-11-09 | Intel Corporation | Dynamic platform feature tuning based on virtual machine runtime requirements |
CN108279603A (zh) * | 2018-01-30 | 2018-07-13 | 风度(常州)汽车研发院有限公司 | 一种行车控制系统、方法及存储介质 |
US11029986B2 (en) * | 2018-05-25 | 2021-06-08 | Microsoft Technology Licensing, Llc | Processor feature ID response for virtualization |
DE102019209086B3 (de) * | 2019-06-24 | 2020-08-13 | Audi Ag | Kraftfahrzeug-Computersystem mit Hypervisor sowie Kraftfahrzeug |
CN111176847B (zh) * | 2019-12-31 | 2022-08-12 | 苏州浪潮智能科技有限公司 | 物理核超多线程服务器上大数据集群性能优化方法及装置 |
CN110928696B (zh) * | 2020-02-13 | 2020-10-09 | 北京一流科技有限公司 | 用户级线程控制系统及其方法 |
US11580060B2 (en) * | 2021-02-13 | 2023-02-14 | Drako Motors, Inc. | Policy driven latency control applied to a vehicular real time network apparatus |
US11853783B1 (en) | 2021-03-29 | 2023-12-26 | Amazon Technologies, Inc. | Identifying hosts for dynamically enabling specified features when resuming operation of a virtual compute instance |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101430649A (zh) * | 2008-11-19 | 2009-05-13 | 北京航空航天大学 | 基于虚拟机的虚拟计算环境系统 |
US7797512B1 (en) * | 2007-07-23 | 2010-09-14 | Oracle America, Inc. | Virtual core management |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7356817B1 (en) | 2000-03-31 | 2008-04-08 | Intel Corporation | Real-time scheduling of virtual machines |
US7779238B2 (en) * | 2004-06-30 | 2010-08-17 | Oracle America, Inc. | Method and apparatus for precisely identifying effective addresses associated with hardware events |
US7873776B2 (en) * | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
WO2007071117A1 (en) | 2005-12-23 | 2007-06-28 | Intel Corporation | Changing a scheduler in a virtual machine monitor |
US8621459B2 (en) | 2006-12-22 | 2013-12-31 | Intel Corporation | Method and apparatus for multithreaded guest operating system execution through a multithreaded host virtual machine monitor |
US8161482B1 (en) * | 2007-04-13 | 2012-04-17 | Marvell International Ltd. | Power optimization for multi-core devices |
US7730248B2 (en) * | 2007-12-13 | 2010-06-01 | Texas Instruments Incorporated | Interrupt morphing and configuration, circuits, systems and processes |
US9058183B2 (en) * | 2009-12-29 | 2015-06-16 | Advanced Micro Devices, Inc. | Hypervisor isolation of processor cores to enable computing accelerator cores |
US8789042B2 (en) * | 2010-09-27 | 2014-07-22 | Mips Technologies, Inc. | Microprocessor system for virtual machine execution |
US8418177B2 (en) | 2010-10-01 | 2013-04-09 | Microsoft Corporation | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores |
-
2010
- 2010-10-01 US US12/896,415 patent/US8418177B2/en active Active
-
2011
- 2011-10-09 CN CN201110317869.5A patent/CN102402458B/zh active Active
-
2013
- 2013-04-05 US US13/857,305 patent/US9323547B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797512B1 (en) * | 2007-07-23 | 2010-09-14 | Oracle America, Inc. | Virtual core management |
CN101430649A (zh) * | 2008-11-19 | 2009-05-13 | 北京航空航天大学 | 基于虚拟机的虚拟计算环境系统 |
Also Published As
Publication number | Publication date |
---|---|
US9323547B2 (en) | 2016-04-26 |
US20130227571A1 (en) | 2013-08-29 |
US20120084777A1 (en) | 2012-04-05 |
US8418177B2 (en) | 2013-04-09 |
CN102402458A (zh) | 2012-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102402458B (zh) | 具有非对称处理器核的系统上的虚拟机和/或多级调度支持 | |
US8667459B2 (en) | Application specific runtime environments | |
CN108090731B (zh) | 一种信息处理方法及设备 | |
US10764299B2 (en) | Access control manager | |
CN102938039B (zh) | 针对应用的选择性文件访问 | |
US9128765B2 (en) | Assigning restored virtual machine based on past application usage of requesting user | |
US20110145392A1 (en) | Dynamic provisioning of resources within a cloud computing environment | |
EP2304584A1 (en) | Apparatus and methods for interacting with multiple information forms across multiple types of computing devices | |
CN110083399A (zh) | 小程序运行方法、计算机设备及存储介质 | |
US20140068077A1 (en) | Efficient Resource Management in a Virtualized Computing Environment | |
US9632897B2 (en) | Monitoring components in a service framework | |
JP2022520141A (ja) | DAppで要求する高いトランザクション処理量をブロックチェーンで効率的に処理するための方法およびシステム | |
CN101310256A (zh) | 异步运行时编译 | |
JP2007249295A (ja) | セッション管理プログラム、セッション管理方法およびセッション管理装置 | |
US10600014B2 (en) | Facilitating provisioning in a mixed environment of locales | |
CN102597957B (zh) | 系统部署确定系统、系统部署确定方法及程序 | |
JP3993342B2 (ja) | 電子計算機における処理の中断/再開方法 | |
US11816204B2 (en) | Multi-tenant actor systems with web assembly | |
US11340952B2 (en) | Function performance trigger | |
CN114356516A (zh) | 资源调度方法及相关装置、设备和存储介质 | |
US10171378B2 (en) | System and method for allocating and reserving supervisors in a real-time distributed processing platform | |
JP2007206913A (ja) | データベースアクセスシステム、アプリケーションサーバノード、データベースアクセス方法及びプログラム | |
JP2007293639A (ja) | アクセス制御方法、アクセス制御方法を用いた機器及びシステム | |
US11221871B2 (en) | Enabling a management function on a compute node in response to a user workload ownership level | |
KR102466247B1 (ko) | 오케스트레이터 환경에서 에이전트를 이용한 컨테이너 관리 장치 및 관리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150727 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150727 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |