用于为虚拟机揭示处理器拓扑结构的系统和方法

文档序号:6651108阅读:168来源:国知局
专利名称:用于为虚拟机揭示处理器拓扑结构的系统和方法
技术领域
本发明一般涉及虚拟机(也被称为“处理器虚拟化”)领域,以及在虚拟机环境中执行的操作系统。更具体而言,本发明涉及用于向在虚拟机中执行的客机操作系统揭示虚拟机的处理器拓扑结构的系统和方法,其中,所述拓扑结构基于主机计算机系统处理器和存储器资源分配是动态的。
背景技术
包含通用中央处理单元(CPU)或“处理器”的计算机被设计成执行特定的系统指令集。具有类似体系结构或设计规范的一组处理器可以被认为是同一处理器家族的成员。当前的处理器家族的示例包括,由亚利桑那州菲尼克斯的摩托罗拉有限公司制造的摩托罗拉680X0处理器家族、由加利福尼亚州桑尼维尔的英特尔公司制造的英特尔80X86处理器家族、以及由摩托罗拉有限公司制造并在由加利福尼亚州库珀蒂诺苹果计算机有限公司制造的计算机中使用的PowerPC处理器家族。尽管一组处理器可以由于其类似的体系结构和设计规范而处于相同的家族中,但是根据其时钟速度和其它性能参数,家族中的处理器可能差异很大。
每一微处理器家族执行仅对该处理器家族独特的指令。处理器或处理器家族可执行的指令的集合被称为处理器指令集。作为示例,由英特尔80X86处理器家族使用的指令集与由PowerPC处理器家族使用的指令不兼容。英特尔80X86指令集是基于复杂指令集计算机(CISC)格式的。摩托罗拉的PowerPC指令集是基于精简指令集计算机(RISC)格式的。CISC处理器使用大量指令,其中某些可以执行相当复杂的功能,但是一般需要多个时钟周期来执行。RISC处理器使用较小数量的可用指令来执行以远远更高的速率执行的一组较简单的功能。
计算机系统之间的处理器家族的独特性一般也导致计算机系统的硬件体系结构的其它元件之间的不兼容性。使用来自英特尔80X86处理器家族的处理器制造的计算机系统将具有与使用来自PowerPC处理器家族的处理器制造的计算系统不同的硬件体系结构。由于处理器指令集和计算机系统硬件体系结构的独特性,应用软件程序一般被编写以在运行特定操作系统的特定计算机系统上运行。
虚拟机计算机制造商希望通过使更多而不是更少的应用程序在与该计算机制造商的生产线相关联的微处理器家族上运行来最大化其市场份额。为了扩大可以运行在计算机系统上的操作系统和应用程序的数量,开发了一种技术领域,其中含有一种类型的CPU的给定计算机,被称为主机,将包含允许主机计算机仿真被称为客机的不相关类型的CPU的指令的虚拟化器程序。这样,主机计算机将执行使得一条或多条主机指令响应于给定的客机指令而被调用的应用程序,且使用这种方式,主机计算机可以运行为其自身硬件体系结构设计的软件和为含有不相关硬件体系结构的计算机而编写的软件。
作为更具体的示例,例如,由苹果计算机制造的计算机系统可以运行为基于PC的计算机系统编写的操作系统和程序。它也有可能使用虚拟化器程序以在单个CPU上并发地运行多个不兼容的操作系统。在后一安排中,尽管每一操作系统彼此不兼容,但是虚拟化器程序可以作为若干操作系统的主机,从而允许不兼容的操作系统在同一主机计算机系统上并发地运行。
当在主机计算机系统上仿真客机计算机系统时,客机计算机系统被称为“虚拟机”,因为客机计算机系统在主机计算机系统中仅作为一种特殊硬件体系结构的操作的纯软件表示而存在。术语虚拟化器、仿真器、直接执行程序、虚拟机以及处理器仿真有时可互换使用,以表示使用本领域的技术人员已知且理解的一种或若干方法来模拟或仿真整个计算机系统的硬件体系结构的能力。而且,以任何形式的术语“仿真”的所有使用旨在传达其广义,且不旨在区分仿真的指令执行概念与虚拟机中的操作系统指令的直接执行。这样,例如,由加利福尼亚州圣马特奥的Connectix公司创建的Virtual PC软件“仿真”(通过指令执行仿真和/或直接执行)包括英特尔80X86奔腾处理器和各种主板组件和卡的整个计算机,且在运行在主机上的虚拟机中“仿真”这些组件的操作。运行在诸如含有PowerPC处理器的计算机系统等主机计算机的操作系统软件和硬件体系结构上的虚拟化器程序模拟整个客机计算机系统的操作。
虚拟化器程序担当主机的硬件体系结构和由运行在仿真环境内的软件(例如,操作系统、应用程序等)发送的指令之间的互换。该虚拟化器程序可以是主机操作系统(HOS),HOS是直接运行在物理计算机硬件上的操作系统(且可以包括系统管理程序,在本发明的下文中将更详细描述)。或者,仿真的环境也可以是虚拟机监控程序(VMM),VMM是直接在硬件上运行的软件层,可能与主机操作系统并行运行或结合工作,且可以通过揭示与VMM正在虚拟的硬件相同的接口来虚拟化主机的所有资源(以及某些虚拟资源)。该虚拟化使得虚拟化器(以及主机计算机系统本身)不被运行于其上的操作系统层察觉。
总而言之,处理器仿真使得客机操作系统能够在由主机计算机系统上运行的虚拟化器创建的虚拟机上执行,所述主机计算系统包括物理硬件和主机操作系统。
处理器和存储器拓扑结构现代操作系统调度程序考虑机器的处理器和存储器拓扑结构来优化性能。这通常在启动时完成,且对于在物理硬件上执行的操作系统,这往往是充分的,因为物理硬件的处理器拓扑结构保持不变。Windows操作系统(Windows XP、Windows2003)以及其它操作系统一般在引导时间以两种方式确定系统的拓扑结构(a)通过检查BIOS静态资源关系表(SRAT)中的存储器和处理器节点拓扑信息,以及(b)通过读取自包含的处理器标识数据(x86/x64处理器中的CPUID)来确定具体的同时多线程(SMT,也称为超线程)和多核拓扑。
如此处所使用的,术语“处理器拓扑结构”广泛指的是处理器及相关联的存储器的物理特征,如果操作系统知道这些特征,理论上可以使得操作系统能够更好地利用相关联的处理器资源。处理器拓扑可以包括,但不限于,下列静态处理器信息,诸如SMT、多核和BIOS的SRAT数据和/或信息、诸如处理器、存储器和I/O资源方案等静态NUMA信息、以及对前述的任何改变。
然而,在虚拟机环境中,尽管“主机代理”(主机操作系统、虚拟机监控程序和/或系统管理程序)的物理处理器拓扑结构是保持不变的,但是分配给虚拟化器从而虚拟机的物理资源可能随时间迅速变化,使得由运行在虚拟机上的客机操作系统作出的拓扑结构假设是不准确且因此是低效的。
尽管可以通过对虚拟处理器总是使用相同的物理处理器分配或者通过限制对特定节点的分配来减轻拓扑结构的动态本质,但是这会严重且消极地影响虚拟化器来最优地使用所有主机资源的能力。从而,本领域中需要的是用于校正变化的虚拟拓扑结构的低效,同时不消极地影响虚拟化器最优使用所有主机资源的能力的方法。

