CN102365625B - 用于虚拟机的虚拟非一致存储器体系结构 - Google Patents
用于虚拟机的虚拟非一致存储器体系结构 Download PDFInfo
- Publication number
- CN102365625B CN102365625B CN2010800137790A CN201080013779A CN102365625B CN 102365625 B CN102365625 B CN 102365625B CN 2010800137790 A CN2010800137790 A CN 2010800137790A CN 201080013779 A CN201080013779 A CN 201080013779A CN 102365625 B CN102365625 B CN 102365625B
- Authority
- CN
- China
- Prior art keywords
- virtual
- numa node
- memory
- virtual numa
- computer system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/161—Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
-
- 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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
-
- 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/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
这里描述了用于实现对于虚拟机的虚拟NUMA体系结构、以及调节虚拟NUMA节点中的存储器的技术。
Description
背景技术
虚拟化技术考虑了在多个分区之间共享硬件资源,每个分区可以宿有(host)客户操作系统。通常,虚拟机技术可被使用来整合服务器和增加它们的可移植性。随着虚拟机变得越来越大且随着它们的工作负荷增加,轻松地整合它们和/或将它们从一个计算机系统迁移到另一个计算机系统的能力变得更加困难。因此,用于提高整合和/或迁移更大虚拟机的能力的技术是所希望的。
发明内容
本公开内容的示例性实施例描述了一种方法。在本例中,该方法包括,但不限于:接收对于实例化(instantiate)虚拟机的请求,所述请求包括用于虚拟机的特征;根据所述特征选择用于虚拟机的虚拟NUMA节点拓扑,该虚拟NUMA节点拓扑包括多个虚拟NUMA节点;在计算机系统上实例化该虚拟机,虚拟机包括多个虚拟NUMA节点;以及根据在该多个虚拟NUMA节点的特定虚拟NUMA节点中的存储器压力调节被指派给所述特定虚拟NUMA节点的客户存储器的量。除了上述的以外,在形成本公开内容的一部分的权利要求、附图和文本中描述了其它方面。
本公开内容的示例性实施例描述了一种方法。在本例中,该方法包括,但不限于:执行虚拟机,该虚拟机具有包括多个虚拟NUMA节点的拓扑,其中虚拟机的拓扑是与计算机系统的物理拓扑相独立地生成的;确定在该多个虚拟NUMA节点的每个虚拟NUMA节点中的存储器压力;以及根据在该多个虚拟NUMA节点的每个虚拟NUMA节点中的存储器压力,调节被指派给该多个虚拟NUMA节点的至少一个虚拟NUMA节点的客户存储器。除了上述的以外,在形成本公开内容的一部分的权利要求、附图和文本中描述了其它方面。
本公开内容的示例性实施例描述了一种方法。在本例中,该方法包括,但不限于:执行第一虚拟机,该虚拟机具有包括多个虚拟NUMA节点的拓扑,该多个虚拟NUMA节点的每个虚拟NUMA节点包括虚拟处理器和客户物理地址,其中虚拟机的拓扑是与计算机系统的物理拓扑相独立地生成的;以及将附加的虚拟处理器添加到该多个虚拟NUMA节点中的虚拟NUMA节点。除了上述的以外,在形成本公开内容的一部分的权利要求、附图和文本中描述了其它方面。
本领域技术人员可以意识到,本公开内容的一个或多个各种各样的方面可包括,但不限于:用于实现本公开内容的这里提到的诸方面的电路和/或编程;所述电路和/或编程可以实际上是被配置来根据系统设计者的设计选择而实现这里提到的诸方面的硬件、软件和/或固件的任何组合。
上述的内容是概要,因此必然包含细节的简化、一般化和省略。本领域技术人员应意识到,所述概要仅仅是说明性的,且无论如何不会被定为是限制性的。
附图说明
图1描绘其中可以实施本公开内容的诸方面的示例性计算机系统。
图2描绘用于实践本公开内容的诸方面的操作环境。
图3描绘用于实践本公开内容的诸方面的操作环境。
图4描绘在本公开内容的实施例中可以如何安排存储器。
图5描绘实践本公开内容的诸方面的示例性操作环境。
图6描绘实践本公开内容的诸方面的示例性操作环境。
图7描绘实践本公开内容的诸方面的示例性操作环境。
图8描绘图示本公开内容的诸方面的示例性框图。
图9描绘用于实践本公开内容的诸方面的操作程序。
图10描绘图9的操作程序的替换实施例。
图11描绘用于实践本公开内容的诸方面的操作程序。
图12描绘图11的操作程序的替换实施例。
图13描绘图12的操作程序的替换实施例。
图14描绘图12的操作程序的替换实施例。
图15描绘用于实践本公开内容的诸方面的操作程序。
图16描绘图15的操作程序的替换实施例。
图17描绘图16的操作程序的替换实施例。
具体实施方式
实施例可以在一个或多个计算机上执行。图1和以下的讨论用来提供对于在其中可以实施本公开内容的适当计算环境的概略的一般性描述。本领域技术人员可以意识到,图1的计算机系统在某些实施例中可以实现计算机系统200、300、600和700。在这些示例性实施例中,计算机系统可包括图1上描述的某些或所有的部件以及被配置成实例化本公开内容的诸方面的电路。
在本公开内容各处中使用的术语电路可包括硬件部件,诸如硬件中断控制器、硬驱动、网络适配器、图形处理器、基于硬件的视频/音频编解码器,以及被使用来操作这样的硬件的固件/软件。在相同的或其它的实施例中,术语电路可包括微处理器,其被配置成通过固件或以某种方式通过开关组(switch
set)而执行功能。在相同的或其它的示例性实施例中,术语电路可包括一个或多个逻辑处理器,例如多核通用处理单元的一个或多个核。在本例中,逻辑处理器可以通过软件指令而被配置,所述软件指令具体化能够运行来执行从存储器--例如RAM、ROM、固件和/或虚拟存储器--装载的功能的逻辑。在其中电路包括硬件和软件的组合的示例性实施例中,实施者可以编写具体化逻辑的源代码,其随后被汇编成可以由逻辑处理器处理的机器可读代码。由于本领域技术人员可以意识到现有技术水平已发展到在硬件、软件、或硬件/软件的组合之间几乎没有差别的程度,所以,对于实现功能来说,硬件相对(versus)软件的选择仅仅是一种设计选择。因此,由于本领域技术人员可以意识到,软件处理可以转换成等价的硬件结构、以及硬件结构本身也可以转换成等价的软件处理,所以硬件实现相对软件实现的选择是一种设计选择,并留给实施者处理。
现在参照图1,图上描绘示范性通用计算系统。通用计算系统可包括常规的计算机20等等,其包括逻辑处理器21、系统存储器22和系统总线23,系统总线23将包括系统存储器在内的各种系统部件耦合到逻辑处理器21。系统总线23可以是几种类型的总线结构的任何一种,所述总线结构包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中任何总线体系结构的本地总线。系统存储器可包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入输出系统26(BIOS)被存储在ROM 24中,其包含诸如在启动期间帮助在计算机20内的单元之间传送信息的基本例行程序。计算机20还可包括:硬盘驱动27,用于从硬盘(未示出)读出或向其写入;磁盘驱动28,用于从可拆卸磁盘29读出或向其写入;以及光盘驱动30,用于从可拆卸光盘31——诸如CD ROM或其它光学介质——读出或向其写入。硬盘驱动27、磁盘驱动28和光盘驱动30被显示为分别通过硬盘驱动接口32、磁盘驱动接口33和光盘驱动接口34而连接到系统总线23。驱动和它们的相关联的计算机可读存储介质提供计算机可读指令、数据结构、程序模块和用于计算机20的其它数据的非易失性存储。虽然这里描述的示范性环境采用硬盘、可拆卸磁盘29和可拆卸光盘31,但本领域技术人员应当意识到,可以存储计算机可访问数据的其它类型的计算机可读存储介质,诸如盒式磁带、快闪存储卡、数字视频盘、Bernoulli(伯努利)盒式磁带、随机存取存储器(RAM)、只读存储器(ROM)等等,也可以在本示范性操作环境下被使用。通常,在某些实施例中,这样的计算机可读存储介质可被使用来存储体现本公开内容的诸方面的处理器可执行指令。
在硬盘、磁盘29、光盘31、ROM 24或RAM 25上可以存储若干程序模块,包括操作系统35、一个或多个应用程序36、其他程序模块37和程序数据38。用户可以通过诸如键盘40和指示装置42之类的输入设备将命令和信息输入到计算机20。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄(game
pad)、碟型卫星天线、扫描器等等。这些和其它输入设备常常通过被耦合到系统总线的串行端口接口46而被连接到逻辑处理器21,但也可以通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其它接口被连接。显示器47或其它类型的显示设备也可以经由诸如视频适配器48之类的接口被连接到系统总线23。除了显示器47以外,计算机典型地包括诸如扬声器和打印机之类的其它外围输出设备(未示出)。图1的示范性系统还包括主机适配器55、小计算机系统接口(SCSI)总线56和被连接到SCSI总线56的外部存储装置62。
计算机20可以通过使用与一个或多个远程计算机——诸如远程计算机49——的逻辑连接而在联网的环境下运行。远程计算机49可以是另一个计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,且典型地可包括以上相对于计算机20描述的许多或所有的单元,虽然在图1上仅仅图示了存储器存储装置50。图1所描绘的逻辑连接可包括局域网(LAN)51和广域网(WAN)52。这样的联网环境在办公室、企业的广的计算机网络、内联网和互联网中是很平常的。
当在LAN联网环境下被使用时,计算机20可通过网络接口或适配器53被连接到LAN 51。当在WAN联网环境下被使用时,计算机20典型地可包括调制解调器54或用于建立在诸如互联网那样的广域网52上的通信的其它装置。调制解调器54--可以是内部的或外部的--可以经由串行端口接口46被连接到系统总线23。在联网的环境下,相对于计算机20描绘的程序模块或部分程序模块可被存储在远程存储器存储装置中。应意识到,所显示的网络连接是示范性的,以及可以使用在计算机之间建立通信链路的其它手段。而且,虽然设想本公开内容的许多实施例特别适合于计算机化的系统,但本文档中没有什么要被确定为将公开内容限制于这样的实施例。
现在参照图2和3,它们描绘计算机系统的高级别框图。如图所示,计算机系统200可包括物理的硬件设备,诸如举例而言硬驱动的存储装置208、网络接口控制器(NIC)210、图形卡234、至少一个逻辑处理器212和随机存取存储器(RAM)214。计算机系统200还可包括与图1的计算机20类似的部件。虽然只图示了一个逻辑处理器,但在其他实施例中,计算机系统200可以具有多个逻辑处理器,例如每个处理器多个执行核,和/或多个处理器,可以每个具有多个执行核。继续图2的说明,图上描绘了超级监视器(hypervisor)202,在本领域中它也可以被称为虚拟机监视器。在所描绘的实施例中,超级监视器202包括可执行指令,用于控制和仲裁对于计算机系统200的硬件的接入。广义地,超级监视器202可以生成被称为分区的执行环境,诸如子分区1到子分区N(其中N是大于1的整数)。在实施例中,子分区可被认为是由超级监视器202支持的隔离(isolation)的基本单元,也就是,每个子分区可被映射到一组硬件资源,例如存储器、设备、逻辑处理器循环等,其处在超级监视器202和/或母分区的控制下。在实施例中,超级监视器202可以是独立的软件产品、操作系统的一部分、被嵌入在母板的固件内、专用的集成电路或它们的组合。
在描绘的例子中,计算机系统200包括母分区204,它也可以被认为是在开放源社区(open source community)中的域0。母分区204可被配置成通过使用虚拟化服务提供器228(VSP)--它们在开放源社区中也被称为后端驱动器--而提供资源给在子分区1-N中执行的客户操作系统。在这个示例性体系结构中,母分区204可以选通接入(gate access)到底层的(underlying)硬件。广义地,VSP 228可被使用来通过虚拟化服务客户机(VSC)--它们在开放源社区中也被称为前端驱动器--使接口对硬件资源复用。每个子分区可包括一个或多个虚拟处理器,诸如客户操作系统220到222可管理和调度线程来在其上执行的虚拟处理器230到232。通常,虚拟处理器230到232是可执行的指令和相关联的状态信息,其提供了具有特定体系结构的物理处理器的表示。例如,一个虚拟机可以具有虚拟处理器,其具有Intel
x86处理器的特征,而另一个虚拟处理器可具有PowerPC处理器的特征。在本例中,虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟处理器的指令将由逻辑处理器进行支持(back)。因此,在这些示例性实施例中,多个虚拟处理器可以同时在执行,而例如另一个逻辑处理器正在执行超级监视器指令。一般地说,且正如附图所例示的,在分区中的虚拟处理器、各种VSC和存储器的组合可被看作为虚拟机,诸如虚拟机240或242。
通常,客户操作系统220到222可包括任何操作系统,诸如举例而言来自Microsoft®、Apple®、开放源社区等等的操作系统。客户操作系统可包括操作的用户/内核模式,且可以具有内核,该内核可包括调度器、存储器管理器等等。每个客户操作系统220到222可以具有相关联的文件系统和客户操作系统本身,文件系统可以具有存储在其上的应用,诸如电子商务服务器、电子邮件服务器等等。客户操作系统220-222可以调度线程来在虚拟处理器230-232上执行,且这样的应用的实例可以被实现。
现在参照图3,图上图示可被使用的替换的体系结构。图3描绘与图2的那些部件类似的部件,然而,在本示例性实施例中,超级监视器202可包括虚拟化服务提供器228和设备驱动器224,以及母分区204可包含配置实用程序236。在这个体系结构中,超级监视器202可以执行与图2的超级监视器202相同的或类似的功能。图3的超级监视器202可以是独立的软件产品、操作系统的一部分、被嵌入在母板的固件内,或者超级监视器202的一部分可以由专用集成电路实现。在本例中,母分区204可以具有可被使用来配置超级监视器202的指令,然而,硬件接入请求可以由超级监视器202处理,而不是被传递到母分区204。
现在参照图4,图上图示在包括虚拟机的实施例中存储器可以如何安排。例如,诸如计算机系统200那样的计算机系统可以具有带有存储器地址的RAM 214。代替将系统物理存储器地址报告给虚拟机,超级监视器202可以将对于该系统物理地址不同的地址——例如客户物理地址(GPA)——呈递给客户操作系统的存储器管理器。客户操作系统然后可以操控客户物理地址,以及超级监视器202保持由GPA和SPA产生的关系。如图所示,在实施例中,GPA和SPA可被安排在存储区中。广义地,存储区可以包括存储器的一页或多页。在GPA与SPA之间的关系可以通过影子页表(shadow page table)被保持,诸如,在标题为“Enhanced
Shadow Page Table Algorithms”的共同转让的美国专利申请No.11/128,665中描述的那些,该专利申请的内容通过引用的方式整体地合并到此处。在运行时,当客户操作系统将数据存储在块1的GPA中时,该数据实际上可被存储在系统上的不同SPA中,诸如块6。
概略地,图5描绘用于实践本公开内容的诸方面的操作环境。例如,若干计算机系统504-510可以在数据中心500处被耦合在一起(虽然只描绘了四个计算机系统,但本领域技术人员可以意识到,数据中心500可包括更多或更少的计算机系统)。所描绘的计算机系统可以具有不同的拓扑,而且,它们可以具有不同的特征,例如,不同的RAM的量、不同的RAM速度、不同的逻辑处理器的量和/或具有不同速度的逻辑处理器。
管理系统502可以具有类似于图1的计算机系统20和/或计算机系统200、300、600或700的部件。也就是,在实施例中,管理系统502可以是包括下面相对于图6或图7描述的主题的计算机系统。
继续进行附图的总体概述,图6描绘具有对称的多重处理(multiprocessing)拓扑(SMP)或‘平的(flat)’拓扑的计算机系统600。通常,SMP是包括被连接到单个共享存储器的多个处理器的计算机体系结构。在这种安排下,存储器控制器602可以管理去往和来自存储器的数据的流。存储器访问相对于每个逻辑处理器212A-F可以是一致的(uniform),且每个逻辑处理器可以访问全部范围的存储器,即,系统物理地址622-632。这个拓扑对于具有相对较小数目的处理器的计算机系统适用,但当计算机系统包括许多处理器,全部都竞争对共享的存储器总线的访问时,系统的性能会降低。而且,计算机系统的复杂性大大地增加,这进而又驱使按每个处理器计的价格上升。
概略地,计算机系统600可包括与计算机系统200或300相同的或类似的部件。如图所示,计算机系统600可以具有经由选通访问RAM 214的存储器控制器602而被耦合在一起的多个逻辑处理器212A-212F(虽然描绘了六个逻辑处理器,但计算机系统可以具有更多或更少的逻辑处理器)。类似于以上描述的,每个逻辑处理器212A-212F可以具有不同的特征,例如,时钟速度、高速缓冲存储器尺寸等等。在这种安排下,存储器控制器602可以管理去往和来自RAM 214的数据的流。
超级监视器202可以被实例化,并且它可以控制计算机系统600的硬件。超级监视器202可以管理一个或多个虚拟机240到242,每个可具有虚拟NUMA节点,诸如虚拟NUMA节点606-612。虚拟NUMA节点606-612可被使用来通过将虚拟拓扑报告到客户应用或客户操作系统(诸如客户操作系统220和222)而组织虚拟机的资源。如图所示,每个虚拟NUMA节点606-612可以具有一个或多个虚拟处理器230A-D、232A-D和客户物理地址614-616和618-620。通常,超级监视器202可以用一个或多个逻辑处理器和来自RAM 214的系统物理地址对每个虚拟NUMA节点606-612进行支持。也就是,超级监视器202可以设置一个或多个逻辑处理器作为概念处理器(idea processor),它们可被使用来运行虚拟处理器线程。
概略地,图7描绘具有包括NUMA节点702-706的拓扑的计算机系统700。具有NUMA节点的计算机系统通常可被认为是由较小的计算机系统组成的计算机。在本例中,每个NUMA节点606-612可包括一个或多个逻辑处理器和本地存储器。在NUMA 节点里面的存储器被认为是本地存储器,在其它NUMA节点中的存储器被认为是远程存储器,因为只有在该NUMA 节点里面的存储器才被连接到相同的存储器总线。NUMA节点通过高速缓冲存储器一致性(cache
coherency)域互连而被相互连接,其允许在一个NUMA节点中的处理器以一致的方式访问在其它NUMA节点中的存储器。因此,系统物理地址622-632相对于每个处理器是一致的。或换一种说法,系统物理地址20,000对于在计算机系统中的每个处理器是相同的。差别在于,对于某些处理器,存储器地址20,000是本地存储器地址,例如在它们的NUMA节点里面,而对于其它处理器,存储器地址20,000是远程的,例如在它们的NUMA节点外面。通常,本地存储器可以比远程存储器更快地访问,以及在本地相对远程访问时间之间的关系被称为NUMA比率。1比2的NUMA比率意味着,与访问本地系统物理地址相比,访问特定的远程系统物理地址要花费两倍的处理器循环。NUMA通过限制在任一个存储器总线上的处理器数目而减轻由SMP系统造成的瓶颈,且通常没有具有相同量的逻辑处理器的SMP计算机系统那么昂贵。
计算机系统700可包括与计算机200或300相同的或类似的部件。如图所示,在这个操作环境下,计算机系统700包括由互连708连接的三个NUMA节点702-706(虽然计算机可以具有更多或更少的NUMA节点)。如图所例示的,在每个NUMA节点内的处理器的数目可以是可变的,以及每个节点可以具有它自己的RAM。
类似于图7,超级监视器202可以控制计算机系统700的硬件。当客户操作系统或单片(monolithic)应用引导时,它们可以检测虚拟机240和242的拓扑,类似于以上描述的。每个虚拟NUMA节点606-612可被指派以来自可被用来运行虚拟处理器的线程的同一个NUMA节点的一个或多个理想处理器(ideal
processor)和系统物理地址。
虽然计算机系统600和700被描绘为包括两个虚拟机240和242,但在其他实施例中,它们可以执行更多或更少的虚拟机。而且,虽然每个虚拟机被描绘为具有两个虚拟NUMA节点,但在其他实施例中,虚拟机可以具有更多或更少的虚拟NUMA节点。另外,虽然虚拟NUMA节点被描绘为具有两个虚拟处理器,但在其他实施例中,虚拟NUM节点可以具有更多或更少的虚拟处理器。此外每个虚拟NUMA节点可以具有与其它虚拟NUMA节点不同的拓扑,例如,一个虚拟NUMA节点可以具有4个虚拟处理器和8G字节的RAM,而另一个虚拟NUMA节点可以具有2个虚拟处理器和4G字节的RAM。
图8描绘可被使用于本公开内容的诸方面的环境的框图。如图所示,图示了管理被指派给虚拟机的存储器的部件,该虚拟机可被称为动态存储器虚拟化服务提供器802(DMVSP),且该部件可被使用来调节虚拟NUMA节点可访问的存储器的量。如图所示,DMVSP 820可以与可被称为虚拟化服务客户机--即,动态存储器虚拟化服务客户机804和/或806(DMVSC)--的一个或多个气球膨胀驱动器(ballooning
driver)相关联(虽然描绘了每个虚拟NUMA节点一个DMVSC,但在其它实施例中,可以使用每个分区一个DMVSC)。广义地,DMVSC 804和/或806可以提供可被DMVSP 802使用来调节虚拟NUMA节点的存储器的信息,以及每个DMVSC也可以帮助调拨(commit)和回收(de-commit)来自与其相关联的虚拟NUMA节点的存储器。DMVSC 804、806和DMVSP 802可以借助于在标题为“Partition Bus”的美国专利申请No.11/128,647中描述的虚拟化总线进行通信,该专利申请的内容通过引用的方式整体地合并到此处。另外,DMVSC和DMVSP的另外的方面在标题为“Dynamic Virtual
Machine Memory Management”的美国专利申请No.12/345,469中描述,该专利申请的内容通过引用的方式整体地合并到此处。
继续进行图8的说明,描绘了可包括可以管理子分区的工作者进程(worker
process)812。工作者进程812可以结合可分配存储器给子分区的虚拟化基础结构驱动器810(VID)一起工作。例如,VID 810可以建立和除去在客户物理地址与系统物理地址之间的关系。图8还描绘了可包括诸如客户操作系统220的客户操作系统的分区,所述客户操作系统可包括存储器管理器808。通常,存储器管理器808可以应应用的请求来分配存储器给应用,以及当应用不再需要存储器时释放存储器。
以下是描绘进程的实现的一系列流程图。为了易于理解起见,流程图被组织成使得初始流程图经由总体“大图片(big picture)”视点给出实现,且随后的流程图提供另外的补充和/或细节。而且,本领域技术人员将会意识到,用虚线画出的操作程序被认为是可选的。
现在转到图9,图上描绘了包括操作900-910的、用于实践本公开内容的诸方面的操作程序。操作程序从操作900开始,且操作902图示接收对于实例化虚拟机的请求,该请求包括用于该虚拟机的特征。例如,并参照图6或7,超级监视器202可以接收对于创建虚拟机——诸如虚拟机240——的请求。例如,所述请求可以从管理系统502、图2或3的母分区204等等被接收。所述请求可以是对于新的虚拟机的请求,或者它可以是对于实例化以前保存的虚拟机的请求。当虚拟机240是新的虚拟机时,虚拟机的特征,例如被指派给虚拟机的RAM的量、虚拟处理器的数目、或虚拟机应当具有什么类型的I/O设备,可以由例如管理员设置。
继续进行图9的描述,操作904显示:根据特征选择用于该虚拟机的虚拟NUMA节点拓扑,虚拟NUMA节点拓扑包括多个虚拟NUMA节点。例如,在母分区204(和/或超级监视器202)中的进程可以根据所接收的特征来确定用于虚拟机240的拓扑。例如,母分区204可包括标识用于诸如虚拟NUMA节点606那样的虚拟NUMA节点的缺省尺寸的信息。在母分区204中的进程可以使用描述该缺省尺寸和想要的特征的信息来确定用于虚拟机240的虚拟NUMA的数目。在特定的例子中,想要的特征可以是具有10G字节的RAM的6处理器虚拟机。如果虚拟NUMA节点的缺省尺寸包括2个虚拟处理器和4G字节的RAM,则管理系统502可以生成指示虚拟机240将包括3个虚拟NUMA节点的配置文件。
在实施例中,缺省虚拟NUMA节点尺寸可以由管理员或由管理系统502设置。转到图5,管理系统502可以执行一个或多个程序,其可以获得标识在数据中心500中的计算机系统504-510的物理拓扑的信息,例如,标识每个计算机系统504-510具有多少NUMA节点(如果有的话)、每个计算机系统504-510具有多少RAM、RAM的速度、RAM被如何安排、处理器速度、每个处理器具有多少核等等的信息。
通常,虚拟NUMA节点的尺寸影响数据中心500中的虚拟机的操作。例如,随着虚拟NUMA节点例如在存储器和/或处理器方面的尺寸增加,虚拟NUMA节点的可移植性减小。换句话说,大的虚拟NUMA节点可能使得迁移虚拟机更困难。出现这种情况是因为虚拟NUMA节点需要被指派到具有足够的‘平的’资源来实现虚拟NUMA节点的计算机系统或NUMA节点。如果例如虚拟NUMA节点太大,例如,它具有太多的RAM或太多的虚拟处理器,则它不能适应于数据中心500的较小的NUMA节点,因此限制了迁移虚拟机的能力。另外,如果较大的虚拟NUMA节点被简单地指派到多个较小的NUMA节点,则由于在本地存储器与远程存储器访问时间之间存在的差别,虚拟机的性能将降低。
另一方面,随着虚拟NUMA节点的尺寸减小,客户操作系统的性能可能受到不利的影响。这个低效率可能会出现,因为客户操作系统将试图分离(segregate)应用和它自己对单个虚拟NUMA节点的执行。客户操作系统在这种情形下将受到限制,并且性能将降低。
因此,在实施例中,管理系统502可以通过确定对于数据中心500的最佳虚拟NUMA节点尺寸,而在可移植性与效率之间权衡利弊。例如,在实施例中,管理系统502的逻辑处理器可以执行程序且确定数据中心中的NUMA节点的平均尺寸,例如,逻辑处理器的平均数目、RAM的平均量等等,并将虚拟NUMA节点的尺寸设置为与系统中的平均NUMA节点相同或小于系统中的平均NUMA节点。在另一个实施例中,程序可被配置成:将虚拟NUMA节点的尺寸设置为稍微小于数据中心500中的最小的NUMA节点。在实施例中,虚拟NUMA节点的尺寸可被设置为稍微小于平均尺寸或最小的尺寸,以使得如果计算机系统变为大量地调拨,则一个以上的虚拟NUMA节点可被指派到单个NUMA节点。在特定的例子中,如果最小的NUMA节点具有4个逻辑处理器和8G字节的RAM,则虚拟NUMA节点的尺寸可被设置为例如2个虚拟处理器和4G字节的RAM。
操作906显示在计算机系统上实例化该虚拟机,虚拟机包括多个虚拟NUMA节点。在实施例中,超级监视器202可以由逻辑处理器执行,以及具有多个虚拟NUMA节点的虚拟机可以被实例化。例如,并参照图6和/或图7,具有虚拟NUMA节点606-608的虚拟机240可以由计算机系统600或700来实现。也就是,VID 810可以用来自RAM的系统物理地址对虚拟机240的客户物理地址进行支持,以及用一个或多个逻辑处理器对虚拟处理器进行支持。例如,客户物理地址块614可以用系统物理地址块622进行支持,以及客户物理地址块616可以用系统物理地址块624进行支持。超级监视器线程然后可以在对虚拟处理器进行支持的逻辑处理器上被调度,以及可以执行指示虚拟处理器的指令。如图6和图7所示,每个虚拟机的拓扑可以与底层硬件的拓扑相独立地被创建。也就是,每个虚拟机的拓扑是与实现它的计算机系统的底层物理拓扑相分离的。
在实施例中,虚拟机BIOS或引导固件可以向单片应用的客户操作系统描述虚拟机的拓扑,例如,它是否具有虚拟NUMA节点,任何虚拟NUMA节点的尺寸,以及对于虚拟NUMA节点的NUMA比率。数据结构可以被处理并且客户OS
220或应用以及它可以被所述OS或应用使用以利用虚拟NUMA节点的存在。例如,客户操作系统220可以试图将不是NUMA感知(NUMA aware)的应用的线程与虚拟NUMA节点建立亲缘关系(affinitize),以使得应用的执行保持为本地的。在另一个例子中,数据库管理程序,诸如SQL服务器,可以分配对于虚拟NUMA节点而言是本地的锁,并且数据库可以跨多个虚拟NUMA节点上来分解读/写请求。在再一个例子中,客户操作系统220可以创建用于虚拟机中的每个虚拟NUMA节点的页池(page pool)。
继续进行图9的说明,操作908显示:根据在多个虚拟NUMA节点的特定虚拟NUMA节点中的存储器压力来调节被指派给该特定虚拟NUMA节点的客户存储器的量。例如,逻辑处理器,举例而言图6或7的逻辑处理器212A,可以执行指示DMVSP 802的指令,并且可以调节诸如虚拟NUMA节点606那样的虚拟NUMA节点可得到的客户物理地址的量。也就是,可以执行DMVSP
802,并且可以根据虚拟NUMA节点正经受的压力而调拨或回收存储器。
在实施例中,存储器压力可以标识客户操作系统220的性能如何受每个虚拟NUMA节点606-608可得到的存储器的量影响。这个信息可以在客户操作系统220的运行时期间由例如像DMVSC 804和/或806那样的DMVSC进行计算,并被发送到DMVSP 802。例如,存储器压力可以由一系列值来代表,所述值可以标识在虚拟NUMA节点中不同的存储器压力水平。随着虚拟NUMA节点中的资源变得压力更大,即,随着对于有效执行在虚拟NUMA节点上的当前工作负荷所需要的存储器量增加,DMVSC 804可以修订所述值,并把这个信息传送到DMVSP
802。
在实施例中,存储器压力信息可以由DMVSC 804从接收自客户操作系统220的信息进行计算。例如,DMVSC
804可被配置成:从存储器管理器808接收对于虚拟NUMA节点606的操作系统分页信息。客户操作系统分页速率可以通过由存储器管理器808和高速缓冲存储器管理器暴露(expose)的两个计数器来监视,即,分页速率和高速缓冲存储器旋转速率。
在同一个或另一个实施例中,DMVSC 804可以接收来自存储器管理器808的、与虚拟NUMA节点606相关联的物理存储器通知,并使用这个信息来计算虚拟NUMA节点606的存储器压力。例如,存储器管理器808可以根据与虚拟NUMA节点606相关联的客户操作系统220中的活动,来输出高存储量通知和低存储量通知。存储器管理器808可以根据低存储量阈值(LMT)和高存储量阈值(HMT)来触发这些通知。在特定的示例性实施例中,以信号告知低存储量资源通知事件的可得到存储器的缺省水平可以是每4GB大约32MB,到64MB的最大值。以信号告知高存储量资源通知事件的缺省水平,例如,可以是缺省的低存储量值的三倍。在这二者之间的中间存储器可用性水平可以通过在高存储量阈值和低存储量阈值水平之间划分出间隔而被确定。本领域技术人员可以意识到,这些值是示范性,并且可以作出改变而不背离本公开内容的精神。
这些通知,连同其它的一起,可以被DMVSC 804使用来计算虚拟NUMA节点606的存储器压力。例如,每个水平可以与例如0-4的一个值相关联,以及如果考虑任何其它性能计数器,那么它们也可以与值相关联。用于每个性能计数器的值然后可被使用来计算虚拟NUMA节点606的当前的存储器压力。在特定的例子中,存储器压力可以通过取性能计数器值的较高或较低的值而进行计算。在另一个例子中,性能计数器的平均值可被用作为存储器压力。在再一个实施例中,可以使用更精巧的算法来计算存储器压力,它考虑了先前的性能计数器值,并给每个性能计数器指派一个标量以影响它在计算中的相对权重。
当作出调拨存储器的决定时,DMVSP 802可以使用各种各样的技术,其中的一个技术是热添加(hot-add)操作。例如,某些操作系统可以支持热添加,这允许成系列的物理存储器被添加到正运行的操作系统而不需要系统重新引导。也就是,存储器管理器808可被配置成支持将存储器动态添加到正运行的系统。在热添加环境下,DMVSC
804可被配置成:接入存储器管理器808的热添加接口,以及DMVSC
804可以将描述热添加的GPA和它们与哪个虚拟NUMA节点相关联的消息发送到客户操作系统220。存储器管理器808然后可以使得新的存储器对于客户操作系统220、驱动器、应用、或正在虚拟NUMA节点606上运行的任何其它进程是可得到的。例如,在VID
810生成在GPA与SPA之间的关系后,DMVSC 804可以接收来自DMVSP 802的热添加的存储器地址。
同样地,热去除(hot-remove)操作可被使用来从诸如虚拟NUMA节点606那样的虚拟NUMA节点中回收存储器地址。例如,DMVSC 804可以将指示存储器已被热去除的消息发送到客户操作系统220。DMVSC 804可以请求:存储器管理器808提供来自虚拟NUMA节点606的GPA块以便去除。在本例中,DMVSC 804然后可以调用存储器管理器808的去除API,并从客户操作系统220中去除GPA。在使用热去除的实施例中,被去除的存储器没有不利于(count against)客户当前的调拨,以及存储器管理器808可以使用由操作系统用来去除从母板上被物理地去除的存储器的类似技术,来调节它的内部计数器。
在另一个实施例中,可以通过使用气球膨胀(Ballooning)技术而将存储器回收到虚拟NUMA节点。也就是,存储器可以通过使虚拟NUMA节点606中的客户物理地址与对它们进行支持的物理地址解除关联(dissociate)而被回收。例如,逻辑处理器212B可以执行指示DMVSC 804的指令,并且可以将请求存储器管理器808保留一定量的存储器--例如一个或多个存储区--供DMVSC 804使用的消息发送到存储器管理器808。存储器管理器808可以锁定存储器来供在DMVSC 804内的专有使用,以及DMVSC 804可以发送存储器的GPA到DMVSP 802。在本例中,DMVSP 802可以发送GPA到VID 810,以及VID 810可以在影子页表中去除用于这些GPA到SPA的条目。在本例中,存储器管理器808可包括标识GPA仍旧有效的信息,然而,实际上GPA不再由系统物理地址进行支持。在本例中,存储器管理器808将不使用锁定的GPA,以及对它们进行支持的SPA可被重新分配。
已经解除关联的客户物理地址可以与物理地址重新关联。在本例中,对于调拨存储页面的请求可以由VID 810接收,以及VID 810可以获得SPA以满足该请求,并把地址范围发送到DMVSP 802。在实施例中,VID
810可被配置成获得邻接范围的SPA,以便提高系统效率。在本例中,VID 810可以确定:客户操作系统220具有被锁定以供与虚拟NUMA节点606相关联的DMVSC 804专有使用的GPA。VID 810可以创建在被锁定的GPA与SPA之间的关系,并发送消息到DMVSP 802。DMVSP 802然后可以发送消息到DMVSC 804,以及DMVSC 804可以发送消息给存储器管理器808,指示GPA可被解锁并被归还到与虚拟NUMA节点606相关联的存储器管理器808的存储器池。
在实施例中,VID 810可以根据GPA是否气球般膨胀,而确定是使用热添加技术还是使用气球膨胀技术。例如,当VID 810接收SPA以调拨给虚拟NUMA节点606时,它可以确定是否有任何GPA被DMVSC 804锁定。在有GPA被锁定的情形下,VID 810可以在它热添加存储器之前用SPA对它们进行支持。在存储器被调拨给虚拟NUMA节点606之前,它可以被置零(zero),以及它的相关联的高速缓冲存储器线为了安全原因可被清洗。通过使存储器置零,先前与一个分区相关联的存储器的内容不泄漏到另一个分区。
现在转到图10,图上描绘图9的操作程序的替换实施例,其包括附加的操作1010-1020。操作1010显示:确定在多个虚拟NUMA节点的第二虚拟NUMA节点中的存储器压力大于预定值;以及将第二虚拟NUMA节点迁移到计算机系统的第二NUMA节点。例如,且转到图7,在实施例中,在第二虚拟NUMA节点608中的存储器压力可以增加。也就是,指示存储器压力的值可以由DMVSP
802接收,其指示虚拟NUMA节点608压力过大。在本例中,虚拟机240或个体虚拟NUMA节点608可以具有目标压力值,以及当前的压力值可能比管理员设置的目标值大。目标压力值可被存储在可由DMVSP
802访问的数据结构中。然后可以接收运行的虚拟机或虚拟NUMA节点的当前压力值。DMVSP 802可以连续地步进通过(step through)运行的虚拟机或虚拟NUMA节点的列表,并调拨存储器以便把存储器压力值减小到目标值,以及回收存储器以便把压力增加到目标值。
在例子中,DMVSP 802可被配置成:确定当前宿有虚拟NUMA节点606和608的NUMA节点,例如NUMA节点702,不能分配足够的存储器以便获得用于这两个虚拟NUMA节点的目标存储器压力值。在本例中,DMVSP 802可被配置成:发送信号到超级监视器202,以及超级监视器202可被配置成企图将虚拟NUMA节点之一移出NUMA节点702。超级监视器202可以检查NUMA节点702-706的当前的工作负荷,并确定:例如NUMA节点704可以宿有该虚拟NUMA节点,并分配足够的资源给它以便将存储器压力减小到目标值。在本例中,超级监视器202可被配置成重新指派虚拟NUMA节点608给NUMA节点704。也就是,超级监视器202,与VID 810相结合地,可以将客户物理地址616重新映射到系统物理地址714,以及把逻辑处理器212E和F设置为用于虚拟处理器230C和D的理想处理器。
继续进行图10的说明,操作1012图示:从特定的虚拟NUMA节点回收客户存储器的至少一个存储区;以及将客户存储器的被回收的该至少一个存储区调拨给第二虚拟NUMA节点。例如,DMVSP 802可被配置成:从例如虚拟NUMA节点606回收存储器,以及将该存储器调拨给虚拟NUMA节点608。在本例中,虚拟NUMA节点606和608可以用单个NUMA节点或‘平的’体系结构进行支持。在本示例性实施例中,当例如没有可被调拨给虚拟NUMA节点608的可用存储器可得到时,DMVSP 802可以尝试从虚拟NUMA节点606释放存储器。在另一个例子中,DMVSP 802可被配置成:从例如虚拟NUMA节点610回收存储器,并把该存储器调拨给虚拟NUMA节点608。也就是,可以从一个虚拟机取来存储器,并将它给予另一个虚拟机。
在特定的例子中,并参照图6,虚拟NUMA节点606和608可被映射到计算机系统600的资源。在本例中,DMVSP 802可以检查其它虚拟NUMA节点,例如按照存储器优先权的次序,例如,从虚拟机240中的低优先权虚拟NUMA节点开始,或从最低优先权虚拟机开始。如果例如检测到一个虚拟NUMA节点,诸如虚拟NUMA节点606,具有小于目标阈值的存储器压力值,则DMVSP 802可以发起存储器回收,并从虚拟NUMA节点606中去除存储器。在回收完成后,可以发起调拨操作,以及存储器可被热添加到虚拟NUMA节点608,或者气球般膨胀的客户物理地址可以与系统物理地址重新关联。
在特定的例子中,且参照图7,DMVSP 802可以例如以存储器优先权的次序检查由相同的NUMA节点702进行支持的其它虚拟NUMA节点。如果例如在与虚拟NUMA节点608相同的NUMA节点上的虚拟NUMA节点被检测到具有小于目标阈值的存储器压力值,则DMVSP
802可以发起存储器回收。在回收完成后,可以发起调拨操作,以及存储器可被热添加到虚拟NUMA节点608,或者气球般膨胀的客户物理地址可以与系统物理地址重新关联。
继续进行图10的说明,操作1014描绘:确定特定的虚拟NUMA节点的客户存储器的至少一个存储区与系统存储器解除关联;以及将客户存储器的该至少一个存储区映射到系统存储器的至少一个存储区上。例如,在实施例中,DMVSP 802可以由逻辑处理器执行,以及可以作出决定来用SPA 624对虚拟NUMA节点606中的GPA进行支持。例如,GPA可以由DMVSC 804保留,以及SPA可以被重新分配给另一个虚拟NUMA节点或母分区204。在本例中,对于调拨存储页面的请求可以被VID
810接收,以及VID 810可以获得SPA以满足该请求,并发送地址范围到DMVSP 802。在实施例中,VID
810可被配置成获得邻接范围的SPA,以便提高系统效率。在NUMA实施例中,VID 810可被配置成从正在运行虚拟NUMA节点606的相同的NUMA节点获得邻接范围的SPA。VID 810可以创建在锁定的GPA与SPA之间的关系,并发送消息到DMVSP 802。DMVSP 802然后可以发送消息到DMVSC 804,以及DMVSC 804可以发送消息给存储器管理器808,指示GPA可被解锁并被归还到与虚拟NUMA节点606相关联的存储器池。
继续进行图10的说明,操作1016图示:将特定的虚拟NUMA节点映射到计算机系统的第一NUMA节点上;以及将该特定的虚拟NUMA节点迁移到计算机系统的第二NUMA节点上。例如,并参照图7,客户操作系统220可被散布在至少两个NUMA节点上,诸如NUMA节点702和704。例如,并参照图7,超级监视器202可以调度虚拟NUMA节点606和608在NUMA节点702上运行。在本例中,超级监视器202可以接收指示NUMA节点702压力过大的信号。例如,客户操作系统220可以生成指示虚拟NUMA节点606和608在存储量方面较低的信号。在本例中,超级监视器202可被配置成:通过将虚拟NUMA节点608移出NUMA节点702 ,而减小在压力过大的NUMA节点上的工作负荷。
继续进行图10的说明,操作1018图示:将虚拟处理器添加到特定的虚拟NUMA节点。例如,在实施例中,可以在虚拟机240的运行时执行期间,通过使用例如处理器热添加操作而添加虚拟处理器,诸如虚拟处理器230B。也就是,虚拟NUMA节点606可以在一个点只有单个虚拟处理器230A,然后添加另一个。在实施例中,可以把新添加的处理器指派给对虚拟处理器230A进行支持的处理器,或者可以把另一个逻辑处理器分配来运行虚拟处理器230B线程。在NUMA实施例中,如果另一个逻辑处理器正在被使用来支持虚拟处理器230B,则它可以从正在支持虚拟NUMA节点606中的另外虚拟处理器的同一个NUMA节点702被分配。
继续进行图10的说明,操作1020图示:接收对于执行虚拟机的虚拟处理器的请求,虚拟处理器被指派给逻辑处理器,逻辑处理器被指派给NUMA节点,以及虚拟处理器被指派给虚拟NUMA节点;确定逻辑处理器不能执行该虚拟处理器;以及选择第二逻辑处理器来执行该虚拟处理器,第二逻辑处理器来自第二NUMA节点。例如,并参照图7,在实施例中,超级监视器202可以从虚拟处理器230A接收对于执行虚拟处理器线程的请求,并尝试在概念处理器212A上,例如在支持虚拟处理器230A的处理器上调度该线程。在本例中,超级监视器202可以检测逻辑处理器212A被过量调拨,从而不能执行该虚拟处理器线程。在这种情形下,可以执行超级监视器202,且它可以选择另一个逻辑处理器来执行该虚拟处理器线程。例如,超级监视器202可以尝试选择在同一个NUMA节点上的不同的逻辑处理器。如果例如NUMA节点被过量调拨,则超级监视器202可被配置成:选择远程处理器来执行虚拟处理器230A,例如,逻辑处理器212E。在本例中,关于是等待还是在远程节点上调度线程的决定,可以通过使用与NUMA节点704相关联的NUMA比率而做出。如果NUMA比率是低的,并且预期的对理想处理器的等待较长,则可以做出在远程节点上调度线程的决定。另一方面,如果NUMA比率是高的并且预期的等待时间较低,则可以做出等待的决定。
现在转到图11,图上描绘包括操作1100、1102、1104和1106的用于实践本公开内容的诸方面的操作程序。操作1100开始该操作程序,以及操作1102显示执行虚拟机,虚拟机具有包括多个虚拟NUMA节点的拓扑,其中虚拟机的拓扑是与计算机系统的物理拓扑相独立地生成的。例如,超级监视器202可以执行具有多个虚拟NUMA节点的虚拟机。如图6所示,可以创建包括虚拟NUMA节点606和608的虚拟机240。虚拟NUMA节点每个可以具有一个或多个虚拟处理器230A-D和客户物理地址614和616。在本实施例中,虚拟NUMA节点606和608可以与底层硬件的拓扑相独立地被创建。也就是,虚拟机的拓扑是与诸如由图6和图7所描绘的底层硬件无关的。因此,在本实施例中,每个虚拟机的拓扑是与实现它的计算机系统的底层物理拓扑相分离的。
继续进行图11的说明,操作1104图示:确定在多个虚拟NUMA节点的每个虚拟NUMA节点中的存储器压力。例如,并参照图8,每个虚拟NUMA节点606和608的存储器压力可以被获得,例如被生成和/或被接收。存储器压力信息可以标识客户的性能如何受每个虚拟NUMA节点606-608
可得到的存储器的量影响。这个信息可以在客户操作系统220的运行时期间例如由诸如DMVSC 804和/或806那样的一个或多个DMVSC进行计算,并被发送到DMVSP 802。也就是,在特定的实施例中,逻辑处理器可以执行指示DMVSC
804或806的指令,并且为每个虚拟NUMA节点生成存储器压力信息。这个信息然后可被发送到例如DMVSP 802。
在示例性实施例中,存储器压力信息可包括范围从0到4的一系列值,且每个值可以标识由于虚拟NUMA节点606-608的资源引起的客户OS正在经受的不同的存储器压力水平。随着客户操作系统变得压力更大,即,随着对于有效执行当前工作负荷所需要的存储器量增加,DMVSC
804和806可以修订它们的值,并把这个信息传送到DMVSP
802。
继续进行图11的说明,操作1106显示:根据在多个虚拟NUMA节点的每个虚拟NUMA节点中的存储器压力,调节被指派给多个虚拟NUMA节点中的至少一个虚拟NUMA节点的客户存储器。在包括操作1206的实施例中,逻辑处理器212A可以执行指示DMVSP 802的指令,以及可以调节例如在虚拟NUMA节点606中的客户物理地址的量。也就是,DMVSP 802可以根据在虚拟NUMA节点606中的存储器压力而调拨或回收处理器,例如,如果被分配给虚拟NUMA节点606的进程压力过大,则可以调拨存储器。
在实施例中,当由DMVSP 802配置的逻辑处理器212确定调拨或回收存储器时,它可以以每个存储区为基础做到这一点。例如,DMVSP 802可以调拨/回收存储区,并检查存储器状态如何改变。如果存储器状态没有改变,则DMVSP
802可以调拨/回收另一个存储区。
现在转到图12,图上描绘图11的操作程序1100的替换实施例,其包括操作1208-1216。如图所示,操作1208显示发送虚拟机到第二计算机系统。例如,并参照图5,在实施例中,虚拟机的状态可被保存在一个或多个配置文件中,并被发送到另一个计算机系统,例如,从计算机504发送到506。计算机系统506的超级监视器可以读取该文件或该多个文件,并实例化虚拟机。
虚拟机拓扑影响迁移和复原虚拟机的能力。具体地,关于允许底层硬件的拓扑被检测的决定和虚拟NUMA节点的尺寸影响虚拟机将执行得多好以及它是否可以轻松地迁移。举例而言,虚拟NUMA节点的尺寸影响迁移的能力,例如,随着虚拟NUMA节点的尺寸增加,虚拟NUMA节点的可移植性降低,而随着虚拟NUMA节点的尺寸减小,虚拟机的性能同样降低。另外,可以检测底层计算机的拓扑的虚拟机不能轻松地迁移,这是由于NUMA感知的(NUMA aware)操作系统和应用在引导时间根据它们检测到的第一个拓扑来最佳化其本身,且这些最佳化在虚拟机在未来可被迁移到的计算机上可能不适用。因此,通过在客户操作系统引导时将虚拟NUMA节点暴露给它,操作系统可被最佳化来使用NUMA节点。通过给虚拟NUMA节点正确地定尺寸,虚拟机可以对于数据中心500中的许多不同的计算机系统进行最佳化。
例如,并参照图6,虚拟机240可包括两个或更多个虚拟NUMA节点606和608。超级监视器202可以用逻辑处理器212A-D对虚拟处理器230A-D进行支持。当客户操作系统220引导时,它可以检测虚拟NUMA节点606和608,并且可被配置成使得使用虚拟NUMA节点606和608的进程的调度和执行最佳化。在一段时间后,虚拟机240可被迁移到具有类似于图7所描绘的物理拓扑的计算机系统。图7的超级监视器202可以用逻辑处理器212A和B对虚拟处理器230A和B进行支持,以及用逻辑处理器212E和F对虚拟处理器230C和D进行支持。即使底层计算机拓扑已经从SMP改变到NUMA,客户操作系统220仍可以以与它在图6的计算机系统上运行时的相同方式继续操作。
继续进行图12的说明,操作1210显示:将多个虚拟NUMA节点的第一虚拟NUMA节点映射到计算机系统的第一NUMA节点上;以及将多个虚拟NUMA节点的第二虚拟NUMA节点映射到计算机系统的第一NUMA节点上。例如,并参照图7,诸如逻辑处理器212A的逻辑处理器可以执行超级监视器指令,并可以使诸如虚拟NUMA节点606和608的虚拟NUMA节点与诸如NUMA节点702的NUMA节点建立亲缘关系。更具体地,逻辑处理器可以用来自NUMA节点702的RAM 214的系统物理地址对客户物理地址614和616进行支持、以及可以用逻辑处理器212A到D对虚拟处理器230A到D进行支持。
继续进行图12的说明,操作1212显示:将多个虚拟NUMA节点的第一虚拟NUMA节点映射到计算机系统的第一NUMA节点上;以及将多个虚拟NUMA节点的第二虚拟NUMA节点映射到计算机系统的第二NUMA节点上。例如,并参照图7,诸如逻辑处理器212A的逻辑处理器可以执行超级监视器指令,并可以把虚拟NUMA节点606指派给NUMA节点702和把虚拟NUMA节点608指派给NUMA节点704。在本例中,当超级监视器202被执行时,超级监视器调度器可以在逻辑处理器212A-D上调度来自虚拟处理器230A-B的线程、以及在逻辑处理器212E到G上调度来自虚拟处理器230C或D的线程。
现在转到图13,图上图示图12的操作程序的替换实施例,其包括操作1314,该操作1314显示:确定在第二虚拟NUMA节点中的存储器压力大于预定值;和将第二虚拟NUMA节点迁移到计算机系统的第二NUMA节点。例如,并转到图7,在实施例中,在第二虚拟NUMA节点608中的存储器压力可以增加。也就是,指示存储器压力的值可以由DMVSP 802接收,其指示虚拟NUMA节点608压力过大。在本例中,每个虚拟NUMA节点606-612和/或虚拟机240-242可以具有目标压力值,且虚拟NUMA节点608的当前的压力值可大于由管理员设置的目标值。目标压力值可被存储在可由DMVSP
802访问的数据结构中。然后可以接收正在运行的虚拟机或虚拟NUMA节点的当前的压力值。DMVSP 802可以连续地步进通过运行的虚拟机或虚拟NUMA节点的列表,并调拨存储器以便把存储器压力值减小到目标值,以及回收存储器以便把压力增加到目标值。
现在转到图14,图上图示图12的操作程序的替换实施例,其包括操作1416,该操作1416显示:确定第二虚拟机的存储器压力大于预定值;和将该虚拟机的第二虚拟NUMA节点迁移到计算机系统的第一NUMA节点。在实施例中,至少两个虚拟机可以正在执行,例如,虚拟机240和242。在本例中,虚拟机240的虚拟NUMA节点可被映射到例如图7的NUMA节点702和704,以及虚拟机242的虚拟NUMA节点可被映射到例如NUMA节点706。在本例中,每个虚拟机240和242,和/或每个虚拟NUMA节点606-612可以具有可被存储在可由DMVSP 802访问的数据结构中的目标压力值。在本例中,在第二虚拟机242中的存储器压力,由于在虚拟机中的活动——例如虚拟机242接收到许多读/写请求——而可能增加,以及该值可被DMVSP 802接收。DMVSP
802可以接收运行的虚拟机或虚拟NUMA节点的当前的压力值,并且连续地步进通过运行的虚拟机或虚拟NUMA节点的列表,以确定存储器是否可被调拨给虚拟机242以便缓和存储器压力。
在其中压力不能通过调拨或回收存储器而被减轻的情形下,DMVSP 802可被配置成:发送信号到超级监视器202,然后超级监视器202可以尝试重新分配计算机系统的资源,以便减轻存储器压力。例如,超级监视器202可以检查NUMA节点702-706的当前的工作负荷,并确定:例如NUMA节点702可以宿有来自虚拟机240的虚拟NUMA节点,并将虚拟NUMA节点608重新指派给NUMA节点702。也就是,超级监视器202,与VID 810相结合,可以将客户物理地址616重新映射到系统物理地址712,并将逻辑处理器212A和D设置为用于虚拟处理器230C和D的理想处理器。然后,超级监视器可以将虚拟NUMA节点610重新映射到NUMA节点704,并调节在虚拟机242的每个虚拟NUMA节点610-612内的存储器,以便减小它的存储器压力。
现在转到图15,图上图示包括操作1500、1502和1504的、用于实践本公开内容的诸方面的操作程序。操作1500开始该操作程序,以及操作1502显示执行第一虚拟机,虚拟机具有包括多个虚拟NUMA节点的拓扑,该多个虚拟NUMA节点的每个虚拟NUMA节点包括虚拟处理器和客户物理地址,其中虚拟机的拓扑是与计算机系统的物理拓扑相独立地生成的。例如,图7的超级监视器202可以执行具有多个虚拟NUMA节点608-610的虚拟机240。虚拟NUMA节点606和608每个可以具有一个或多个虚拟处理器230A-D和客户物理地址614和616。在本实施例中,虚拟NUMA节点606和608可被映射到计算机系统700的资源。例如,逻辑处理器212A和B可被设置为用于虚拟处理器230A和B的理想处理器,以及客户物理地址614可以由系统物理地址710进行支持。同样地,逻辑处理器212E和F可被设置为用于虚拟处理器230C和D的理想处理器,以及客户物理地址616可以被映射到系统物理地址714。在本实施例中,虚拟NUMA节点606和608是独立于底层硬件的拓扑的。也就是,虚拟机的拓扑是与诸如由图6和图7所描绘的底层硬件无关的。因此,在本实施例中,虚拟机的拓扑是与实现它的计算机系统的底层物理拓扑相分离的。
继续进行图15的说明,操作1504显示:将附加虚拟处理器添加到多个虚拟NUMA节点的一个虚拟NUMA节点。例如,在实施例中,附加虚拟处理器可被加到虚拟NUMA节点,诸如举例而言虚拟NUMA节点606。在本例中,在虚拟机240的运行时执行期间,可以通过使用例如处理器热添加操作而添加虚拟处理器,诸如虚拟处理器。在实施例中,新添加的处理器可被指派给对虚拟处理器230A进行支持的处理器,或另一个逻辑处理器可被设置为理想处理器来运行新添加的虚拟处理器的线程。在NUMA实施例中,逻辑处理器可以从正在对虚拟NUMA节点606进行支持的同一个NUMA节点702分配。
现在转到图16,图上描绘由图15所描绘的操作程序的替换实施例,其包括附加操作1606-1612。操作1606显示:确定在多个虚拟NUMA节点的每个虚拟NUMA节点中的存储器压力;和根据在多个虚拟NUMA节点的每个虚拟NUMA节点中的存储器压力,调节被指派给多个虚拟NUMA节点的至少一个虚拟NUMA节点的客户存储器。参照图8,对于每个虚拟NUMA节点606和608的存储器压力可以被获得,例如被生成和/或被接收。存储器压力信息可以标识客户的性能如何受每个虚拟NUMA节点可得到的存储器的量影响。DMVSC
804和806可被配置成:从存储器管理器808接收例如物理存储器通知和/或客户操作系统分页信息,并使用它来计算每个虚拟NUMA节点606和608的存储器压力。
继续这个例子,逻辑处理器212A例如可以执行指示DMVSP 802的指令,并可以调节例如在虚拟NUMA节点606中的客户物理地址的量。也就是,DMVSP 802根据由于在虚拟NUMA节点606中的资源引起的客户OS正经受的存储器压力,调拨或回收存储器。
继续进行图16的说明,操作1608图示:从多个虚拟NUMA节点的一个虚拟NUMA节点去除虚拟处理器。在包括1706的实施例中,超级监视器202可以由逻辑处理器执行,且虚拟处理器可以从虚拟NUMA节点606被去除。例如,超级监视器202可以接入客户操作系统220的热去除API,以及从虚拟NUMA节点608去除例如虚拟处理器230B。
现在转到操作1610,它显示:把对于多个虚拟NUMA节点的NUMA比率报告给客户操作系统。例如,在实施例中,超级监视器202可以生成对于虚拟NUMA节点606-608的NUMA比率,并可以把这个信息报告给图6或图7的客户操作系统220。在实施例中,超级监视器202可以在虚拟机的固件表中创建数据结构,其指示对于虚拟NUMA节点的NUMA比率,并且当客户操作系统220引导时客户可以读取该表并使用信息来做出调度决定。例如,客户操作系统,或者NUMA感知的应用,可以使用NUMA比率来确定是否使用来自远程NUMA节点的资源。例如,操作系统可以具有准备好要执行的待决线程。在本例中,操作系统也可以被配置成:等待一定量的时间以便让理想处理器变为空闲的,否则它将在具有小于预定的NUMA比率的远程处理器上调度该线程。在这种情形下,调度器愿意等待的时间量取决于NUMA比率。
现在转到操作1612,它显示:将虚拟机从第一NUMA节点迁移到多个NUMA节点。例如,在实施例中,超级监视器指令可以由逻辑处理器执行,且虚拟机240可被映射到多个NUMA节点704和706。在本例中,计算机系统700可能处在繁重的使用下,例如,虚拟机242可能正在使用大部分的资源,所以,虚拟机242被迁移出计算机700。在这种情形下,超级监视器202可以重新分配计算机系统700的资源,将虚拟机240重新映射到NUMA节点704和706。
现在转到图17,图上描绘图16的操作程序的替换实施例,其包括操作1714和1716。在实施例中,操作1606可包括操作1714,其显示:根据虚拟NUMA节点的当前存储器压力低于目标阈值的确定,从多个虚拟NUMA节点的第一虚拟NUMA节点中回收存储器。例如,在实施例中,DMVSP
802可被配置成:当虚拟NUMA节点608的存储器压力低于目标阈值时,从虚拟NUMA节点606回收存储器。例如,在实施例中,当例如在母分区中没有可得到的存储器可被调拨且虚拟NUMA节点608正经受不可接受的压力时,DMVSP 802可以尝试从虚拟NUMA节点606释放存储器。如果存储器从虚拟NUMA节点606被回收,则可以发送异步消息到DMVSC 804,指引它回收存储器。当与客户OS
220相关联的DMVSC 804响应时,它可以指示在虚拟NUMA节点606内新的存储器压力。在一些情形下,响应于存储器去除操作,存储器压力可能增加。
继续进行图17的说明,操作1716显示:根据客户操作系统的当前存储器压力大于目标阈值的确定,将存储器调拨给多个虚拟NUMA节点的第一虚拟NUMA节点。例如,在实施例中,DMVSP 802可被配置成:当虚拟NUMA节点606的存储器压力大于目标阈值时,将存储器调拨给虚拟NUMA节点606。在这种情形下,如果存储器是可得到的,则它可被分配给虚拟NUMA节点606。也就是,DMVSP 802可以获得标识虚拟NUMA节点606的性能如何受可得到的存储器的量影响的存储器压力信息,并把存储器添加到虚拟NUMA节点606。在特定的例子中,存储器压力信息可以是一个值。在本例中,DMVSP
802可以将当前存储器压力值与指示对于虚拟NUMA节点606的最小值的信息表进行比较,并调节存储器直至虚拟NUMA节点606的存储器压力等于最小为止。例如,管理员可以配置运行关键应用的客户操作系统,以便具有对于虚拟NUMA节点606和608的低的最小值。
以上的详细说明经由例子和/或操作图阐述了系统和/或过程的各种实施例。就这样的框图和/或例子包含一个或多个功能和/或操作而论,本领域技术人员将懂得,在这样的框图或例子内的每个功能和/或操作可通过各种各样的硬件、软件、固件、或事实上它们的任何组合,而被单独地和/或共同地实施。
虽然显示和描述了这里所描述的本主题的特定方面,但本领域技术人员将明白,根据这里的教导,可以做出改变和修改,而不背离这里描述的主题和它的更广义的方面,所以,所附权利要求是要将处在这里描述的主题的真实精神和范围内的所有的这样的改变和修改都包括在它们的范围内。
Claims (19)
1.一种在用于虚拟机的虚拟非一致存储器体系结构中使用的方法,包括:
接收对于实例化虚拟机(240)的请求,所述请求包括用于虚拟机(240)的特征;
根据所述特征选择用于虚拟机(240)的虚拟NUMA节点拓扑,该虚拟NUMA节点拓扑包括多个虚拟NUMA节点(606-608);
在计算机系统上实例化该虚拟机(240),该虚拟机包括该多个虚拟NUMA节点;以及
根据在该多个虚拟NUMA节点的特定虚拟NUMA节点(606)中的存储器压力,调节被指派给该特定虚拟NUMA节点的客户存储器的量。
2.权利要求1的方法,还包括:
确定在该多个虚拟NUMA节点的第二虚拟NUMA节点(608)中的存储器压力大于预定值;以及
将第二虚拟NUMA节点(608)迁移到计算机系统(700)的第二NUMA节点(704)。
3.权利要求1的方法,其中调节客户存储器的量还包括:
从该特定虚拟NUMA节点(606)回收客户存储器的至少一个存储区;以及
将客户存储器的被回收的至少一个存储区调拨给第二虚拟NUMA节点(608)。
4.权利要求1的方法,其中调节客户存储器的量还包括:
确定该特定虚拟NUMA节点(606)的客户存储器的至少一个存储区与系统存储器解除关联;以及
将客户存储器的该至少一个存储区映射到系统存储器的至少一个存储区上。
5.权利要求1的方法,还包括:
将该特定虚拟NUMA节点(606)映射到该计算机系统的第一NUMA节点(702)上;以及
将该特定虚拟NUMA节点(606)迁移到该计算机系统的第二NUMA节点上(704)。
6.权利要求1的方法,还包括:
将虚拟处理器(230B)添加到该特定虚拟NUMA节点(606)。
7.权利要求1的方法,还包括:
接收对于执行虚拟机(240)的虚拟处理器(230A)的请求,该虚拟处理器(230A)被指派给逻辑处理器(212A),该逻辑处理器(212A)被指派给NUMA节点,以及该虚拟处理器被指派给虚拟NUMA节点(702);
确定逻辑处理器(230A)不能执行该虚拟处理器(212A);以及
选择第二逻辑处理器(230E)来执行虚拟处理器(230A),该第二逻辑处理器来自第二NUMA节点(704)。
8.一种在用于虚拟机的虚拟非一致存储器体系结构中使用的计算机系统,该计算机系统包括:
用于执行虚拟机(240)的装置,该虚拟机(240)具有包括多个虚拟NUMA节点(606-608)的拓扑,其中虚拟机(240)的拓扑是与计算机系统(700)的物理拓扑相独立地生成的;
用于确定在该多个虚拟NUMA节点的每个虚拟NUMA节点(606-608)中的存储器压力的装置;以及
用于根据在该多个虚拟NUMA节点的每个虚拟NUMA节点(606-608)中的存储器压力,调节被指派给该多个虚拟NUMA节点的至少一个虚拟NUMA节点(606)的客户存储器的装置。
9.权利要求8的计算机系统,还包括:
用于发送该虚拟机(240)到第二计算机系统(510)的装置。
10.权利要求8的计算机系统,还包括:
用于将该多个虚拟NUMA节点的第一虚拟NUMA节点(606)映射到计算机系统(700)的第一NUMA节点(702)上的装置;以及
用于将该多个虚拟NUMA节点的第二虚拟NUMA节点(608)映射到计算机系统(700)的所述第一NUMA节点(702)上的装置。
11.权利要求8的计算机系统,还包括:
用于将该多个虚拟NUMA节点的第一虚拟NUMA节点(606)映射到计算机系统(700)的第一NUMA节点(702)上的装置;以及
用于将该多个虚拟NUMA节点的第二虚拟NUMA节点(608)映射到计算机系统(700)的第二NUMA节点(704)上的装置。
12.权利要求10的计算机系统,还包括:
用于确定在第二虚拟NUMA节点(608)中的存储器压力大于预定值的装置;以及
用于将第二虚拟NUMA节点(608)迁移到计算机系统的第二NUMA节点(704)的装置。
13.权利要求11的计算机系统,还包括:
用于确定第二虚拟机(242)的存储器压力大于预定值的装置;以及
用于将虚拟机(240)的第二虚拟NUMA节点(608)迁移到计算机系统(700)的第一NUMA节点(704)的装置。
14.一种在用于虚拟机的虚拟非一致存储器体系结构中使用的设备,所述设备包括:
用于执行第一虚拟机(240)的装置,该虚拟机(240)具有包括多个虚拟NUMA节点(606-608)的拓扑,该多个虚拟NUMA节点的每个虚拟NUMA节点包括虚拟处理器(230A-C)和客户物理地址,其中该虚拟机(240)的拓扑是与计算机系统(700)的物理拓扑相独立地生成的;以及
用于将附加的虚拟处理器(230D)添加到该多个虚拟NUMA节点中的虚拟NUMA节点(608)的装置;
其中所述设备还包括:
用于确定在该多个虚拟NUMA节点的每个虚拟NUMA节点(606-608)中的存储器压力的装置;以及
用于根据在该多个虚拟NUMA节点的每个虚拟NUMA节点(606-608)中的存储器压力,调节被指派给该多个虚拟NUMA节点的至少一个虚拟NUMA节点(606)的客户存储器的装置。
15.权利要求14的设备,还包括:
用于从该多个虚拟NUMA节点中的虚拟NUMA节点(608)去除虚拟处理器(230D)的装置。
16.权利要求14的设备,还包括:
用于将对于该多个虚拟NUMA节点(606-608)的NUMA比率报告给客户操作系统的装置。
17.权利要求14的设备,还包括:
用于将虚拟机(240)从第一NUMA节点(606)迁移到多个NUMA节点(606-608)的装置。
18.权利要求14的设备,其中用于调节客户存储器的装置还包括:
用于根据虚拟NUMA节点(606)的当前存储器压力低于目标阈值的确定,从多个虚拟NUMA节点的第一虚拟NUMA节点(606)回收存储器的装置。
19.权利要求14的设备,其中用于调节客户存储器的装置还包括:
用于根据客户操作系统(220)的当前存储器压力大于目标阈值的确定,将存储器调拨给该多个虚拟NUMA节点的第一虚拟NUMA节点(606)的装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/412272 | 2009-03-26 | ||
US12/412,272 US9529636B2 (en) | 2009-03-26 | 2009-03-26 | System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine |
US12/412,272 | 2009-03-26 | ||
PCT/US2010/028034 WO2010111149A2 (en) | 2009-03-26 | 2010-03-19 | Virtual non-uniform memory architecture for virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102365625A CN102365625A (zh) | 2012-02-29 |
CN102365625B true CN102365625B (zh) | 2013-11-27 |
Family
ID=42781790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800137790A Active CN102365625B (zh) | 2009-03-26 | 2010-03-19 | 用于虚拟机的虚拟非一致存储器体系结构 |
Country Status (9)
Country | Link |
---|---|
US (2) | US9529636B2 (zh) |
EP (1) | EP2411915B1 (zh) |
JP (1) | JP5507660B2 (zh) |
KR (1) | KR101661783B1 (zh) |
CN (1) | CN102365625B (zh) |
BR (1) | BRPI1009277B1 (zh) |
CA (1) | CA2753228C (zh) |
RU (1) | RU2569805C2 (zh) |
WO (1) | WO2010111149A2 (zh) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529636B2 (en) | 2009-03-26 | 2016-12-27 | Microsoft Technology Licensing, Llc | System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine |
US9535767B2 (en) * | 2009-03-26 | 2017-01-03 | Microsoft Technology Licensing, Llc | Instantiating a virtual machine with a virtual non-uniform memory architecture |
US9389895B2 (en) * | 2009-12-17 | 2016-07-12 | Microsoft Technology Licensing, Llc | Virtual storage target offload techniques |
US20110153715A1 (en) * | 2009-12-17 | 2011-06-23 | Microsoft Corporation | Lightweight service migration |
US9086921B2 (en) | 2010-11-16 | 2015-07-21 | Vmware, Inc. | Dynamic database memory management according to swap rates |
US8935456B2 (en) * | 2010-11-16 | 2015-01-13 | Vmware, Inc. | Method and system for integrating database memory management in virtual machines |
US8943259B2 (en) * | 2010-11-16 | 2015-01-27 | Vmware, Inc. | Relieving memory pressure in a host using database memory management |
US9250863B1 (en) * | 2010-12-28 | 2016-02-02 | Amazon Technologies, Inc. | Managing virtual machine migration |
US9183030B2 (en) | 2011-04-27 | 2015-11-10 | Microsoft Technology Licensing, Llc | Virtual processor allocation techniques |
US8706869B2 (en) * | 2011-06-14 | 2014-04-22 | International Business Machines Corporation | Distributed cloud placement software |
WO2012106908A1 (zh) * | 2011-07-20 | 2012-08-16 | 华为技术有限公司 | 多处理器体系结构远端内存访问的模拟方法及模拟器 |
US9176780B2 (en) * | 2011-08-23 | 2015-11-03 | Vmware, Inc. | Dynamically balancing memory resources between host and guest system based on relative amount of freeable memory and amount of memory allocated to hidden applications |
US8627036B2 (en) | 2011-09-12 | 2014-01-07 | Microsoft Corporation | Memory management techniques |
US20130093776A1 (en) * | 2011-10-14 | 2013-04-18 | Microsoft Corporation | Delivering a Single End User Experience to a Client from Multiple Servers |
CN102439571B (zh) * | 2011-10-27 | 2013-08-28 | 华为技术有限公司 | 一种防止节点控制器死锁的方法及装置 |
US8793459B2 (en) | 2011-10-31 | 2014-07-29 | International Business Machines Corporation | Implementing feedback directed NUMA mitigation tuning |
US9891937B2 (en) | 2012-01-30 | 2018-02-13 | Lg Electronics Inc. | Method for managing virtual machine and device therefor |
US9286131B2 (en) * | 2012-11-14 | 2016-03-15 | Red Hat Israel, Ltd. | Processor unplug in virtualized computer system |
US20140229940A1 (en) * | 2013-02-14 | 2014-08-14 | General Dynamics C4 Systems, Inc. | Methods and apparatus for synchronizing multiple processors of a virtual machine |
US9178815B2 (en) | 2013-03-05 | 2015-11-03 | Intel Corporation | NIC flow switching |
US9471394B2 (en) * | 2013-03-13 | 2016-10-18 | Cloubrain, Inc. | Feedback system for optimizing the allocation of resources in a data center |
US9699093B2 (en) * | 2013-06-12 | 2017-07-04 | Dell Products L.P. | Migration of virtual machine based on proximity to peripheral device in NUMA environment |
US9684685B2 (en) * | 2013-10-24 | 2017-06-20 | Sap Se | Using message-passing with procedural code in a database kernel |
US9600551B2 (en) | 2013-10-24 | 2017-03-21 | Sap Se | Coexistence of message-passing-like algorithms and procedural coding |
US9553822B2 (en) | 2013-11-12 | 2017-01-24 | Microsoft Technology Licensing, Llc | Constructing virtual motherboards and virtual storage devices |
US9582223B2 (en) * | 2014-04-14 | 2017-02-28 | International Business Machines Corporation | Efficient reclamation of pre-allocated direct memory access (DMA) memory |
US9940167B2 (en) | 2014-05-20 | 2018-04-10 | Red Hat Israel, Ltd. | Identifying memory devices for swapping virtual machine memory pages |
US9483299B2 (en) * | 2014-06-30 | 2016-11-01 | Bmc Software, Inc. | Capacity risk management for virtual machines |
CN104199718B (zh) * | 2014-08-22 | 2017-08-11 | 上海交通大学 | 一种基于numa高性能网络缓存资源亲和度的虚拟处理器的调度方法 |
WO2016026131A1 (zh) * | 2014-08-22 | 2016-02-25 | 上海交通大学 | 一种基于 numa 高性能网络缓存资源亲和度的虚拟处理器的调度方法 |
CN104216784B (zh) * | 2014-08-25 | 2018-01-23 | 杭州华为数字技术有限公司 | 热点均衡控制方法及相关装置 |
US9459904B2 (en) | 2014-09-30 | 2016-10-04 | Vmware, Inc. | NUMA I/O aware network queue assignments |
US9256467B1 (en) * | 2014-11-11 | 2016-02-09 | Amazon Technologies, Inc. | System for managing and scheduling containers |
JP2016115253A (ja) * | 2014-12-17 | 2016-06-23 | 富士通株式会社 | 情報処理装置、メモリ管理方法およびメモリ管理プログラム |
JP6645275B2 (ja) | 2016-03-04 | 2020-02-14 | 富士通株式会社 | 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム |
CN109213539B (zh) * | 2016-09-27 | 2021-10-26 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN107368353B (zh) * | 2017-07-26 | 2020-12-01 | 郑州云海信息技术有限公司 | 一种实现虚拟机内存热添加的方法和装置 |
US10572289B2 (en) | 2017-08-28 | 2020-02-25 | Red Hat Israel, Ltd. | Guest-initiated announcement of virtual machine migration |
CN107948072B (zh) * | 2017-10-31 | 2021-04-27 | 新华三技术有限公司 | 报文转发方法和装置 |
US10789090B2 (en) | 2017-11-09 | 2020-09-29 | Electronics And Telecommunications Research Institute | Method and apparatus for managing disaggregated memory |
US10664300B2 (en) | 2017-12-01 | 2020-05-26 | Red Hat, Inc. | Resetting persistent balloon memory for fragmentation reduction |
US10719344B2 (en) * | 2018-01-03 | 2020-07-21 | Acceture Global Solutions Limited | Prescriptive analytics based compute sizing correction stack for cloud computing resource scheduling |
US10430227B2 (en) * | 2018-01-09 | 2019-10-01 | Microsoft Technology Licensing, Llc | Fast instantiation of virtual machines in distributed computing systems |
US10664323B2 (en) | 2018-03-07 | 2020-05-26 | Microsoft Technology Licensing, Llc | Live migration of virtual machines in distributed computing systems |
CN109032510B (zh) * | 2018-06-29 | 2021-07-09 | 山石网科通信技术股份有限公司 | 基于分布式结构的处理数据的方法和装置 |
KR101932522B1 (ko) | 2018-07-16 | 2018-12-26 | 서강대학교 산학협력단 | 가상 머신에 가상 gpu 메모리의 슬롯을 동적으로 할당하는 방법 및 이를 구현하는 컴퓨팅 장치 |
US10503543B1 (en) | 2019-02-04 | 2019-12-10 | Cohesity, Inc. | Hosting virtual machines on a secondary storage system |
WO2021086839A1 (en) * | 2019-10-30 | 2021-05-06 | TidalScale, Inc. | Goal-directed software-defined numa working set management |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04274519A (ja) * | 1991-02-28 | 1992-09-30 | Nec Corp | プログラム高速化自動実行方式 |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
US6785888B1 (en) * | 1997-08-29 | 2004-08-31 | International Business Machines Corporation | Memory allocator for a multiprocessor computer system |
US6336170B1 (en) * | 1998-10-13 | 2002-01-01 | International Business Machines Corporation | Method and system in a distributed shared-memory data processing system for determining utilization of shared-memory included within nodes by a designated application |
US7140020B2 (en) * | 2000-01-28 | 2006-11-21 | Hewlett-Packard Development Company, L.P. | Dynamic management of virtual partition computer workloads through service level optimization |
US7433951B1 (en) * | 2000-09-22 | 2008-10-07 | Vmware, Inc. | System and method for controlling resource revocation in a multi-guest computer system |
US7035963B2 (en) | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
JP2002202959A (ja) * | 2000-12-28 | 2002-07-19 | Hitachi Ltd | 動的な資源分配をする仮想計算機システム |
US6785773B2 (en) * | 2001-03-29 | 2004-08-31 | International Business Machines Corporation | Verification of global coherence in a multi-node NUMA system |
US6842857B2 (en) * | 2001-04-12 | 2005-01-11 | International Business Machines Corporation | Method and apparatus to concurrently boot multiple processors in a non-uniform-memory-access machine |
US7536697B2 (en) | 2001-06-19 | 2009-05-19 | Accenture Global Services Gmbh | Integrating enterprise support systems |
US6886079B2 (en) * | 2001-06-21 | 2005-04-26 | International Business Machines Corporation | Dynamic history based mechanism for the granting of exclusive data ownership in a non-uniform memory access (NUMA) computer system |
US7159216B2 (en) | 2001-11-07 | 2007-01-02 | International Business Machines Corporation | Method and apparatus for dispatching tasks in a non-uniform memory access (NUMA) computer system |
DE10159522A1 (de) | 2001-12-05 | 2003-06-26 | G L I Global Light Ind Gmbh | Verfahren zur Herstellung von LED-Körpern |
US7451459B2 (en) * | 2003-05-05 | 2008-11-11 | Microsoft Corporation | Systems, methods, and apparatus for indicating processor hierarchical topology |
US8776050B2 (en) * | 2003-08-20 | 2014-07-08 | Oracle International Corporation | Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes |
US8417913B2 (en) * | 2003-11-13 | 2013-04-09 | International Business Machines Corporation | Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages |
US20050132362A1 (en) * | 2003-12-10 | 2005-06-16 | Knauerhase Robert C. | Virtual machine management using activity information |
US7231504B2 (en) * | 2004-05-13 | 2007-06-12 | International Business Machines Corporation | Dynamic memory management of unallocated memory in a logical partitioned data processing system |
WO2005116828A2 (en) * | 2004-05-21 | 2005-12-08 | Computer Associates Think, Inc. | Method and apparatus for dynamic memory resource management |
US8621458B2 (en) | 2004-12-21 | 2013-12-31 | Microsoft Corporation | Systems and methods for exposing processor topology for virtual machines |
US20060184938A1 (en) * | 2005-02-17 | 2006-08-17 | Intel Corporation | Method, apparatus and system for dynamically reassigning memory from one virtual machine to another |
US7334076B2 (en) | 2005-03-08 | 2008-02-19 | Microsoft Corporation | Method and system for a guest physical address virtualization in a virtual machine environment |
US20060206891A1 (en) * | 2005-03-10 | 2006-09-14 | International Business Machines Corporation | System and method of maintaining strict hardware affinity in a virtualized logical partitioned (LPAR) multiprocessor system while allowing one processor to donate excess processor cycles to other partitions when warranted |
RU47116U1 (ru) | 2005-04-06 | 2005-08-10 | Оао Акб "Автобанк-Никойл" | Система поддержки распределенного документооборота |
US7299337B2 (en) | 2005-05-12 | 2007-11-20 | Traut Eric P | Enhanced shadow page table algorithms |
US20070100845A1 (en) | 2005-10-31 | 2007-05-03 | Juergen Sattler | Customer relationship management integration system and method |
US7945913B2 (en) * | 2006-01-19 | 2011-05-17 | International Business Machines Corporation | Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system |
US7596654B1 (en) * | 2006-01-26 | 2009-09-29 | Symantec Operating Corporation | Virtual machine spanning multiple computers |
US7984438B2 (en) * | 2006-02-08 | 2011-07-19 | Microsoft Corporation | Virtual machine transitioning from emulating mode to enlightened mode |
US20070250784A1 (en) | 2006-03-14 | 2007-10-25 | Workstone Llc | Methods and apparatus to combine data from multiple computer systems for display in a computerized organizer |
JP4702127B2 (ja) | 2006-03-22 | 2011-06-15 | 日本電気株式会社 | 仮想計算機システム及びその物理リソース再構成方法並びにプログラム |
US7434002B1 (en) * | 2006-04-24 | 2008-10-07 | Vmware, Inc. | Utilizing cache information to manage memory access and cache utilization |
US8607009B2 (en) | 2006-07-13 | 2013-12-10 | Microsoft Corporation | Concurrent virtual machine snapshots and restore |
US8453132B2 (en) * | 2006-07-28 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems |
US20080071642A1 (en) | 2006-09-15 | 2008-03-20 | Leiba Lior | System and method for connecting external product catalog data to business applications |
US7788464B2 (en) * | 2006-12-22 | 2010-08-31 | Microsoft Corporation | Scalability of virtual TLBs for multi-processor virtual machines |
US8195866B2 (en) * | 2007-04-26 | 2012-06-05 | Vmware, Inc. | Adjusting available persistent storage during execution in a virtual computer system |
CN101271401B (zh) | 2008-04-23 | 2010-04-14 | 北京航空航天大学 | 一种具备单一系统映像的服务器机群系统 |
US8799892B2 (en) * | 2008-06-09 | 2014-08-05 | International Business Machines Corporation | Selective memory donation in virtual real memory environment |
US8037280B2 (en) * | 2008-06-11 | 2011-10-11 | Vmware, Inc. | System and method for improving memory locality of virtual machines |
US8490094B2 (en) * | 2009-02-27 | 2013-07-16 | International Business Machines Corporation | Non-uniform memory access (NUMA) enhancements for shared logical partitions |
US9535767B2 (en) * | 2009-03-26 | 2017-01-03 | Microsoft Technology Licensing, Llc | Instantiating a virtual machine with a virtual non-uniform memory architecture |
US9529636B2 (en) | 2009-03-26 | 2016-12-27 | Microsoft Technology Licensing, Llc | System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine |
-
2009
- 2009-03-26 US US12/412,272 patent/US9529636B2/en active Active
-
2010
- 2010-03-19 KR KR1020117022356A patent/KR101661783B1/ko active IP Right Grant
- 2010-03-19 WO PCT/US2010/028034 patent/WO2010111149A2/en active Application Filing
- 2010-03-19 BR BRPI1009277A patent/BRPI1009277B1/pt active IP Right Grant
- 2010-03-19 CA CA2753228A patent/CA2753228C/en active Active
- 2010-03-19 JP JP2012502133A patent/JP5507660B2/ja active Active
- 2010-03-19 CN CN2010800137790A patent/CN102365625B/zh active Active
- 2010-03-19 EP EP10756649.9A patent/EP2411915B1/en active Active
- 2010-03-19 RU RU2011139151/08A patent/RU2569805C2/ru active
-
2016
- 2016-11-18 US US15/355,754 patent/US10705879B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
RU2569805C2 (ru) | 2015-11-27 |
US20100250868A1 (en) | 2010-09-30 |
RU2011139151A (ru) | 2013-03-27 |
CA2753228C (en) | 2016-09-27 |
CN102365625A (zh) | 2012-02-29 |
CA2753228A1 (en) | 2010-09-30 |
EP2411915B1 (en) | 2018-07-11 |
KR20120000066A (ko) | 2012-01-03 |
EP2411915A2 (en) | 2012-02-01 |
KR101661783B1 (ko) | 2016-10-10 |
JP2012521610A (ja) | 2012-09-13 |
US20170068562A1 (en) | 2017-03-09 |
US10705879B2 (en) | 2020-07-07 |
WO2010111149A3 (en) | 2011-01-13 |
WO2010111149A2 (en) | 2010-09-30 |
BRPI1009277A2 (pt) | 2016-03-08 |
EP2411915A4 (en) | 2014-09-24 |
BRPI1009277B1 (pt) | 2020-04-07 |
JP5507660B2 (ja) | 2014-05-28 |
US9529636B2 (en) | 2016-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102365625B (zh) | 用于虚拟机的虚拟非一致存储器体系结构 | |
CN102365626B (zh) | 用于虚拟机的虚拟非一致存储器体系结构 | |
US8701115B2 (en) | Hypervisor scheduler | |
US20170322829A1 (en) | Dynamic virtual machine memory management | |
US8898664B2 (en) | Exposure of virtual cache topology to a guest operating system | |
US7653909B2 (en) | Time slicing in a shared partition | |
US8312201B2 (en) | Managing memory allocations loans | |
Guo et al. | Moving hadoop into the cloud with flexible slot management and speculative execution | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
WO2021086839A1 (en) | Goal-directed software-defined numa working set management | |
CN102346684B (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 | ||
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: 20150515 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150515 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |