CN105975327A - 在虚拟环境下减小虚拟机的抢占的方法和计算机系统 - Google Patents

在虚拟环境下减小虚拟机的抢占的方法和计算机系统 Download PDF

Info

Publication number
CN105975327A
CN105975327A CN201610136065.8A CN201610136065A CN105975327A CN 105975327 A CN105975327 A CN 105975327A CN 201610136065 A CN201610136065 A CN 201610136065A CN 105975327 A CN105975327 A CN 105975327A
Authority
CN
China
Prior art keywords
cpu
virtual
virtual cpu
assignment
sheet
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
CN201610136065.8A
Other languages
English (en)
Other versions
CN105975327B (zh
Inventor
K.S.亚当斯
M.J.洛伦克
D.W.施密特
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN105975327A publication Critical patent/CN105975327A/zh
Application granted granted Critical
Publication of CN105975327B publication Critical patent/CN105975327B/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/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
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/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
    • 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
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/483Multiproc

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

提供了一种用于在虚拟环境下减小虚拟机抢占的方法。该方法包括:分派虚拟中央处理单元(CPU),以在实际CPU上以模拟模式运行,直到实际CPU退出模拟模式;确定虚拟CPU是否装载了等待状态;如果虚拟CPU已经装载了等待状态,则确定经过分派后虚拟CPU的剩余时间片是否低于预定阈值;以及如果虚拟CPU的剩余时间片低于预定阈值,则对于全部时间片,重新调度虚拟CPU。

Description

在虚拟环境下减小虚拟机的抢占的方法和计算机系统
技术领域
本发明涉及减小虚拟机抢占(preemption),并且更具体地说,涉及在虚拟环境下减小虚拟机抢占的方法。
背景技术
多处理计算系统通常构造为一组全部使用相同物理存储器的类似处理器。这种排列通常称为对称多处理(SMP)。运行于这种硬件计算机上的操作系统利用互相合作地使用处理器,以运行系统的聚合工作。例如,当操作系统是Linux系统时,Linux核将称为进程的用户执行上下文分派(dispatch)到系统的实处理器上。类似地,当操作系统是系统时,核将称为虚拟处理器的执行上下文分派到系统的实处理器上。作为另一种能够多处理器的处理器操作系统,利用其进程和处理器类似地运行。(是美国纽约州阿蒙克市的国际商用机器公司的注册商标,而是美国华盛顿州雷德蒙德市的微软公司的注册商标)。
在诸如Linux、或者的操作系统中,处理器的时间由用户应用执行上下文或者操作系统核占用。这种占用是交错的。典型行为是用户进程首先运行一个时间周期,因此,产生处理器时间。然后,用户进程将执行操作或者调用将要求操作系统核去干预的应用编程接口(API)。核干预以处理该情况,并且核运行一个时间周期,因此产生处理器时间。当核结束处理该情况时,核返回对用户应用进程进行控制。
通常,必须干预的操作系统核要求核在处理该请求之前获得串行化或者互斥。要求这种保护,以保证一次只有一个线程或者处理器读出或者更新访问的(各)核数据结构。尽管文献中有轻量级串行化技术,但是归根结底,所有这些技术实现同样的结局,即,一次一个地访问这些关键数据结构。为了保证系统完整性要求串行访问。
发明内容
根据本发明的一个实施例,提供了一种用于在虚拟环境下减小虚拟机抢占的方法。该方法包含:分派虚拟中央处理单元(CPU),以在实际CPU上以模拟模式运行,直到实际CPU退出模拟模式;确定虚拟CPU是否装载了等待状态;如果虚拟CPU已经装载了等待状态,则确定经过分派后虚拟CPU的剩余时间片是否低于预定阈值;以及如果虚拟CPU的剩余时间片低于预定阈值,则对于全部时间片,重新调度虚拟CPU。
根据本发明的另一个实施例,提供了一种用于在虚拟环境下减小虚拟机抢占的计算机程序产品。该计算机程序产品包含嵌入了程序指令的计算机可读储存介质,其中计算机可读储存介质不是信号,处理器可读的程序指令使得处理器执行方法。所述方法包含:分派虚拟中央处理单元(CPU),以在实际CPU上以模拟模式运行,直到实际CPU退出模拟模式;确定虚拟CPU是否装载了等待状态;如果虚拟CPU已经装载了等待状态,则确定经过分派后虚拟CPU的剩余时间片是否低于预定阈值;以及如果虚拟CPU的剩余时间片低于预定阈值,则对于全部时间片,重新调度虚拟CPU。
根据本发明的又另一个实施例,提供了一种计算系统,配置该计算系统,以在虚拟环境下执行减小虚拟机抢占。该计算系统包含:处理器;以及存储器,并且配置该处理器,以分派虚拟中央处理单元(CPU),以在实际CPU上以模拟模式运行,直到实际CPU退出模拟模式;确定虚拟CPU是否装载了等待状态;如果虚拟CPU已经装载了等待状态,则确定经过分派后虚拟CPU的剩余时间片是否低于预定阈值;以及如果虚拟CPU的剩余时间片低于预定阈值,则对于全部时间片,重新调度虚拟CPU。
通过本发明的技术实现附加特征和优点。在此详细描述本发明的其他实施例和方案,并且认为其他实施例和方案是要求保护的本发明的一部分。为了更好地理解具有该优点和特征的本发明,参考描述和附图。
附图说明
在说明书结束时,权利要求中特别指出并且清楚地要求保护被看作本发明的主题。根据下面结合附图所做的详细描述,本发明的上述以及其他特征和优点显而易见,其中:
图1是实现本发明的一个或者多个方案的数据处理系统的一个实施例的方框图;
图2是实现本发明的一个或者多个方案的数据处理系统的一个实施例的更详示图;
图3是示出根据实施例使计算系统运行的方法的流程图;
图4是示出根据又一个实施例使计算系统运行的方法的流程图;以及
图5是示出根据实施例的计算机程序产品的原理图。
具体实施方式
提供了一种用于在虚拟环境下减小虚拟机抢占的方法。该方法包含:将要在模拟模式下运行的虚拟中央处理单元(CPU)分派到实际CPU,直到实际CPU退出模拟模式;确定虚拟CPU是否已经装载处于等待状态;如果虚拟CPU已经装载处于等待状态,则确定通过分派后虚拟CPU的剩余时间片是否低于预定阈值;以及如果虚拟CPU的剩余时间片低于预定阈值,则对于全部时间片重新调度虚拟CPU。
作为对执行操作或者调用API的用户进程的响应进行干预的操作系统核通常要求核在处理应用进程请求之前获得串行化或者互斥。要求这种保护,以保证一次只有一个线程或者处理器读出或者更新访问的(各)核数据结构。归根结底,这些技术实现相同的结局,即,一次一个地访问关键核数据结构,以保证系统完整性。
确定系统承受的串行化量或者互斥量的因素包含:竞争串行化的处理器的数量;要求来自操作系统核的服务的用户应用进程的趋势;以及用户应用要求来自操作系统核的服务的频率。然后,由此得出,如果该核能够降低用户进程要求来自该核的服务的速率,则能够降低该核中的串行化开销。
在描述有助于该系统效率的各种自动进程之前(根据本发明的一个或者多个方案),下面参考图1-2讨论可以采用在此公开的装置的数据处理系统的例子。
图1是数据处理或者计算机系统100的方框图,在一个例子中,该数据处理或者计算机系统100是对称多处理(SMP)服务器计算机系统。SMP服务器计算机系统100包含物理硬件设备,该物理硬件设备能够映射到用户应用,即,用户应用能够临时拥有该物理硬件设备,以执行该应用。
SMP服务器计算机系统100包含物理SMP服务器102。物理SMP服务器102包含物理硬件设备,诸如处理器104、存储器106和I/O适配器108。这些物理设备由管理程序110管理。处理器104是共享处理器,并且每个可以是能够同时多线程(SMT)处理器,能够在该处理器上同时执行多个不同线程。
虚拟服务器是具有相同能力、接口和状态的网络服务器的代理。常驻于物理SMP服务器计算机系统100上的管理程序创建并且管理虚拟服务器。对于其用户:在其上运行的操作系统、中间件和应用软件,网络服务器呈现为物理SMP服务器。SMP服务器计算机系统100包含一个或者多个虚拟服务器,诸如虚拟服务器112和虚拟服务器112a。
每个虚拟服务器对其软件呈现为包含为其自己的该虚拟服务器专用的(各)处理器、存储器和(各)I/O适配器。例如,虚拟服务器112包含:虚拟处理器120、虚拟存储器122和虚拟I/O适配器124。虚拟服务器112a包含虚拟处理器120a、虚拟存储器122a和虚拟I/O适配器124a。
每个虚拟服务器支持其自己的软件环境,包含操作系统、中间件和应用。每个虚拟服务器的软件环境能够与其他虚拟服务器的软件环境不同。例如,每个虚拟服务器执行的操作系统可以互相不同。
例如,虚拟服务器112支持操作系统114、中间件116和应用118。虚拟服务器112a支持操作系统114a、中间件116a和应用118a。操作系统114和114a可以是相同操作系统,也可以是不同操作系统。
虚拟服务器是定义服务器环境的服务器的逻辑描述,对于用户其如同网络服务器一样以与网络服务器相同的方式被访问和提供信息。对每个虚拟服务器定义的虚拟处理器、虚拟存储器和虚拟I/O适配器是物理处理器、存储器和I/O适配器的逻辑替代品。
管理程序110管理具有其虚拟处理器、虚拟存储器和虚拟I/O适配器的虚拟服务器与选择实现这些虚拟设备的物理硬件设备之间的映射。例如,当分派虚拟处理器时,管理程序110选择物理处理器,诸如物理处理器104中的一个,用于执行并且实现该虚拟处理器。管理程序110对选择网络服务器及其对虚拟设备的临时分配进行管理。
通过在物理处理器104上交错执行虚拟处理器,管理程序110对全部虚拟服务器的虚拟处理器提供服务。为了防止虚拟处理器独占物理处理器,管理程序110设置特定时间长度的分派时间片。在每个分派时间片,管理程序110将物理处理器104分配或者指配给虚拟处理器,并且物理处理器将执行虚拟处理器的指令。在管理程序在物理处理器上重新开始执行并且可以选择分派不同虚拟处理器之前,该分派时间片限制虚拟处理器可以在物理处理器上执行的最大时间量。
管理程序110负责动态创建、管理并且销毁虚拟SMP服务器。即,管理程序110能够移除或者添加整个虚拟处理器、虚拟I/O适配器和虚拟存储器。管理程序110还负责物理资源的动态资源分配、管理物理资源的共享时间以及改变映射到处理器的物理资源,而不涉及操作系统。此外,对于不要求共享的情况,管理程序110能够将物理资源专用于虚拟资源。管理程序110负责管理物理资源的增加或者移除,并且使这些增加和删除对上层用户应用透明。
图2是可用于实现在此描述的原理的计算机系统的更详示图。数据处理系统200可以是对称多处理器(SMP)系统,该对称多处理器(SMP)系统包含多个共享处理器或者能够SMT处理器,诸如连接到系统总线206的处理器202和204。在所示的例子中,处理器204是服务处理器。每个能够SMT处理器能够通过一个处理器同时执行多个硬件线程。
连接到系统总线206的还有存储器控制器/高速缓存208,该存储器控制器/高速缓存208提供与本地存储器209的接口。I/O总线桥210连接到系统总线206,并且提供与I/O总线212的接口。存储器控制器/高速缓存208和I/O总线桥210可以集成,如图所示。
外围组件互连(PCI)总线桥214连接到I/O总线212,并且提供与PCI本地总线216的接口。许多调制解调器可以连接到PCI总线216。典型的PCI总线实现支持四个PCI扩张槽或者内置连接器。通过经内置电路板连接到PCI本地总线216的调制解调器218和网络适配器220,可以提供到网络计算机的通信链路。
网络适配器220包含物理层282,物理层282调节模拟信号,以到达网络,诸如,例如,R45连接器的以太网。媒体访问控制器(MAC)280包含在网络适配器220中、耦合到总线216并且处理数字网络信号。MAC 280作为总线216与物理层282之间的接口,并且执行数据包的发送和接收中涉及的许多功能。例如,在发送数据时,MAC 280将要发送的数据组合为具有地址字段和检错字段的包。相反,在接收包时,MAC 280分解包,并且执行地址检验和检错。此外,MAC 280通常执行发送的数字信号的编码/解码,并且执行前置码生成/去除以及位发送/接收。
附加PCI总线桥222和224提供附加PCI总线226和228的接口,该附加PCI总线226和228支持附加调制解调器或者网络适配器。这样,数据处理系统200可以连接到多个网络计算机。存储器映射图形适配器230和硬盘232也可以直接地或者间接地连接到I/O总线212,如图所示。
服务处理器204询问系统处理器、存储器组件和I/O桥,以监视数据处理系统200。服务处理器200还对询问系统处理器、存储器控制器和I/O桥发现的所有元件执行内置自测试(BIST)、基本正确性测试(BAT)以及存储器测试。服务处理器204采集并且报告在BIST、BAT和存储器测试中检测到的故障错误消息。
本技术领域内的普通技术人员明白,可以改变图2所示的硬件。例如,除了或者代替所示的硬件,还可以使用其他外围设备,诸如,光盘驱动器等等。所示的例子并不意味着暗示对本发明的架构的限制。
可以在各种计算机或者数据处理系统中,诸如图1或者2所示的计算机或者数据处理系统中执行本发明。作为特定商用例子,根据“Principles of Operation”,IBM Publication No.SA22-7832-09,10th Edition,September 2012 (pages 1-1568)描述的IBM的生产线固件和系统件(systemware)中的技术,能够建立实现时间片早结束从而将虚拟处理器抢占降低到最小的数据处理系统,诸如下面所做的描述。(是美国纽约州阿蒙克市的国际商用机器公司的注册商标)。
上面描述的管理程序110可以使操作系统(诸如Linux、CMS、z/OS等等)的多个实例运行于诸如计算系统100的巨型计算机上,并且这是通过对操作系统的每个实例虚拟化一组计算机资源(CPU、存储器、I/O设备)实现的。因此,从操作系统的观点出发,其表现为具有实计算机资源,但是实际上操作系统运行于虚拟机中。
这种虚拟机可以具有一个以上的虚拟CPU 120,这样使得相应操作系统同时执行两个或者多个不同指令集。这些不同指令集共享访问虚拟机的公共存储器。如同通常处于非虚拟环境下一样,在具有共享存储器的多处理器环境下运行的操作系统(和程序)要求串行化,以利用作为自旋锁(spin lock)的一种示例性串行化技术控制对存储器的特定区域的读出和写入。
管理程序110其中负责对虚拟机的虚拟CPU 120访问计算系统100的CPU进行控制,并且系统管理员可以利用共享设置建立当没用足够的CPU资源满足虚拟机的需要时,每个虚拟机应当获得多少CPU资源的策略。该共享设置能够对每个虚拟CPU 120分配优先权,并且规定在重新计算该优先权之前,允许每个虚拟CPU 120运行至多特定时间量(称为时间片,并且能够默认例如5ms)。还能够定义共享设置,使得能够在几个离散块中消耗时间片。即,如果虚拟CPU 120装载等待状态并且因为某个其他原因变得不能运行,则虚拟CPU 120保持其剩余时间片的余量,并且当其再次准备好运行时重新开始。分配的优先权是对虚拟机的共享设置虚拟CPU 120已经消耗了多少CPU和时间片大小的功能。
在虚拟环境下,诸如上面参考图1和2描述的环境下,自旋锁是一个虚拟CPU(即,虚拟处理器120中的一个)利用串行化指令获取虚拟存储器122中某个地址的锁,从而更新虚拟存储器地址的串行化技术。希望获得该锁的所有其他虚拟CPU必须进入自旋锁的循环等待状况,以进入允许其他虚拟CPU获取自旋锁的状态。在虚拟CPU保持自旋锁时,允许虚拟CPU读出或者修改其他虚拟存储器地址,而无需使用串行化指令。利用这种布置,如果管理程序110不同时运行保持自旋锁的虚拟CPU,则多处理器客串使用自旋锁能够导致无效自旋。现有技术能够使用特定技术,例如,SIGP读出运行状态(SRS),使得正自旋的并且正等待自旋锁从而可用的虚拟CPU能够询问保持自旋锁的虚拟CPU当时是否在运行。如果当时未运行,则对于自旋锁正自旋的程序能够利用Diagnose x'9C'(下面称为“Diag x’9C”)指令指示管理程序110优先运行当前保持自旋锁的虚拟CPU。
尽管这种解决方案在检测并且对管理程序110抢占当前保持客串锁(guest lock)的客串CPU(即,虚拟处理器120中的一个)的问题做出反应中有效,但是该解决方案还能够导致或者使得在客串CPU与管理程序110之间上下文切换并且产生管理程序110开销。这是因为Diag x’9C指令要求管理程序110干预通常哪个要求管理程序110获取其自己串行化并且承担有关开销。因此,如在此所述,管理程序110抢占保持客串锁的客串CPU的次数被附加能力降低到最小或者降低,从而在客串CPU装载等待状态程序状态字(PSW)并且保留小于特定阈值的时间片的情况下,对客串CPU宣布时间片早结束。通过这样做,显著减小抢占保持客串锁CPU的次数并且使得客串CPU操作更有效。
如上所注意到的,虚拟环境下可能发生的问题是虚拟机的一个虚拟CPU120获取自旋锁,但是然后被在执行其指令的中途选择使虚拟CPU 120停止并且切换到不同虚拟CPU代替的管理程序110抢占。如果发生这种情况,与虚拟CPU 120属于同一个虚拟机、在保持自旋锁时抢占的另一个虚拟CPU120可以发现因为已经获取当前未运行的自旋锁的虚拟CPU 120在延长时间周期不释放的锁自旋。因此,对于在虚拟机中运行的操作系统,SIGP SRS和Diag x'9C'选项可用于检测这已经发生,并且采取动作,以指示管理程序110对使当前保持自旋锁的虚拟CPU 120运行给予优先。管理程序100与客串操作系统之间的收缩已经显现降低自旋锁的非生产性自旋并且改善工作负荷的性能,但是具有发生模拟模式导致的关联开销(虚拟CPU的指令直接由实际CPU执行)并且要求管理程序110获取全局串行化。因此,该问题的改善涉及分派客串CPU的管理程序110,从而减少客串虚拟CPU确定应当使用Diagx'9C'的次数。
在此,关于管理程序110的操作的一个观察结果是当虚拟CPU结束时间片时,其收到的新优先权通常低于其先前保持的优先权。与正在争用实际CPU的其他虚拟CPU有关的优先权的这样恶化意味着这是为了运行不同的虚拟CPU而很可能抢占虚拟CPU的时间。通过等待重新计算虚拟CPU的优先权直到其已经耗用特定数量的实际CPU意味着,在大多数时间,虚拟CPU处于执行指令中途,除非正如其时间片期满时,其刚好装载等待状态。通常,管理程序不知道虚拟CPU当前是否保持客串自旋锁。
同时,关于自旋锁用途的观察结果是操作系统往往不进入等待状态,而保持自旋锁。因此,如果管理程序110观察到装载等待状态PSW的虚拟CPU,则其能够在逻辑上推定虚拟CPU未正保持自旋锁。
参考图3,增强上面描述的计算系统100就是设置如果虚拟CPU进入等待状态并且其时间片中保留小于该阈值的时间量,则对于新时间片重新调用虚拟CPU的阈值。该重新调用考虑到早结束的时间片的未使用部分,因此,客串没有对装载等待状态不利。使用阈值,而非在虚拟CPU每次装载等待状态时都这样做的原因是如果虚拟CPU在等待与运行之间频繁循环,则减小开销。
增强的另一个好处是确保退出等待状态的虚拟CPU具有剩余的特定最少量时间片。在本发明之前,存在虚拟CPU在时间片中剩余琐碎时间量的情况下装载等待状态的时间。之后,当虚拟CPU再次活动时,其将迅速到达时间片结束(或者正如其已经结束对存储器高速缓存提供非常大量的客串存储器)并且抢占风险。如果重复参考相同存储器地址或者与这些之前参考位于相同高速缓存行中的其他地址,则在其退出等待状态时,通过使虚拟CPU具有最小时间片,将保证具有足够时间使用存储器高速缓存。
增强的一个结果是进入等待状态并且获得新时间片(和最坏优先权)的虚拟CPU可能比使其不具有其重新计算的优先权访问实际CPU延迟更长。即,通过重新计算优先权并且尽可能将其推出其他竞争虚拟CPU,其现在必须等待更长时间来接收中断,从而从等待状态醒来,因为我们将选择首先运行其他虚拟CPU。
如图3所示,上面描述的增强可以实现为使计算系统100运行的方法。该方法在操作301以虚拟CPU准备好以满时间片运行开始,并且在操作302,虚拟CPU延迟,直到实际CPU可用。在实际CPU可用后,在操作303,管理程序110的控制程序调度器使虚拟CPU在实际CPU上在模拟模式下运行,直到实际CPU退出模拟模式,并且在操作304,重新开始执行控制程序。
接着,在操作305,首先确定虚拟CPU是否已经超过其时间片。如果虚拟CPU尚未超过其时间片,则控制进入操作306,在操作306,虚拟CPU保持其当前时间片的余量,然后,控制进入操作307。在操作307,其次确定虚拟CPU是否装载等待状态。相反,如果虚拟CPU已经超过其时间片,则控制进入操作308,在操作308,对于全部时间片重新调度虚拟CPU,然后,控制进入操作307。
从操作307开始,如果虚拟CPU未装载等待状态,则控制返回操作302,虚拟CPU延迟,直到实际CPU可用。然而,如果虚拟CPU已经装载了等待状态,则控制进入操作309,在操作309,再次确定虚拟CPU的剩余时间片是否低于预定阈值(例如,5ms时间片的60%)。在此,如果虚拟CPU的剩余时间片不低于预定阈值,则在操作310,将虚拟CPU标记为空闲,并且控制进入操作311,在操作311,新工作到达虚拟CPU。然而,如果虚拟CPU的剩余时间片低于预定阈值,则在控制进入操作310并且然后进入311之前,在操作312,对于全部时间片,重新调度虚拟CPU。在这两种情况下,在操作311,在新工作到达虚拟CPU后,控制返回操作302,其中虚拟CPU延迟直到实际CPU可用。
根据又一个实施例,并且参考图4,在操作401,可以将预定阈值设置为改变的选择水平或者默认水平。然后,在计算系统100的操作过程中,管理程序110可以确定预定阈值需要根据计算系统100的当前性能数据临时或者永久升高或者降低。即,在操作402,管理程序110确定计算系统100的当前性能数据是否指示需要升高或者降低预定阈值,并且在操作403,执行相应升高或者降低。此后,对新预定阈值执行操作309(请参见图3)。
根据实施例,应当明白,预定阈值的升高可以对应于例如指示在操作305(图3)太多的虚拟CPU超过其时间片而在当前阈值内不装载等待状态PSW的当前性能数据的发生。相反,应当明白,预定阈值的降低可以对应于指示正在发生超过管理程序开销并且因此使计算系统100的整个计算效率降低的当前性能数据的发生。当然,应当明白,关于为什么需要升高或者降低阈值,可以存在其他原因。
现在参考图5,提供计算机程序产品500,并且计算机程序产品500包含:计算机可读储存介质502,该计算机可读储存介质502不是信号;以及程序指令504,该程序指令504用于实现在虚拟环境下减小虚拟机抢占的方法,如上所述。
在此使用的术语仅用于描述特定实施例,而不旨在限制本发明。如在此使用的单数形式“一个”、“一”和“该”旨在也包含复数形式,除非上下文另外清楚地指出。还应当明白,术语“包括”和/或者“含括”当在本说明书中使用时指明存在陈述的特征、整数、步骤、操作、元件和/或者组件,但是不排除存在附加的一个以上的其他特征、整数、步骤、操作、元件、组件和/或者它们的组合。
下面的权利要求中的所有装置或者步骤加功能元件的相应结构、材料、动作和等同旨在包含结合具体要求保护的其他元件执行功能的任何结构、材料或者动作。提供本发明的描述是为了说明和描述,而不旨在穷举,也不旨在使本发明局限于所公开的形式。许多修改和变型对于本技术领域内的普通技术人员显而易见,而不脱离本发明的范围和精神。为了最好地解释本发明的原理和特定应用并且为了使得本技术领域内的其他普通技术人员能够对于具有适合设想的特定用途的各种修改的各种实施例理解本发明,选择并且描述了实施例。
在此所示的流程图仅是一个例子。该流程图或者在此描述的步骤(或者操作)可以存在许多变型,而不脱离本发明的精神。例如,可以以不同顺序执行步骤,也可以附加、删除或者修改步骤。所有这些变型都被认为是要求保护的本发明的一部分。
尽管已经描述了本发明的优选实施例,但是本技术领域内的技术人员应当明白,不仅是现在而且在将来都可以进行各种改进和增强,各种改进和增强落入下面的权利要求的范围内。应当认为这些权利要求维持对概括描述的本发明的适当保护。

Claims (13)

1.一种用于在虚拟环境下减小虚拟机抢占的方法,所述方法包括:
分派虚拟中央处理单元(CPU),以在实际CPU上以模拟模式运行,直到所述实际CPU退出所述模拟模式;
确定所述虚拟CPU是否装载了等待状态;
如果所述虚拟CPU已经装载了所述等待状态,则确定作为所述分派的结果所述虚拟CPU的剩余时间片是否低于预定阈值;以及
如果所述虚拟CPU的所述剩余时间片低于所述预定阈值,则对于全部时间片,重新调度所述虚拟CPU。
2.根据权利要求1所述的方法,其中所述虚拟CPU在所述分派之前具有全部时间片,并且所述分派包括延迟所述分派,直到所述实际CPU可用。
3.根据权利要求1所述的方法,还包括:
确定所述虚拟CPU是否超过所述分派期间的时间片;
如果所述虚拟CPU超过所述分派期间的所述时间片,则对于全部时间片,重新调度所述虚拟CPU;以及
如果所述虚拟CPU未超过所述分派期间的所述时间片,则使所述虚拟CPU保持所述余量作为所述剩余时间片。
4.根据权利要求1所述的方法,其中在对所述全部时间片所述重新调度所述虚拟CPU后,所述方法还包括:
将所述虚拟CPU标记为空闲;
使所述虚拟CPU可用于新工作;以及
重复所述分派。
5.根据权利要求1所述的方法,还包括:
将所述虚拟CPU标记为空闲;
如果所述虚拟CPU的所述剩余时间片不低于所述预定阈值,则使所述虚拟CPU可用于新工作;以及
重复所述分派。
6.根据权利要求1所述的方法,还包括将所述预定阈值设置为时间片的百分比。
7.根据权利要求6所述的方法,还包括根据计算系统的性能升高或者降低所述预定阈值。
8.一种计算系统,配置所述计算系统,以在虚拟环境下执行减小虚拟机抢占,所述计算系统包括:
处理器;以及
存储器,
配置所述处理器,以分派虚拟中央处理单元(CPU),以在实际CPU上以模拟模式运行,直到所述实际CPU退出所述模拟模式;确定所述虚拟CPU是否装载了等待状态;如果所述虚拟CPU已经装载了所述等待状态,则确定作为所述分派的结果所述虚拟CPU的剩余时间片是否低于预定阈值;以及如果所述虚拟CPU的所述剩余时间片低于所述预定阈值,则对于全部时间片,重新调度所述虚拟CPU。
9.根据权利要求8所述的计算系统,其中所述虚拟CPU在所述分派之前具有全部时间片,并且所述分派包括延迟所述分派,直到所述实际CPU可用。
10.根据权利要求8所述的计算系统,其中进一步配置所述处理器,以:
确定所述虚拟CPU是否超过所述分派期间的时间片;
如果所述虚拟CPU超过所述分派期间的所述时间片,则对于全部时间片,重新调度所述虚拟CPU;以及
如果所述虚拟CPU未超过所述分派时的所述时间片,则使所述虚拟CPU保持所述余量作为所述剩余时间片。
11.根据权利要求8所述的计算系统,其中在对所述全部时间片所述重新调度所述虚拟CPU后,进一步配置所述处理器,以:
将所述虚拟CPU标记为空闲;
使所述虚拟CPU可用于新工作;以及
重复所述分派。
12.根据权利要求8所述的计算系统,其中进一步配置所述处理器,以:
将所述虚拟CPU标记为空闲;
如果所述虚拟CPU的所述剩余时间片不低于所述预定阈值,则使所述虚拟CPU可用于新工作;以及
重复所述分派。
13.根据权利要求8所述的计算系统,其中进一步配置所述处理器,以:
将所述预定阈值设置为时间片的百分比;以及
根据计算系统的性能升高或者降低所述预定阈值。
CN201610136065.8A 2015-03-10 2016-03-10 在虚拟环境下减小虚拟机的抢占的方法和计算机系统 Active CN105975327B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/642,947 US9411629B1 (en) 2015-03-10 2015-03-10 Reducing virtual machine pre-emption in virtualized environment
US14/642,947 2015-03-10

Publications (2)

Publication Number Publication Date
CN105975327A true CN105975327A (zh) 2016-09-28
CN105975327B CN105975327B (zh) 2019-02-15

Family

ID=55858984

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610136065.8A Active CN105975327B (zh) 2015-03-10 2016-03-10 在虚拟环境下减小虚拟机的抢占的方法和计算机系统

Country Status (4)

Country Link
US (2) US9411629B1 (zh)
CN (1) CN105975327B (zh)
DE (1) DE102016203808A1 (zh)
GB (1) GB2536802B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114327814A (zh) * 2021-12-09 2022-04-12 阿里巴巴(中国)有限公司 任务调度方法、虚拟机、物理主机和存储介质

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10176007B2 (en) * 2016-08-30 2019-01-08 Red Hat Israel, Ltd. Guest code emulation by virtual machine function
CN108241522B (zh) * 2016-12-27 2022-05-17 阿里巴巴集团控股有限公司 虚拟化环境中的睡眠状态切换方法、装置及电子设备
US11126474B1 (en) * 2017-06-14 2021-09-21 Amazon Technologies, Inc. Reducing resource lock time for a virtual processing unit
US10474490B2 (en) * 2017-06-29 2019-11-12 Advanced Micro Devices, Inc. Early virtualization context switch for virtualized accelerated processing device
CN107577517B (zh) * 2017-08-22 2020-05-19 华中科技大学 一种面向NUMA内存架构的细粒度vCPU调度方法及系统
US10592281B1 (en) 2017-09-28 2020-03-17 Amazon Technologies, Inc. Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit
US20230076488A1 (en) * 2021-09-03 2023-03-09 Microsoft Technology Licensing, Llc Machine-learning-based replenishment of interruptible workloads in cloud environment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100031254A1 (en) * 2008-07-30 2010-02-04 Microsoft Corporation Efficient detection and response to spin waits in multi-processor virtual machines
US20130007323A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Hardware Enabled Lock Mediation
CN103049332A (zh) * 2012-12-06 2013-04-17 华中科技大学 一种虚拟cpu调度方法
CN103729242A (zh) * 2013-12-19 2014-04-16 华为技术有限公司 一种自旋锁抢占调度算法选择方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438704B1 (en) 1999-03-25 2002-08-20 International Business Machines Corporation System and method for scheduling use of system resources among a plurality of limited users
US7500037B2 (en) 2007-01-30 2009-03-03 International Business Machines Corporation System, method and program for managing locks
US8607020B2 (en) * 2008-06-06 2013-12-10 International Business Machines Corporation Shared memory partition data processing system with hypervisor managed paging
US8347290B2 (en) 2009-11-16 2013-01-01 Novell, Inc. Monitoring spin locks in virtual machines in a computing system environment
US8533714B2 (en) 2011-05-03 2013-09-10 International Business Machines Corporation Dynamic virtual machine domain configuration and virtual machine relocation management
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
JP5624084B2 (ja) * 2012-06-04 2014-11-12 株式会社日立製作所 計算機、仮想化機構、及びスケジューリング方法
US9778943B2 (en) * 2013-05-28 2017-10-03 Red Hat Israel, Ltd. Timer based virtual processor scheduling and suspension on physical processor for use of physical processor by other processing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100031254A1 (en) * 2008-07-30 2010-02-04 Microsoft Corporation Efficient detection and response to spin waits in multi-processor virtual machines
US20130007323A1 (en) * 2011-06-29 2013-01-03 International Business Machines Corporation Hardware Enabled Lock Mediation
CN103049332A (zh) * 2012-12-06 2013-04-17 华中科技大学 一种虚拟cpu调度方法
CN103729242A (zh) * 2013-12-19 2014-04-16 华为技术有限公司 一种自旋锁抢占调度算法选择方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114327814A (zh) * 2021-12-09 2022-04-12 阿里巴巴(中国)有限公司 任务调度方法、虚拟机、物理主机和存储介质

Also Published As

Publication number Publication date
GB201603739D0 (en) 2016-04-20
DE102016203808A1 (de) 2016-09-15
GB2536802B (en) 2018-12-26
CN105975327B (zh) 2019-02-15
US9411630B1 (en) 2016-08-09
GB2536802A (en) 2016-09-28
US9411629B1 (en) 2016-08-09

Similar Documents

Publication Publication Date Title
CN105975327A (zh) 在虚拟环境下减小虚拟机的抢占的方法和计算机系统
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
CN105579961B (zh) 数据处理系统及操作方法、用于数据处理系统的硬件单元
CN103559014B (zh) 用于处理嵌套流事件的方法和系统
US8146089B2 (en) Sharing resources of a partitioned system
US9430388B2 (en) Scheduler, multi-core processor system, and scheduling method
CN100573456C (zh) 一种并行多处理器虚拟机系统
KR100724507B1 (ko) 논리 파티션 데이터 처리 시스템에서 전력 소비를 감소시키는 방법 및 장치
CN101512488B (zh) 在虚拟机环境中提供硬件虚拟化的系统和方法
US8418180B2 (en) Thread priority method for ensuring processing fairness in simultaneous multi-threading microprocessors
US9052957B2 (en) Method and system for conducting intensive multitask and multiflow calculation in real-time
CN103425592B (zh) 一种多进程系统中的内存管理方法及装置
US8024728B2 (en) Virtual machine dispatching to maintain memory affinity
US9378069B2 (en) Lock spin wait operation for multi-threaded applications in a multi-core computing environment
US20070150895A1 (en) Methods and apparatus for multi-core processing with dedicated thread management
US8375390B2 (en) Scheduling method and scheduling apparatus
US8645963B2 (en) Clustering threads based on contention patterns
US20130268938A1 (en) Transparent user mode scheduling on traditional threading systems
CN101203831A (zh) 用于增强线程级推测的原语
US20120284720A1 (en) Hardware assisted scheduling in computer system
CN111459622B (zh) 调度虚拟cpu的方法、装置、计算机设备和存储介质
CN114168271A (zh) 一种任务调度方法、电子设备及存储介质
EP2282265A1 (en) A hardware task scheduler
CN112306652A (zh) 带有上下文提示的功能的唤醒和调度
CN114490123A (zh) 一种任务处理方法、装置及电子设备和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant