CN102365626A - 用于虚拟机的虚拟非一致存储器体系结构 - Google Patents
用于虚拟机的虚拟非一致存储器体系结构 Download PDFInfo
- Publication number
- CN102365626A CN102365626A CN2010800137822A CN201080013782A CN102365626A CN 102365626 A CN102365626 A CN 102365626A CN 2010800137822 A CN2010800137822 A CN 2010800137822A CN 201080013782 A CN201080013782 A CN 201080013782A CN 102365626 A CN102365626 A CN 102365626A
- Authority
- CN
- China
- Prior art keywords
- virtual
- computer system
- numa
- virtual machine
- numa node
- 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
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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- 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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- 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
- 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/45562—Creating, deleting, cloning virtual machine instances
-
- 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/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- 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/25—Using a specific main memory architecture
- G06F2212/254—Distributed memory
- G06F2212/2542—Non-uniform memory access [NUMA] architecture
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
这里公开了用于实现对于虚拟机的虚拟NUMA体系结构的技术。
Description
背景技术
虚拟化技术考虑了在多个分区之间共享硬件资源,每个分区可以宿有(host)客户操作系统。通常,虚拟机技术可被使用来整合服务器和增加它们的可移植性。随着虚拟机变得越来越大且随着它们的工作负荷增加,轻松地整合它们和/或将它们从一个计算机系统迁移到另一个计算机系统的能力变得更加困难。因此,用于提高整合和/或迁移更大虚拟机的能力的技术是所希望的。
发明内容
本公开内容的示例性实施例描述了一种方法。在本例中,该方法包括,但不限于:由管理系统接收指示在数据中心中的计算机系统的物理拓扑的信息;接收对于实例化(instantiate)虚拟机的请求,所述请求指示用于虚拟机的特征;根据计算机系统的物理拓扑和用于虚拟机的特征,确定用于该虚拟机的虚拟NUMA节点的数目;以及发送请求到数据中心的计算机系统,所述请求指引计算机系统实例化具有所确定数目的虚拟NUMA节点的虚拟机。除了上述的以外,在形成本公开内容的一部分的权利要求、附图和文本中描述了其它方面。
本公开内容的示例性实施例描述了一种方法。在本例中,该方法包括,但不限于:接收对于实例化虚拟机的请求;生成该虚拟机,该虚拟机具有包括多个虚拟NUMA节点的拓扑,该多个虚拟NUMA节点的每个虚拟NUMA节点包括至少一个虚拟处理器和一系列客户物理地址,其中虚拟机的拓扑是与计算机系统的物理拓扑相独立地生成的;以及实例化该虚拟机,该虚拟机包括虚拟NUMA节点。除了上述的以外,在形成本公开内容的一部分的权利要求、附图和文本中描述了其它方面。
本公开内容的示例性实施例描述了一种方法。在本例中,该方法包括,但不限于:生成用于虚拟机的多个虚拟NUMA节点,该多个虚拟NUMA节点的每个虚拟NUMA节点包括至少一个虚拟处理器和客户物理地址的至少一个存储区,该多个虚拟NUMA节点是与任何计算机系统的物理拓扑相独立地生成的;以及在计算机系统上实例化该虚拟机,该虚拟机包括多个虚拟NUMA节点。除了上述的以外,在形成本公开内容的一部分的权利要求、附图和文本中描述了其它方面。
本领域技术人员可以意识到,本公开内容的一个或多个各种各样的方面可包括,但不限于:用于实现本公开内容的这里提到的诸方面的电路和/或编程;所述电路和/或编程可以实际上是被配置来根据系统设计者的设计选择而实现这里提到的诸方面的硬件、软件和/或固件的任何组合。
上述的内容是概要,因此必然包含细节的简化、一般化和省略。本领域技术人员应意识到,所述概要仅仅是说明性的,且无论如何不会被定为是限制性的。
附图说明
图1描绘其中可以实施本公开内容的诸方面的示例性计算机系统。
图2描绘用于实践本公开内容的诸方面的操作环境。
图3描绘用于实践本公开内容的诸方面的操作环境。
图4描绘在实施例中可以如何安排存储器。
图5描绘实践本公开内容的诸方面的示例性操作环境。
图6描绘实践本公开内容的诸方面的示例性操作环境。
图7描绘实践本公开内容的诸方面的示例性操作环境。
图8描绘用于实践本公开内容的诸方面的操作程序。
图9描绘图8的操作程序800的替换实施例。
图10描绘用于实践本公开内容的诸方面的操作程序。
图11描绘图10的操作程序1000的替换实施例。
图12描绘图11的操作程序1000的替换实施例。
图13描绘用于实践本公开内容的诸方面的操作程序。
图14描绘图13的操作程序1300的替换实施例。
具体实施方式
实施例可以在一个或多个计算机上执行。图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处被耦合在一起(虽然只描绘了四个计算机系统,但本领域技术人员可以意识到,数据中心可包括更多或更少的计算机系统)。所描绘的计算机系统可以具有不同的拓扑,而且,它们可以具有不同的特征,例如,不同的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。
以下是描绘进程的实现的一系列流程图。为了易于理解起见,流程图被组织成使得初始流程图经由总体“大图片(big picture)”视点给出实现,且随后的流程图提供另外的补充和/或细节。而且,本领域技术人员将会意识到,用虚线画出的操作程序被认为是可选的。
现在转到图8,图上描绘包括操作800-808的、用于实践本公开内容的诸方面的操作程序。操作程序从操作800开始,且操作802图示:由管理系统接收指示在数据中心中的计算机系统的物理拓扑的信息。例如,并参照图5,管理系统502的逻辑处理器可以执行一个或多个程序,其可以获得标识在数据中心500中的计算机系统504-510的物理拓扑的信息。在实施例中,管理系统502可包括NIC,且程序可以使用NIC来询问每个计算机系统504-510。在本例中,每个计算机系统504-510可以用标识它的拓扑的信息回答。在另一个实施例中,所述信息可以从输入该信息的管理员获得。在任一种情形下,该信息可包括,但不限于:标识每个计算机系统具有多少NUMA节点(如果有的话)、每个计算机系统具有多少RAM、RAM的速度、RAM被如何安排、处理器速度、每个处理器具有多少核等等的信息。
继续进行图8的说明,操作804描绘:接收对于实例化虚拟机的请求,该请求指示用于该虚拟机的特征。管理系统502可以例如从在管理系统502上执行的用户接口、或从计算机系统504-510接收启动虚拟机240的请求。在本例中,请求可包括用于虚拟机240的想要的特征。例如,特征可以是被指派给虚拟机的想要的RAM的量,想要的虚拟处理器的数目,或想要的I/O设备。
继续进行所述图的描述,操作806显示:根据计算机系统的物理拓扑和用于虚拟机的特征,确定用于该虚拟机的虚拟NUMA节点的数目。一旦管理系统502接收到用于虚拟机的特征,例如6个虚拟处理器,管理系统502就可以使用这个信息连同描述数据中心500中的计算机系统的拓扑的信息一起,来确定对于虚拟机240应当创建多少个虚拟NUMA节点。例如,管理系统502可以确定对于数据中心500的虚拟NUMA节点的最佳尺寸,且然后确定需要多少个虚拟NUMA节点来构建具有想要的特征的虚拟机。
通常,虚拟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。
一旦虚拟NUMA节点的尺寸被确定,且从前面段落中的例子继续进行,虚拟NUMA节点的尺寸就可以连同想要的特征一起被使用来生成虚拟机240。例如,如果用户指示他们想要具有10G字节RAM的6处理器虚拟机,并且该虚拟NUMA节点具有2个处理器和4G字节的RAM,则管理系统502可以生成指示虚拟机将包括3个虚拟NUMA节点的配置文件。
继续进行图8的说明,操作808图示:发送请求到数据中心中的计算机系统,所述请求指引计算机系统实例化具有所确定数目的虚拟NUMA节点的虚拟机。一旦生成配置文件,管理系统502就可以选择数据中心500中的计算机系统来实例化虚拟机240,并发送配置文件到所选择的计算机系统。例如,管理系统502可以确定哪些计算机系统可以容纳该虚拟机,例如,确定哪个计算机具有执行该虚拟机的物理资源和哪个计算机系统具有最低的工作负荷,并且把虚拟机240发送到这个计算机。在同一个或另一个实施例中,用户可以指示用于虚拟机240的优先权,例如,更关键的虚拟机可以用标识它们的相对重要性的信息被加标志。在本例中,管理系统502可被配置成:将高优先权虚拟机发送到具有较低的工作负荷的计算机系统,并且可以尝试在更少的计算机系统上整合较低优先权的虚拟机。在本例中,虚拟机可被从计算机系统“干掉”(bump
off),以便为更高优先权的虚拟机腾出空位。
现在参照图9,图上描绘图8的操作程序的替换实施例,其包括操作910-914。参照操作910,它图示:接收指示计算机系统压力过大的信号;和发送信号到计算机系统,所述信号指引计算机系统发送虚拟机到第二计算机系统。例如,并参照图5,管理系统502可以接收来自诸如像计算机系统504的计算机系统的信号。所述信号可以指示计算机系统的资源压力过大。在本例中,被指派给虚拟机的RAM 的量可以是不固定的。也就是,它可以在运行时期间被调节。例如,由于计算机系统504正在实现很大数目的虚拟机或者各虚拟机具有繁重的工作负荷,所以计算机系统504的资源可能被过度调拨。在这种情形下,计算机系统504的超级监视器可以发送信号到管理系统502,其指示计算机系统在存储量方面较低,例如,该信号可以指示:在虚拟机内正在出现相当大量的分页,或非分页的存储器分配可能失败。在另一个例子中,客户操作系统220和虚拟机240中的任何工作负荷正花费不可接受地长的时间量来执行。在本例中,管理系统502可被配置成:通过发现可以容纳虚拟机240的另一个计算机和发送信号到计算机系统504来指引它将虚拟机240迁移到该新的计算机系统,例如计算机系统506,而减小在压力过大的计算机系统504上的工作负荷。超级监视器202可以接收该信号且可以将虚拟机240迁移到新的计算机系统,例如迁移到计算机系统506、508或510。
继续进行图9的说明,操作912描绘:发送信号到计算机系统,所述信号指引计算机系统把虚拟机从第一NUMA节点移到第二NUMA节点。例如,并参照图5,管理系统502可以发送信号到计算机系统504来指引它把虚拟机从一个NUMA节点移到另一个NUMA节点。在本例中,计算机系统504的体系结构可以类似于图7的计算机700的体系结构。图7的超级监视器202可以接收一个信号,该信号指引它把虚拟机240从一个NUMA节点移到另一个NUMA节点,例如,从NUMA节点704移到702。在本例中,在客户OS 220中的存储器压力可以是高的,或对于虚拟处理器230A-D的超级监视器线程可能无法在逻辑处理器212E和212G上足够快地调度。在本例中,管理系统502可以扫描数据中心500,并确定虚拟机240应当被移到例如NUMA节点 702,以及超级监视器202可以将虚拟NUMA节点606和608重新指派到NUMA节点702。
在实施例中,操作806可包括操作914,它描绘:确定在数据中心中的最高NUMA比率。例如,在本实施例中,管理系统502的处理器可以执行程序,并确定在数据中心500中存在的最高NUMA比率,以及在确定用于虚拟机240的虚拟NUMA节点的数目时使用所述信息。例如,NUMA比率是在访问远程存储器相对本地存储器之间在处理器循环方面的成本比率。2比1的NUMA比率意味着,与访问本地存储器地址所花费的相比,访问特定的远程存储器地址要花费两倍的处理器循环。在实施例中,管理系统502可以使用数据中心500中最高的检测的NUMA比率来设置由虚拟NUMA节点606-608报告的NUMA比率。这个信息可被存储在配置文件中,并被发送到将要实例化该虚拟机的计算机系统。超级监视器202可以在虚拟机的固件表中创建数据结构,其指示对于虚拟NUMA节点606-608的NUMA比率,以及当客户操作系统220或单片应用进行引导时,所述NUMA比率可被使用来做出线程调度决定。
现在转到图10,图上描绘包括操作1000-1006的操作程序。操作1000开始该操作程序,以及操作1002图示接收对于实例化虚拟机的请求。例如,并参照图6和7,超级监视器202可以接收创建虚拟机——诸如虚拟机240——的请求。例如,所述请求可以从管理系统502、图2或3的母分区204等等处被接收。所述请求可以是针对新的虚拟机,或者它可以是对于实例化以前保存的虚拟机的请求。在本公开内容的其中虚拟机是新的虚拟机的实施例中,虚拟机240的特征可以由例如管理员设置。管理员可以设置所述虚拟机初始地应当具有多少存储器,所述虚拟机相对于其它虚拟机应当具有什么类型的优先权,所述虚拟机应当具有多少虚拟处理器,所述虚拟机应当具有什么类型的I/O设备,等等。
转到操作1004,它描绘生成该虚拟机,该虚拟机具有包括多个虚拟NUMA节点的拓扑,该多个虚拟NUMA节点的每个虚拟NUMA节点包括至少一个虚拟处理器和一系列客户物理地址,其中虚拟机的拓扑是与计算机系统的物理拓扑相独立地生成的。例如,超级监视器202可以响应于该请求而构建具有多个虚拟NUMA节点606-608的虚拟机240。参照图6,虚拟NUMA节点606-608可以每个具有一个或多个虚拟处理器230A-D和客户物理地址614和616。在这个实施例中,虚拟NUMA节点606和608可以是与底层硬件的拓扑相独立地创建的。也就是,虚拟机的拓扑是与诸如图6和图7所描绘的底层硬件无关的。因此,在本实施例中,每个虚拟机的拓扑是与实现它的计算机系统的底层的物理拓扑相分离的。
继续进行图10的说明,操作1006图示:实例化该虚拟机,该虚拟机包括虚拟NUMA节点。在实施例中,超级监视器202可以由逻辑处理器执行,以及具有多个虚拟NUMA节点的虚拟机可以被实例化。例如,并参照图6和/或图7,具有虚拟NUMA节点606-608的虚拟机240可以由计算机系统600或700来实现。虚拟机240的客户物理地址可以用来自RAM的系统物理地址进行支持,以及虚拟处理器可以由一个或多个逻辑处理器进行支持。例如,客户物理地址块614可以用系统物理地址块622进行支持,以及客户物理地址块616可以用系统物理地址块624进行支持。超级监视器线程然后可以在对虚拟处理器进行支持的逻辑处理器上被调度,以及指示虚拟处理器的指令可以被执行。在虚拟机被实例化后,客户操作系统220可以调度进程以在虚拟NUMA节点606的虚拟处理器230A上执行。在本例中,客户操作系统220的存储器管理器可以选择一系列客户物理地址,并把所述系列的地址分配给该进程。在本例中,客户操作系统220可被配置成从虚拟NUMA节点606选择客户物理地址。在这种情形下,迁移/复原虚拟机的能力被增强,因为虚拟机被分解成较小的片段(piece)并被散布到计算机系统上。
在实施例中,虚拟机BIOS或引导固件可以向单片应用的客户操作系统描述虚拟机的拓扑,例如,它是否具有虚拟NUMA节点,任何虚拟NUMA节点的尺寸,以及对于虚拟NUMA节点的NUMA比率。数据结构可以被处理,客户OS或应用可以配置它自己以利用虚拟NUMA节点的存在。例如,客户操作系统220可以试图将不是NUMA感知的应用的线程与虚拟NUMA节点建立亲缘关系(affinitize),以使得应用的执行保持为本地的。在另一个例子中,数据库管理程序,诸如SQL服务器,可以分配对于虚拟NUMA节点而言是本地的锁,并且数据库可以跨多个虚拟NUMA节点来分解读/写请求。在再一个例子中,客户操作系统220可以创建用于虚拟机中的每个虚拟NUMA节点的页池(page pool)。
现在参照图11,图上图示图10的操作程序1000的替换实施例,其包括操作1108-1124。如图所示,操作1108图示保存该虚拟机。例如,在实施例中,虚拟机240可以被保存到计算机可读存储介质,诸如硬驱动。在实施例中,虚拟机240可以通过使用在标题为“Concurrent
Virtual Machine Snapshots and Restore”的美国专利申请No.11/487,031中描述的技术而被保存,该专利申请的内容通过引用的方式整体地合并于此。
继续进行图11的说明,操作1110显示发送虚拟机到远程计算机系统。例如,并参照图5,在实施例中,虚拟机240的状态可被保存在一个或多个配置文件中,并被发送到另一个计算机系统,例如,从计算机系统504发送到计算机系统506。计算机系统506的超级监视器可以读取该文件或该多个文件,并实例化虚拟机240。在特定的例子中,计算机系统504的超级监视器可以确定发送虚拟机240到计算机系统506。
虚拟机拓扑影响迁移和复原虚拟机的能力。具体地,关于允许底层硬件的拓扑被检测的决定和虚拟NUMA节点的尺寸影响虚拟机将执行得多好以及它是否可以轻松地迁移。例如,虚拟NUMA节点的尺寸影响迁移虚拟机的能力。也就是,随着虚拟NUMA节点的尺寸增加,虚拟NUMA节点的可移植性降低,而随着虚拟NUMA节点的尺寸减小,虚拟机的性能同样降低。另外,可以检测底层计算机的拓扑的虚拟机不能轻松地迁移,这是由于NUMA感知的操作系统和应用在引导时间根据它们检测到的第一个拓扑来最佳化其本身,且这些最佳化在虚拟机在未来可被迁移到的计算机上可能不适用。因此,通过在客户操作系统被引导时将虚拟NUMA节点暴露给它,操作系统可被最佳化来使用NUMA节点。通过给虚拟NUMA节点正确地定尺寸,虚拟机可以对于数据中心500中的许多不同的计算机系统进行最佳化。
例如,并参照图6,虚拟机240可包括两个或更多个虚拟NUMA节点606和608。超级监视器202可以用逻辑处理器212A-D对虚拟处理器230A-D进行支持。当客户操作系统220引导时,它可以检测虚拟NUMA节点606和608,并且可被配置成使得进程的调度和执行最佳化。在一段时间后,虚拟机240可被迁移到具有类似于图7所描绘的物理拓扑的计算机系统。图7的超级监视器202可以用逻辑处理器212A和B对虚拟处理器230A和B进行支持,以及用逻辑处理器212E和F对虚拟处理器230C和D进行支持。即使底层计算机拓扑已经从SMP改变到NUMA,客户操作系统220仍可以以与它在图6的计算机系统上运行时的相同的方式继续操作。
继续进行图11的说明,操作1112显示:将该虚拟机迁移到一个或多个其它NUMA节点。例如,并参照图7,超级监视器202可以调度虚拟NUMA节点606-608来在NUMA节点702上运行,并且在以后的某个时间,调度虚拟NUMA节点606-608来在例如NUMA节点704上运行。在这个例子中,当NUMA节点702压力过大时,超级监视器202可以迁移虚拟机240。例如,客户操作系统220和222可以生成指示虚拟机240在存储量方面较低的信号。在这个例子中,超级监视器202可被配置成:通过将虚拟机240移到不同的NUMA节点,而减小在NUMA节点702上的工作负荷。
继续进行图11的说明,操作1114显示:将该虚拟机指派给第一NUMA节点;和将该虚拟机迁移到多个NUMA节点的第二NUMA节点。例如,并参照图7,在实施例中,虚拟机240可以由超级监视器202指派给第一NUMA节点606。也就是,超级监视器指令可以由逻辑处理器212A-212I执行,以及虚拟机240可被指派给例如NUMA节点702。在这个例子中,虚拟处理器230A-230D可被设置成在逻辑处理器212A到212D上执行。在一段时间以后,当例如另一个虚拟机被初始化或变为离线时,超级监视器202可以由逻辑处理器212A-212I执行,以及逻辑处理器可以将虚拟机240迁移到计算机系统700中的另一个NUMA节点。更具体地,并参照之前的例子,超级监视器202可被执行,以及虚拟机240可以从NUMA节点702移到NUMA节点704。例如,虚拟处理器230A和B可被指派给逻辑处理器212E,虚拟处理器230C和D可被指派给逻辑处理器212F,以及客户物理地址614和616可以由系统物理地址622-624进行支持。
继续进行图11的说明,操作1116显示:生成对于多个虚拟NUMA节点的NUMA比率;和将对于多个虚拟NUMA节点的NUMA比率报告给客户操作系统。例如,在实施例中,超级监视器202可以生成对于虚拟NUMA节点606-608的NUMA比率,并且这个信息可以被报告给图6或图7的客户操作系统220。在实施例中,超级监视器202可以在虚拟机的固件表中创建数据结构,其指示对于虚拟NUMA节点的NUMA比率,以及当客户操作系统220引导时客户可以读取该表并使用该信息来做出线程调度决定。例如,客户操作系统,或NUMA感知的应用,可以使用NUMA比率来确定是否使用来自远程NUMA节点的资源。例如,操作系统可以具有准备好要执行的待决线程。在本例中,操作系统也可以被配置成:等待一定量的时间以便让理想处理器变为空闲的,否则它将在具有小于预定的NUMA比率的远程处理器上调度该线程。在这种情形下,调度器愿意等待的时间量取决于NUMA比率。
现在参照操作1118,它显示:接收来自客户操作系统的、对于访问来自第一虚拟NUMA节点的第一客户物理地址和来自第二虚拟NUMA节点的第二客户物理地址的请求;增加访问该第二客户物理地址所需要的访问时间;以及将访问该第一和第二客户物理地址所需要的增加的访问时间报告给客户操作系统。类似于操作1116,可以把NUMA比率报告给客户操作系统220,然而,在本示例性实施例中,客户操作系统220可包括用于确定NUMA比率是否精确的指令。也就是,客户操作系统220可以进行检查,以便通过检查对存储器的各个区域的访问时间而查看所报告的NUMA比率是否是错误的。在本例中,超级监视器202可被配置成监视虚拟机240的引导进程,以及超级监视器202可以减慢到相对特定虚拟NUMA节点而言是远程的存储器的访问。也就是,超级监视器202可被配置成:与虚拟处理器230A访问客户物理地址614时相比,对于虚拟处理器230A访问客户物理地址616的时候,生成更大的访问时间。在本例中,延迟可以是虚构的,因为客户物理地址614和616可以用来自单个NUMA节点的系统物理地址--诸如系统物理地址622和624--进行支持。
在实施例中,超级监视器202可以通过从虚拟处理器230A的虚拟处理器页表中去除远程客户物理地址616而增加访问时间。当虚拟处理器230A尝试访问远程存储器时,它将出错,以及可以执行超级监视器指令。超级监视器202然后可以修理所述页表,并使来自存储器地址的返回信号延迟达想要的时间量。当虚拟处理器230A接收标识花费多长时间来访问远程存储器的返回信号信息时,引入了延迟。
继续进行图11的说明,操作1120描绘:将系统存储器地址分配给该虚拟机,该系统存储器地址是从单个NUMA节点获得的;以及指派处理器来执行虚拟处理器,该处理器是从该NUMA节点获得的。例如,在实施例中,生成虚拟NUMA节点606-608可包括:分配系统物理地址;和指派来自同一个NUMA节点702的处理器对虚拟机240进行支持。例如,并参照图7,超级监视器202可以获得NUMA节点702的一个或多个系统物理地址块622-624,并使用它们对客户物理地址622-624进行支持。超级监视器202可以附加地使虚拟处理器230A与例如NUMA节点702的一个或多个逻辑处理器212A-212D建立亲缘关系。
继续进行图11的说明,操作1122描绘:将多个虚拟NUMA节点的第一虚拟NUMA节点映射到计算机系统的第一NUMA节点;和将多个虚拟NUMA节点的第二虚拟NUMA节点映射到计算机系统的该第一NUMA节点。例如,并参照图7,诸如逻辑处理器212A的逻辑处理器可以执行超级监视器指令,并且可以使诸如虚拟NUMA节点606和608的虚拟NUMA节点与诸如NUMA节点702的NUMA节点建立亲缘关系。更具体地,逻辑处理器执行指令,并且可以用系统物理地址622对客户物理地址614-616进行支持,用系统物理地址624对客户物理地址618-620进行支持,以及用逻辑处理器212A到D对虚拟处理器230A到D和232A-D进行支持。
关于操作1124,它描绘:将多个虚拟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的线程。
转到图12,图上描绘图9的操作程序的替换实施例。如图所示,该程序可包括操作1226,它显示:在实施例中,对于虚拟NUMA节点的NUMA比率大于在数据中心中检测的中值(median)NUMA比率,该数据中心包括多个计算机系统。例如,并参照图5,管理系统502可以获得数据中心500中的计算机系统504-510的物理拓扑。在实施例中,该程序可以询问每个计算机系统504-510,以及计算机可以用信息进行回答。一旦管理系统502具有描述每个计算机系统的拓扑的信息,程序就可以确定哪个计算机系统具有带有最高的(例如最糟的)NUMA比率和/或基于中值NUMA比率的NUMA节点。管理系统502可以使用这个信息来生成NUMA比率,该虚拟NUMA节点将在引导时间把它报告给客户操作系统。在本例中,管理系统502可以把虚拟NUMA比率设置为中值或大于在数据中心500中检测的最高NUMA比率,因此,把虚拟NUMA节点配置成反映高于一半的NUMA节点的状态、或糟于任何虚拟机实际将在其上运行的任何物理拓扑的状态。
现在转到图13,图上描绘包括操作1300、1302和1304的、用于实践本公开内容的诸方面的操作程序。操作1300开始操作程序,且操作1302描绘:生成用于虚拟机的多个虚拟NUMA节点,该多个虚拟NUMA节点的每个虚拟NUMA节点包括至少一个虚拟处理器和客户物理地址的至少一个存储区,该多个虚拟NUMA节点是与任何计算机系统的物理拓扑相独立地生成的。在实施例中,诸如图6或图7的212E那样的逻辑处理器可以执行超级监视器指令,以及处理器可以生成用于虚拟机240的虚拟NUMA节点606-608。类似于以上的内容,取决于例如虚拟机的特征,虚拟机240可以具有多得多的虚拟NUMA节点,例如,该虚拟机可以具有两个或更多个虚拟NUMA节点。超级监视器202可以把客户物理地址分配给每个虚拟NUMA节点606和608。类似于以上描述的内容,虚拟机240的拓扑独立于计算机系统的底层拓扑。例如,虚拟机在其上被最终实例化的计算机系统可以具有类似于图6的计算机系统600或图7的计算机系统700的拓扑。
继续进行图13的说明,操作1304显示:在计算机系统上实例化该虚拟机,该虚拟机包括多个虚拟NUMA节点。参照图6或图7,在超级监视器202生成用于虚拟机240的虚拟NUMA节点配置后,虚拟机240可以由计算机系统来实现。也就是,超级监视器202调度用于启动虚拟机240的指令。在例子中,超级监视器202可以选择一个或多个逻辑处理器来运行来自虚拟机240的指令,以及超级监视器202可以调度用于在逻辑处理器上实例化虚拟机240的指令。虚拟机指令可以由处理器执行,以及虚拟机240可以被实例化。在本例中,虚拟机240可包括描述两个或更多个虚拟NUMA节点的引导表。客户操作系统,或单片应用可以引导并从引导表发现虚拟NUMA节点,以及执行指令来配置它们自己以利用虚拟机240的拓扑。
现在参照图14,图上描绘图13的操作程序1300的替换实施例,其包括附加的操作1406-1412。现在参照操作1406,它图示:指派第一虚拟NUMA节点和第二虚拟NUMA节点来在计算机系统的NUMA节点上执行。例如,并参照图7,在实施例中,计算机系统可以具有包括NUMA节点的体系结构。在本例中,超级监视器202可以指派多个虚拟NUMA节点的两个虚拟NUMA节点给单个NUMA节点。例如,并参照图7,超级监视器指令可以由逻辑处理器执行,以及虚拟NUMA节点606和608可被指派来例如在NUMA节点702上运行。
继续进行图14的说明,操作1408描绘:指派多个虚拟NUMA节点的第一虚拟NUMA节点来在计算机系统的第一NUMA节点上执行;以及指派多个虚拟NUMA节点的第二虚拟NUMA节点来在计算机系统的第二NUMA节点上执行。例如,并参照图7,诸如逻辑处理器212B的逻辑处理器可以执行超级监视器指令,并可以指派虚拟NUMA节点606给NUMA节点704,以及指派虚拟NUMA节点608给NUMA节点706。在本例中,当超级监视器202被执行时,超级监视器调度器可以在逻辑处理器212F和212G上调度来自虚拟处理器230A-B的线程,以及在逻辑处理器212H和212I上调度来自虚拟处理器230C或D的线程。
继续进行图14的说明,操作1410描绘:生成对于多个虚拟NUMA节点的NUMA比率;以及将NUMA比率报告给客户操作系统。例如,在实施例中,超级监视器202可以生成对于虚拟NUMA节点的NUMA比率,并且可以将这个信息报告给图6或图7的客户操作系统220。
继续进行图14的说明,操作1412描绘:确定与虚拟机相关联的NUMA节点被过度调拨;以及将虚拟机迁移到一个或多个另外的NUMA节点。例如,并参照图7,超级监视器202可以调度虚拟NUMA节点606-612来在NUMA节点702上运行。也就是,NUMA节点702可被配置成宿有虚拟机240和242。在本例中,超级监视器202可以接收指示NUMA节点702压力过大的信号。例如,客户操作系统220和222可以生成指示虚拟机240-242在存储量方面较低的信号。在本例中,超级监视器202可被配置成:通过将虚拟机移到不同的NUMA节点,而减小在NUMA节点702上的工作负荷。在本例中,超级监视器202可以重新指派虚拟机240的虚拟NUMA节点606和608来在NUMA节点704上执行。
以上的详细说明经由例子和/或操作图阐述了系统和/或过程的各种实施例。就这样的框图和/或例子包含一个或多个功能和/或操作而论,本领域技术人员将懂得,在这样的框图或例子内的每个功能和/或操作可通过各种各样的硬件、软件、固件、或事实上它们的任何组合,而被单独地和/或共同地实施。
虽然显示和描述了这里描述的本主题的特定方面,但本领域技术人员将明白,根据这里的教导,可以做出改变和修改,而不背离这里描述的主题和它的更广义的方面,所以,所附权利要求是要将处在这里描述的主题的真实精神和范围内的所有的这样的改变和修改都包括在它们的范围内。
Claims (20)
1. 一种方法,包括:
由管理系统(502)接收指示在数据中心(500)中的计算机系统(504-510)的物理拓扑的信息;
接收对于实例化虚拟机(240)的请求,所述请求指示用于该虚拟机的特征;
根据计算机系统(504-510)的物理拓扑和用于该虚拟机(240)的特征,确定用于该虚拟机(240)的虚拟NUMA节点的数目;以及
发送请求到数据中心(500)的计算机系统(504),所述请求指引该计算机系统(504)实例化具有所确定数目的虚拟NUMA节点的虚拟机(240)。
2. 权利要求1的方法,还包括:
接收指示计算机系统(504-510)压力过大的信号;以及
发送信号到该计算机系统(504),所述信号指引该计算机系统(504)发送该虚拟机(240)到第二计算机系统(506,508或510)。
3. 权利要求1的方法,还包括:
发送信号到计算机系统(504),所述信号指引该计算机系统(504)将该虚拟机从第一NUMA节点(704)移到第二NUMA节点(702)。
4. 权利要求1的方法,其中确定用于虚拟机(240)的虚拟NUMA节点的数目还包括:
确定在数据中心(500)中的最高的NUMA比率。
5. 一种计算机系统,包括:
用于接收对于实例化虚拟机(240)的请求的电路;
用于生成该虚拟机(240)的电路,该虚拟机(240)具有包括多个虚拟NUMA节点(606,608)的拓扑,该多个虚拟NUMA节点的每个虚拟NUMA节点包括至少一个虚拟处理器(230A-D)和一系列客户物理地址(614,616),其中该虚拟机(240)的拓扑是与计算机系统(700)的物理拓扑相独立地生成的;以及
用于实例化该虚拟机(240)的电路,该虚拟机(240)包括虚拟NUMA节点(606,608)。
6. 权利要求5的计算机系统,还包括:
用于保存该虚拟机(240)的电路。
7. 权利要求5的计算机系统,还包括:
用于发送该虚拟机(240)到远程计算机系统(506)的电路。
8. 权利要求5的计算机系统,还包括:
用于把该虚拟机(240)迁移到一个或多个其它NUMA节点(704)的电路。
9. 权利要求5的计算机系统,还包括:
用于指派该虚拟机(240)给第一NUMA节点(702)的电路;以及
用于把该虚拟机(240)迁移到所述多个NUMA节点的第二NUMA节点(704)的电路。
10. 权利要求5的计算机系统,还包括:
用于生成对于所述多个虚拟NUMA节点(606-608)的NUMA比率的电路;以及
用于将对于所述多个虚拟NUMA节点(606-608)的NUMA比率报告给客户操作系统(220)的电路。
11. 权利要求5的计算机系统,还包括:
用于接收来自客户操作系统(220)的、对于访问来自第一虚拟NUMA节点的第一客户物理地址(614)和来自第二虚拟NUMA节点的第二客户物理地址(616)的请求的电路;
用于增加访问该第二客户物理地址(616)所需要的访问时间的电路;以及
用于将访问该第一和第二客户物理地址(616)所需要的增加的访问时间报告给客户操作系统(220)的电路。
12. 权利要求5的计算机系统,还包括:
用于分配系统存储器地址给该虚拟机(240)的电路,该系统存储器地址(622-624)是从单个NUMA节点(702)获得的;以及
用于指派处理器(212A)来执行该虚拟处理器(230A)的电路,该处理器(212A)是从该NUMA节点(702)获得的。
13. 权利要求5的计算机系统,其中用于实例化该虚拟机(240)的电路还包括:
用于将所述多个虚拟NUMA节点的第一虚拟NUMA节点(606)映射到计算机系统(700)的第一NUMA节点(702)的电路;以及
用于将所述多个虚拟NUMA节点的第二虚拟NUMA节点(608)映射到计算机系统(700)的该第一NUMA节点(702)的电路。
14. 权利要求5的计算机系统,其中用于实例化虚拟机(240)的电路还包括:
用于将所述多个虚拟NUMA节点的第一虚拟NUMA节点映射到计算机系统的第一NUMA节点的电路;以及
用于将所述多个虚拟NUMA节点的第二虚拟NUMA节点映射到计算机系统的第二NUMA节点的电路。
15. 权利要求10的计算机系统,其中对于虚拟NUMA节点(606-608)的NUMA比率大于在数据中心(500)中检测的中值NUMA比率,该数据中心(500)包括多个计算机系统(504-510)。
16. 一种包括处理器可执行指令的计算机可读存储介质,所述计算机可读存储介质包括:
用以生成用于虚拟机(240)的多个虚拟NUMA节点(606-608)的指令,该多个虚拟NUMA节点的每个虚拟NUMA节点(606-608)包括至少一个虚拟处理器(212E)和客户物理地址的至少一个存储区,该多个虚拟NUMA节点是与任何计算机系统的物理拓扑相独立地生成的;以及
用于在计算机系统(700)上实例化该虚拟机(240)的指令,该虚拟机(240)包括该多个虚拟NUMA节点(606,608)。
17. 权利要求17的计算机可读存储介质,还包括:
用于指派第一虚拟NUMA节点(606)和第二虚拟NUMA节点(608)在计算机系统(700)的一个NUMA节点(702)上执行的指令。
18. 权利要求17的计算机可读存储介质,还包括:
用于指派所述多个虚拟NUMA节点的第一虚拟NUMA节点(606)在计算机系统(700)的第一NUMA节点(704)上执行的指令;以及
用于指派所述多个虚拟NUMA节点的第二虚拟NUMA节点(608)在计算机系统(700)的第二NUMA节点(608)上执行的指令。
19. 权利要求17的计算机可读存储介质,还包括:
用于生成对于所述多个虚拟NUMA节点(606-608)的NUMA比率的指令;以及
用于将NUMA比率报告给客户操作系统(220)的指令。
20. 权利要求17的计算机可读存储介质,还包括:
用于确定与虚拟机(240)相关联的NUMA节点(702)被过度调拨的指令;以及
用于把该虚拟机(240)迁移到一个或多个其它NUMA节点(704)的指令。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/412,258 | 2009-03-26 | ||
US12/412,258 US9535767B2 (en) | 2009-03-26 | 2009-03-26 | Instantiating a virtual machine with a virtual non-uniform memory architecture |
US12/412258 | 2009-03-26 | ||
PCT/US2010/028038 WO2010111151A2 (en) | 2009-03-26 | 2010-03-19 | Virtual non-uniform memory architecture for virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102365626A true CN102365626A (zh) | 2012-02-29 |
CN102365626B CN102365626B (zh) | 2013-05-29 |
Family
ID=42781792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800137822A Active CN102365626B (zh) | 2009-03-26 | 2010-03-19 | 用于虚拟机的虚拟非一致存储器体系结构 |
Country Status (9)
Country | Link |
---|---|
US (2) | US9535767B2 (zh) |
EP (1) | EP2411916B1 (zh) |
JP (1) | JP5507661B2 (zh) |
KR (1) | KR101722276B1 (zh) |
CN (1) | CN102365626B (zh) |
BR (1) | BRPI1009274A2 (zh) |
CA (2) | CA2753229C (zh) |
RU (1) | RU2571366C2 (zh) |
WO (1) | WO2010111151A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677454A (zh) * | 2014-11-20 | 2016-06-15 | 华为技术有限公司 | 计算资源的整合方法、装置和系统 |
Families Citing this family (43)
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 |
US8780923B2 (en) * | 2010-01-15 | 2014-07-15 | Dell Products L.P. | Information handling system data center bridging features with defined application environments |
US8904382B2 (en) * | 2010-06-17 | 2014-12-02 | International Business Machines Corporation | Creating instances of cloud computing environments |
US9733963B2 (en) * | 2010-09-17 | 2017-08-15 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Optimizing virtual graphics processing unit utilization |
US8667441B2 (en) | 2010-11-16 | 2014-03-04 | International Business Machines Corporation | Clock optimization with local clock buffer control optimization |
KR101145144B1 (ko) * | 2010-11-23 | 2012-05-14 | 한국과학기술정보연구원 | 가상머신 스케줄링 방법 및 시스템 |
US9250863B1 (en) * | 2010-12-28 | 2016-02-02 | Amazon Technologies, Inc. | Managing virtual machine migration |
US8725483B2 (en) | 2011-01-19 | 2014-05-13 | International Business Machines Corporation | Minimizing the maximum required link capacity for three-dimensional interconnect routing |
US8621057B2 (en) * | 2011-03-07 | 2013-12-31 | International Business Machines Corporation | Establishing relationships among elements in a computing system |
US9183030B2 (en) * | 2011-04-27 | 2015-11-10 | Microsoft Technology Licensing, Llc | Virtual processor allocation techniques |
US20130007370A1 (en) * | 2011-07-01 | 2013-01-03 | Oracle International Corporation | Method and apparatus for minimizing working memory contentions in computing systems |
US8856495B2 (en) * | 2011-07-25 | 2014-10-07 | International Business Machines Corporation | Automatically routing super-compute interconnects |
US9164809B2 (en) * | 2012-09-04 | 2015-10-20 | Red Hat Israel, Ltd. | Virtual processor provisioning in virtualized computer systems |
US20140229940A1 (en) * | 2013-02-14 | 2014-08-14 | General Dynamics C4 Systems, Inc. | Methods and apparatus for synchronizing multiple processors of a virtual machine |
US10114662B2 (en) * | 2013-02-26 | 2018-10-30 | Red Hat Israel, Ltd. | Updating processor topology information for virtual machines |
US10061622B2 (en) * | 2013-02-26 | 2018-08-28 | Red Hat Israel, Ltd. | Updating memory topology information for virtual machines |
US9348654B2 (en) * | 2013-11-19 | 2016-05-24 | International Business Machines Corporation | Management of virtual machine migration in an operating environment |
JP6287321B2 (ja) * | 2014-02-24 | 2018-03-07 | 富士通株式会社 | 情報処理装置、情報処理方法、および情報処理プログラム |
US9417902B1 (en) * | 2014-03-24 | 2016-08-16 | Amazon Technologies, Inc. | Managing resource bursting |
US9223574B2 (en) * | 2014-03-27 | 2015-12-29 | International Business Machines Corporation | Start virtual execution instruction for dispatching multiple threads in a computer |
US10146634B1 (en) * | 2014-03-31 | 2018-12-04 | EMC IP Holding Company LLC | Image restore from incremental backup |
WO2015193947A1 (ja) * | 2014-06-16 | 2015-12-23 | 株式会社日立製作所 | 物理計算機及び仮想計算機移行方法 |
US10079797B2 (en) * | 2014-10-29 | 2018-09-18 | Vmware, Inc. | Methods, systems and apparatus to remotely start a virtual machine |
US10140218B2 (en) * | 2015-01-15 | 2018-11-27 | Red Hat Israel, Ltd. | Non-uniform memory access support in a virtual environment |
US9959233B2 (en) * | 2015-04-28 | 2018-05-01 | Red Hat Israel, Ltd. | NUMA-aware root bus selection |
US9798497B1 (en) * | 2015-06-08 | 2017-10-24 | Skytap | Storage area network emulation |
US10241674B2 (en) * | 2015-12-11 | 2019-03-26 | Vmware, Inc. | Workload aware NUMA scheduling |
JP6645275B2 (ja) * | 2016-03-04 | 2020-02-14 | 富士通株式会社 | 情報処理装置、仮想マシン移動方法、および仮想マシン制御プログラム |
US10095550B2 (en) * | 2016-10-19 | 2018-10-09 | International Business Machines Corporation | Performance-based reallocating of logical processing units to sockets of a computer system |
CN108733509B (zh) * | 2017-04-17 | 2021-12-10 | 伊姆西Ip控股有限责任公司 | 用于在集群系统中备份和恢复数据的方法和系统 |
CN107168771A (zh) * | 2017-04-24 | 2017-09-15 | 上海交通大学 | 一种非一致性内存访问架构下的虚拟机调度装置及方法 |
SG11201909903VA (en) * | 2017-04-28 | 2019-11-28 | Lzlabs Gmbh | Containerized deployment of microservices based on monolithic legacy applications |
US10649943B2 (en) | 2017-05-26 | 2020-05-12 | Dell Products, L.P. | System and method for I/O aware processor configuration |
US10613990B2 (en) * | 2017-12-05 | 2020-04-07 | Red Hat, Inc. | Host address space identifier for non-uniform memory access locality in virtual machines |
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 |
US10901911B2 (en) | 2018-11-21 | 2021-01-26 | Microsoft Technology Licensing, Llc | Faster computer memory access by reducing SLAT fragmentation |
US10503543B1 (en) | 2019-02-04 | 2019-12-10 | Cohesity, Inc. | Hosting virtual machines on a secondary storage system |
US20210132979A1 (en) * | 2019-10-30 | 2021-05-06 | TidalScale, Inc. | Goal-directed software-defined numa working set management |
CN114090223A (zh) * | 2020-08-24 | 2022-02-25 | 北京百度网讯科技有限公司 | 访存请求调度方法、装置、设备以及存储介质 |
US11740921B2 (en) * | 2020-11-23 | 2023-08-29 | Google Llc | Coordinated container scheduling for improved resource allocation in virtual computing environment |
US11928502B2 (en) * | 2021-04-29 | 2024-03-12 | VMware LLC | Optimized networking thread assignment |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20020144185A1 (en) * | 2001-03-29 | 2002-10-03 | International Business Machines Corporation | Verification of global coherence in a multi-node NUMA system |
US20020152371A1 (en) * | 2001-04-12 | 2002-10-17 | International Business Machines Corporation | Method and apparatus to boot a non-uniform-memory-access (NUMA) machine |
US20030009641A1 (en) * | 2001-06-21 | 2003-01-09 | International Business Machines Corp. | Dynamic history based mechanism for the granting of exclusive data ownership in a non-uniform memory access (numa) computer system |
US20050120160A1 (en) * | 2003-08-20 | 2005-06-02 | Jerry Plouffe | System and method for managing virtual servers |
CN101271401A (zh) * | 2008-04-23 | 2008-09-24 | 北京航空航天大学 | 一种具备单一系统映像的服务器机群系统 |
Family Cites Families (39)
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 |
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 | 動的な資源分配をする仮想計算機システム |
US7536697B2 (en) | 2001-06-19 | 2009-05-19 | Accenture Global Services Gmbh | Integrating enterprise support systems |
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 |
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 |
EP1769353A2 (en) * | 2004-05-21 | 2007-04-04 | 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 |
CN100489815C (zh) | 2007-10-25 | 2009-05-20 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
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,258 patent/US9535767B2/en active Active
-
2010
- 2010-03-19 CA CA2753229A patent/CA2753229C/en active Active
- 2010-03-19 CN CN2010800137822A patent/CN102365626B/zh active Active
- 2010-03-19 KR KR1020117022331A patent/KR101722276B1/ko active IP Right Grant
- 2010-03-19 CA CA3003789A patent/CA3003789C/en active Active
- 2010-03-19 RU RU2011139102/08A patent/RU2571366C2/ru not_active IP Right Cessation
- 2010-03-19 BR BRPI1009274A patent/BRPI1009274A2/pt not_active Application Discontinuation
- 2010-03-19 WO PCT/US2010/028038 patent/WO2010111151A2/en active Application Filing
- 2010-03-19 JP JP2012502135A patent/JP5507661B2/ja active Active
- 2010-03-19 EP EP10756651.5A patent/EP2411916B1/en active Active
-
2016
- 2016-11-22 US US15/359,561 patent/US10908968B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US20020144185A1 (en) * | 2001-03-29 | 2002-10-03 | International Business Machines Corporation | Verification of global coherence in a multi-node NUMA system |
US20020152371A1 (en) * | 2001-04-12 | 2002-10-17 | International Business Machines Corporation | Method and apparatus to boot a non-uniform-memory-access (NUMA) machine |
US20030009641A1 (en) * | 2001-06-21 | 2003-01-09 | International Business Machines Corp. | Dynamic history based mechanism for the granting of exclusive data ownership in a non-uniform memory access (numa) computer system |
US20050120160A1 (en) * | 2003-08-20 | 2005-06-02 | Jerry Plouffe | System and method for managing virtual servers |
CN101271401A (zh) * | 2008-04-23 | 2008-09-24 | 北京航空航天大学 | 一种具备单一系统映像的服务器机群系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677454A (zh) * | 2014-11-20 | 2016-06-15 | 华为技术有限公司 | 计算资源的整合方法、装置和系统 |
CN105677454B (zh) * | 2014-11-20 | 2019-08-27 | 华为技术有限公司 | 计算资源的整合方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
RU2011139102A (ru) | 2013-03-27 |
EP2411916A2 (en) | 2012-02-01 |
US10908968B2 (en) | 2021-02-02 |
CN102365626B (zh) | 2013-05-29 |
BRPI1009274A2 (pt) | 2016-03-08 |
CA3003789C (en) | 2020-09-15 |
RU2571366C2 (ru) | 2015-12-20 |
WO2010111151A2 (en) | 2010-09-30 |
EP2411916A4 (en) | 2013-01-30 |
CA2753229C (en) | 2018-10-30 |
JP2012521611A (ja) | 2012-09-13 |
US20100251234A1 (en) | 2010-09-30 |
KR101722276B1 (ko) | 2017-03-31 |
KR20120008026A (ko) | 2012-01-25 |
EP2411916B1 (en) | 2020-08-19 |
US9535767B2 (en) | 2017-01-03 |
WO2010111151A3 (en) | 2011-01-13 |
US20170075617A1 (en) | 2017-03-16 |
JP5507661B2 (ja) | 2014-05-28 |
CA2753229A1 (en) | 2010-09-30 |
CA3003789A1 (en) | 2010-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102365626B (zh) | 用于虚拟机的虚拟非一致存储器体系结构 | |
CN102365625B (zh) | 用于虚拟机的虚拟非一致存储器体系结构 | |
US11094031B2 (en) | GPU resource usage display and dynamic GPU resource allocation in a networked virtualization system | |
US8701115B2 (en) | Hypervisor scheduler | |
US7222343B2 (en) | Dynamic allocation of computer resources based on thread type | |
CN100487659C (zh) | 用于优化分段资源分配的方法和设备 | |
US7428485B2 (en) | System for yielding to a processor | |
US8898664B2 (en) | Exposure of virtual cache topology to a guest operating system | |
US8271989B2 (en) | Method and apparatus for virtual processor dispatching to a partition based on shared memory pages | |
US7370331B2 (en) | Time slicing in a shared partition | |
Guo et al. | Moving hadoop into the cloud with flexible slot management and speculative execution | |
CN102402462A (zh) | 用于对启用gpu的虚拟机进行负载平衡的技术 | |
US11573833B2 (en) | Allocating cores to threads running on one or more processors of a storage system | |
CN102346684B (zh) | 将虚拟高速缓存拓扑结构展示给客操作系统 | |
CN111782348A (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: 20150506 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150506 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |