CN108701046A - 用于避免虚拟机之间的物理cpu争用的虚拟cpu合并 - Google Patents

用于避免虚拟机之间的物理cpu争用的虚拟cpu合并 Download PDF

Info

Publication number
CN108701046A
CN108701046A CN201580085089.9A CN201580085089A CN108701046A CN 108701046 A CN108701046 A CN 108701046A CN 201580085089 A CN201580085089 A CN 201580085089A CN 108701046 A CN108701046 A CN 108701046A
Authority
CN
China
Prior art keywords
pcpu
vcpu
subset
multiple individual
vmm
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.)
Granted
Application number
CN201580085089.9A
Other languages
English (en)
Other versions
CN108701046B (zh
Inventor
杜雨阳
J·孙
Y·T·蔡
M·孙
S·黑泽贝洛克
N·查尔胡布
P·萨卡达
R·奎恩兹奥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel IP Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel IP Corp filed Critical Intel IP Corp
Publication of CN108701046A publication Critical patent/CN108701046A/zh
Application granted granted Critical
Publication of CN108701046B publication Critical patent/CN108701046B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

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

本文中描述了用于虚拟CPU合并以避免虚拟机之间的物理CPU争用的各种系统和方法。一种处理器系统,包括多个物理处理器(PCPU),该处理器系统包括:第一虚拟机(VM),该第一VM包括多个第一虚拟处理器(VCPU);第二VM,该第二VM包括多个第二VCPU;以及虚拟机监视器(VMM),用于至少部分地基于用于运行第一VCPU的PCPU的第一子集的计算容量将第一VCPU中的多个单独的VCPU映射为在以下至少一者上运行:PCPU的第一子集中的多个单独的PCPU、以及包括PCPU的第一子集和PCPU的第二子集的PCPU的集合中的多个单独的PCPU;以及用于将第二VCPU中的多个单独的VCPU映射为在PCPU的第二子集中的多个单独的PCPU上运行。

Description

用于避免虚拟机之间的物理CPU争用的虚拟CPU合并
背景技术
在虚拟化的计算环境中,物理机被配置成用于实现虚拟机的行为。常被称为“主机”的物理机可以使用软件来配置以实现多个虚拟机(VM)。物理机典型地包括物理系统硬件,该物理系统硬件典型地包括一个或多个物理处理器(PCPU)以及物理存储器和各种其他物理设备,其他物理设备诸如,例如本地存储和IO。虚拟机典型地包括虚拟系统硬件,该虚拟系统硬件一般包括一个或多个虚拟CPU(VCPU)、虚拟存储器、虚拟存储、虚拟IO以及一个或多个其他虚拟设备,这些虚拟设备全部可使用已知的技术以软件来实现,以模拟对应的物理组件。VM将典型地包括虚拟系统硬件和宾客机(guest)系统软件两者,该宾客机系统软件包括用于各种虚拟设备的虚拟驱动器。包括虚拟化中介的一层或多层或者共驻的软件组件(例如,虚拟机监视器(VMM))用于实例化并供应VM,并且用于在多个VM之间动态且透明地分配主机机器资源,使得它们的相应的宾客机操作系统可以各自在单个物理机上并发地运行多个VCPU。
附图说明
图1是根据一些实施例的被配置成用于主控多个虚拟机的多处理器移动设备的说明性框图。
图2是表示根据一些实施例的用于管理应用VCPU合并和分散过程的VMM的配置的说明性流程图。
图3是示出根据一些实施例的在图1的主机系统内对应用VCPU的合并和分散的示例的说明性框图。
图4是表示根据一些实施例的应用的状态转变的说明性状态转变图。
图5是根据一些实施例的说明性示例VCPU工作负荷图,该说明性示例VCPU工作负荷图指示多个应用VCPU在时间间隔上在活动和非活动状态之间的转变。
图6是表示根据一些实施例的在合并过程期间和分散过程期间在多个应用VCPU与多个PCPU之间的关联中的改变的说明性图。
图7是表示根据一些实施例的用于映射VM活动的VMM配置的说明性流程图。
图8是表示根据一些实施例的机器的说明性框图,本文中所讨论的技术(例如,方法)中的任何一项或多项可在该机器上执行。
具体实施方式
呈现接下来的描述以使得任何本领域技术人员能够创建并使用计算机系统配置和有关的方法和制品以在虚拟机监视器中合并虚拟CPU,从而避免多个虚拟机之间的物理CPU争用。对实施例的各种修改对于本领域技术人员是显而易见的,并且本文中所定义的通用原理可应用于与本公开一致的其他实施例和应用。此外,在以下描述中,出于解释的目的,提出了许多细节。然而,本领域的普通技术人员将认识到,可无需使用这些具体细节来实现本发明。在其他实例中,以框图形式示出公知的结构和过程,以免因不必要的细节使本发明的实施例的描述变得模糊。相同的附图标记可用于表示不同附图中的相同项的不同视图。以下所参考的附图中的流程图用于表示过程。一个或多个计算机系统可被配置成用于执行这些过程。这些流程图包括表示计算机系统的配置的框,该计算机系统根据计算机程序代码来执行参考这些框所描述的动作。因此,本发明并非旨在被限制为所示的实施例,而是旨在符合与本文中所公开的原理和特征一致的最宽泛的范围。
图1是根据一些实施例的被配置成用于主控多个虚拟机的多处理器移动主机设备100的说明性框图。该示例设备100包括四个物理处理器(PCPU):PCPU1至PCPU4;以及三个虚拟机(VM):VM1、VM2、VM3。每个VM包括多个虚拟处理器(VCPU)。虚拟机监视器(VMM)映射VCPU以在PCPU上运行。
主机设备100被配置成用于主控第一、第二和第三虚拟机VM1、VM2和VM3,该主机设备100诸如,例如智能电话。物理设备硬件101包括例如PCPU0至PCPU4、存储器108、各种其他设备110和IO 112。每个虚拟机VM1至VM3包括虚拟系统硬件114和宾客机系统软件116。每个虚拟机VM1至VM3包括多个虚拟VCPU。第一VM1包括VCPU11至VCPU15。第二VM2包括VCPU21至VCPU25。第三VM3包括VCPU31至VCPU35。VM1至VM3中的每一个还包括其自身的虚拟存储器118以及其自身的一个或多个虚拟设备120和虚拟IO 122。
主机设备100被配置成用于实现虚拟机监视器(VMM)124,该虚拟机监视器(VMM)124充当虚拟机VM1至VM3与底层硬件平台中的各物理硬件组件和设备之间的接口。VMM 124管理物理设备的选择以及这些物理设备向虚拟设备的临时分配。例如,VMM 124管理VM1至VM3、它们的VCPU、它们的虚拟存储器118和其他虚拟设备与被选择用于实现这些虚拟设备的物理硬件设备之间的映射。当由VM分派虚拟处理器(VCPU)时,由VMM 124映射物理处理器(诸如,PCPU中的一个)以执行那个VCPU的操作。
根据一些实施例,VM1实现包括可视化用户界面的应用,VM2实现调制解调器通信协议,并且VM3实现安全。VM1将它的VCPU配置成用于使用一个或多个PCPU来实现诸如例如Windows或安卓操作系统之类的应用。VM2将它的VCPU配置成用于使用一个或多个PCPU来实现诸如例如LTE通信协议的无线通信协议。VM3将它的VCPU配置成用于使用一个或多个PCPU来实现诸如例如DRM(数字版权管理)协议的安全协议。这三个VM VM1至VM3同时运行。为了使虚拟化开销最小化,调制解调器VM VM2和安全VM VM3被固定到固定的PCPU。基于优先级的调度被用于在所有的四个PCPU之间分配应用VM VM1的VCPU。
更具体地,通信VM VM2被固定到PCPU PCPU3。安全VM VM3被固定到PCPU PCPU4。应用VM VM1可以共享所有的四个PCPU PCPU1至PCPU4。换言之,由第二(调制解调器)VM VM2使用的VCPU仅在PCPU3上运行。由第三(安全)VM VM3使用的VCPU仅在PCPU4上运行。然而,由第一(应用)VM VM2使用的VCPU可以在PCPU1至PCPU4中的任何一个上运行。
VMM 124映射VM的VCPU,以基于优先级排序来共享PCPU,按照该优先级排序,调制解调器VM VM2具有最高优先级;安全VM VM3具有次高优先级;并且应用VM VM1具有最低优先级。根据由VMM 124实现的调度过程,当具有不同优先级的两个VM被映射到一个PCPU以共享该PCPU的处理资源时,对经映射以在PCPU上运行的较高优先级的VM的调度抢占对经映射以在同一个PCPU上运行的较低优先级的VM的调度。因此,例如,每当调制解调器VM VM2或通信VM VM3竞争同一个PCPU时,具有最低优先级的应用VM VM1将被抢占而无法使用该PCPU。结果,当被抢占时,受害应用VCPU不得不等待直到抢占调制解调器VCPU或安全VCPU不活动达任意长的时间。
在操作中,调制解调器VCPU的活动时间比率通常相当高。另外,当调制解调器VCPU或安全VCPU为活动时,应用VCPU通常也是活动的,因为应用VM与调制解调器VM或安全VM通信。此外,在一些实施例中,应用VM中的任务调度器一般试图跨所有VCPU均匀地分散应用VM工作负荷(workload)。如本文中所使用,“工作负荷”指代用于运行VCPU的PCPU资源的有效的使用。作为与调制解调器VM和安全VM的该争用的结果,由于被调制解调器VM或安全VM抢占时的无限的等待,应用VM可能遭受严重的性能和响应性问题。随着调制解调器VM处置越来越高的数据率,此问题可能变得越来越严重。
为了缓解该PCPU争用问题,VMM实现一过程,以响应于当前应用VCPU工作负荷在规定的范围内的判定而将应用VCPU(VCPU11-VCPU15)合并到主机系统PCPU的专用子集,该判定指示PCPU的专用子集可以有效地处置应用VCPU工作负荷。由于应用VCPU运行在调制解调器和安全VCPU不在其上运行的PCPU的专用子集上,因此应用VCPU的合并减少了由应用VCPU与调制解调器及安全VCPU之间的争用导致的抢占。相反,VMM 124实现一过程,以响应于当前应用VCPU工作负荷在规定的范围外的判定而将应用VCPU(VCPU11-VCPU15)分散在更大量的PCPU之间,该判定指示PCPU的专用子集不能有效地处置应用VCPU工作负荷。因此,当应用VCPU工作负荷过大而不能由PCPU的专用子集处理时,该应用VCPU被分散在更大量的PCPU之间。然而,由于应用VCPU被分散到由调制解调器及安全VCPU共享的PCPU,因此分散应用VCPU任务或过程增加了因抢占而产生的争用的几率。选择规定的范围,使得在合并期间,PCPU的专用子集可处置PCPU而没有超过可接受水平的用户体验降级,该用户体验降级诸如,例如因缓慢而产生的应用的用户界面(UI)性能的降级。根据一些实施例,范围是可调节的。因此,选择规定的范围以对当应用VCPU工作负荷较轻时的应用VCPU的无争用的操作与当应用VCPU工作负荷较重时的应用VCPU的受争用影响的操作之间的权衡进行优化。
图2是表示根据一些实施例的用于管理应用VCPU合并和分散过程或任务的VMM的配置的说明性流程图。更具体地,该说明性流程图表示VMM的配置,该VMM的配置用于执行过程200以基于VCPU工作负荷,将应用VCPU合并到较小数量的PCPU,以及在较大数量的PCPU之间分散应用VCPU。框202将VMM配置成用于确定应用VCPU工作负荷的度量。在操作中,多个应用VCPU可同时运行在不同的PCPU上。应用VCPU工作负荷提供了分配给正在运行的应用VCPU的PCPU计算资源的量的度量。由于应用VCPU工作负荷会随时间改变,因此应用VM工作负荷被连续地更新。
框204将VMM配置成用于判定VCPU工作负荷度量是否指示该VCPU工作负荷在规定的工作负荷范围内。主机系统中所的PCPU的所选择的子集被指定为充当专用于在合并期间运行应用VCPU的PCPU,该PCPU的所选择的子集可包括在主机系统内的一个或多于一个的PCPU。根据一些实施例,选择PCPU的第一专用子集,该第一专用子集不包括运行具有比应用VCPU更高的优先级的调制解调器或安全VCPU的PCPU。基于所指定的PCPU的计算容量来选择规定的工作负荷范围。在一些实施例中,所指定的PCPU计算容量至少部分地基于所指定的PCPU能够同时运行而不导致应用VM性能的不可接受的降级的VCPU的数量来确定。在一些实施例中,使用同时运行的应用VCPU的阈值数量、PCPU的第一子集中的PCPU的数量以及可调整的缩放因子来界定规定的工作负荷范围。具体地,对于第一子集中给定数量的PCPU和给定的缩放因子,如果同时运行的VCPU的数量处于或低于阈值数量,则判定应用VCPU工作负荷在规定的范围内。相反,如果同时运行的VCPU的数量高于阈值数量,则判定应用VCPU工作负荷在规定的范围之外。
框206将VMM配置成用于响应于应用VCPU在规定的范围内的判定而开始应用VCPU合并过程。该合并过程涉及改变应用VCPU在其上运行的PCPU的集合,以便仅涵盖处于PCPU的第一专用子集内的PCPU,而不涵盖不在PCPU的第一专用子集内的PCPU。因此,合并导致应用VCPU在PCPU的第一专用子集上运行,在该PCPU的第一专用子集上不存在与调制解调器或安全VCPU的冲突,并且因此不存在与调制解调器或安全VCPU的抢占。接下来,控制返回到框202,该控制继续监视应用VCPU工作负荷。
框208将VMM配置成用于响应于应用VCPU在规定的范围之外的判定而开始应用VCPU分散过程。该分散过程涉及改变应用VCPU在其上运行的PCPU的集合,以便既涵盖PCPU的第一专用子集内的PCPU,又涵盖在PCPU的第一专用子集之外的PCPU。分散导致应用VCPU在具有更大的集合计算容量的更大量的PCPU上运行,以处置被判定为在规定的范围之外的更大的应用VCPU工作负荷。将会领会,分散涉及与调制解调器或安全VCPU冲突以及因此由调制解调器或安全VCPU抢占的增加的可能性的权衡。接下来,控制返回到框202,该控制继续监视应用VCPU工作负荷。
图3是示出根据一些实施例的图1的主机系统内由应用VCPU的合并和分散导致的VCPU到PCPU的示例映射的说明性框图。在该示例中,应用VM VM1已实例化分别与应用工作负荷W11至W15相关联的5个应用VCPU VCPU11至VCPU15。调制解调器VM VM2已实例化分别与调制解调器工作负荷W21至W25相关联的5个应用VCPU VCPU21至VCPU25。安全VM VM3已实例化分别与工作负荷W31至W35相关联的5个应用VCPU VCPU31至VCPU35。
在此示例中,选择第一和第二PCPU PCPU1和PCPU2以专用于运行与应用VCPU相关联的应用工作负荷。调制解调器VM VM2被固定于运行与调制解调器VCPU相关联的所有的调制解调器工作负荷的第三PCPU PCPU3。安全VM VM3被固定于运行与安全VCPU相关联的所有的安全工作负荷的第四PCPU PCPU4。
示出了VMM 124的两个快照。在第一(分散)快照300中,应用工作负荷W11-W15分散在所有的4个PCPU PCPU1至PCPU4之间。因此,PCPU运行混合的工作负荷。第三PCPU PCPU3运行调制解调器和应用工作负荷两者(W13、W21-W25),而第四PCPU PCPU4运行安全和应用工作负荷两者(W14、W31-W35)。由于第三应用工作负荷W13与5个调制解调器工作负荷W21-W25共享第三PCPU PCPU3,因此第三应用工作负荷W13处于被这6个调制解调器工作负荷中的一个或多个抢占的风险中。类似地,由于第四应用工作负荷W14与5个安全工作负荷W31-W35共享第四PCPU PCPU4,因此第四应用工作负荷W14处于被这5个安全工作负荷中的一个或多个抢占的风险中。在第二(合并)快照302中,合并应用工作负荷(W11-W15)以仅在专用于在第一和第二PCPU PCPU1和PCPU2上运行应用工作负荷W11-W15的两个PCPU上运行。因此,不存在应用工作负荷将被调制解调器或安全工作负荷抢占的风险。
参考图2和3,假定如在第一示例快照(分散)300中所示地分配工作负荷,响应于决策框204判定了应用VCPU工作负荷较轻并且在规定的范围内,框206发起应用VCPU合并过程,该应用VCPU合并过程导致转变到第二(合并)示例快照302中所示的工作负荷分配。相反,假定如在第二(合并)示例快照302中所示地分配工作负荷,响应于决策框204判定了应用VCPU工作负荷在规定的范围之外,框208发起应用VCPU分散过程,该应用VCPU分散过程导致转变到像第一(分散)示例快照300中所示的工作负荷分配的。将会领会,响应于总体应用VCPU工作负载的动态变化,应用工作负荷分发可在经合并的应用VCPU工作负载和经分散的应用VCPU工作负荷之间来回动态地转换。
为了判定应用VCPU是否能够被合并,应用VCPU工作负荷被动态地跟踪。监视应用VCPU活动以确定PCPU何时正在活跃地运行应用VCPU工作负荷。图4是表示根据一些实施例的应用的状态转变的说明性状态转变图。在操作期间,在PCPU上运行VCPU工作负荷的VMM在VM退出点和进入点处转变VCPU状态。VCPU可如图所示地通过多个状态来转变。这些状态落入两个总体类别内:活动的(活动)和不活动的(空闲、唤醒、关闭和停止)。
图5是根据一些实施例的说明性示例VCPU工作负荷图,该说明性示例VCPU工作负荷图指示多个应用VCPU在时间间隔上在活动和不活动状态之间的转变。随着时间消逝,n个VCPU中的每一个沿一系列活动的和不活动的状态转变。在任何给定时刻同时活动的应用VCPU的数量越大,在该时刻的应用VCPU工作负荷就越重。
再次参考图2,框202将VMM配置成用于基于当前处于活动状态的应用VCPU的数量来连续地确定应用VCPU工作负荷的当前度量。VMM被配置成用于对活动的应用VCPU(能立即运行的应用VCPU)的数量进行实时计数(使它为VCPUS)。VMM被配置为计算时间段Tp期间的平均活动的VCPU的数量:
其中
VMM被配置为用于以时间间隔ti周期性地计算ave(平均值),并用于收集表示在一系列过去的时间段中的活动的VCPU的平均数量的无限系列的值,以获得时间顺序的系列值:
ave1,ave2,ave3,…aven-1,aven
在每个时间段后(使用衰减因子,参见下文)确定平均值的指数衰减,使得时间段越早,该时间段对最终结果的影响就越小,并且基于所有过去的经衰减的平均值来确定总和,以根据应用VM的整个历史记录确定针对每个应用VM的活动应用VCPU的平均数量:
其中项AVE是应用VM的活动的应用VCPU的平均数量,项avej是第j个时间段中的活动VCPU的平均数量,并且f是衰减因子,它允许在h个时间段后将时间段的权重减半,即,参数h允许我们控制衰减速度。并且C是用于将AVE缩放至与活动的VCPU数量相同的范围中的常数(即)。值AVE充当用作对当前需要多少应用VCPU在应用VM中运行工作负载的预测的应用VCPU工作负荷度量。
仍然参考图2,决策框204将VMM配置成用于使用应用VCPU工作负荷度量AVE来以判定被指定用于运行应用VCPU的PCPU的第一子集是否具有用于处置完全的VCPU工作负荷的计算容量。根据一些实施例,判定PCPU的第一子集是否具有用于处置VCPU工作负荷的计算容量涉及判定该VCPU工作负荷是否在规定的工作负荷范围内。更具体地,基于所确定的当前应用VCPU工作负荷AVE,决策框204作出关于对于(m>n)的情况m个应用VCPU是否能够被合并到n个专用PCPU的判定。根据一些实施例,评估下面的表达式以判定将合并还是分散应用VCPU:
AVE≤n*合并_系数
其中,项合并_系数是可选择的阈值,该可选择的阈值可以被进一步调整为更激进的或更不激进的。
响应于以上表达式被评估为真,框206发起合并过程来将m个应用VCPU合并为在n个专用PCPU上运行。响应于上述表达式被评估为非真,框208发起分散过程,以将该m个应用VCPU分散为在延伸超出该n个专用PCPU的更大数量的PCPU上运行。
图6是表示根据一些实施例的在合并过程期间(指向左侧的箭头)和分散过程期间(指向右侧的箭头)在多个应用VCPU与多个PCPU之间的关联的改变说明性图。PCPU的总数量为m。专用于运行应用VCPU工作负荷的PCPU的第一子集中的PCPU的数量为n。在合并期间,应用VCPU工作负荷从在(m-n)个非专用PCPU的集合之间被分发转变到被合并以在n个专用PCPU上运行。换言之,当n个PCPU被判定为能够运行该应用VCPU工作负荷时,与调制解调器或安全VCPU共享PCPU的(m-n)个应用VCPU将被逐渐重新映射到专用的n个PCPU。在分散期间,应用VCPU工作负荷被转变为被分散在m个PCPU之间。作为分散的结果,应用VCPU工作负荷将逐渐地跨所有m个PCPU被更平均地分散,但是根据一些实施例,VMM被配置成用于试图在n个专用PCPU上具有比在其他(m-n)个共享PCPU上更重的负荷。
再次参考图3,将会领会,在合并期间,VMM 124将应用VCPU(VCPU11-VCPU15)映射到PCPU的第一子集PCPU1-PCPU2,并且在分散期间,VMM 124可以将应用VCPU(VCPU11-VCPU15)映射到四个PCPU PCPU1-PCPU4中的任何一个或多个。VMM 124总是将调制解调器VCPU(VCPU21-VCPU25)映射到PCPU的第二子集PCPU3。VMM 124总是将安全VCPU(VCPU31-VCPU35)映射到PCPU的第三子集PCPU4。第一、第二和第三子集不重叠。
图7是表示根据一些实施例的用于调度VM活动的VMM配置的说明性流程图700。该流程图的右侧表示虚拟机控制循环。VMM从正在运行一个或多个VCPU工作负荷的PCPU接收中断701。响应于该中断的接收,决策框702判定该中断是否在VMM内。如果该中断不在VMM内,则VM退出框704向VM退出处置程序框706发送该中断,该VM退出处置程序框706将该中断发送到决策框708,该决策框708判定是否存在VM的中断。如果存在VM的中断,则框710将该中断递送至在虚拟机中运行的宾客机操作系统,并且控制接下来流向VMM调度器框712。如果不存在VM的中断,则决策框714判定运行VCPU的PCPU当前是否空闲。如果运行VCPU的PCPU当前空闲,则控流向VMM调度器框712。如果运行VCPU的PCPU当前不空闲,则决策框716判定虚拟机是否正在作出对PCPU硬件的调用。如果虚拟机正在作出对PCPU硬件的调用,则框718执行,并且控制流向VMM调度器框710。如果虚拟机不是正在作出对PCPU硬件的调用,则控制流向VM退出框720。VMM调度器框判定是否重新调度VM的一个或多个VCPU以在不同的PCPU上运行。
在VMM调度器框的操作之后,控制流向VM进入框721,以通过将控制给予宾客机OS来重新开始控制循环。将会领会,VMM调度器可将VM的VCPU重新映射为在不同的PCPU上运行。决策框722判定是否存在待定中断。如果存在待定中断,则宾客机OS框724使用宾客机中断处置程序来处置该中断。如果不存在待定中断或在处置了该中断之后,则宾客机框继续执行下一指令。接下来,取决于所执行的宾客机指令,控制流向VM调用框728或到宾客机空闲框730。在那些框之后,控制分别返回到VM退出框720或返回到VM退出框732。
响应于决策框702判定了所接收的中断在VMM内,中断处置程序框734将该中断引导至决策框736,该决策框736判定该中断是否被引导至VMM。如果该中断不被引导至VMM,则该中断被递送至框710。如果该中断被引导至VMM,则决策框738判定重新映射定时器是否指示是时候由VMM来评估VM映射。如果重新映射定时器指示是时候由VMM来评估VM映射,则控制流向VMM调度器框712。如果重新映射定时器不指示是时候由VMM来评估VM映射,则控制流向IRQ返回框740。
VMM调度器框712判定是否将在PCPU上运行的VCPU重新映射为转而在不同的PCPU上运行。一般而言,例如,重新映射发生以实现负载平衡。然而,根据一些实施例,使用VMM调度器框712来实现合并和分散过程。VMM调度框712被配置成用于重新映射应用VCPU,以便:响应于决策框204判定了应用VCPU工作负荷在规定的范围之内,将VCPU合并到专用PCPU;以及响应于应用VCPU工作负荷在规定的范围之外的判定,不寻求合并而转而允许将应用VCPU分散到除专用PCPU以外的PCPU。
在合并期间,与VMM调度器框712相关联的重新映射定时器周期性地抢占一个或多个应用VCPU在宾客机VM中的当前的执行,以便在所抢占的PCPU不是专用PCPU中的一个时,将一个或多个应用VCPU重新映射为在一个或多个专用PCPU上运行,该合并一般在较轻的应用VCPU工作负荷期间发生。同样在合并期间,VMM调度器框712被配置成用于判定空闲的PCPU是否专用PCPU中的一个,并且如果空闲的PCPU是专用PCPU中的一个,则优先考虑将应用VCPU从非专用PCPU中的一个重新映射到该空闲的PCPU。另一方面,如果该空闲PCPU是非专用PCPU中的一个,则没有应用VCPU被转移到它。另外,在合并期间,框718可被配置使得对宾客机OS的调用导致该宾客机协作地允许宾客机OS指示是否存在合并应用VCPU的需要。
在分散期间,与VMM调度器框712相关联的重新映射定时器周期性地抢占一个或多个应用VCPU在宾客机VM中的当前的执行,以便在所抢占的PCPU是专用PCPU时将一个或多个应用VCPU重新映射为在一个或多个非专用PCPU上运行,该分散一般在较重的应用VCPU工作负荷期间发生。同样在分散期间,VMM调度器框712被配置成用于判定空闲的PCPU是否是非专用PCPU中的一个,并且如果空闲的PCPU是非专用PCPU中的一个,则优先考虑将应用VCPU从专用PCPU中的一个重新映射到该空闲的PCPU。另一方面,如果该空闲PCPU是专用PCPU中的一个,则没有应用VCPU被转移到它。另外,在分散期间,框718可被配置使得对宾客机OS的调用导致该宾客机协作地允许宾客机OS指示是否存在合并应用VCPU的需要。
实施例可在硬件、固件和软件中的一者或其组合中实现。实施例也可实现为存储于机器可读存储设备上的指令,该指令可由至少一个处理器读取并执行,以执行本文中所描述的操作。机器可读存储设备可包括用于以机器(如,计算机)可读形式存储信息的任何非瞬态机构。例如,机器可读存储设备可包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备、以及其他存储设备和介质。
处理器子系统可被用于执行机器可读介质上的指令。处理器子系统可包括一个或多个处理器,每个处理器都具有一个或多个核。另外,处理器子系统可被设置在一个或多个物理设备上。处理器子系统可包括一个或多个专用处理器,诸如图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、或固定功能处理器。
如本文中所描述的示例可包括逻辑或多个组件、模块或机制,或可在逻辑或多个组件、模块或机制上操作。模块可以是通信地耦合至一个或多个处理器以执行本文中所描述的操作的硬件、软件或固件。模块可以是硬件模块,因此,模块可被认为是能够执行指定操作的有形实体,并且可按特定方式来配置或布置。在示例中,能以指定方式(例如,内部地或者相对于诸如其他电路之类的外部实体)将电路布置为模块。在示例中,一个或多个计算机系统(例如,独立式客户机或服务器计算机系统)或一个或多个硬件处理器的全部或部分可由固件或软件(例如,指令、应用部分、或者应用)配置为模块,该模块操作以执行指定的操作。在示例中,软件可以驻留在机器可读介质上。在示例中,软件在由模块的底层硬件执行时,使此硬件执行指定的操作。因此,术语硬件模块被理解为涵盖有形实体,该有形实体是经物理地构建的、专门配置(例如,硬连线的)或者临时地(例如,瞬态地)配置(例如,经编程的)以便以所指定的方式操作或者执行本文中所描述的任何操作的部分或全部的实体。考虑其中模块被临时地配置的示例,这些模块中的每一个不需要在任何时刻被实例化。例如,在模块包括使用软件来配置的通用硬件处理器的情况下,通用硬件处理器可以在不同时间被配置为相应的不同模块。软件可相应地配置硬件处理器,例如以便在一个时间实例处构成特定的模块,并且在不同的时间实例处构成不同的模块。各模块也可以是操作以执行本文中所描述的方法的软件或固件模块。
图8是图示根据示例实施例的计算机系统800的示例形式的机器的框图,在该机器中可执行指令的集合或序列以使该机器执行本文中所讨论的方法中的任何一种方法。在替代实施例中,该机器操作为独立式设备或可被连接(如,联网)到其他机器。在联网的部署中,该机器可在服务器-客户机网络环境中作为服务器或客户机来进行操作,或者可在对等(或分布式)网络环境中担当对等机。该机器可以是车载系统、可穿戴设备、个人计算机(PC)、平板PC、平板手机、混合式平板、个人数字助理(PDA)、移动电话、或能够执行指定要由该机器采取的动作的(顺序的或以其他方式的)指令的任何机器。此外,虽然仅图示出单个机器,但是,术语“机器”也应当包括单独地或联合地执行一组(或多组)指令以执行本文中所讨论的方法中的任何一种或多种方法的机器的任何集合。类似地,术语“基于处理器的系统”应当被认为包括由处理器(例如,计算机)控制或操作以单独地或联合地执行指令来执行本文中所讨论的方法中的任何一种或多种方法的一个或多个机器的任何组合。
示例计算机系统800包括经由链路808(例如,总线)彼此通信的至少一个处理器802(例如,中央处理单元(CPU)、图形处理单元(GPU)或这两者、处理器核、计算节点等)、主存储器804和静态存储器806。计算机系统800可进一步包括视频显示单元810、字母数字输入设备812(例如,键盘)、以及用户界面(UI)导航设备814(例如,鼠标)。在一个实施例中,该视频显示单元810、输入设备812和UI导航设备814被结合到触屏显示器中。计算机系统800可以附加地包括存储设备816(例如,驱动单元)、信号生成设备818(例如,扬声器)、网络接口设备820以及一个或多个传感器(未示出),该传感器诸如全球定位系统(GPS)传感器、罗盘、加速度计、陀螺仪、磁力计、或其他传感器。
存储设备816包括机器可读介质822,在该机器可读介质822上储存一组或多组数据结构和指令824(例如,软件),该一组或多组数据结构和指令824具体化本文中所描述的方法或功能中的任何一者或多者,或由本文中所描述的方法或功能中的任何一者或多者利用。在由计算机系统800执行指令824期间,该指令824也可完全地或至少部分地驻留在主存储器804、静态存储器806之内和/或计算机系统800内,并且主存储器804、静态存储器806和处理器802也构成机器可读介质。
虽然机器可读介质822在示例实施例中图示为单个介质,但术语“机器可读介质”可包括存储一条或多条指令824的单个介质或多个介质(如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“机器可读介质”也应当被认为包括能够存储、编码或携带指令或能够存储、编码或携带由此类指令利用或与此类指令相关联的的任何有形介质,上述指令能够使机器执行本公开的方法中的任何一种或多种方法。术语“机器可读介质”应当相应地被认为包括但不限于:固态存储器、以及光和磁介质。机器可读介质的具体示例包括非易失性存储器,作为示例,包括但不限于半导体存储器设备(例如,电可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM))和闪存设备;诸如内部硬盘及可移动盘之类的磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。
使用传输介质,经由网络接口设备820,利用多个公知的传输协议(例如,HTTP)中的任何一种,可进一步在通信网络826上传输或接收指令824。通信网络的示例包括:局域网(LAN)、广域网(WAN)、因特网、移动电话网络、普通老式电话(POTS)网络、以及无线数据网络(例如,蓝牙、Wi-Fi、3G、以及4G LTE/LTE-A或WiMAX网络)。术语“传输介质”应当被认为包括能够存储、编码或携带用于由机器执行的指令的任何无形的介质,并且包括数字或模拟通信信号或者用于促进此类软件的通信的其他无形的介质。
附加注释和示例:
示例1是一种处理器系统,包括多个物理处理器(PCPU),该处理器系统包括:第一虚拟机(VM),该第一VM包括多个第一虚拟处理器(VCPU);第二VM,该第二VM包括多个第二VCPU;以及虚拟机监视器(VMM),用于至少部分地基于用于运行第一VCPU的PCPU的第一子集的计算容量来将第一VCPU中的多个单独的VCPU映射为在以下至少一个者运行:PCPU的第一子集中的多个单独的PCPU、以及包括PCPU的第一子集和PCPU的第二子集的PCPU的集合中的多个单独的PCPU;以及用于将第二VCPU中的多个单独的VCPU映射为在PCPU的第二子集中的多个单独的PCPU上运行。
在示例2中,示例1的主题可选地包括:其中,VMM至少部分地基于第一VCPU的工作负荷来确定用于运行第一VCPU的PCPU的第一子集的计算容量。
在示例3中,示例1-2中的任何一项或多项的主题可选地包括:其中,VMM确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的PCPU的第一子集的计算容量。
在示例4中,示例1-3中的任何一项或多项的主题可选地包括:其中,VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的PCPU的第一子集的计算容量。
在示例5中,示例1-4中的任何一项或多项的主题可选地包括:其中,VMM响应于在规定的范围之内的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到PCPU的第一子集中的多个单独的PCPU;并且其中,VMM响应于在规定的范围之外的第一VCPU工作负荷,将多个单独的第一VCPU重新映射到包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU。
在示例6中,示例1-5中的任何一项或多项的主题可选地包括:其中,VMM响应于在规定的范围之内的第一VCPU的工作负荷,将当前正在包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到PCPU的第一子集中的多个单独的PCPU,以将当前正在包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到PCPU的第一子集。
在示例7中,示例1-6中的任何一项或多项的主题可选地包括:其中,VMM响应于在规定的范围之外的第一VCPU的工作负荷,将当前正在PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU,以将当前正在PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU的映射分散在包括PCPU的第一子集和PCUP的第二子集的集合之间。
在示例8中,示例1-7中的任何一项或多项的主题可选地包括:其中,VMM响应于在规定的范围之内的第一VCPU的工作负荷,将当前正在包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到PCPU的第一子集中的多个单独的PCPU,以将当前正在包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到PCPU的第一子集;并且其中,VMM响应于在规定的范围之外的第一VCPU工作负荷,将当前正在PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU,以将当前正在PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU的映射分散在包括PCPU的第一子集和PCPU的第二子集的集合之间。
在示例9中,示例1-8中的任何一项或多项的主题可选地包括:其中,VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷。
在示例10中,示例1-9中的任何一项或多项的主题可选地包括:其中,VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷,并且至少部分地基于PCPU的第一子集中的PCPU的数量来确定阈值。
在示例11中,示例1-10中的任何一项或多项的主题可选地包括:其中,VMM响应于在规定的范围之内的第一VCPU的工作负荷,周期性地中断每个第一VCPU的执行,并且将在来自包括PCPU的第一子集和PCPU的第二子集的集合的PCPU上运行的被周期性地中断的第一VCPU中的一个或多个第一VCPU重新映射到来自PCPU的第一子集的PCPU。
在示例12中,示例1-11中的任何一项或多项的主题可选地包括:其中,VMM响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前在来自包括PCPU的第一子集和PCPU的第二子集的集合的PCPU上运行的第一VCPU重新映射到PCPU的第一子集内的空闲PCPU。
在示例13中,示例1-12中的任何一项或多项的主题可选地包括:其中,VMM周期性地中断每个第一VCPU的执行;其中,VMM响应于在规定的范围之内的第一VCPU的工作负荷,将在来自包括PCPU的第一子集和PCPU的第二子集的集合的PCPU上运行的被周期性地中断的第一VCPU中的一个或多个第一VCPU重新映射到来自PCPU的第一子集的PCPU;并且其中,VMM响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前在来自包括PCPU的第一子集和PCPU的第二子集的集合的PCPU上运行的第一VCPU重新映射到PCPU的第一子集内的空闲PCPU。
在示例14中,示例1-13中的任何一项或多项的主题可选地包括:其中,VMM响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前正在来自包括PCPU的第一子集和PCPU的第二子集的集合的PCPU上运行的第一VCPU重新映射到PCPU的第一子集内的空闲PCPU;并且其中,VMM响应于在规定的范围之外的第一VCPU的工作负荷,优先考虑将当前正在来自PCPU的第一子集的PCPU上运行的第一VCPU重新映射到包括PCPU的第一子集和PCPU的第二子集的集合内的空闲PCPU。
在示例15中,示例1-14中的任何一项或多项的主题可选地包括:其中,第一VM与第一优先级值相关联,并且第二VM与第二优先级值相关联,所述第二优先级值高于所述第一优先级值;其中VMM基于与第一和第二VM相关联的相关联的优先级值,对于对第一VCPU和第二VCPU的运行的调度排定优先级。
示例16是一种主机系统,该主机系统包括:m个物理处理器(PCPU);第一虚拟机(VM),该第一VM包括多个第一虚拟处理器(VCPU),该多个第一VCPU与第一优先级相关联;第二VM,该第二VM包括多个第二VCPU,该多个第二VCPU与第二优先级相关联,该第二优先级高于第一优先级;以及虚拟机监视器(VMM),用于:至少部分基于用于运行第一VCPU的n个PCPU的计算容量,将第一VCPU映射为在包括m个PCPU的PCPU的集合中的PCPU上运行,其中,映射第一VCPU包括以下一者:将第一VCPU的映射合并为在m个PCPU的第一子集中的PCPU上运行,该第一子集包含n个PCPU;以及将第一VCPU的映射分散为在包括m个PCPU的集合中的PCPU上运行;将第二VCPU映射到m个PCPU的第二子集,该第二子集包括被被包括在m个PCPU的第一子集中的(m-n)个PCPU;以及基于第一VCPU和第二VCPU的相关联的优先级,对于对被映射为在共享PCPU上运行的第一VCPU和第二VCPU的运行的调度排定优先级。
在示例17中,示例16的主题可选地包括:其中,VMM响应于在规定的范围之内的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到m个PCPU的第一子集中的多个单独的PCPU;并且其中,VMM响应于在规定的范围之外的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到包括m个PCPU的集合中的多个单独的PCPU。
在示例18中,示例16-17中的任何一项或多项的主题可选地包括:其中,VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷;并且其中,VMM至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
在示例19中,示例16-18中的任何一项或多项的主题可选地包括:其中,VMM至少部分地基于在时间间隔期间处于活动状态的第一VCPU的平均数量的确定来确定第一VCPU的工作负荷;并且其中,VMM至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
在示例20中,示例16-19中的任何一项或多项的主题可选地包括:其中,VMM至少部分地基于在多个时间间隔中的每个时间间隔期间处于活动状态的第一VCPU的平均数量的确定来确定第一VCPU的工作负荷,其中对于较近的时间间隔所确定的平均数量比针对较远的时间间隔的平均数量加权更重;并且其中,VMM至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
在示例21中,示例16-20中的任何一项或多项的主题可选地包括:其中,第一VM包括宾客机软件以实现包括用户界面的应用;并且其中,第二VM包括宾客机软件以实现调制解调器。
在示例22中,示例16-21中的任何一项或多项的主题可选地包括进一步包括:第三虚拟机,该第三虚拟机包括多个第三VCPU,该多个第三VCPU与第三优先级相关联,该第三优先级高于第一优先级;其中VMM用于:将第三VCPU映射到m个PCPU的第三子集,该第三子集包括不被包括在m个PCPU的第一子集中且不被包括在m个PCPU的第二子集中的(m-n)个PCPU;基于第一VCPU和第二VCPU的相关联的优先级,对于对被映射为在共享PCPU上运行的第一VCPU和第二VCPU的运行的调度排定优先级;以及基于第一VCPU和第三VCPU的相关联的优先级,对于对被映射为在共享PCPU上运行的第一VCPU和第三VCPU的运行的调度排定优先级。
示例23是一种主机系统,该主机系统包括:m个物理处理器(PCPU);第一虚拟机(VM),该第一VM包括多个第一虚拟处理器(VCPU),该多个第一虚拟处理器与第一优先级相关联;第二VM,该第二VM包括多个第二VCPU,该多个第二VCPU与第二优先级相关联,该第二优先级高于第一优先级;第三虚拟机,该第三虚拟机包括多个第三VCPU,该多个第三VCPU与第三优先级相关联,该第三优先级高于第一优先级;以及虚拟机监视器(VMM),用于:至少部分地基于用于运行第一VCPU的n个PCPU的计算容量,将第一VCPU映射为在包括m个PCPU的PCPU的集合中的PCPU上运行,其中,映射第一VCPU包括以下一者:将第一VCPU的映射合并为在m个PCPU的第一子集的PCPU上运行,该第一子集包含n个PCPU;以及将第一VCPU的映射分散为在包括m个PCPU的集合中的PCPU上运行;将第二VCPU映射到m个PCPU的第二子集,该第二子集包括不被包括在m个PCPU的第一子集中的(m-n)个PCPU;将第三VCPU映射到m个PCPU的第三子集,该第三子集包括不被包括在m个PCPU的第一子集中且不被包括在m个PCPU的第二子集中的(m-n)个PCPU;确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的n个PCPU的计算容量;基于第一VCPU和第二VCPU的相关联的优先级,对于对被映射为在共享PCPU上运行的第一VCPU和第二VCPU的运行的调度排定优先级;以及基于第一VCPU和第三VCPU的相关联的优先级,对于对被映射为在共享PCPU上运行的第一VCPU和第三VCPU的运行的调度排定优先级。
在示例24中,示例23的主题可选地包括:其中,VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷;并且其中,VMM至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
示例25是一种用于在主机系统中使用以将虚拟处理器(VCPU)映射到物理处理器(PCPU)的方法,该方法包括:提供第一虚拟机(VM),该第一VM包括多个第一VCPU;提供第二VM,该第二VM包括多个第二VCPU;以及至少部分地基于包括用于运行第一VCPU的一个或多个第一物理处理器(PCPU)的集合的计算容量,单独地将第一VCPU中的多个单独的VCPU映射为在以下至少一者上运行:包括一个或多个第一PCPU的集合中的多个单独的PCPU;以及包括一个或多个第一PCPU和一个或多个第二PCPU的集合中的多个单独的PCPU;以及将第二VCPU中的多个单独的VCPU映射为在一个或多个第二PCPU的集合中的多个单独的PCPU上运行。
在示例26中,示例25的主题可选择包括:其中,VMM至少部分基于第一VCPU的工作负荷来确定用于运行第一VCPU的PCPU的计算容量。
在示例27中,示例25-26中的任何一项或多项的主题可选地包括:其中,VMM确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的PCPU的计算容量。
在示例28中,示例25-27中的任何一项或多项的主题可选地包括:其中,VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的PCPU的计算容量。
在示例29中,示例25-28中的任何一项或多项的主题可选地包括,进一步包括:响应于在规定的范围之内的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到一个或多个第一PCPU的集合中的多个单独的PCPU;以及响应于在规定的范围之外的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到一个或多个第二PCPU的集合中的多个单独的PCPU。
在示例30中,示例25-29中的任何一项或多项的主题可选地包括,进一步包括:响应于在规定的范围之内的第一VCPU的工作负荷,将当前正在一个或多个第二PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到第一PCPU的集合中的多个单独的PCPU,以将当前正在一个或多个第二PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到一个或多个第一PCPU的集合。
在示例31中,示例25-30中的任何一项或多项的主题可选地包括,进一步包括:响应于在规定的范围之外的第一VCPU的工作负荷,将当前正在一个或多个第一PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到第二PCPU的集合中的多个单独的PCPU,以将当前正在一个或多个第一PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU均匀地分散在一个或多个第一PCPU的集合与一个或多个第二PCPU的集合之间。
在示例32中,示例25-31中的任何一项或多项的主题可选地包括,进一步包括:响应于在规定的范围之内的第一VCPU的工作负荷,将当前正在一个或多个第二PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到第一PCPU的集合中的多个单独的PCPU,以将当前正在一个或多个第二PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到一个或多个第一PCPU的集合;以及响应于在规定的范围之外的第一VCPU的工作负荷,将当前正在一个或多个第一PCPU的集合中的多个单独的那些PCPU上运行的一个或多个第一VCPU重新映射到第二PCPU的集合中的多个单独的PCPU,以将当前正在一个或多个第一PCPU的集合中的多个单独的那些PCPU上运行的一个或多个第一VCPU的映射均匀地分散在一个或多个第一PCPU的集合与一个或多个第二PCPU的集合之间。
在示例33中,示例25-32中的任何一项或多项的主题可选地包括,进一步包括:至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷。
在示例34中,示例25-33中的任何一项或多项的主题可选地包括,进一步包括:至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷,并且至少部分地基于一个或多个第一PCPU的集合中的PCPU的数量来确定阈值。
在示例35中,示例25-34中的任何一项或多项的主题可选地包括,进一步包括:响应于在规定的范围之内的第一VCPU的工作负荷,周期性地中断每个第一VCPU的执行,并且将在来自一个或多个第二PCPU的集合的PCPU上运行的被周期性地中断的第一VCPU中的一个或多个第一VCPU重新映射到来自PCPU的第一集合的PCPU。
在示例36中,示例25-35中的任何一项或多项的主题可选地包括,进一步包括:响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将来自一个或多个第二PCPU的集合的第一VCPU重新映射到一个或多个第一PCPU的集合内的空闲PCPU。
在示例37中,示例25-36中的任何一项或多项的主题可选地包括,进一步包括:周期性地中断每个第一VCPU的执行;响应于在规定的范围之内的第一VCPU的工作负荷,将在来自一个或多个第二PCPU的集合的PCPU上运行的被周期性地中断的第一VCPU中的一个或多个第一VCPU重新映射到来自PCPU的第一集合的PCPU;以及响应于在规定的范围之外的第一VCPU的工作负荷,将在来自一个或多个第一PCPU的集合的PCPU上运行的被周期性地中断的第一VCPU中的一个或多个第一VCPU重新映射到来自PCPU的第二集合的PCPU。
在示例38中,示例25-37中的任何一项或多项的主题可选地包括,进一步包括:响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前正在来自一个或多个第二PCPU的集合的PCPU上运行的第一VCPU重新映射到一个或多个第一PCPU的集合内的空闲PCPU;以及响应于在规定的范围之外的第一VCPU的工作负荷,优先考虑将当前正在来自一个或多个第一PCPU的集合的PCPU上运行的第一VCPU重新映射到一个或多个第二PCPU的集合内的空闲PCPU。
示例39是一种机器可读介质,包括指令,该指令在由计算系统执行时使计算系统执行示例25至38的方法中的任何一项。
示例40是一种设备,该设备包括用于执行示例25至38的方法中的任何一项的装置。
示例41是一种用于在包括m个物理处理器(PCPU)的主机系统中将虚拟处理器(VCPU)映射到PCPU的方法,该方法包括:提供第一虚拟机(VM),该第一VM包括多个第一虚拟处理器(VCPU),该多个第一VCPU与第一优先级相关联;提供第二VM,该第二VM包括多个第二VCPU,该多个第二VCPU与第二优先级相关联,该第二优先级高于第一优先级;以及至少部分地基于用于运行第一VCPU的n个PCPU的计算容量,将第一VCPU映射为在包括m个PCPU的PCPU集合中的PCPU上运行,其中,映射第一VCPU包括以下一者:将第一VCPU的映射合并为在m个PCPU的第一子集中的PCPU上运行,该第一子集包含n个PCPU;以及将第一VCPU的映射分散为在包括m个PCPU的集合中的PCPU上运行;将第二VCPU映射到m个PCPU的第二子集,该第二子集包括不被包括在m个PCPU的第一子集中的(m-n)个PCPU;以及基于第一VCPU和第二VCPU的相关联优先级,对于对被映射以在共享PCPU上运行的第一VCPU和第二VCPU的运行排定优先级。
在示例42中,示例41的主题可选地包括,进一步包括:响应于在规定的范围之内的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到m个PCPU的第一子集中的多个单独的PCPU;以及响应于在规定的范围之外的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到包括m个PCPU的集合中的多个单独的PCPU。
在示例43中,示例41-42中的任何一项或多项的主题可选地包括,进一步包括:至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷;并且至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
在示例44中,示例41-43中的任何一项或多项的主题可选地包括,进一步包括:至少部分基于在时间间隔期间处于活动状态的第一VCPU的平均数量的确定来确定第一VCPU的工作负荷;并且至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
在示例45中,示例41-44中的任何一项或多项的主题可选地包括,进一步包括:至少部分地基于在多个时间间隔中的每个时间间隔期间处于活动状态的第一VCPU的平均数量的确定来确定第一VCPU的工作负荷,其中,对于较近的时间间隔确定的平均数量比针对较远的时间间隔的平均数量加权更重;以及至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
示例46是一种机器可读介质,包括指令,该指令在由计算系统执行时使计算系统执行示例41至45的方法中的任何一项。
示例47是一种设备,该设备包括用于执行示例41至45的方法中的任何一项的装置。
示例48是一种处理器系统,包括多个物理处理器(PCPU),该处理器系统包括:第一虚拟机(VM),该第一VM包括多个第一虚拟处理器(VCPU);第二VM,该第二VM包括多个第二VCPU;以及虚拟机监视器(VMM)装置,用于至少部分基于用于运行第一VCPU的PCPU的第一子集的计算容量,将第一VCPU中的多个单独的VCPU映射为在以下至少一项上运行:PCPU的第一子集中的多个单独的PCPU;以及包括PCPU的第一子集和PCPU的第二子集的PCPU集合中的多个单独的PCPU;以及将第二VCPU中的多个单独的VCPU映射为在PCPU的第二子集中的多个单独的PCPU上运行。
在示例49中,示例48的主题可选择包括:其中,VMM装置至少部分地基于第一VCPU的工作负荷来确定用于运行第一VCPU的PCPU的第一子集的计算容量。
在示例50中,示例48-49中的任何一项或多项的主题可选地包括:其中,VMM装置确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的PCPU的第一子集的计算容量。
在示例51中,示例48-50中的任何一项或多项的主题可选地包括:其中,VMM装置至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的PCPU的第一子集的计算容量。
在示例52中,示例48-51中的任何一项或多项的主题可选地包括:其中,VMM装置响应于在规定的范围之内的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到PCPU的第一子集中的多个单独的PCPU;并且其中,VMM装置响应于在规定的范围之外的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU。
在示例53中,示例48-52中的任何一项或多项的主题可选地包括:其中VMM装置响应于在规定的范围之内第一VCPU的工作负荷,将当前正在包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到PCPU的第一子集中的多个单独的PCPU,以将当前正在包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到PCPU的第一子集。
在示例54中,示例48-53中的任何一项或多项的主题可选地包括:其中,VMM装置响应于在规定的范围之外的所述第一VCPU的工作负荷,将当前正在PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU,以将当前正在PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU的映射分散在包括PCPU的第一子集和PCPU的第二子集的集合之间。
在示例55中,示例48-54中的任何一项或多项的主题可选地包括:其中VMM装置响应于在规定的范围之内的第一VCPU的工作负荷,将当前正在包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到PCPU的第一子集中的多个单独的PCPU,以将当前正在包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到PCPU的第一子集;并且其中,VMM装置响应于在规定的范围之外的第一VCPU的工作负荷,将当前正在PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到包括PCPU的第一子集和PCPU的第二子集的集合中的多个单独的PCPU,以将当前正在PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU的映射分散在包括PCPU的第一子集和PCPU的第二子集的集合之间。
在示例56中,示例48-55中的任何一项或多项的主题可选地包括:其中,VMM装置至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷。
在示例57中,示例48-56中的任何一项或多项的主题可选地包括:其中,VMM装置至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷,并且至少部分地基于PCPU的第一子集中的PCPU的数量来确定阈值。
在示例58中,示例48-57中的任何一项或多项的主题可选地包括:其中,VMM装置响应于在规定的范围之内的第一VCPU的工作负荷,周期性地中断每个第一VCPU的执行,并且将在来自包括PCPU的第一子集和PCPU的第二子集的集合的PCPU上运行的被周期性地中断的第一VCPU中的一个或多个第一VCPU重新映射到来自PCPU的第一子集的PCPU。
在示例59中,示例48-58中的任何一项或多项的主题可选地包括:其中,VMM装置响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前在来自包括PCPU的第一子集和PCPU的第二子集的集合的PCPU上运行的第一VCPU重新映射到PCPU的第一子集内的空闲PCPU。
在示例60中,示例48-59中的任何一项或多项的主题可选地包括:其中,VMM装置周期性地中断每个第一VCPU的执行;其中,VMM装置响应于在规定的范围之内的第一VCPU的工作负荷,将在来自包括PCPU的第一子集和PCPU的第二子集的集合的PCPU上运行的被周期性地中断的第一VCPU中的一个或多个第一VCPU重新映射到来自PCPU的第一子集的PCPU;并且其中,VMM装置响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前在来自包括PCPU的第一子集和PCUP的第二子集的集合的PCPU上运行的第一VCPU重新映射到PCPU的第一子集内的空闲PCPU。
在示例61中,示例48-60中的任何一项或多项的主题可选地包括:其中,VMM装置响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前正在来自包括PCPU的第一子集和PCPU的第二子集的集合的PCPU上运行的第一VCPU重新映射到PCPU的第一子集内的空闲PCPU;并且其中,VMM装置响应于在规定的范围之外的第一VCPU的工作负荷,优先考虑将当前正在来自PCPU的第一子集的PCPU上运行的第一VCPU重新映射到包括PCPU的第一子集和PCPU的第二子集的集合内的空闲PCPU。
在示例62中,示例48-13中的任何一项或多项的主题可选地包括:其中,第一VM与第一优先级值相关联,并且第二VM与第二优先级值相关联,该第二优先级值高于第一优先级值;其中VMM装置基于与第一VM和第二VM相关联的相关联的优先级值,对于对第一VCPU和第二VCPU的运行的调度排定优先级。
示例63是一种主机系统,该主机系统包括:m个物理处理器(PCPU);第一虚拟机(VM),该第一虚拟机包括多个第一虚拟处理器(VCPU),该多个第一VCPU与第一优先级相关联;第二VM,该第二VM包括多个第二VCPU,该多个第二VCPU与第二优先级相关联,该第二优先级高于第一优先级;以及虚拟机监视器(VMM)装置,用于:至少部分地基于用于运行第一VCPU的n个PCPU的计算容量,将第一VCPU映射为在包括m个PCPU的PCPU集合中的PCPU上运行,其中,映射第一VCPU包括以下一者:将第一VCPU的映射合并为在m个PCPU的第一子集中的PCPU上运行,该第一子集包含n个PCPU;将第一VCPU的映射分散为在包括m个PCPU的集合中的PCPU上运行;将第二VCPU映射到m个PCPU的第二子集,该第二子集包括不被包括在m个PCPU的第一子集中的(m-n)个PCPU;以及基于第一VCPU和第二VCPU的相关联的优先级,对于对被映射以在共享PCPU上运行的第一VCPU和第二VCPU的运行的调度排定优先级。
在示例64中,示例63的主题可选地包括:其中,VMM装置响应于在规定的范围之内的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到m个PCPU的第一子集中的多个单独的PCPU;并且其中,VMM装置响应于在规定的范围之外的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到包括m个PCPU的集合中的多个单独的PCPU。
在示例65中,示例63-64中的任何一项或多项的主题可选地包括:其中,VMM装置至少部分基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷;并且其中,VMM装置至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
在示例66中,示例63-65中的任何一项或多项的主题可选地包括:其中,VMM装置至少部分基于在时间间隔期间处于活动状态的第一VCPU的平均数量的确定来确定第一VCPU的工作负荷;并且其中,VMM装置至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
在示例67中,示例63-66中的任何一项或多项的主题可选地包括:其中,VMM装置至少部分地基于在多个时间间隔中的每个时间间隔期间处于活动状态的第一VCPU的平均数量的确定来确定第一VCPU的工作负荷,其中,对于较近的时间间隔确定的平均数量比针对较远的时间间隔的平均数量加权更重;并且其中,VMM装置至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
在示例68中,示例63-67中的任何一项或多项的主题可选地包括:其中,第一VM包括宾客机软件以实现包括用户界面的应用;并且其中,第二VM包括宾客机软件以实现调制解调器。
在示例69中,示例63-68中的任何一项或多项的主题可选地包括,进一步包括:第三虚拟机,该第三虚拟机包括多个第三VCPU,该多个第三VCPU与第三优先级相关联,该第三优先级高于第一优先级;其中,VMM装置用于:将第三VCPU映射到m个PCPU的第三子集,该第三子集包括不被包括在m个PCPU的第一子集中且不被包括在m个PCPU的第二子集中的(m-n)个PCPU;基于第一VCPU和第二VCPU的相关联的优先级,对于对被映射以在共享PCPU上运行的第一VCPU和第二VCPU的运行的调度排定优先级;以及基于第一VCPU和第三VCPU的相关联的优先级,对于对被映射以在共享PCPU上运行的第一VCPU和第三VCPU的运行的调度排定优先级,该第一VCPU和第三VCPU。
示例70是一种主机系统,该主机系统包括:m个物理处理器(PCPU);第一虚拟机(VM),该第一虚拟机包括多个第一虚拟处理器(VCPU),该多个第一VCPU与第一优先级相关联;第二VM,该第二VM包括多个第二VCPU,该多个第二VCPU与第二优先级相关联,该第二优先级高于第一优先级;第三虚拟机,该第三虚拟机包括多个第三VCPU,该多个第三VCPU与第三优先级相关联,该第三优先级高于第一优先级;虚拟机监视器(VMM)装置,用于:至少部分地基于用于运行第一VCPU的n个PCPU的计算容量,将第一VCPU映射为在包括m个PCPU的PCPU的集合中的PCPU上运行,其中,映射第一VCPU包括以下一者:将第一VCPU的映射合并为在m个PCPU的第一子集中的PCPU上运行,该第一子集包含n个PCPU,;以及将第一VCPU的映射分散为在包括m个PCPU的集合中的PCPU上运行;将第二VCPU映射到m个PCPU的第二子集,该第二子集包括不被包括在m个PCPU的第一子集中的(m-n)个PCPU;将第三VCPU映射到m个PCPU的第三子集,该第三子集包括不被包括在m个PCPU的第一子集中且不被包括在m个PCPU的第二子集中的(m-n)个PCPU;确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行VCPU的n个PCPU的计算容量;基于第一VCPU和第二VCPU的相关联的优先级,对于对被映射以在共享PCPU上运行的第一VCPU和第二VCPU的运行的调度排定优先级;以及基于第一VCPU和第三VCPU的相关联的优先级,对于对被映射以在共享PCPU上运行的第一VCPU和第三VCPU的运行的调度排定优先级。
在示例71中,示例70的主题可选地包括:其中VMM装置至少部分地基于在至少一个时间间隔期间处于活动状态中的第一VCPU的数量的确定来确定第一VCPU的工作负荷;并且其中,VMM装置至少部分地基于所确定的工作负荷和m个PCPU的第一子集中的PCPU的数量n来确定用于运行第一VCPU的n个PCPU的计算容量。
以上具体实施方式包括对附图的引用,附图形成具体实施方式的部分。附图通过图示来示出可实践的特定实施例。这些实施例在本文中也被称为“示例”。此类示例可包括除所示出或所描述的那些元件以外的元件。然而,还构想了包括所示出或所描述的元件的示例。此外,还构想了使用所示出或所描述的那些元件的任何组合或排列的示例,或参照本文中所示出或所描述的特定示例(或其一个或多个方面),或参照本文中所示出或所描述的其他示例(或其一个或多个方面)。
在此文档中,如在专利文档中常见的那样,使用术语“一”(“a”或“an”)以包括一个或多于一个,这独立于“至少一个”或“一个或多个”的任何其他实例或用法。在此文档中,使用术语“或”来指非排他性的“或”,使得除非另外指示,否则“A或B”包括“A但非B”、“B但非A”、以及“A和B”。在所附权利要求书中,术语“包括”(including)和“其中”(in which)被用作相应的术语“包含”(comprising)和“在其中”(wherein)的普通英语等价词。此外,在所附权利要求书中,术语“包括”和“包含”是开放式的,也就是说,包括在权利要求中除此类术语之后列举的那些要素之外的要素的系统、设备、制品或过程仍被视为落在那项权利要求的范围内。此外,在所附权利要求书中,术语“第一”、“第二”和“第三”等仅被用作标记,并且不旨在表明对它们的对象的数字顺序。以上描述旨在是说明性的,而非限制性的。例如,可结合其他实施例来使用以上所描述的示例(或者其一个或多个方面)。诸如,本领域普通技术人员中的一个可通过回顾以上描述来使用其他实施例。摘要允许读者快速地确定本技术公开的性质。提交该摘要应当理解,该摘要将不用于限制或解释权利要求的范围或含义。此外,在以上具体实施方式中,各种特征可共同成组以使本公开流畅。然而,权利要求可以不陈述本文中所公开的每一特征,因为实施例可以表征所述特征的子集。此外,实施例可以包括比特定示例中所公开的特征更少的特征。因此,所附权利要求书由此被结合到具体实施方式中,一项权利要求作为单独的实施例而独立存在。本文中公开的实施例的范围应当参照所附权利要求书以及此类权利要求所赋予权利的等价方案的完整范围来确定。

Claims (25)

1.一种处理器系统,包括多个物理处理器(PCPU),所述处理器系统包括:
第一虚拟机(VM),所述第一VM包括多个第一虚拟处理器(VCPU);
第二VM,所述第二VM包括多个第二VCPU;以及
虚拟机监视器(VMM),用于至少部分地基于用于运行第一VCPU的PCPU的第一子集的计算容量来将第一VCPU中的多个单独的VCPU映射为在以下至少一者上运行:所述PCPU的第一子集中的多个单独的PCPU、以及包括所述PCPU的第一子集和PCPU的第二子集的PCPU的集合中的多个单独的PCPU;以及用于将第二VCPU中的多个单独的VCPU映射为在所述PCPU的第二子集中的多个单独的PCPU上运行。
2.如权利要求1所述的系统,
其中,所述VMM至少部分地基于第一VCPU的工作负荷来确定用于运行第一VCPU的所述PCPU的第一子集的计算容量。
3.如权利要求1所述的系统,
其中,所述VMM确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的所述PCPU的第一子集的计算容量。
4.如权利要求1所述的系统,
其中,所述VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的所述PCPU的第一子集的计算容量。
5.如权利要求1所述的系统,
其中,所述VMM响应于在规定的范围之内的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到所述PCPU的第一子集中的多个单独的PCPU;并且
其中,所述VMM响应于在规定的范围之外的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到包括所述PCPU的第一子集和所述PCPU的第二子集的集合中的多个单独的PCPU。
6.如权利要求1所述的系统,
其中,所述VMM响应于在规定的范围之内的第一VCPU的工作负荷,将当前正在包括所述PCPU的第一子集和所述PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到所述PCPU的第一子集中的多个单独的PCPU,以将当前正在包括所述PCPU的第一子集和所述PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到所述PCPU的第一子集。
7.如权利要求1所述的系统,
其中,所述VMM响应于在规定的范围之外的第一VCPU的工作负荷,将当前正在所述PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到包括所述PCPU的第一子集和所述PCPU的第二子集的集合中的多个单独的PCPU,以将当前正在所述PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU的映射分散在包括所述PCPU的第一子集和所述PCPU的第二子集的集合之间。
8.如权利要求1所述的系统,
其中,所述VMM响应于在规定的范围之内的第一VCPU的工作负荷,将当前正在包括所述PCPU的第一子集和所述PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到所述PCPU的第一子集中的多个单独的PCPU,以将当前正在包括所述PCPU的第一子集和所述PCPU的第二子集的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到所述PCPU的第一子集;并且
其中,所述VMM响应于在规定的范围之外的第一VCPU的工作负荷,将当前正在所述PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到包括所述PCPU的第一子集和所述PCPU的第二子集的集合中的多个单独的PCPU,以将当前正在所述PCPU的第一子集中的多个单独的PCPU上运行的一个或多个第一VCPU的映射分散在包括所述PCPU的第一子集和所述PCPU的第二子集的集合之间。
9.如权利要求1所述的系统,
其中,所述VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷。
10.如权利要求1所述的系统,
其中,所述VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷,并且至少部分地基于所述PCPU的第一子集中的PCPU的数量来确定阈值。
11.如权利要求1所述的系统,
其中,所述VMM响应于在规定的范围之内的第一VCPU的工作负荷,周期性地中断每个第一VCPU的执行,并且将在来自包括所述PCPU的第一子集和所述PCPU的第二子集的集合的PCPU上运行的被周期性地中断的第一VCPU中的一个或多个第一VCPU重新映射到来自所述PCPU的第一子集的PCPU。
12.如权利要求1所述的系统,
其中,所述VMM响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前在来自包括所述PCPU的第一子集和所述PCPU的第二子集的集合的PCPU上运行的第一VCPU重新映射到所述PCPU的第一子集内的空闲PCPU。
13.如权利要求1所述的系统,
其中,所述VMM周期性地中断每个第一VCPU的执行;
其中,所述VMM响应于在规定的范围之内的第一VCPU的工作负荷,将在来自包括所述PCPU的第一子集和所述PCPU的第二子集的集合的PCPU上运行的被周期性地中断的第一VCPU中的一个或多个第一VCPU重新映射到来自所述PCPU的第一子集的PCPU;并且
其中,所述VMM响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前在来自包括所述PCPU的第一子集和所述PCPU的第二子集的集合的PCPU上运行的第一VCPU重新映射到所述PCPU的第一子集内的空闲PCPU。
14.如权利要求1所述的系统,
其中,所述VMM响应于在规定的范围之内的第一VCPU的工作负荷,优先考虑将当前正在来自包括所述PCPU的第一子集和所述PCPU的第二子集的集合的PCPU上运行的第一VCPU重新映射到所述PCPU的第一子集内的空闲PCPU;并且
其中,所述VMM响应于在规定的范围之外的第一VCPU的工作负荷,优先考虑将当前正在来自所述PCPU的第一子集的PCPU上运行的第一VCPU重新映射到包括所述PCPU的第一子集和所述PCPU的第二子集的集合内的空闲PCPU。
15.如权利要求1所述的系统,
其中,所述第一VM与第一优先级值相关联,并且所述第二VM与第二优先级值相关联,所述第二优先级值高于所述第一优先级值;
其中,所述VMM基于与所述第一VM和所述第二VM相关联的相关联的优先级值,对于对第一VCPU和第二VCPU的运行的调度排定优先级。
16.一种用于在主机系统中使用以将虚拟处理器(VCPU)映射到物理处理器(PCPU)的方法,所述方法包括:
提供第一虚拟机(VM),所述第一VM包括多个第一VCPU;
提供第二VM,所述第二VM包括多个第二VCPU;以及
至少部分地基于包括用于运行第一VCPU的一个或多个第一物理处理器(PCPU)的集合的计算容量,单独地将第一VCPU中的多个单独的VCPU映射为在以下至少一者上运行:包括一个或多个第一PCPU的集合中的多个单独的PCPU、以及包括一个或多个第一PCPU和一个或多个第二PCPU的集合中的多个单独的PCPU;以及将第二VCPU中的多个单独的VCPU映射为在一个或多个第二PCPU的集合中的多个单独的PCPU上运行。
17.如权利要求16所述的方法,
其中,所述VMM至少部分地基于第一VCPU的工作负荷来确定用于运行第一VCPU的PCPU的计算容量。
18.如权利要求16所述的方法,
其中,所述VMM确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的PCPU的计算容量。
19.如权利要求16所述的方法,
其中,所述VMM至少部分地基于在至少一个时间间隔期间处于活动状态的第一VCPU的数量的确定来确定第一VCPU的工作负荷,并且至少部分地基于第一VCPU的所确定的工作负荷来确定用于运行第一VCPU的PCPU的计算容量。
20.如权利要求16所述的方法,进一步包括:
响应于在规定的范围之内的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到一个或多个第一PCPU的集合中的多个单独的PCPU;以及
响应于在规定的范围之外的第一VCPU的工作负荷,将多个单独的第一VCPU重新映射到一个或多个第二PCPU的集合中的多个单独的PCPU。
21.如权利要求16所述的方法,进一步包括:
响应于在规定的范围之内的第一VCPU的工作负荷,将当前正在一个或多个第二PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到第一PCPU的集合中的多个单独的PCPU,以将当前正在一个或多个第二PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到一个或多个第一PCPU的集合。
22.如权利要求16所述的方法,进一步包括:
响应于在规定的范围之外的第一VCPU的工作负荷,将当前正在一个或多个第一PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到第二PCPU的集合中的多个单独的PCPU,以将当前正在一个或多个第一PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射均匀地分散在一个或多个第一PCPU的集合与一个或多个第二PCPU的集合之间。
23.如权利要求16所述的方法,进一步包括:
响应于在规定的范围之内的第一VCPU的工作负荷,将当前正在一个或多个第二PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到第一PCPU的集合中的多个单独的PCPU,以将当前正在一个或多个第二PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射合并到一个或多个第一PCPU的集合;以及
响应于在规定的范围之外的第一VCPU的工作负荷,将当前正在一个或多个第一PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU重新映射到第二PCPU的集合中的多个单独的PCPU,以将当前正在一个或多个第一PCPU的集合中的多个单独的PCPU上运行的一个或多个第一VCPU的映射均匀地分散在一个或多个第一PCPU的集合与一个或多个第二PCPU的集合之间。
24.一种机器可读介质,包括指令,所述指令在由计算系统执行时使所述计算系统执行如权利要求16至23所述的方法中的任何一项。
25.一种设备,包括用于执行权利要求16至23所述的方法中的任何一项的装置。
CN201580085089.9A 2015-12-23 2015-12-23 用于避免虚拟机之间的物理cpu争用的虚拟cpu合并的方法、系统、设备、装置和介质 Active CN108701046B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2015/098394 WO2017107091A1 (en) 2015-12-23 2015-12-23 Virtual cpu consolidation to avoid physical cpu contention between virtual machines

Publications (2)

Publication Number Publication Date
CN108701046A true CN108701046A (zh) 2018-10-23
CN108701046B CN108701046B (zh) 2022-04-08

Family

ID=59088820

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580085089.9A Active CN108701046B (zh) 2015-12-23 2015-12-23 用于避免虚拟机之间的物理cpu争用的虚拟cpu合并的方法、系统、设备、装置和介质

Country Status (3)

Country Link
US (1) US10831556B2 (zh)
CN (1) CN108701046B (zh)
WO (1) WO2017107091A1 (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US10831556B2 (en) 2015-12-23 2020-11-10 Intel IP Corporation Virtual CPU consolidation to avoid physical CPU contention between virtual machines
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10956193B2 (en) * 2017-03-31 2021-03-23 Microsoft Technology Licensing, Llc Hypervisor virtual processor execution with extra-hypervisor scheduling
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
JP7151631B2 (ja) * 2019-06-11 2022-10-12 株式会社デンソー 車両用制御装置、車両用表示システム、及び車両用表示制御方法
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11119826B2 (en) * 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
JP2021124902A (ja) * 2020-02-04 2021-08-30 トヨタ自動車株式会社 車両制御装置、車両制御方法、及び車両制御プログラム
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US20210294641A1 (en) * 2021-06-08 2021-09-23 Intel Corporation Dynamic interrupt steering and processor unit idle state demotion
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101169731A (zh) * 2007-12-05 2008-04-30 华为技术有限公司 多路多核服务器及其cpu的虚拟化处理方法
CN102402458A (zh) * 2010-10-01 2012-04-04 微软公司 具有非对称处理器核的系统上的虚拟机和/或多级调度支持
US8219788B1 (en) * 2007-07-23 2012-07-10 Oracle America, Inc. Virtual core management
US20120278800A1 (en) * 2011-04-27 2012-11-01 Microsoft Corporation Virtual Processor Allocation Techniques
CN103777995A (zh) * 2013-12-20 2014-05-07 华中科技大学 虚拟化环境下基于群调度的同步优化调度系统和调度方法
CN103795621A (zh) * 2013-12-12 2014-05-14 华为技术有限公司 一种虚拟机的数据交换方法、装置及物理主机
US8738333B1 (en) * 2010-05-25 2014-05-27 Vmware, Inc. Capacity and load analysis in a datacenter
CN104011680A (zh) * 2011-12-26 2014-08-27 英特尔公司 在物理处理单元中调度虚拟机的虚拟中央处理单元
CN104303154A (zh) * 2012-06-20 2015-01-21 英特尔公司 监视由虚拟机的资源使用
US20150033228A1 (en) * 2012-03-06 2015-01-29 Samsung Electronics Co., Ltd. Method and apparatus for recovering lock holder preemption
CN104461735A (zh) * 2014-11-28 2015-03-25 杭州华为数字技术有限公司 一种虚拟化场景下分配cpu资源的方法和装置
CN104503838A (zh) * 2014-11-23 2015-04-08 华中科技大学 一种虚拟cpu调度方法
CN104615480A (zh) * 2015-02-04 2015-05-13 上海交通大学 基于numa高性能网络处理器负载的虚拟处理器调度方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050132362A1 (en) 2003-12-10 2005-06-16 Knauerhase Robert C. Virtual machine management using activity information
CN102270159B (zh) 2011-08-11 2013-02-27 浙江大学 一种虚拟化环境中的准入控制与负载均衡方法
US9286131B2 (en) * 2012-11-14 2016-03-15 Red Hat Israel, Ltd. Processor unplug in virtualized computer system
CN105242954B (zh) * 2014-06-12 2019-06-07 华为技术有限公司 一种虚拟cpu与物理cpu之间的映射方法及电子设备
US10831556B2 (en) 2015-12-23 2020-11-10 Intel IP Corporation Virtual CPU consolidation to avoid physical CPU contention between virtual machines

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8219788B1 (en) * 2007-07-23 2012-07-10 Oracle America, Inc. Virtual core management
CN101169731A (zh) * 2007-12-05 2008-04-30 华为技术有限公司 多路多核服务器及其cpu的虚拟化处理方法
US8738333B1 (en) * 2010-05-25 2014-05-27 Vmware, Inc. Capacity and load analysis in a datacenter
CN102402458A (zh) * 2010-10-01 2012-04-04 微软公司 具有非对称处理器核的系统上的虚拟机和/或多级调度支持
US20120278800A1 (en) * 2011-04-27 2012-11-01 Microsoft Corporation Virtual Processor Allocation Techniques
CN104011680A (zh) * 2011-12-26 2014-08-27 英特尔公司 在物理处理单元中调度虚拟机的虚拟中央处理单元
US20150033228A1 (en) * 2012-03-06 2015-01-29 Samsung Electronics Co., Ltd. Method and apparatus for recovering lock holder preemption
CN104303154A (zh) * 2012-06-20 2015-01-21 英特尔公司 监视由虚拟机的资源使用
CN103795621A (zh) * 2013-12-12 2014-05-14 华为技术有限公司 一种虚拟机的数据交换方法、装置及物理主机
CN103777995A (zh) * 2013-12-20 2014-05-07 华中科技大学 虚拟化环境下基于群调度的同步优化调度系统和调度方法
CN104503838A (zh) * 2014-11-23 2015-04-08 华中科技大学 一种虚拟cpu调度方法
CN104461735A (zh) * 2014-11-28 2015-03-25 杭州华为数字技术有限公司 一种虚拟化场景下分配cpu资源的方法和装置
CN104615480A (zh) * 2015-02-04 2015-05-13 上海交通大学 基于numa高性能网络处理器负载的虚拟处理器调度方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
华为: "物理CPU与VCPU的关系梳理", 《华为:HTTPS://SUPPORT.HUAWEI.COM/ENTERPRISE/ZH/KNOWLEDGE/KB1000080054》 *
陈慧星: "多核环境下虚拟机调度算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Also Published As

Publication number Publication date
US10831556B2 (en) 2020-11-10
CN108701046B (zh) 2022-04-08
US20190004866A1 (en) 2019-01-03
WO2017107091A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
CN108701046A (zh) 用于避免虚拟机之间的物理cpu争用的虚拟cpu合并
CN110851529B (zh) 算力调度方法及相关设备
CN108885571B (zh) 分批处理机器学习模型的输入
CN103678003B (zh) 一种实时性增强的虚拟cpu调度方法
CN103440173B (zh) 一种多核处理器的调度方法和相关装置
CN102662763B (zh) 基于服务质量的虚拟机资源调度方法
CN107239329A (zh) 云环境下统一资源调度方法及系统
CN104778080A (zh) 基于协处理器的作业调度处理方法及装置
CN106663031B (zh) 工作流执行中系统资源的公平共享
WO2011123153A1 (en) Methods and apparatus for resource capacity evaluation in a system of virtual containers
CN102193833A (zh) 资源管理器中空闲资源的高效利用
CN108694077A (zh) 基于改进二进制蝙蝠算法的分布式系统任务调度方法
CN103608776A (zh) 异构型处理设备上的动态工作划分
CN106506670A (zh) 一种云平台虚拟资源高速调度方法与系统
CN112130963A (zh) 虚拟机任务的调度方法、装置、计算机设备及存储介质
CN103262035A (zh) 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告
CN104598298A (zh) 基于虚拟机当前工作性质以及任务负载的虚拟机调度算法
CN107436810A (zh) 一种计算机系统资源调度方法及装置
CN104090826B (zh) 基于相关性的任务优化部署方法
CN115292016A (zh) 基于人工智能的任务调度方法及相关设备
CN110503593A (zh) 多个图形处理单元的调度
CN104917839A (zh) 一种用于云计算环境下的负载均衡方法
US20190171489A1 (en) Method of managing dedicated processing resources, server system and computer program product
CN114625533A (zh) 分布式任务调度方法、装置、电子设备及存储介质
CN111597044A (zh) 任务调度方法、装置、存储介质及电子设备

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
TA01 Transfer of patent application right

Effective date of registration: 20210628

Address after: California, USA

Applicant after: INTEL Corp.

Address before: California, USA

Applicant before: INTEL IP Corp.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant