将虚拟高速缓存拓扑结构展示给客操作系统的制作方法

文档序号:6426210阅读:143来源:国知局
专利名称:将虚拟高速缓存拓扑结构展示给客操作系统的制作方法
技术领域
本发明涉及计算机系统,尤其涉及计算机系统中的虚拟高速缓存拓扑结构。
背景技术
虚拟机可具有作为单核处理器展示给客操作系统的一个或多个虚拟处理器。当客操作系统运行工作负载时,它将线程调度到这些虚拟处理器中的一个上。系统管理程序运行表示虚拟处理器的线程并将其调度到主存虚拟机的物理机的逻辑处理器上。运行线程中的工作负载,并且执行某些有希望有用的工作。系统管理程序随后在相同或不同的逻辑处理器上运行另一线程。系统管理程序调度器因此必须确定要调度特定虚拟处理器的时间和地点两者。虚拟处理器的正确布置是维持高水平性能的关键。虚拟处理器的正确布置可包括将线程移动到另一节点上的逻辑处理器。例如,系统管理程序可调度虚拟处理器在第一 NUMA (非均勻存储器体系结构)节点中运行,然后将其移动至另一 NUMA节点。该技术确保了尽可能快地运行工作负载并且容忍由于高速缓存未中而导致的任何开销。作出将虚拟处理器作为单核处理器来展示的决策以使主机的物理体系结构的虚拟化变得更容易。例如,客操作系统被这样编写以使得在引导时检查拓扑结构。如果客机被移动至带有不同拓扑结构的另一主机,则它可能低效地运作,因为它预期的资源不再存在。由于包括共享各种不同高速缓存的逻辑处理器的系统变得越来越常见,将系统管理程序配置成充分利用这些高速缓存共享的逻辑处理器将是有益的。此外,将某种高速缓存拓扑结构展示给客操作系统从而使得客操作系统中的调度器也可以作出明智的调度决策将是有益的。

发明内容
公开了由系统管理程序将虚拟高速缓存拓扑结构展示给虚拟机环境中的客操作系统的技术。将虚拟高速缓存拓扑结构展示给客操作系统允许客操作系统中调度器作出明智的调度决策同时维护硬件和虚拟硬件之间的抽象。虚拟高速缓存拓扑结构可由系统管理程序确定,或者在数据中心环境的情况中,可由数据中心的管理系统确定。从系统的物理高速缓存拓扑结构中计算虚拟高速缓存拓扑结构,从而使得虚拟机可以用可映射到相对应的逻辑处理器和物理高速缓存的虚拟处理器和虚拟高速缓存来实例化。公开了用于确定虚拟高速缓存拓扑结构的各实施例。在一个这样的实施例中,虚拟高速缓存拓扑结构由共享基数和共享级别组成。确定共享基数和共享级别从而使得虚拟
4处理器可被映射到逻辑处理器及其相关联的高速缓存。在另一实施例中,数据中心的管理系统可接收修改共享基数和/或共享级别的指令。在又一实施例中,如果使用虚拟高速缓存拓扑结构的虚拟处理器到逻辑处理器及其相关联的高速缓存的物理映射最初不成功,公开了一种修改虚拟处理器与逻辑处理器及其相关联的高速缓存的映射的方式的方法。在将虚拟高速缓存拓扑结构展示给客操作系统之后,客操作系统的调度器将进程的线程调度到虚拟处理器上。作为响应,系统管理程序调度器将指示虚拟处理器的线程调度到逻辑处理器上。在各实施例中,指示虚拟处理器的线程可被调度在与理想逻辑处理器共享一个级别的高速缓存的空闲逻辑处理器上;被调度在与当前正在执行虚拟处理器的最大数量的逻辑处理器共享高速缓存的空闲逻辑处理器上;基于多久以前该线程在逻辑处理器上运行来被调度在该逻辑处理器上;或者被排队来在该线程最近运行的逻辑处理器上运行。提供本发明内容是为了以简化的形式介绍将在以下具体实施方式
中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。


图1描绘了其中可实现所公开的主题的示例计算机系统。图2描绘了用于实施本发明的各方面的操作环境。图3描绘了用于实施本发明的各方面的操作环境。图4示出用于说明本发明的各实施例的数据中心。图5描绘了用于实施本发明的各方面的操作环境。图6描绘了用于实施本发明的各方面的操作过程。图7描绘了图6的操作过程的替换实施例。图8描绘了用于实施本发明的各方面的操作过程。图9描绘了图8的操作过程的替换实施例。图10描绘了用于实施本发明的各方面的操作过程。图11描绘了图10的操作过程的替换实施例。图12描绘了图11的操作过程的替换实施例。图13描绘了图10的操作过程的替换实施例。图14描绘了用于实施本发明的各方面的操作过程。图15描绘了图14的操作过程的替换实施例。
具体实施例方式各实施例可在一个或多个计算机系统上执行。图1及以下讨论旨在提供可在其中实现所公开的主题的合适计算环境的简要概括描述。贯穿本说明书使用的术语“电路”可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语“电路”还可包括微处理器、专用集成电路、和/或一个或多个逻辑处理器,例如由固件和/或软件配置的多核通用处理单元的一个或多个核。逻辑处理器可由指令来配置,指令具体化可用于执行从例如RAM、R0M、固件和/或大容量存储等存储器加载的功能的逻辑。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件还是软件来实现此处描述的功能只是一个设计选择。换言之,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。现在参考图1,描绘了示例性计算系统100。计算机系统100可包括逻辑处理器 102,例如,执行核。尽管示出了一个逻辑处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图1所示,各种计算机可读存储介质110可由一个或多个系统总线互联,系统总线将各种系统组件耦合到逻辑处理器102。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器(RAM) 104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪速RAM或ROM)、以及可移动存储设备118 (例如⑶-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、和/或数字视频盘。计算机可读存储介质110可提供对计算机100的处理器可执行指令122、数据结构、程序模块和其他数据的非易失性和易失性存储。基本输入/输出系统(BIOS) 120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间传递信息的基本例程。包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备 106、RAM 104和/或可移动存储设备118上,并且可由逻辑处理器102来执行。命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和定点设备。其它输入设备可以包括话筒、操纵杆、游戏手柄、扫描仪等等。这些和其它输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器102,但也可通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理器112的一部分或可连接到图形处理器单元 112的接口来连接到系统总线。除了显示器之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系统还包括主适配器、小型计算机系统接口(SCSI) 总线和连接到SCSI总线的外部存储设备。计算机系统100可以使用至一个或多个远程计算机的逻辑连接在联网环境中工作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡114连接至LAN或WAN。NIC 114可以是内置或外置的,其可以连接到系统总线。在联网环境中,相对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。 此外,尽管可想到的是可实现的所公开的主题的许多实施例尤其适用于计算机化的系统,但是在本文档中不意味着将所公开的主题限于这些实施例。转向图2,系统管理程序微内核202可被配置成控制并仲裁对计算机系统200的硬件的访问。广泛而言,系统管理程序微内核202可以生成称为分区的执行环境,如子分区1 到子分区N(其中N是大于1的整数)。在各实施例中,子分区是系统管理程序微内核202 支持的基本隔离单元。即,每一子分区可被映射到在系统管理程序微内核202控制之下的一组硬件资源,例如,存储器、设备、逻辑处理器周期等。系统管理程序微内核202可将一个分区中的进程与访问另一分区的资源隔离,例如,一个分区中的客操作系统可与另一分区的存储器隔离并因此不能够检测其分区外部的存储器地址。在各实施例中,系统管理程序微内核202可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件中、专用集成电路、或其组合。系统管理程序微内核202可以通过限制客操作系统的系统存储器视图来实施分区。客存储器是由系统管理程序控制的分区的存储器视图。客物理地址(GPA)能由系统物理地址(SPA)来支持,即,由系统管理程序管理的、物理计算机系统的存储器。在一实施例中,GPA和SPA可被安排成存储器块,S卩,一个或多个存储器页。当客机使用其页表向一个块写入时,数据实际被存储在根据系统管理程序使用的系统级页表而具有不同系统地址的块中。在所描绘的示例中,父分区组件204可被认为是类似于Xen的开源系统管理程序的域0。该操作环境中的父分区204可被配置成通过使用虚拟化服务提供者228 (VSP)来向在子分区I-N中执行的客操作系统提供资源,虚拟化服务提供者在开源社区中通常被称为后端驱动程序。广泛而言,VSP 2 可用于通过虚拟化服务客户端(VSC)(开源社区中通常称为前端驱动程序)复用到硬件资源的接口,并经由通信协议与虚拟化服务客户端进行通信。如图所示,虚拟化服务客户端可以在客操作系统的上下文中执行。这些驱动程序不同于客机中的其余驱动程序,因为向它们提供了系统管理程序而非客机。如图2所示,I/O仿真器234,例如虚拟化IDE设备、虚拟化视频适配器、虚拟化NIC 等可被配置成在父分区204中运行并被附连到可供客操作系统220和222使用的资源。例如,当客操作系统触摸虚拟设备的寄存器或映射到虚拟设备的存储器时,微内核系统管理程序202可截取该请求并传递客机试图写入相关联的仿真器的值。每一子分区可包括一个或多个虚拟处理器Q30和23 ,客操作系统Q20和222) 可管理并调度线程以便在这些虚拟处理器上执行。一般而言,虚拟处理器是提供具有特定架构的物理处理器的表示的可执行指令以及相关联的状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟处理器的指令将受到逻辑处理器的支持。由此,在包括多个逻辑处理器的实施例中,虚拟处理器可以由逻辑处理器同时执行,同时例如其他逻辑处理器执行系统管理程序指令。分区中虚拟处理器和存储器的组合可被认为是虚拟机。客操作系统可包括任何操作系统,如来自微软 、苹果 、开源社区等的操作系统。 客操作系统可包括用户/内核操作模式,并且可具有能包括调度器、存储器管理器等的内核。一般而言,内核模式可包括逻辑处理器中的执行模式,该执行模式授予对至少特权处理器指令的访问。每一客操作系统可具有相关联的文件系统,该文件系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用以及客操作系统本身。客操作系统可调度线程来在虚拟处理器上执行,并且可实现此类应用的实例。现在参考图3,示出了对上述图2的替换体系结构。图3描绘了与图2的组件相类似的组件;然而,在该示例实施例中,系统管理程序304可包括微内核组件和来自图2的父分区204的组件,如虚拟化服务提供者2 和设备驱动程序224,而管理操作系统302可包含例如用于配置系统管理程序304的配置实用程序。在该体系结构中,系统管理程序304 可以执行与图2的系统管理程序微内核202相同或相似的功能;然而,在该体系结构中,系统管理程序304可被配置成向在子分区中执行的客操作系统提供资源。图3的系统管理程序304可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,或者系统管理程序304的一部分可以由专用集成电路来实现。图4描绘了用于实施本发明的各方面的操作环境。例如,多个计算机系统404-410 可在数据中心400中被耦合在一起(虽然描绘了四个计算机系统,但本领域技术人员可以理解数据中心400可包括更多或更少的计算机系统)。所描绘的计算机系统可具有不同的拓扑结构,并且此外,它们可具有不同的特征,例如,不同数量的RAM、不同的RAM速度、不同量的逻辑处理器、和/或具有不同速度或指令集的逻辑处理器。如图4所示,计算机系统406具有对称多处理拓扑结构(SMP)或‘扁平的’拓扑结构。一般而言,SMP是包括连接到单个共享存储器的多个处理器的计算机体系结构。在该安排中,存储器控制器可管理去往和来自存储器的数据流。存储器存取对于每一逻辑处理器可以是统一的,并且每一逻辑处理器可以存取整个范围的存储器,即,整个系统物理地址。 该拓扑结构对于具有相对较少数量的处理器的计算机系统工作良好,但当计算机系统包括许多处理器时,所有的处理器都对共享存储器总线的访问展开竞争,系统的性能可能降低。 此外,计算机系统的复杂性极大地增加了,这因而驱动了每一处理器的价格上升。计算机系统404、408和410具有NUMA节点。基于NUMA的计算机系统一般可被认为是由较小的计算机系统组成的计算机。在该示例中,每一 NUMA节点可包括一个或多个逻辑处理器和本地存储器。NUMA节点内部的存储器被认为是本地存储器;而在其他NUMA节点中的存储器被认为是远程存储器,因为只有NUMA节点内部的处理器才与同一存储器总线连接。NUMA节点通过高速缓存一致性域互连来互连,这允许一个NUMA节点中的处理器用一致的方式来存取其他NUMA节点中的存储器。因此,系统物理地址对于每一处理器是统一的。或者换言之,系统物理地址20000对于计算机系统中的每一处理器是相同的。区别在于,对于某些处理器,存储器地址20000是本地存储器地址,例如在它们NUMA节点内部,而对于其他处理器,存储器地址20000是远程的,例如在它们NUMA节点外部。一般而言,本地存储器可比远程存储器更快地存取,而本地对远程存取时间之间的关系被称为NUMA比率。 NUMA比率为1比2意味着与本地系统物理地址相比要花费两倍多的处理器周期来访问特定远程系统物理地址。NUMA减轻了 SMP系统通过限制任何一个存储器总线上的处理器数量而引起的瓶颈,并且一般地比具有相同量的逻辑处理器的SMP计算机系统便宜。图5示出用于实施本发明的各方面的操作环境。如本领域技术人员可以理解的, 本发明不限于所示操作环境。相反,该环境仅仅是用来说明各概念的一个示例。因此,本发明的各方面可被结合到包括不同量的NUMA节点、虚拟机、高速缓存拓扑结构、逻辑处理器等的不同环境中。
图5示出通过高速缓存一致性域互连来连接的两个示例NUMA节点(500和502)。 所示NUMA节点具有不同的高速缓存拓扑结构。例如,NUMA节点500中的每一处理器共享3 级(“L3”)高速缓存,而两组处理器共享2级(“L2”)高速缓存。每一处理器(506-516) 被示为带有其自己的1级(“Li”)高速缓存。NUMA节点502中的逻辑处理器(518-524) 共享3级高速缓存并具有它们自己的1级高速缓存。本领域技术人员可以理解,所示高速缓存拓扑结构只是出于说明的目的,并且本发明不限于任何特定的高速缓存拓扑结构。每一 NUMA节点(500和50 也被示为包括其自己的随机存取存储器(5 和528)。处理器高速缓存通常用于指令以及此处称为信息的数据的临时存储。在作出请求时,逻辑处理器查询用于执行该请求的指令。因为逻辑处理器按大于RAM的速度操作,所以将高速度的高速缓存添加到处理器并且构想算法来预期逻辑处理器将需要什么信息并试图将该信息存储在高速缓存中。通常,Ll高速缓存是非常小的,这允许它变得非常快速,具有例如2个周期的等待时间,即,访问存储器和检索信息所需的处理器周期数。如果信息未出现在Ll高速缓存中,则逻辑处理器检查其L2高速缓存,L2高速缓存是带有约为9个周期的稍长等待时间的稍大的存储器池。如果数据不在L2或Ll中,则逻辑处理器检查L3高速缓存。L3高速缓存远大于Ll和L2,并且其等待时间是例如23个周期。伴随着每一次高速缓存未中,逻辑处理器查看它的下一个级别的高速缓存直到它从大容量存储设备中取回 fn息ο系统管理程序550,即图2的微内核系统管理程序202或图3的系统管理程序304, 可包括调度器552并且可被配置成将指示虚拟处理器的线程调度到逻辑处理器(506-516 或518-524)中的一个上运行。为了确定如何调度传入线程,系统管理程序调度器552可以访问在下文中更详细地描述的各种信息(554-562)。线程表560可存储关于不同的虚拟处理器线程的信息。在接收到要运行虚拟处理器的请求时,调度器552可访问线程表560并检索关于虚拟处理器的信息以便确定要将虚拟处理器调度到哪里以及怎样调度。对于每一虚拟处理器,线程表560可存储,例如,标识线程最后运行时间的时间戳、线程是否已经被标识为等待时间敏感的线程、线程最后在其上运行的逻辑处理器、对线程理想的处理器的身份、线程最后在其中运行的NUMA节点、描述相关虚拟处理器线程的身份的信息,等等。在本发明的一个实施例中,调度器552可使用线程表560来基于最后运行线程的 NUMA节点的身份来调度虚拟处理器线程。例如,调度器552可被配置成选择空闲处理器来运行传入线程,所述传入线程位于种子NUMA节点(例如理想NUMA节点(已经被设置的节点))或最后运行线程的节点中。在该示例实施例中,调度器552可以检查线程表560来确定用于传入线程请求的种子NUMA节点并将该线程调度到该种子NUMA节点上。在一具体示例中,每一 NUMA节点可保存每一 NUMA节点的空闲处理器图(5M和 562)。例如,空闲处理器图可以是其中每一位表示逻辑处理器的位图。当逻辑处理器运行线程时,可以设置位,并且当它完成运行线程时,可以重置该位。空闲处理器图可由调度器 552使用来确定哪些逻辑处理器是空闲的。在本发明的一个示例实施例中,位图可被分成多个图计算机系统中的每一 NUMA节点有一个存储在该NUMA节点中的图。该实施例减少了图上的冲突,因为它减少了试图访问同一存储器来设置和重置位的处理器的数量。 此外,通过为每一 NUMA节点维护一个图,调度器552可以通过检查与特定NUMA节点相关联的空闲处理器图来快速地从候选列表中移除逻辑处理器。例如,传入线程可在线程表560中将其种子NUMA节点设为NUMA节点500,即,该线程可能最后在该节点上运行或该节点被设为其理想节点。调度器552可接收该信息并搜索对应于空闲处理器的空闲处理器图554。在该示例中,调度器552从候选列表中排除逻辑处理器518-5 而不必访问空闲处理器图562或处理其中的任何信息。在种子NUMA节点不具有空闲处理器的情况下,调度器552可被配置成通过访问 NUMA节点表558中的信息来从下一最接近的NUMA节点中搜索空闲处理器。例如,NUMA节点表558可包括对应于计算机系统中的每一 NUMA节点的节点距离图。系统管理程序550 可生成根据距离来对NUMA节点进行排序的阵列。例如,NUMA节点500的图将显示NUMA节点502是靠近的。系统管理程序550可在主系统引导时生成每一 NUMA节点的图。例如,系统管理程序550可指弓I NUMA节点中的每一逻辑处理器访问来自主机中所有其他节点的RAM 并记录往返时间并从好到差对时间进行排序;最佳的时间指示最近的节点而最差的时间指示最远的节点。一旦调度器552选择了 NUMA节点,可以使用各种算法来选择具体的逻辑处理器。 在其中虚拟机具有一个虚拟处理器的一个简单示例实施例中,调度器552可确定线程的种子逻辑处理器,并且如果该线程不可用,则调度器552可访问高速缓存分层表556来确定将线程调度到哪里。高速缓存分层表556可包括对应于每一逻辑处理器的位图阵列,它描述了每一逻辑处理器如何与其NUMA节点中的其他逻辑处理器共享高速缓存。例如,逻辑处理器506可具有3个阵列L1阵列具有为逻辑处理器(LP) 506设置的位以及用于逻辑处理器 508-516的空值,L2阵列具有为逻辑处理器506-512设置的位,而L3阵列示出为逻辑处理器506-516设置的位。在一个示例实施例中,调度器552可被配置成选择与种子共享最高级别的高速缓存的空闲逻辑处理器。例如,如果种子是逻辑处理器506,则调度器552可以选择逻辑处理器508、逻辑处理器510或逻辑处理器512(如果任一个可用的话),因为L2 是这些处理器共享的最高级别的高速缓存。在一示例实施例中,种子逻辑处理器可被设为最后运行线程的处理器。例如,如果虚拟机包括一个逻辑处理器,它最高效地在其最后运行的逻辑处理器上运行,因为该逻辑处理器具有含有该虚拟处理器在其高速缓存中需要的信息的最大几率。在该示例实施例中,因为移动了虚拟处理器,所以可将种子改为最后运行线程的逻辑处理器。调度算法的复杂性可随着被分配到虚拟机的虚拟处理器的数量的增加而增大。例如,当虚拟机包括多个虚拟处理器时,已经注意到虚拟处理器往往使用同一信息。因此,如果虚拟处理器被调度在共享高速缓存的逻辑处理器上,则高速缓存命中次数增加,这使得客机更高效地运行。在该示例实施例中,调度器552可按照共享物理高速缓存的虚拟处理器的方式来选择要运行虚拟机的虚拟处理器的逻辑处理器。该技术降低了高速缓存未中发生的几率,并且在高速缓存未中确实发生的情况下,其他虚拟处理器可以使用为一个虚拟处理器取回的信息。在多个虚拟处理器在虚拟机中执行的一示例性实施例中,每一虚拟处理器可被分配由管理员或配置程序设置的种子逻辑处理器。例如,虚拟处理器534可使逻辑处理器506 被设为其理想逻辑处理器,而虚拟处理器(VP) 536可使逻辑处理器508被设为其理想逻辑处理器。当调度器552试图调度虚拟处理器534时,调度器552将确定其理想逻辑处理器
10是逻辑处理器506并试图将其调度到逻辑处理器506上。因为调度器552试图将线程保持在它们的理想逻辑处理器上,这将增加高速缓存命中的次数。在另一示例实施例中,调度器552可以不使用种子。相反,调度器552可以基于诸如虚拟机530之类的虚拟机中的其他虚拟处理器的线程的位置来选择空闲逻辑处理器。在该示例实施例中,调度器552可被配置成选择它估计将具有最小估计未中成本的逻辑处理器。当逻辑处理器试图从高速缓存中存取信息而该信息不在高速缓存中时会发生高速缓存未中。未中成本是如果信息不在高速缓存中时将浪费的周期量。在该示例实施例中,调度器552可以选择具有最低估计未中成本的逻辑处理器。例如,调度器552可被配置成选择与当前正在运行虚拟机的虚拟处理器的最大数量的逻辑处理器共享高速缓存的空闲处理器。在相同或另一示例实施例中,调度器552可被配置成选择与当前正在运行虚拟机的虚拟处理器的最大数量的逻辑处理器共享最大数量的高速缓存的空闲处理器。例如,参考图5,在一个实施例中,虚拟处理器534可在逻辑处理器506上运行,虚拟处理器536可在逻辑处理器508上运行而虚拟处理器538可在逻辑处理器514上运行。在该示例中,调度器552可接收要运行虚拟处理器MO的请求。调度器552可检查空闲处理器图5M并确定逻辑处理器510、512和516是空闲的。在该示例中,调度器552可访问高速缓存分层表556并获得逻辑处理器510、512和516的阵列。调度器552可基于这些阵列来确定逻辑处理器510、512和516各自与逻辑处理器506、逻辑处理器508和逻辑处理器514共享L3高速缓存。在以上的第一示例中,调度器552可选择逻辑处理器510、逻辑处理器512或逻辑处理器516。在以上描述的替换实施例中,调度器552 可选择逻辑处理器510或逻辑处理器512,因为它们与逻辑处理器506和逻辑处理器508共享L2高速缓存并与逻辑处理器506、逻辑处理器508和逻辑处理器514共享L3高速缓存。 在该示例中,逻辑处理器510和512各自与逻辑处理器506和508共享2个高速缓存级别 (L2和U),而逻辑处理器516只与逻辑处理器506和508共享一个高速缓存级别(L3)。在另一示例实施例中,调度器552可被配置成在调度时不同于常规工作负载地处理等待时间敏感的工作负载。通常,尽可能快地调度属于等待时间敏感的客机的虚拟处理器。然而在这种情况下,如果虚拟处理器最后在其上运行的逻辑处理器不可用,则该虚拟处理器将被迁移至别处并且将丢失具有高速缓存命中的积极效果。在一示例实施例中,调度器552可被配置成最大化局部性的同时限制等待时间而不影响非等待时间敏感的工作负载。例如,当系统管理程序550接收到要调度等待时间敏感的线程的请求时,调度器 552可确定是否存在与最后运行该线程的逻辑处理器共享高速缓存的任何逻辑处理器并选择一个逻辑处理器。例如,所选逻辑处理器可以是与最后运行该线程的处理器共享最高级别的高速缓存的逻辑处理器。如果没有共享高速缓存的逻辑处理器可用,则调度器552可确定自从虚拟处理器上一次运行以来的时间量并将其与预定阈值进行比较。如果自从上一次运行以来的时间量大于阈值,则虚拟处理器可被迁移,否则它可被排队来在最后运行该线程的逻辑处理器上运行。如果自从虚拟处理器上一次运行以来的时间量大于阈值,则假定有用信息不再存在于高速缓存中。如果自从上一次运行以来的时间量小于阈值,则假定高速缓存仍然包含有用信息。本领域技术人员可以理解,预定阈值可由策略或管理员来设置,并且取决于虚拟机的物理硬件和工作负载特性。随着时间的推移,管理员或策略可调整预定阈值并监视效率是怎样提高或降低的直到找到用于运行特定工作负载的特定主机的最优值。继续图5的描述,在一实施例中,可将虚拟高速缓存拓扑结构展示给虚拟机。在该示例实施例中,系统管理程序550可计算或接收可展示给客机的虚拟化拓扑结构。系统管理程序550可构造可由主计算机系统以及例如数据中心中的任何其他计算机系统合理兑现的拓扑结构。这允许客操作系统中的调度器在作出明智的调度决策的同时维护硬件和虚拟硬件之间的抽象。例如,在将虚拟化高速缓存拓扑结构展示给客操作系统532的实施例中,系统管理程序550可在引导期间检测主计算机系统的高速缓存拓扑结构。为了使系统管理程序 550检测主计算机的高速缓存拓扑结构,父分区204查询其相对应的物理高速缓存拓扑结构。系统管理程序550或通过厂商特定机制或通过超调用来作出响应。在主机是其自身的一示例实施例中,系统管理程序550可被配置成计算可由计算机系统中的至少大部分逻辑处理器兑现的虚拟高速缓存拓扑结构。在数据中心的示例中,主计算机和数据中心中的所有其他计算机,经由它们各自的父分区,可各自将它们的物理高速缓存拓扑结构展示给管理系统402。管理系统402随后可使用各种算法来计算可至少由大多数计算机系统兑现的虚拟高速缓存拓扑结构。该拓扑结构可由系统管理程序550从管理系统402接收,而系统管理程序550可实现具有该拓扑结构的虚拟机。在替换实施例中,管理系统402可在内部引导或由管理员引导来(1)忽视某些系统和/或高速缓存分层结构,( 使用替换公式,( 接受共享级别,(4)接受共享基数,或 (5)接受共享基数和共享级别两者。在一具体示例实施例中,系统管理程序550或管理系统402可计算虚拟高速缓存拓扑结构。例如,系统管理程序550或管理系统402可通过使用两种计算方法中的一个来确定高速缓存共享的逻辑处理器的量(共享基数)来计算虚拟高速缓存拓扑结构;将共享基数展示给客操作系统;并将互连所确定数量的高速缓存展示给客操作系统,所述高速缓存是可兑现的(共享级别)最高级别的高速缓存。在计算共享基数的一个方法中,共享基数被设为每一群集中共享最低级别的高速缓存的逻辑处理器的最小数量。例如,参考图5,在所示实施例中,系统管理程序550可检测到NUMA节点500中的6个逻辑处理器和NUMA节点502中的4个逻辑处理器共享在群集中共享的最低级别的高速缓存(U)。系统管理程序550(或在数据中心的示例中是管理系统40 随后确定共享群集中最低级别的高速缓存的逻辑处理器的最小量是4,例如,逻辑处理器518-5 共享L3。在该示例中,系统管理程序550可将L3选为要展示的高速缓存的类型,因为系统管理程序550(或管理系统40 将共享级别确定为其上至少存在共享基数个高速缓存共享逻辑处理器的高速缓存的最高级别。因此,如图5所示,在该示例中,系统管理程序550可展示共享虚拟L3高速缓存的4个虚拟处理器的组。系统管理程序550随后可将该信息存储在高速缓存分层表阳6中。在计算共享基数的另一方法中,共享基数是每一群集中共享每一群集中最低级别的高速缓存的逻辑处理器的数量的最大公约数。例如,参考图5,在所示实施例中,系统管理程序550可检测作为一个组共享群集中最低级别的高速缓存的逻辑处理器的数量。在该示例中,使用图5,在NUMA节点500中,6个逻辑处理器(逻辑处理器506-516)共享最低级别的高速缓存L3,而在NUMA节点502中,4个逻辑处理器(逻辑处理器518-524)共享最低级别的高速缓存L3。系统管理程序550(或在数据中心的示例中是管理系统40 随后确定两组的最大公约数,6个处理器和4个处理器的最大公约数是2个处理器。系统管理程序 550(或管理系统40 随后确定群集中其上至少存在所确定数量个处理器(在该示例中是 2个)的最高级别的高速缓存是L3。在该示例中,系统管理程序550可将L3选为要展示的高速缓存的类型。因此,如图5所示,在该示例中,系统管理程序550可展示共享虚拟L3高速缓存的2个虚拟处理器的组。系统管理程序550随后可将该信息存储在高速缓存分层表 556 中。在确定了虚拟高速缓存拓扑结构(在数据中心的情况下,由管理系统402传递给系统管理程序550)之后,调度器552在调度线程时可使用该拓扑结构。在一个实施例中, 系统管理程序550可按兑现虚拟高速缓存拓扑结构的方式来为虚拟处理器设置独特逻辑处理器。系统管理程序550试图为每一虚拟处理器分配独特逻辑处理器从而使得在虚拟处理器和逻辑处理器之间存在一对一的对应关系。独特逻辑处理器可被分成各集合从而使得每一集合中的多个独特逻辑处理器在共享级别处共享高速缓存,其中每一集合中的独特逻辑处理器的数量是共享基数和虚拟处理器的数量中较少的那个。例如,继续以上的具体示例,当共享基数是4,共享级别是L3,而虚拟处理器的数量是4时,系统管理程序550可将逻辑处理器506设为虚拟处理器534的独特逻辑处理器,将逻辑处理器508设为虚拟处理器 536的独特逻辑处理器,将逻辑处理器510设为虚拟处理器538的独特逻辑处理器,将逻辑处理器512设为虚拟处理器540的独特逻辑处理器。系统管理程序550随后可将逻辑处理器506、508、510和512之间的L2高速缓存展示为虚拟L3高速缓存。在该示例实施例中, 只要调度器552可将虚拟处理器534、虚拟处理器536、虚拟处理器538和虚拟处理器540 调度到NUMA节点500或NUMA节点502中的逻辑处理器的任意组合上,则该虚拟化拓扑结构可被兑现。此外,如果被虚拟化的物理高速缓存是L2,则客操作系统532可观察到性能提升。在另一实施例中,如果虚拟处理器的数量无法整除共享基数,则一个集合只需要在共享级别共享余数(模)个逻辑处理器。如果系统管理程序550因为例如物理高速缓存拓扑结构已经改变或者管理系统 402被引导来使用无法适当映射的共享基数和/或共享级别而无法兑现虚拟高速缓存拓扑结构,则系统管理程序550可通过首先迭代地降低逻辑处理器被映射到的高速缓存级别然后迭代地降低共享基数来尝试最佳拟合。这不修改虚拟高速缓存拓扑结构,只修改了到逻辑处理器的映射。在另一示例实施例中,系统管理程序550可记住虚拟处理器执行的位置并基于所展示的虚拟拓扑结构以及与可用逻辑处理器相关联的所估计的高速缓存未中成本来选择逻辑处理器。调度器552随后可确定运行虚拟机530的其他线程的逻辑处理器的身份,并使用该信息来选择兑现虚拟高速缓存拓扑结构且具有最低估计未中成本的逻辑处理器。以下是描绘操作过程的一系列流程图。为便于理解,流程图被组织成使得初始流程图通过总体?大图?视点来演示各实现,并且后续的流程图提供进一步的附加物和/或细节。此外,本领域的技术人员可以理解,虚线所描绘的操作过程被认为是任选的。图6示出了用于实施本发明的各方面的操作过程,包括操作600、602和604。操作600开始操作过程,而操作602示出响应于接收到要调度指示虚拟机的虚拟处理器的线程的请求来生成空闲逻辑处理器列表。例如,参考图5,系统管理程序550可被配置成实例化虚拟机530并控制虚拟机530,将诸如虚拟处理器534-虚拟处理器540等一个或多个虚拟处理器展示给客操作系统532。在一示例实施例中,虚拟处理器534-540可以是单核虚拟处理器。或者换言之,可以不将虚拟化高速缓存拓扑结构展示给客操作系统532。在该示例中,客操作系统532可将线程调度到虚拟处理器534上,而系统管理程序550可接收到要将虚拟处理器534调度到逻辑处理器上的请求。响应于接收到该请求,调度器552可执行并生成空闲逻辑处理器列表。在一示例实施例中,调度器552可检查空闲处理器图并确定系统中哪些处理器是空闲的。操作604示出将指示虚拟处理器的线程调度在列表中与种子逻辑处理器共享一个级别的高速缓存的逻辑处理器上。继续以上的示例,调度器552可执行并将线程调度到与种子逻辑处理器共享一个级别的高速缓存的逻辑处理器上。例如,在该示例实施例中,调度器552可试图将线程调度到接近种子逻辑处理器的逻辑处理器上。以此方式,调度器552 可通过提高线程将使用在共享高速缓存中的数据或指令以及逻辑处理器可以在不必从RAM 或另一 NUMA节点取回数据或指令的情况下运行的几率来提升虚拟机530的性能。继续以上的具体示例,调度器552可确定指示虚拟处理器534的线程的种子是逻辑处理器506。在逻辑处理器506不可用的情况下,调度器552随后可被配置成访问高速缓存分层表556并确定哪个空闲逻辑处理器与逻辑处理器506共享高速缓存。调度器552随后可被配置成选择共享高速缓存的逻辑处理器中的一个来运行指示虚拟处理器534的线程。例如,逻辑处理器508和逻辑处理器514可能是空闲的。调度器552可访问高速缓存分层表556并确定逻辑处理器508与逻辑处理器506共享L2和L3而逻辑处理器506与逻辑处理器514共享L3。调度器552随后可选择逻辑处理器中的一个来运行线程。图7示出图6的操作过程的替换实施例,包括附加操作706-716。操作706示出响应于确定最后运行指示虚拟处理器的线程的逻辑处理器不可用并且自从指示虚拟处理器的线程最后一次执行以来已经超过预定时间量,将指示虚拟处理器的线程调度在与种子逻辑处理器共享一个级别的高速缓存的逻辑处理器上。例如,在一个实施例中,调度器552 可确定指示虚拟处理器534的线程与等待时间敏感的工作负载相关联。即,工作负载,例如客操作系统532执行的程序可能需要在调度器552接收到该程序时被尽快地调度。例如, 系统管理程序550可从客机532获得指示其性能是缓慢的或客操作系统532正执行许多基于网络的输入/输出工作的性能信息。在另一实施例中,管理员或策略可将来自虚拟机530 的线程设为等待时间敏感的。无论线程是怎样被标识为等待时间敏感的,在接收到要调度指示虚拟处理器534的线程的请求并确定如何调度它时,调度器552可从线程表560获得 fn息ο在一示例实施例中,调度器552可立即调度线程,或取决于线程最后运行的时间使其排队。例如,如果线程最近运行过,则存在它将使用的信息仍然在高速缓存中的记录。 在这种情况下,由于排队导致的性能下降可能小于通过高速缓存命中而获得的性能提升。 或者,如果线程最近未运行过,则高速缓存可能是冷的,即,可能不具有任何有用信息,并且可能无法通过任何更长的等待来获得任何性能益处。在该示例实施例中,可以使用预定阈值时间来确定该线程应该被运行。例如,调度器552可接收要调度虚拟处理器534的请求。调度器552可运行并访问线程表560来获得关于虚拟处理器534的信息,诸如描述线程是等待时间敏感的、线程最后运行的时间、最后运行线程534的逻辑处理器的信息。调度器552可访问空闲处理器图并检查来查看哪些逻辑处理器是可用的。在该具体示例中,最后运行线程的逻辑处理器,即逻辑处理器506可能是不可用的。在这种情况下,调度器552可将自从虚拟处理器534最后一次运行以来的时间量与预定阈值进行比较,并确定自从最后一次运行以来的时间量大于预定值。调度器阳2 可被调度来访问高速缓存分层表556并确定哪些可用逻辑处理器与逻辑处理器506共享高速缓存并选择一个来运行线程534。继续图7的描述,操作708示出响应于确定最后运行指示虚拟处理器的线程的逻辑处理器不可用并且自从指示虚拟处理器的线程最后一次执行以来未超过预定时间量,将指示虚拟处理器的线程排队在最后运行指示虚拟处理器的线程的逻辑处理器上。与操作 706类似,在一个实施例中,指示虚拟处理器534的线程可以是等待时间敏感的线程。在该示例中,在逻辑处理器506不可用且未超过预定时间量的实例中,调度器552可被配置成将线程534排队在逻辑处理器506上。在该示例中,可以作出这样的决策由于高速缓存命中导致的节省将补偿等待时间敏感的线程不被尽快执行的事实。如上所述,预定阈值可基于系统的性能特征来设置并且可由管理员或策略调整。图7的操作710示出将最后执行指示虚拟处理器的线程的逻辑处理器设为种子逻辑处理器。例如,在一个实施例中,系统管理程序550可使用管理员或策略来为虚拟处理器设置种子逻辑处理器。在该具体示例中,最后运行虚拟处理器534的逻辑处理器可被设为种子。因此,在该示例实施例中,如果将线程534从逻辑处理器506移动至逻辑处理器508, 则可以改变线程表560中的种子来反映种子现在是逻辑处理器508。在该示例实施例中,虚拟机530可以是单核虚拟机530,而可以从高速缓存命中中获得的仅有效率是来自将虚拟处理器534配置成与最后运行其的逻辑处理器共享尽可能多的高速缓存。操作712示出将理想逻辑处理器设为种子逻辑处理器。例如,参考图5,在一个示例实施例中,理想逻辑处理器可被设为种子。在该示例中,种子可以在引导时基于策略或由管理员来静态地分配,并且可以保持恒定,即使指示虚拟处理器的线程被调度器552移动。例如,虚拟机530可被实例化。策略可由系统管理程序550读取来引导它为虚拟处理器534-540设置理想处理器。作为响应,系统管理程序550可将逻辑处理器506分配为虚拟处理器534的理想处理器,将逻辑处理器508分配为虚拟处理器536的理想处理器,并以此类推。该信息随后可被记录在线程表560中。在虚拟处理器534在下一次运行时被移动的情况下,调度器552可被配置成访问线程表560 ;确定逻辑处理器506被设为理想逻辑处理器;并检查逻辑处理器506是否空闲。在该示例中,如果逻辑处理器506是空闲的,则在其上调度,无关最后运行虚拟处理器534的逻辑处理器的身份是什么,并且如果它不可用, 则调度器552试图将其定位在尽可能接近理想逻辑处理器的位置。操作714示出将指示虚拟处理器的线程调度在列表中与种子逻辑处理器共享最高级别的高速缓存的逻辑处理器上。例如,在一个实施例中,调度器552可被配置成试图分配虚拟处理器从而使得它们共享最高级别的的高速缓存。在该示例实施例中,客机532具有见到由于高速缓存命中导致的性能提升的最佳几率。如上所述,每一逻辑处理器可具有存储在高速缓存分层表阳6中的与其相关联的阵列。响应于接收到要调度指示虚拟处理
15器,诸如虚拟处理器534的线程的请求,调度器552可确定虚拟处理器534的种子并访问高速缓存分层表556来确定与种子共享最高级别的的高速缓存的可用逻辑处理器。调度器 552随后可将线程调度到与种子共享最高级别的的高速缓存的可用逻辑处理器上。操作716示出从NUMA节点中的逻辑处理器列表中生成空闲逻辑处理器列表。系统管理程序550可被配置成为计算机系统中的每一 NUMA节点维护空闲处理器图。在该示例实施例中,在启动虚拟机530时每一虚拟处理器可被分配理想NUMA节点并且该信息可被存储在线程表560中。当调度器552运行时,它可确定线程已经被分配理想NUMA节点,并且调度器552可从与理想NUMA节点相关联的空闲处理器图中生成空闲处理器列表。以此方式,降低了对可能的逻辑处理器候选的初始设置。在一具体示例中,NUMA节点500可以是指示虚拟处理器534的线程的理想NUMA节点。调度器552可从线程表560中获得该信息;访问空闲处理器图554 ;并生成NUMA节点500中的空闲处理器列表。图8示出了用于实施本发明的各方面的操作过程,包括操作800、802、804和806。 操作800开始操作过程,而操作802示出配置系统管理程序以将多个单核虚拟处理器展示给虚拟机。例如,参考图5,在一个实施例中,计算机系统可执行指示系统管理程序550的指令,并且可加载可用于实例化虚拟机530的指令。例如,系统管理程序550可将虚拟机530 设置为包括多个虚拟处理器,诸如虚拟处理器534440。在该示例实施例中,虚拟处理器可以是单核虚拟处理器。换言之,虚拟处理器534-540可以不共享高速缓存。客操作系统532 可引导并检测单核虚拟处理器。继续图8的描述,操作804示出配置系统管理程序以响应于接收到要执行指示虚拟处理器的线程的请求来生成空闲逻辑处理器列表。例如,在系统管理程序550接收到要调度指示诸如虚拟处理器540之类的虚拟处理器的线程的请求的情况下,可将系统管理程序阳0的执行实例设为生成空闲逻辑处理器列表。例如,调度器552的可执行指令可在引导时被加载到设立计算机系统中逻辑处理器的空闲处理器图的存储器中,系统管理程序可被配置成响应于从诸如客操作系统532之类的客机接收到线程来运行调度器552,这可生成空闲逻辑处理器列表。操作806示出配置系统管理程序以将指示虚拟处理器的线程调度到列表中与当前正在执行虚拟机的虚拟处理器的最大数量的逻辑处理器共享高速缓存的逻辑处理器上。 例如,参考图5,在一个实施例中,系统管理程序550可被配置成响应于要调度指示例如虚拟处理器540的线程的请求来运行调度器552。在该示例中,调度器552可检查线程表560 并确定虚拟机530没在使用种子。响应于该确定,调度器552可获得描述虚拟机530的其他虚拟处理器正在哪里执行的信息。例如,虚拟处理器534可以在逻辑处理器514上执行,虚拟处理器536可以在逻辑处理器516上执行,而虚拟处理器538可以在逻辑处理器512上执行。调度器552随后可以运行并确定哪些逻辑处理器是可用的。例如,逻辑处理器506和逻辑处理器518可能是可用的。调度器552可以检查高速缓存分层表556并确定逻辑处理器 506与逻辑处理器512-516共享L3高速缓存,而逻辑处理器518不与逻辑处理器512-516 共享任何高速缓存。在该示例中,调度器552可将指示虚拟处理器MO的线程调度到逻辑处理器506上,因为逻辑处理器506与正在执行虚拟处理器的最大数量的逻辑处理器共享高速缓存。图9示出图8的操作过程的替换实施例,包括附加操作908-916。操作908示出将系统管理程序配置成将指示虚拟处理器的线程调度到列表中与正在执行虚拟机的虚拟处理器的最大数量的逻辑处理器共享高速缓存的逻辑处理器上。例如,调度器552可被配置成将线程调度到与当前正在运行的最大数量的虚拟处理器共享最高级高速缓存的逻辑处理器上。例如,在一个实施例中,调度器552可确定存在与最大数量的逻辑处理器共享高速缓存的多个可用逻辑处理器。在该示例中,调度器552可被配置成选择与最多的逻辑处理器共享最高级高速缓存的逻辑处理器。例如,在一个实施例中,逻辑处理器508-514可正在运行包括5个虚拟处理器的虚拟机的4个虚拟处理器。调度器552可确定逻辑处理器506 和逻辑处理器516是可用的,并且各自与当前正在运行的虚拟机的虚拟处理器共享L3高速缓存。在该示例中,调度器552可确定逻辑处理器506与4个逻辑处理器中的3个共享L2 高速缓存,而逻辑处理器516与1个逻辑处理器共享L2高速缓存。在该示例中,调度器552 可选择逻辑处理器506。继续图9的描述,操作910示出配置系统管理程序以响应于确定最后运行指示虚拟处理器的线程的逻辑处理器不可用且自从指示单核虚拟处理器的线程最后一次执行以来已经超过预定时间量,将指示虚拟处理器的线程调度到可用逻辑处理器上。例如,在一个实施例中,调度器552可确定线程与等待时间敏感的工作负载相关联。即,工作负载,例如客操作系统532执行的程序可能需要在调度器552接收到该程序时被尽快地调度。在该示例实施例中,如果自从虚拟处理器最后一次运行以来已经超过预定时间量,则调度器552 可被调度来访问高速缓存分层表556并确定哪些可用逻辑处理器与例如最后运行虚拟处理器的逻辑处理器共享高速缓存,或者与当前正在运行的虚拟机的虚拟处理器的最大数量的逻辑处理器共享高速缓存的可用逻辑处理器。继续图9的描述,操作912示出将系统管理程序配置成响应于确定最后运行指示虚拟处理器的线程的逻辑处理器不可用并且自从指示虚拟处理器的线程最后一次执行以来未超过预定时间量,将指示虚拟处理器的线程排队在最后运行指示虚拟处理器的线程的逻辑处理器上。在一个实施例中,可能未超过预定时间量。在该示例实施例中,调度器552 可将线程排队在最后运行该线程的逻辑处理器上。如上所述,预定阈值可基于系统的性能特征来设置并且可由管理员或策略调整。操作914示出配置系统管理程序以从NUMA节点中的逻辑处理器列表中生成空闲逻辑处理器列表。系统管理程序550可被配置成为计算机系统中的每一 NUMA节点维护空闲处理器图。在该示例实施例中,在启动虚拟机530时每一虚拟处理器可被分配理想NUMA 节点并且该信息可被存储在线程表560中。当调度器552运行时,它可确定线程已经被分配理想NUMA节点,并且调度器552可从与理想NUMA节点相关联的空闲处理器图中生成空闲处理器列表。以此方式,降低了对可能的逻辑处理器候选的初始设置。在一具体示例中, NUMA节点500可以是指示虚拟处理器534的线程的理想NUMA节点。调度器552可从线程表560中获得该信息;访问空闲处理器图554 ;并生成NUMA节点500中的空闲处理器列表。图10示出了用于实施本发明的各方面的操作过程,包括操作1000、1002、1004、 1006和1008。操作1000开始操作过程,而操作1002示出获得基于多个计算机系统的物理高速缓存拓扑结构的虚拟高速缓存拓扑结构信息。例如,参考图5,系统管理程序550可获得描述如何为虚拟机530生成虚拟高速缓存拓扑结构的配置信息。在一个实施例中,系统管理程序550可生成该信息,或者在数据中心的实施例中,它可从例如图4的管理系统402接收该配置信息。操作1004示出基于虚拟高速缓存拓扑结构信息来实例化虚拟机。系统管理程序 550可接收配置信息并实例化虚拟机,诸如虚拟机530。在该示例中,虚拟机530可包括虚拟化高速缓存拓扑结构。例如,系统管理程序550可将存储器分配给虚拟机530并在所分配的RAM中装配虚拟主板。附连到虚拟主板的可以是具有虚拟化高速缓存拓扑结构的虚拟处理器。操作1006示出将虚拟高速缓存拓扑结构展示给客操作系统,其中虚拟高速缓存拓扑结构基于所获得的虚拟高速缓存拓扑结构信息。系统管理程序550可以在客操作系统 532引导时将由系统管理程序550生成的,或在数据中心实施例中由系统管理程序550从管理系统402接收的配置信息展示给客操作系统532,所述配置信息可描述虚拟高速缓存拓扑结构。客操作系统532随后可检测该拓扑结构并将其调度器配置成取决于该拓扑结构。 在该示例实施例中,虚拟高速缓存拓扑结构可独立于主计算机系统的物理高速缓存拓扑结构,从而使得客操作系统532可被容易地迁移至数据中心400中的任何计算机系统。操作1008示出在虚拟机中引导客操作系统。例如,固件可以运行客操作系统532 并将其加载到虚拟机530中。客操作系统532可检测虚拟处理器并查询虚拟处理器来确定虚拟化高速缓存拓扑结构。在该示例中,系统管理程序550可接收查询并基于描述虚拟化高速缓存拓扑结构的配置信息来返回虚拟化结果。例如,虚拟高速缓存拓扑结构可包括共享L3高速缓存的两个虚拟处理器。在该示例中,系统管理程序550可用标识虚拟化高速缓存拓扑结构的信息来对查询作出响应。客操作系统532随后可配置其调度器以高效地使用虚拟化高速缓存拓扑结构。图11示出图10的操作过程的替换实施例,包括操作1108和1110。操作1108示出响应于接收到要调度指示虚拟处理器的线程的请求来从NUMA节点中的逻辑处理器列表中生成空闲逻辑处理器列表。系统管理程序550可被配置成为计算机系统中的每一 NUMA 节点维护空闲处理器图。在该示例实施例中,在启动虚拟机530时每一虚拟处理器可被分配理想NUMA节点并且该信息可被存储在线程表560中。当调度器552运行时,它可确定线程已经被分配理想NUMA节点,并且调度器552可从与理想NUMA节点相关联的空闲处理器图中生成空闲处理器列表。以此方式,减少了对可能的逻辑处理器候选的初始设置而不必检查列出计算机系统中每一个逻辑处理器的位图。图11的操作1110示出虚拟高速缓存拓扑结构信息包括共享虚拟高速缓存的多个虚拟处理器。例如,在一个实施例中,系统管理程序550或数据中心400的管理系统402可被配置成生成系统管理程序550展示给客操作系统532的虚拟高速缓存拓扑结构,其将包括共享虚拟高速缓存的多个虚拟处理器。在一个实施例中,虚拟高速缓存拓扑结构可包括共享虚拟高速缓存的所计算数量的虚拟处理器。图12示出图11的操作过程的替换实施例,包括操作1212、1214、1216、1218和 1220。操作1212示出虚拟高速缓存拓扑结构信息包括虚拟高速缓存的高速缓存级别,其中高速缓存级别基于多个逻辑处理器之间共享的最低级别的高速缓存。例如,继续操作1110, 在一个实施例中,在确定了虚拟高速缓存拓扑结构的虚拟处理器的数量之后,可以确定共享的虚拟高速缓存的类型。在一示例实施例中,可将由等于或大于所确定数量的虚拟处理器的多个逻辑处理器共享的最低类型的高速缓存用作虚拟高速缓存。
18
例如,参考图5,在一个实施例中,管理系统402可被配置成接收这样的信息,该信息描述了 NUMA节点500包括在4个逻辑处理器之间共享的L2高速缓存,在2个逻辑处理器之间共享的L2高速缓存,以及在6个逻辑处理器之间共享的L3高速缓存。管理系统402 还可接收描述了 NUMA节点502包括在4个逻辑处理器之间共享的L3高速缓存的信息。在该示例中,管理系统402可确定NUMA节点500可支持在等于或大于为虚拟高速缓存拓扑结构设置的虚拟处理器的数量的多个逻辑处理器之间共享L2和L3高速缓存。管理系统402 还可确定NUMA节点502可支持在等于或大于为虚拟高速缓存拓扑结构设置的虚拟处理器的数量的多个逻辑处理器之间共享L3高速缓存。管理系统402可将L3设为要在虚拟高速缓存拓扑结构中展示的高速缓存,因为它是可由每一 NUMA节点兑现的最低级高速缓存。操作1214示出将指示虚拟处理器的线程调度到与理想逻辑处理器共享一个级别的高速缓存的空闲物理处理器上。例如,在将虚拟高速缓存拓扑结构展示给虚拟机530之后,客操作系统532可执行线程并调度线程来在虚拟处理器534-540上运行。调度器552 可接收要调度指示虚拟处理器的线程的请求并检查线程表560。在该示例实施例中,线程表 560可包括为虚拟机530中的每一虚拟处理器设置理想逻辑处理器的信息。例如,系统管理程序550可在引导时基于所展示的虚拟高速缓存拓扑结构来分配理想逻辑处理器。即,虚拟处理器534和536可被分配至少共享L3高速缓存的理想逻辑处理器。在该示例实施例中,如果移动了指示虚拟处理器534的线程,则下一次调度器552运行时,它可试图将其移回到理想处理器。继续图12的描述,操作1216示出将指示虚拟处理器的线程调度到与当前正在执行虚拟机的虚拟处理器的最大数量的逻辑处理器共享高速缓存的空闲物理处理器上。例如,参考图5,在一个实施例中,调度器552可接收要调度指示例如虚拟处理器534的线程的请求。在该示例中,调度器552可被配置成检查线程表560并确定虚拟机530没在使用理想处理器。响应于该确定,调度器552可确定虚拟机530的其他虚拟处理器正在哪里执行。例如,虚拟处理器534可在逻辑处理器514上执行而虚拟处理器536可在逻辑处理器 516上执行。调度器552随后可以运行并确定哪些逻辑处理器是可用的。例如,逻辑处理器506和逻辑处理器518可能是可用的。调度器552可以检查高速缓存分层表556并确定逻辑处理器506与逻辑处理器512-516共享L3高速缓存,而逻辑处理器518不与逻辑处理器512-516共享任何高速缓存。在该示例中,调度器552可将指示虚拟处理器MO的线程调度到逻辑处理器506上。操作1218示出基于自从指示虚拟处理器的线程最后一次运行以来的时间量与预定阈值的比较来调度指示虚拟处理器的线程。在一示例实施例中,系统管理程序550可被配置成平衡由快速调度导致的效率损失对通过高速缓存命中而得到的效率。例如,在一个实施例中,调度器552可确定线程与等待时间敏感的工作负载相关联。即,工作负载,例如客操作系统532执行的程序可能需要在调度器552接收到该程序时被尽快地调度。在该示例实施例中,如果自从虚拟处理器最后一次运行以来已经超过预定时间量,则调度器552 可被调度来访问高速缓存分层表556并确定哪些可用逻辑处理器与例如最后运行虚拟处理器的逻辑处理器共享高速缓存,或者与当前正在运行的虚拟机的虚拟处理器的最大数量的逻辑处理器共享高速缓存的可用逻辑处理器。操作1220示出基于自从指示虚拟处理器的线程最后一次运行以来的时间量与预定阈值之间的比较来将指示虚拟处理器的线程排队在最后运行指示虚拟处理器的线程的物理处理器上。在一个实施例中,可能未超过预定时间量。在该示例实施例中,调度器552 可将线程排队在最后运行该线程的逻辑处理器上。如上所述,预定阈值可基于系统的性能特征来设置并且可由管理员或策略调整。图13示出图10的操作过程的替换实施例,包括操作1308、1310、1312、1314、1316 和1318。操作1308示出执行具有虚拟高速缓存拓扑结构的虚拟机,其中高速缓存拓扑结构包括共享虚拟高速缓存的多个虚拟处理器。在一个实施例中,系统管理程序550已经获得虚拟高速缓存拓扑结构信息,该信息基于其自己的物理高速缓存拓扑结构,或者在数据中心400的情况下基于数据中心400中的物理高速缓存拓扑结构;实例化包括所获得的虚拟高速缓存拓扑结构的虚拟机,这基于虚拟高速缓存拓扑结构信息;以及在虚拟机中引导客操作系统。系统管理程序550随后执行具有虚拟高速缓存拓扑结构的虚拟机。参考图5的实施例,虚拟高速缓存拓扑结构可包括共享虚拟L3高速缓存的2个虚拟处理器。操作1310示出基于虚拟高速缓存拓扑结果来为每一虚拟处理器分配独特逻辑处理器。在该实施例中,系统管理程序550为每一虚拟处理器分配独特逻辑处理器。操作1312 示出将多个独特逻辑处理器分成多个集合,其中每一集合共享不低于共享级别的高速缓存级别。共享级别是可为独特逻辑处理器集合兑现的互连高速缓存的最高级别。在该操作中, 将虚拟处理器映射到逻辑处理器。在一个实施例中,操作1314示出独特逻辑处理器的数量是共享基数和虚拟处理器的数量中较少的那个。例如,如果共享基数是4,但虚拟处理器的数量是3,则独特逻辑处理器的数量将是3。操作1316示出迭代地降低共享级别直到经修改的共享级别是可被成功映射的物理高速缓存的最高级别。在一个实施例中,硬件可能已经改变因为虚拟高速缓存拓扑结构是由管理系统402计算的,或者管理员可能设置了无法由物理高速缓存拓扑结构兑现的虚拟高速缓存拓扑结构。如果情况如此,则虚拟处理器可能无法被成功地映射到可用逻辑处理器。在一个实施例中,仅仅迭代地降低共享级别直到虚拟处理器可被成功地映射到逻辑处理器。在该上下文中,降低共享级别意味着将级别从例如L2降到L3,从L3降到L4,等等。如果这不成功并且共享级别无法被进一步降低,则操作1318示出迭代地降低每一集合中映射的虚拟处理器的数量。降低每一集合中的虚拟处理器的数量直到在最低共享级别处虚拟处理器到逻辑处理器的映射是成功的。即使降低了集合中的虚拟处理器的数量,也不会影响展示给客操作系统的虚拟高速缓存拓扑结构。图14示出了用于实施本发明的各方面的操作过程,包括操作1400、1402、1404、 1406、1408、1410、1412、1414和1416。操作1400开始操作过程,而操作1402示出管理系统将对物理高速缓存拓扑结构信息的请求发送给多个计算机系统。系统管理程序550可查询其自己的物理拓扑结构。在包括数据中心的一个实施例中,管理系统402将对每一计算机系统的物理高速缓存拓扑结构的请求发送给数据中心400中的计算机系统。操作1404示出从多个计算机系统接收物理高速缓存拓扑结构信息。在一个实施例中,系统管理程序550通过厂商特定机制用物理高速缓存拓扑结构来对管理系统作出响应。在另一实施例中,系统管理程序550通过超调用来用物理高速缓存拓扑结构作出响应。 在一个实施例中,管理系统402接收对应于数据中心400中的计算机的物理高速缓存拓扑结构。
操作1406示出确定共享基数,其中共享基数基于物理高速缓存拓扑结构信息。操作1408示出确定共享级别,其中共享级别基于物理高速缓存拓扑结构信息和共享基数。管理系统402通过确定共享基数和共享级别来确定可至少由大多数计算机系统兑现的虚拟高速缓存拓扑结构。共享基数,例如,是可由管理系统402确定、由高速缓存共享的逻辑处理器的数量。操作1410示出一种使用共享最低级别的高速缓存的每一计算机系统的逻辑处理器的数量的最大公约数来确定共享基数的方法。在一个示例实施例中,处理器的数量可通过计算共享数据中心400中的每一 NUMA节点的最低级高速缓存的逻辑处理器的最大公约数来确定。在每一计算机系统具有与图5所述的物理拓扑结构相同的拓扑结构的一个示例实施例中,管理系统402可被配置成确定每一 NUMA节点中的最低级高速缓存,例如,在该示例中L3高速缓存,并确定每一 NUMA节点中共享该级别的高速缓存的逻辑处理器的数量,即, NUMA节点500中的6和NUMA节点502中的4。管理系统402随后可确定6和4之间的最大公约数是2。该值可被设为共享虚拟高速缓存拓扑结构中一级高速缓存的虚拟处理器的数量。操作1412示出一种使用共享最低级别的高速缓存的逻辑处理器的最小数量来确定共享基数的替换方法。例如,管理系统402可确定共享每一 NUMA节点中最低级别的高速缓存的逻辑处理器的数量。管理系统402随后可将逻辑处理器的最小数量设为共享虚拟高速缓存拓扑结构中的一级高速缓存的虚拟处理器的数量。例如,管理402可接收描述了 L3 是由逻辑处理器506-516共享的最低级别的高速缓存并且L3是由逻辑处理器518-5M共享的最低级别的高速缓存的信息。管理系统402随后可确定计算机系统中分别有6个和4 个逻辑处理器共享最低级别的高速缓存。在该示例实施例中,管理系统402可选择最小的数量,即4,并将其设为共享虚拟高速缓存拓扑结构中的一个级别的高速缓存的虚拟处理器的数量。操作1408示出确定共享级别。共享级别是可由管理系统402确定的、可由物理高速缓存拓扑结构兑现的高速缓存的最高级别。操作1414示出共享级别可以是其上至少共享基数个高速缓存共享逻辑处理器的高速缓存的最高级别。在以上确定共享基数的两个替换方法中,第一个具有共享基数2而第二个具有共享基数4。在两种情况下,共享级别将是 L3,因为NUMA节点502只具有可容纳或2或4的共享基数的L3共享高速缓存。操作1416示出将虚拟高速缓存拓扑结构信息发送给多个系统管理程序,其中虚拟高速缓存拓扑结构信息由共享基数和共享级别组成。在一个实施例中,管理系统402将共享基数和共享级别传递给系统管理程序。这是在系统管理程序实例化虚拟机时现在可以使用的虚拟高速缓存拓扑结构。图15描绘了图14的操作过程的替换实施例。如图15所示,操作过程包括操作 1502、1504、1506和1508。操作1502示出接收信号,其中该信号配置管理系统以忽略用于确定共享基数和共享级别的至少一部分信息。在该操作中,管理系统402可超控共享基数和/或共享级别的计算。例如,该超控可经由策略或由系统管理员或管理系统402本身来设置。在各实施例中,这些说明可包括在确定虚拟高速缓存拓扑结构时忽略某些系统和/或高速缓存分层结构、使用替换公示、接受预定共享级别、接受预定共享基数、或接受这些说明的组合。使用这一说明,操作1504示出基于信号来确定最终的共享基数,操作1506示出基于信号来确定最终的共享级别。在该实施例中,最终的共享基数和最终的共享级别确定了虚拟高速缓存拓扑结构。操作1508示出将虚拟高速缓存拓扑结构信息发送给多个系统管理程序,其中虚拟高速缓存拓扑结构信息由最终的共享基数和最终的共享级别组成。有了该信息,例如,系统管理程序550可实例化包括可由主计算机的物理高速缓存拓扑结构合理兑现的虚拟高速缓存拓扑结构的虚拟机。上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。虽然已示出和描述了本文中描述的主题内容的特定方面,但是本领域技术人员将明白,基于本文中的教导,可作出改变和修改而不脱离本文中描述的主题内容,并且其更广方面以及因此所附权利要求的范围旨在涵盖落在本文中描述的主题内容的真实精神和范围内的所有此类改变和修改。
2权利要求
1.一种包括可执行指令的计算机可读存储介质(110),包括用于获得基于多个计算机系统004、406、408和/或410)的物理高速缓存拓扑结构的虚拟高速缓存拓扑结构信息的指令;用于实例化包括所述虚拟高速缓存拓扑结构的虚拟机(53)的指令;用于将所述虚拟高速缓存拓扑结构展示给客操作系统(532)的指令,其中所述虚拟高速缓存拓扑结构基于所获得的虚拟高速缓存拓扑结构信息;以及用于在所述虚拟机(532)中引导所述客操作系统(530)的指令。
2.如权利要求1所述的计算机可读存储介质,其特征在于,还包括用于响应于接收到要调度指示虚拟处理器的线程的请求来从非均勻存储器体系结构 (NUMA)节点中的逻辑处理器列表中生成空闲逻辑处理器列表的指令。
3.如权利要求1所述的计算机可读存储介质,其特征在于,所述虚拟高速缓存拓扑结构信息包括共享虚拟高速缓存的多个虚拟处理器。
4.如权利要求3所述的计算机可读存储介质,其特征在于,所述虚拟高速缓存拓扑结构信息包括所述虚拟高速缓存的高速缓存级别,其中所述高速缓存级别基于多个逻辑处理器之间共享的最低级别的高速缓存。
5.如权利要求3所述的计算机可读存储介质,其特征在于,还包括用于将指示虚拟处理器的线程调度到与理想逻辑处理器共享一个级别的高速缓存的空闲物理处理器上的指令。
6.如权利要求3所述的计算机可读存储介质,其特征在于,还包括用于将指示虚拟处理器的线程调度到与当前正在执行所述虚拟机的虚拟处理器的最大数量的逻辑处理器共享高速缓存的空闲物理处理器上的指令。
7.如权利要求3所述的计算机可读存储介质,其特征在于,还包括用于基于自从指示虚拟处理器的线程最后一次运行以来的时间量与预定阈值的比较来调度指示所述虚拟处理器的线程的指令。
8.如权利要求3所述的计算机可读存储介质,其特征在于,还包括用于基于自从指示虚拟处理器的线程最后一次运行以来的时间量与预定阈值之间的比较来将指示所述虚拟处理器的线程排队在最后运行指示所述虚拟处理器的所述线程的物理处理器上的指令。
9.如权利要求1所述的计算机可读存储介质,其特征在于,还包括用于基于所述虚拟高速缓存拓扑结构来为每一虚拟处理器分配独特逻辑处理器的指令。
10.一种用于为可用于在多个计算机系统上执行的虚拟机生成虚拟高速缓存拓扑结构的计算机实现的方法,包括管理系统(402)将对物理高速缓存拓扑结构信息的请求发送给多个计算机系统(404、 406、408 和 410);从所述多个计算机系统G04、406、408和410)接收所述物理高速缓存拓扑结构信息;确定共享基数,其中所述共享基数基于所述物理高速缓存拓扑结构信息;以及确定共享级别,其中所述共享级别基于所述物理高速缓存拓扑结构信息和所述共享基
11.如权利要求10所述的方法,其特征在于,所述共享基数是共享最低级别的高速缓存的每一计算机系统的逻辑处理器的数量的最大公约数。
12.如权利要求10所述的方法,其特征在于,所述共享基数是共享最低级别的高速缓存的逻辑处理器的最小数量。
13.如权利要求10所述的方法,其特征在于,所述共享级别是其上至少共享基数个高速缓存共享逻辑处理器的高速缓存的最高级别。
14.如权利要求10所述的方法,其特征在于,还包括将虚拟高速缓存拓扑结构信息发送给多个系统管理程序,其中所述虚拟高速缓存拓扑结构信息由所述共享基数和所述共享级别组成。
15.如权利要求10所述的方法,其特征在于,还包括接收信号,其中所述该信号将所述管理系统配置成忽略用于确定所述共享基数和所述共享级别的至少一部分信息;基于所述信号来确定最终的共享基数;基于所述信号来确定最终的共享级别;以及将虚拟高速缓存拓扑结构信息发送给多个系统管理程序,其中所述虚拟高速缓存拓扑结构信息由所述最终的共享基数和所述最终的共享级别组成。
全文摘要
本发明涉及将虚拟高速缓存拓扑结构展示给客操作系统。在虚拟机环境中,系统管理程序被配置成将虚拟高速缓存拓扑结构展示给客操作系统,从而使得虚拟高速缓存拓扑结构可由相对应的物理高速缓存拓扑结构来提供。虚拟高速缓存拓扑结构可由系统管理程序确定,或者在数据中心环境的情况中,可由数据中心的管理系统确定。虚拟高速缓存拓扑结构可从系统的物理高速缓存拓扑结构中计算,从而使得虚拟机可用可映射到相对应的逻辑处理器和物理高速缓存的虚拟处理器和虚拟高速缓存来实例化。
文档编号G06F9/455GK102346684SQ20111015862
公开日2012年2月8日 申请日期2011年5月31日 优先权日2010年6月1日
发明者A·巴哈德里, D·梅舍昌尼诺夫, S·甘古利 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1