发明内容
本发明的各个实施例针对用于使得客机操作系统知道当前分配给它的主机资源的子集的拓扑结构。对这些实施例中的某一些,在虚拟机引导时,虚拟化器将使用静态资源关系表(SRAT)来将客机物理存储器和客机虚拟处理器组合成虚拟节点。之后,虚拟化器能够按所需地改变虚拟节点背后的主机物理存储器,且虚拟化器将为该节点中的虚拟处理器提供合适的物理处理器。


当结合附图阅读以上概述以及以下最佳实施例的详细描述时,能更好地理解它们。为说明本发明起见,在附图中示出了本发明的示例性构造,然而,本发明不限于所揭示的特定方法和手段。在附图中图1是表示可在其中包含本发明的各方面的计算机系统的框图,图2是表示计算机系统中的仿真的操作环境的硬件和软件体系结构的逻辑分层的框图,图3A是表示虚拟化计算系统的框图,其中仿真是由主机操作系统执行的(或者直接地或者通过系统管理程序),图3B是表示另一虚拟化计算系统的框图,其中仿真是由与主机操作系统并行运行的虚拟机监控程序执行的,图4是示出可以利用本发明的若干实施例的多核处理器和NUMA两节点系统的框图,图5是示出对本发明的某些实施例,虚拟化器用于为虚拟机存储器中的客机操作系统提供动态处理器拓扑信息的一种方法的处理流程图,以及图6是示出对本发明的若干实施例的双重揭示和暗示方法的框图。
具体实施例方式
发明是用特殊性来描述的,以满足法定要求。然而,描述本身不旨在限制本专利的范围。而是相反,发明人已经构想到所要求保护的本发明也可以用其它方式来实施,以结合其它现有或未来技术包括与在该文档中描述的方式不同的步骤或类似于这些步骤的步骤组合。此外,尽管可以在此处使用术语“步骤”来包含所使用的方法的不同元素,但是除非当明确描述单个步骤的顺序,否则不应该把该术语揭示为暗示此处所揭示的多个步骤之间的的任何特定顺序。
计算机环境本发明的众多实施例可以在图1的计算机上执行,且以下讨论旨在提供可在其中实现本发明的合适的计算环境的简要概括描述。尽管不是必需的,但本发明将在如诸如由客户机工作站或服务器等计算机执行的程序模块等计算机可执行指令的通用语境中描述。一般而言,过程包括程序模块、例程、函数、程序、对象、组件、数据结构等,它们执行特定任务或实现特定抽象数据类型。而且,本领域的技术人员可以理解,本发明可以在其它计算机系统配置中实现,包括手持式设备、多处理器系统、基于微处理器或可编程消费者电子产品、网络PC、小型机、大型机等。本发明也可以在分布式计算环境中实现,其中任务由通过通信网络连接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和远程计算机存储介质中。
如图1所示,示例性通用计算系统包括常规个人计算机20等,包括处理单元21、系统存储器22和将包括系统存储器在内的各种系统组件耦合至处理单元21的系统总线23。系统总线23可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线体系结构中的任一种的局部总线。系统存储器包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统26(BIOS)包含有助于诸如启动时在个人计算机20中元件之间传递信息的基本例程,它存储在ROM 24中。个人计算机20还可以包括从硬盘(未示出)中读取或向其写入的硬盘驱动器27,从可移动磁盘29中读取或向其写入的磁盘驱动器28,以及从诸如CD ROM或其它光学介质等可移动光盘31中读取或向其写入的光盘驱动器30。硬盘驱动器27、磁盘驱动器28和光盘驱动器30分别由硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34连接至系统总线23。驱动器及其相关联的计算机存储介质为个人计算机20提供了对计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管此处所示的示例性环境使用硬盘、可移动磁盘29和可移动光盘31,本领域的技术人员应该理解,也可以在示例性操作环境中使用其它类型的计算机可读介质,它们可以存储可由计算机访问的数据,诸如盒式磁带、闪存卡、数字多功能盘、贝努利盒式磁盘、随机存取存储器(RAM)、只读存储器(ROM)等。
可以在硬盘、磁盘29、光盘31、ROM 24或RAM 25上存储多个程序模块,包括操作系统35、一个或多个应用程序模块36、其它程序模块37和程序数据38。用户可以通过诸如键盘40和定点设备42等输入设备向个人计算机20输入命令和信息。其它输入设备(未示出)可以包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系统总线的串行端口接口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连接至局域网51。当在WAN网络环境中使用时,个人计算机20通常包括调制解调器54或用于通过诸如因特网等广域网52建立通信的其它装置。调制解调器54可以是内置或外置的,它通过串行端口接口46连接至系统总线23。在网络化环境中,相对于个人计算机20所描述的程序模块或其部分可以存储在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。而且,尽管预期到本发明的众多实施例尤其适用于计算机化的系统,然而本文档中没有旨在将本发明限制于这些实施例。
虚拟机从概念的观点来看,计算机系统一般包括在硬件基础层上运行的一个或多个软件层。为抽象的原因进行分层。通过为给定软件层定义接口,该层可以由其上的其它层来不同地实现。在设计良好的计算机系统中,每一层仅了解(且仅依赖于)直接在其下的层。这允许层或“堆栈”(多个邻接层)被替代,而没有消极地影响所述层或堆栈上方的层。例如,软件应用程序(较高层)一般依赖于操作系统的较低层(较低层),来向某一形式的持久存储写入文件,且这些应用程序不需理解向软盘、硬盘驱动器或网络文件夹写入数据之间的不同。如果较低层被新的操作系统组件取代来写入文件,较高层的软件应用程序的操作保持不受影响。
分层软件的灵活性允许虚拟机(VM)呈现实际上是另一软件层的虚拟硬件层。以这种方式,VM可以为其上的软件层创建所述软件层运行在其自身的专用计算机系统上的幻觉,从而VM可以允许多个“客机系统”在单个“主机系统”上并发地运行。该抽象层由图2示出。
图2是表示计算机系统中的仿真的操作环境的硬件和软件体系结构的逻辑分层的示意图。在图中,仿真程序94直接或间接地运行在物理硬件体系结构92上。仿真程序94可以是(a)与主机操作系统并排运行的虚拟机监控程序,(b)含有本机仿真能力的专用主机操作系统,或者(c)具有系统管理程序组件的主机操作系统,其中所述系统管理程序组件执行所述仿真。仿真程序94仿真客机硬件体系结构96(由虚线示出,以说明该组件是“虚拟机”的事实,即硬件实际上不存在但是改为由所述仿真程序94仿真)。客机操作系统98在所述客机硬件体系结构96上执行,且软件应用程序100在客机操作系统98上运行。在图2的仿真操作系统中,且由于仿真程序94的操作,即使软件应用程序100被设计成运行在通常与主机操作系统和硬件体系结构92不兼容的操作系统上,软件应用程序100也可以运行在计算机系统90中。
图3A示出了含有直接在物理计算机硬件102上运行的主机操作系统软件层104的虚拟化计算系统,其中主机操作系统(主机OS)104通过展现与主机OS正仿真(或“虚拟化”)的硬件相同的接口提供对物理计算机硬件102的资源的访问,这进而又允许主机OS能够不被运行于其上的操作系统察觉。再一次,为了执行仿真,主机操作系统102可以是具有本机仿真能力的专门设计的操作系统,或者,它可以是含有用于执行仿真的合并的系统管理程序组件的标准操作系统。
再次参考图3A,在主机OS 104上方是两种虚拟机(VM)实现,即VM A 108和VM B 110,VM A 108可以是例如虚拟化的英特尔386处理器,而VM B 110可以是例如摩托罗拉680X0处理器家族中的一个的虚拟化版本。在VM 108和110的每一个的上方分别是客机操作系统(客机OS)A 112和B 114。运行在客机OS A112上方的是两个应用程序,即应用程序A1 116和应用程序A2 118,而运行在客机OS B 114上方的应用程序B1 120。
关于图3A,重要的是注意到VM A 108和VM B 110(以虚线示出)是虚拟化的计算机硬件表示,它们仅作为软件构造而存在,且由于专用仿真软件的执行而变得可能,专用仿真软件不仅分别向客机OS A 112和客机OS B 114呈现VM A 108和VM B 110,且还执行客机OS A 112和客机OS B 114与真实物理计算机硬件102间接交互所必需的软件步骤。
图3B示出了另一个虚拟化计算系统,其中仿真由与主机操作系统104″一起运行的虚拟机监控程序(VMM)104′执行。对某些实施例,VMM可以是在主机操作系统104上方运行且仅通过所述主机操作系统104与计算机硬件交互的应用程序。而如图3B所示,在其它实施例中,VMM可以改为包含部分独立软件系统,它在某些层上通过主机操作系统104与计算机硬件102间接交互,而在其它层上VMM与计算机硬件102直接交互(类似于主机操作系统与计算机硬件直接交互的方式)。且在另外的其它实施例中,VMM可以包括完全独立软件系统,它在所有层上与计算机硬件102直接交互(类似于主机操作系统与计算机硬件直接交互的方式)而不利用主机操作系统104(尽管在协调所述计算机硬件102的使用和避免冲突等范围内仍旧与所述主机操作系统104交互)的。
用于实现虚拟机的所有这些变化被预期为形成此处所述的本发明的替换实施例,且此处没有内容应该被解释为将本发明限于任何特定的仿真实施例。另外,对分别通过VM A 108和/或VM B 110在应用程序116、118和120之间的交互(假定在硬件仿真的情形中)的任何引用应该被解释为实际上是应用程序116、118和120与创建虚拟化的虚拟化器之间的交互。同样,对应用程序VM A 108和/或VMB 110与主机操作系统104和/或计算机硬件102之间的交互(假定直接或间接地在计算机硬件102上执行计算机指令)的任何引用应该被合适地解释为实际上是创建虚拟化的虚拟化器与主机操作系统104和/或计算机硬件102之间的交互。
处理器拓扑结构一般而言,“处理器”是响应并处理驱动计算机的基本指令的逻辑电路,该术语也经常被用作中央处理器(CPU)的简写。个人计算机中的或嵌入在小型设备中的处理经常被称作微处理器。
关于处理器拓扑结构,如此处所使用的,术语“处理器”特别地指的是物理处理器。“物理处理器”是有时被称为“芯片”或“微芯片”的集成电路(IC),它包含在其上众多小型电阻、电容和晶体管形成包含至少一个逻辑处理器的至少一个处理器核的半导体晶片(“硅酸盐”)。每一处理器核具有执行系统指令的能力,且每一逻辑处理器代表了超线程能力(也被称为对称多线程即“SMT”),通过超线程能力,单个处理器核看上去能够并行地执行两个线程(从而仿佛是系统的两个核)。
每一物理处理器被安装在CPU主板的单个槽中。物理处理器可以含有一个以上处理器核(每一处理器核含有一个或多个逻辑处理器)。每一处理器一般含有其自身的1级高速缓存,而与物理处理器上的其它处理器核共享2级高速缓存。
“多核处理器”是为提高的性能、减少功耗和/或更有效的多任务的同时处理(例如,并行处理)而含有两个或更多核的物理处理器。例如“双核处理器”按照其名称是含有两个处理器核的多核处理器,有些类似于将两个独立的处理器安装在同一计算机中。然而,这两个核驻留在单个物理处理器上,且本质上被插入到同一槽中,从而该两个核之间的连接比插在分开的槽中的两个单核处理器要快。
由于这些性能增益,多核处理愈发受欢迎,因为单核处理器迅速地到达可能的复杂性和速度的物理限制。已经生产或正从事多核产品的公司包括AMD、ARM、Broadcom、英特尔和VIA。AMD和英特尔都宣布他们将在2005年之前销售双核处理器。
图4是示出可使用本发明的若干实施例的多核处理器和NUMA双节点系统的框图。该图中,物理处理器406包含两个处理器核404,每一处理器核又含有两个逻辑处理器402。物理处理器406被耦合至诸如L3(3级)高速缓存等存储器408,L3高速缓存被物理处理器406的两个核404共享和使用。该图将在下文中进一步描述。
存储器拓扑结构NUMA(非均匀存储器访问)是多处理系统中配置物理处理器的节点,使得它们能本地共享存储器,从而改进要扩展的系统的性能和能力的一种方法。NUMA一般被用于对称多处理(SMP)系统中,它是一种“紧密耦合,共享所有”的系统,其中单个操作系统下工作的多个处理器通过公共总线或“互连”路径访问彼此的存储器。通常,SMP的限制是当添加微处理器时,共享的总线和数据路径变得超载,并成为性能瓶颈;然而,NUMA在节点的微处理器之间添加共享的中间存储器层(存储器节点),使得不必所有的数据访问都通过主总线。
再次参考图4,两个节点系统416包含两个节点414,每一节点含有四个物理处理器406,每一物理处理器406含有各自的L3高速缓存,L3高速缓存由每一所述高速缓存的处理器核404共享。另外,每一物理处理器406及其相关联的L3高速缓存存储器418被彼此耦合并耦合至共享节点存储器412。如图所示,节点414及其相关联的节点存储器412也在两节点系统416中被耦合在一起。
NUMA节点一般包含在本地总线上互连至都位于单个主板上的共享存储器(“L3高速缓存”)的四个物理处理器。该单元可以被添加至类似的单元以形成对称多处理系统,其中公共SMP总线互连所有节点。这一系统通常包含从16到256个微处理器。对于运行在SMP系统中的应用程序,所有各个处理器存储器看似为单个存储器。
当处理器核查找位于某个存储器地址的数据时,它首先查看其L1(1级)高速缓存,然后查看物理处理器的L2(2级)高速缓存,再然后到在位于其它微处理器附近的“远程存储器”中寻找数据之前NUMA所提供的L3高速缓存。使用可伸缩相干接口(SCI)技术,在NUMA SMP系统的簇之间在总线上移动数据。SCI协调被称之为“高速缓存一致性”的东西,即跨多个簇的节点的一致性。
展示处理器拓扑结构本发明的各实施例针对用于使得客户机操作系统知道当前分配给它的主机资源的子集的拓扑结构。对这些实施例中的某一些,在虚拟机引导时,虚拟化器将使用静态资源关系表(SRAT)来将客机物理存储器和客机虚拟处理器组合成虚拟节点。之后,能够由虚拟化器按所需改变虚拟节点背后的主机物理存储器,且虚拟化器将为该节点中的虚拟处理器提供合适的物理处理器。该方法允许在虚拟机上运行的知道NUMA的操作系统为最优性能进行调度而不需进一步的修改。
对某些另外的实施例,虚拟化器也可以为虚拟机存储器中的客机操作系统提供动态处理器拓扑信息。该信息可以直接被置于客机操作系统的内部表中,或者,客机操作系统可以执行附加代码来从共享的存储器位置中选取该信息。被称为“揭示”的后一方法(其中,VM在定期的基础上向客机操作系统揭示信息,且客机操作系统定期地检查更新的信息并相应地调整)要求向客机操作系统提供附加代码以周期性地取得该动态信息。
图5是示出对本发明的某些实施例,虚拟化器用于为虚拟机存储器中的客机操作系统提供动态处理器拓扑信息的一种方法的过程流程图。在该图中,在步骤502处,虚拟化器知道分配给它的物理硬件资源改变。在步骤504处,虚拟化器重新配置它正在虚拟化的处理器拓扑结构。在步骤506处,虚拟化器通过将更新的拓扑信息直接置于客机操作系统的内部表中来直接更新客机操作系统的处理器拓扑信息。
对本发明的某些实施例,客机操作系统可以执行虚拟机调用(对虚拟化器的调用),该调用指定虚拟机的物理存储页面被虚拟化器和客机OS共享。该页面可以包括带有揭示数据的控制字段,来确定,例如(a)无论何时虚拟化器改变了虚拟机拓扑结构来匹配对所述虚拟机的主机计算机系统资源分配的变化,虚拟化器是否应该向客机操作系统发送中断;(b)用于通知中断的向量;(c)只要系统管理程序更新拓扑数据就增加的生成计数器;(d)同一SMT或超线程处理器核中的所有虚拟处理器的位屏蔽;和/或(e)同一物理处理器中的所有虚拟处理器,即每一物理处理器的所有核中的所有逻辑处理器的位屏蔽。另外,揭示数据可以解决下列效率方面的任何问题(a)线程优先级;(b)I/O优先级;(c)被保护的存储器的范围;(d)NUMA节点;(e)属于附近存储器和远处存储器的数据访问;(f)处理器速度和处理器能源消耗;(g)插槽以及对每一核的超线程;和/或(h)对每一物理处理器共享层。
诸如何时使用“揭示”方法等具有访问动态处理器和NUMA拓扑信息的能力的操作系统的调度程序能够使用该信息来优化其自身的资源分配机制(例如,处理器调度、存储器分配等)和资源利用方案。对本发明的某些其它实施例,客机OS(或者通过虚拟化器/虚拟机调用,或者通过共享的存储器页面)可以在被称为“暗示”(与“揭示”逻辑上相反)的进程中向虚拟化器提供关于资源分配偏好的提示。例如,如果客机OS为效率起见偏向于将两个虚拟处理器分配给同一处理器上的两个核或者同一NUMA节点内的两个处理器,它可以向VM提供这样的提示,且由于在任何给定时刻,虚拟化处理器属于分配给所述VM的基本物理处理器,虚拟机调度程序可以对于虚拟化处理器考虑该提示。更特别地,这样的提示可以解决下列效率方面的任何问题(a)线程优先级;(b)I/O优先级;和/或(c)等待时间信息。这样,对本发明的实施例,客机操作系统的调度程序和独立管理资源VM的调度程序都利用和使用“揭示”和“暗示”来协同工作以最大化整个系统的效率。
图6是示出本发明的若干实施例的双重揭示和暗示方法的框图。该图中,客机操作系统602包含OS调度程序604,且虚拟机612包含VM调度程序614。当例如调度所述物理硬件资源的使用的主机操作系统使物理硬件的各个逻辑处理器对虚拟机(不断变化)可用时,VM调度程序614在这些逻辑处理器上调度虚拟现成的执行。已被分配给虚拟机的共享存储器622由客机OS调度程序604使用,来向VM调度程序614提供“暗示”信息,且该共享存储器622也由VM调度程序614利用来向客机OS调度程序604提供“揭示”信息。例如,沿着数据流632,VM调度程序614向共享存储器622写入揭示数据642,且沿着数据流634,该数据由OS调度程序604读取并用来更有效地使用可用的当前处理器资源(当前可用的处理器资源随时间动态变化)。相反地,沿着数据流636,OS调度程序604向共享存储器622写入“暗示”数据644,且沿着数据流638,该数据由VM调度程序614读取并使用来更有效地向所述客机操作系统分配(和/或请求)当前处理器资源。
结论此处描述的各种系统、方法和技术可以使用硬件或软件或在恰当使使用两者的组合来实现。这样,本发明的方法和装置,或某些方面或其部分,可以采用包含在有形介质中的程序代码(即指令)的形式,有形介质诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读介质,其中,当程序代码被装载至诸如计算机等机器上并由该机器执行时,该机器成为实现本发明的装置。在程序代码在可编程计算机上执行的情况下,计算机一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。一个或多个程序较佳地用高级过程语言或面向对象编程语言实现来与计算机系统通信。然而,程序按照所需可以用汇编或机器语言实现。在任何情况下,语言可以是编译或解释语言,且可以与硬件实现相结合。
本发明的方法和装置也可以用通过某些传输介质,诸如通过电线或电缆,通过光导纤维或通过任何其它形式的传输而传输的程序代码的形式来实施,其中,当程序代码被接收并装载至诸如EPROM、门阵列、可编程逻辑设备(PLD)、客户机计算机、录影机等机器并由该机器执行时,该机器成为实现本发明的装置。当在通用处理器上实现时,程序代码结合处理器来提供用于执行本发明的索引功能的独特的装置。
尽管本发明在此处结合各个附图的较佳实施例来描述,但可以理解,可以使用其它类似的实施例或者可以对所述实施例进行修改或添加,来实现本发明的相同功能而不背离本发明。例如,尽管本发明的示例性实施例是在仿真个人计算机功能的数字设备的环境中描述的,但本领域的技术人员可以认识到,本发明不限于这样的数字设备,如在本申请中所述,本发明可以应用于任何数量的现有或新兴计算设备或环境,诸如游戏控制台、手持式计算机、便携式计算机等,不论它们是有线还是无线,且本发明可以应用于通过通信网络连接且通过网络交互的任何数量的这样的计算设备。而且,应该强调,此处构想了各种计算机平台,包括手持式设备操作系统和其它应用专用硬件/软件接口系统,尤其是当无线网络化设备的数量持续激增的时候。从而,本发明不应被限于任何单个的实施例,而是相反,应该根据所附权利要求书来解释宽度和范围。
最后,此处描述的所揭示的实施例可以被改写以在其它处理器体系结构、基于计算机的系统或系统虚拟化中使用,且此处的揭示明确地预期了这样的实施例,从而,本发明不应限于此处描述的具体实施例,而是相反,应该最宽泛地解释。同样,为除了处理器虚拟化的目的以外的合成指令的使用也由此处的揭示所预期,且在除了处理器虚拟化之外的上下文中的这样的合成指令的使用应该加上此处的揭示的最广泛含义。
权利要求
1.一种用于优化在计算机系统上执行的操作系统的性能的方法,所述计算机系统含有动态虚拟处理器拓扑结构,所述方法包括在启动之后,使用至少一个更新来更新所述操作系统,以反映所述虚拟处理器拓扑结构中的至少一个改变。
2.如权利要求1所述的方法,其特征在于,所述操作系统是客机操作系统,所述计算机系统是虚拟机,且所述虚拟机含有基于由主机计算机系统动态分配的一组资源的变化的动态虚拟处理器拓扑结构。
3.如权利要求2所述的方法,其特征在于,所述更新步骤是通过与所述虚拟机相关联的虚拟化器直接更新所述客机操作系统的至少一张内部表来完成的。
4.如权利要求2所述的方法,其特征在于,所述更新步骤是通过与所述虚拟机相关联的虚拟化器使用揭示更新共享存储器位置来完成的,且所述客机操作系统随后访问所述共享存储器位置、检索所述揭示并应用所述揭示。
5.如权利要求4所述的方法,其特征在于,所述客机操作系统随后访问所述共享存储器位置的步骤是根据时间表执行的,或是响应于所述虚拟机中的所述仿真器生成的中断而执行的。
6.如权利要求4所述的方法,其特征在于,所述客机操作系统通过使用提示更新共享存储器位置来向所述虚拟化器提供提示,且所述虚拟化器随后访问所述共享存储器位置、检索所述提示、并应用所述提示。
7.如权利要求2所述的方法,其特征在于,所述方法是由硬件控制设备实现的,所述硬件控制设备包括用于实现所述方法的每一元素的装置。
8.一种含有用于优化在计算机系统上执行的操作系统的性能的计算机可读指令的计算机可读介质,所述计算机系统含有动态虚拟处理器拓扑结构,所述计算机可读指令包含用于在启动之后使用至少一个更新来更新所述操作系统,以反映所述虚拟处理器拓扑结构中的至少一个变化的指令。
9.如权利要求8所述的计算机可读介质,其特征在于,所述操作系统是客机操作系统,所述计算机系统是虚拟机,且所述虚拟机包含基于由主机计算机系统动态分配的一组资源的变化的动态虚拟处理器拓扑结构。
10.如权利要求9所述的计算机可读介质,其特征在于,还包括指令,其中所述更新步骤是通过与所述虚拟机相关联的虚拟化器直接揭示所述客机操作系统的至少一个内部表来完成的。
11.如权利要求9所述的计算机可读介质,其特征在于,还包括指令,其中所述更新步骤是通过与所述虚拟机相关联的虚拟化器使用揭示更新共享存储器位置来完成的,且所述客机操作系统随后访问所述共享存储器位置、检索所述揭示并应用所述揭示。
12.如权利要求11所述的计算机可读介质,其特征在于,还包括指令,其中所述客机操作系统随后访问共享的存储器位置的步骤根据是时间表执行的,或是响应于所述虚拟机中的所述仿真器生成的中断而执行的。
13.如权利要求11所述的计算机可读介质,其特征在于,还包括指令,其中所述客机操作系统通过使用提示更新共享存储器位置来向所述虚拟化器提供提示,且所述虚拟化器随后访问所述共享存储器位置、检索所述提示并应用所述提示。
14.如权利要求9所述的计算机可读介质,其特征在于,所述计算机可读介质是通过通信介质传输的电磁载波信号。
15.一种用于优化在计算机系统上执行的操作系统的性能的系统,所述计算机系统含有动态虚拟处理器拓扑结构,所述系统包含用于在启动之后使用至少一个更新来更新所述操作系统,以反映所述虚拟处理器拓扑结构中的至少一个变化的至少一个子系统。
16.如权利要求15所述的系统,其特征在于,所述操作系统是客机操作系统,所述计算机系统是虚拟机,且所述虚拟机包含基于由主机计算机系统动态分配的一组资源的变化的动态虚拟处理器拓扑结构。
17.如权利要求16所述的系统,其特征在于,还包括至少一个子系统,其中所述更新步骤是通过与所述虚拟机相关联的虚拟化器直接揭示所述客机操作系统的至少一个内部表来完成的。
18.如权利要求16所述的系统,其特征在于,还包括至少一个子系统,其中所述更新步骤是通过与所述虚拟机相关联的虚拟化器使用揭示更新共享存储器位置来完成的,且所述客机操作系统随后访问所述共享存储器单元、检索所述揭示并应用所述揭示。
19.如权利要求18所述的系统,其特征在于,还包括至少一个子系统,其中所述客机操作系统随后访问共享存储器单元的步骤是根据时间表执行的,或是响应于所述虚拟机中的所述仿真器生成的中断而执行的。
20.如权利要求18所述的系统,其特征在于,还包括至少一个子系统,其中所述客机操作系统通过使用提示更新共享存储器位置来向所述虚拟化器提供提示,且所述虚拟化器随后访问所述共享存储器位置、检索所述提示并应用所述提示。
全文摘要
本发明针对的是使得客机操作系统知道当前分配给它的主机资源的子集的拓扑结构。在虚拟机引导时,虚拟化器将使用静态资源关系表(SRAT)来将客机物理存储器和客机虚拟处理器组合成虚拟节点。之后,在一个实施例中,虚拟化器能够按所需的改变虚拟节点背后的主机物理存储器,且虚拟化器将为该节点中的虚拟处理器提供合适的物理处理器。
文档编号G06F9/455GK1794177SQ200510127108
公开日2006年6月28日 申请日期2005年11月21日 优先权日2004年12月21日
发明者E·P·特劳特, R·A·威加 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1