专利名称::用于机器存储器功率和可用性管理的方法和系统的制作方法
技术领域:
:本发明一般地涉及处理系统中的存储器控制和管理,具体涉及一种反向存储器映射方案,用于允许在运行多个虚拟机的处理系统中进行功率和故障管理。
背景技术:
:当今的计算系统、特别是大型服务器系统经常包括对运行多个虚拟机的支持。所述系统可以是大型的即期(on-demand)服务器系统,用于在单个硬件平台上执行成百上千的服务器实例以支持具有各种计算要求的客户。在这些系统的最灵活者中,多个分区——它们可能在操作系统和应用混合体上不同——同时在系统存储器中存在,并且在每个分区中执行的处理在支持它们在客户操作系统上执行的环境中运行。虚拟机提供了一个环境,所述环境足够类似于实际硬件平台从而操作系统可以以很少的修改或不修改运行。管理程序(有时被称为虚拟机监控器)管理所有的虚拟机或分区和抽象系统资源,以便每个分区向每个操作系统实例提供机器似的环境。上述概括的一部分被存储器管理方案提供,所述存储器管理方案不仅提供在传统意义上的虚拟存储器管理,而且提供一个或多个附加的虚拟化层,所述一个或多个附加的虚拟化层使得管理程序能够提供用于每个虚拟机的虚拟化的地址空间,被称为其物理地址空间。通常,每个物理分区具有基于零的物理存储器,相关联的操作系统实例可以将所述基于零的物理存储器用作硬件存储器。然后管理程序管理物理地址空间的集合。为了减少所需要的硬件存储器的整体数量和最大化硬件存储器的利用率,管理程序通常使用多种存储器管理技术。例如,管理程序可以将包括相同内容的不同虚拟机的物理页面映射到相同的硬件页面。美国专利申请第10/727,319和10/727,320号公开了用于功率管理的各种机制,其中包括存储器联合体和硬件和/或软件机制,用于提供作出决定的工具以将一个存储器模块离线以节省功率。在一些情况下,通过独立于管理程序或其它系统软件的实体来作出决定,所述实体诸如为在专利申请“METHODANDSYSTEMFORPOWERMANAGEMENTINCLUDINGDEVICECONTROLLER-BASEDDEVICEUSEEVALUATIONANDPOWER-STATECONTROL(包括基于器件控制器的器件使用评估和功率状态控制的用于功率管理的方法和系统)”中所述的功率管理机制,其中在没有系统软件的直接指令的情况下,可以将一个存储器模块离线(置于断电状态)或置于诸如自刷新模式的具有高等待时间的节能模式中。在专利申请“METHODANDSYSTEMFORPOWERMANAGEMENTINCLUDINGLOCALBOUNDINGOFDEVICEGROUPPOWERCONSUMPTION(包括器件组功耗的本地绑定的用于功率管理的方法和系统)”中,一种用于功率管理状态的本地组控制存储器控制器或诸如同步存储器接口(SMI)的其它较高层次的器件控制器的机制可以控制存储器模块的功率管理状态,以便强制对于功耗的本地限制。如果管理程序控制在存储器模块功率管理中的决定是否特定的存储器模块被离线或置于高等待时间节能状态中,则必须知道哪些虚拟机正在使用在存储器模块内的页面,以便智能地优先化所述功率管理确定。例如,期望管理程序从运行较不重要的系统的虚拟机取走存储器,而不是从较为重要的系统取走存储器。同样,如果一个存储器模块或一个存储器模块的一部分出故障,则管理程序也必须知道哪些虚拟机正在使用受影响的页面,并且还期望管理程序能够向客户操作系统通知哪些物理页面已经出现故障。因此,期望提供一种机制,用于管理在支持多个虚拟机的处理系统中的机器存储器可用性以用于存储器故障和功率管理目的。还期望提供这样一种机制,通过它管理程序可以根据已经出故障的模块或页面的、或者被离线的模块的、或者被置于高等待时间(high-latency)节能状态的模块的机器地址范围来发现由在处理系统内的一个或多个分区对于存储器的使用。
发明内容在使用反向映射方案来发现使用一个或多个特定机器存储器页面的虚拟机的方法、系统和计算机程序产品中实现了上述目的提供一种机制,用于管理在支持多个虚拟机的处理系统中的机器存储器可用性以用于存储器故障和功率管理目的。一种反向映射结构被实现按照本发明的实施例的方法的处理系统内执行的管理程序维护。所述管理程序当被存储在媒体上、在一个存储器中或通过诸如网络下载传输的信号传送机制被传送时形成按照本发明的一个实施例的计算机程序产品。所述反向映射结构将在处理系统内的机器存储区映射到在多个虚拟机内的物理存储区。所述机器存储区表示实际系统存储器,虽然机器存储区可以例如被存储器控制器在较低水平上虚拟化或重新映射。所述物理存储区表示被提供到每个虚拟机的系统存储器,因此一个预期的存储器架构被提供给每个虚拟机。所述反向映射结构使得可以发现哪些虚拟机(受影响的虚拟机)正在使用机器存储区和对于每个受影响的虚拟机物理区号和/或地址是什么。当特定的机器存储区由于存储器故障或因为存储区要离线(或要以降低的功率/性能工作)以用于功率管理目的而变得或正在变得不可用时,管理程序确定所述区将更慢或不可用,读取反向映射结构以确定受影响的虚拟机和标记被映射到在受影响的虚拟机内的特定机器存储区的物理存储区。管理程序随后对于每个虚拟机采取行动,或者通知它们相关联的物理存储区的不可用性、将物理存储区映射到另一个未受影响的机器存储区或者执行管理行为,诸如关闭受影响的虚拟机。通过如附图所示的、下面的对本发明的优选实施例的更具体的说明,本发明的上述和其他目的、特点和优点将会清楚。在所附的权利要求中给出了相信具有本发明的特点的新颖特征。但是,通过结合附图阅读对于一个说明性实施例的详细说明,可以最佳地理解本发明本身以及其优选使用模式、其它目的和优点,其中相同的附图标号表示相同的部件,并且图1是实践本发明的一个实施例的计算系统的方框图。图2是按照本发明的一个实施例的系统存储器映像的方框图。图3是描述按照本发明的一个实施例的方法的流程图。具体实施例方式现在参见附图,具体参见图1,其中描述了实践本发明的一个实施例的处理系统的方框图。应当明白,所描述的实施例不意味着是限定性的,而仅仅是示范可以应用本发明的方法和技术的处理系统类型。所述系统包括具有四个处理器13A-D的处理器组10。处理器组10可以经由形成超级标量处理器的桥接器16而连接到其它的处理器组。处理器组10连接到L3高速缓冲存储器单元17、系统本地存储器18和各种外围器件15,并且连接到两个服务处理器19A和19B。服务处理器19A-B向处理器组10提供默认监督、启动辅助和测试能力,并且可以使得它们自己的相互连接路径连接到其它处理器组,并且连接到所有的处理器13A-D。在处理器组10内有多个处理器13A-D,每个一般被构造在单个单元内并且包括耦接到L2高速缓冲存储器11和存储器控制器14的多个处理器核心12A和12B。存储器控制器14可以是在上述的专利申请中公开的类型,因此提供使用信息和可用地提供对于在系统本地存储器18内的存储器模块的功率状态的本地控制。核心12A和12B提供用于通用处理功能的指令执行和对于数据值的操作。桥接器16以及在所述系统内的其它桥接器通过宽总线与其它处理器组通信,总线5提供处理器13A-D、桥接器16、外围部件15、L3高速缓冲存储器17和系统本地存储器18的连接。其它全局系统存储器可以外接到桥接器16以用于由所有处理器组的对称访问。服务处理器19A和19B经由联合测试行动组(JTAG)测试端口接口连接到处理器13A-D,所述接口具有命令和逻辑扩展,用于提供对于处理器13A-D的很容易的控制。在系统本地存储器18内,一种虚拟机监控程序或“管理程序”提供对于执行多个虚拟机(VM)或“分区”的支持,所述每个虚拟机或“分区”提供用于一个操作系统和多个“客户”程序(由操作系统执行的和运行在相关联的VM中的应用和服务)的执行环境。所述操作系统支持对它们的客户应用的存储器分配,并且从分配请求返回的指针是对于虚拟存储器的指针。虽然操作系统通常分配任何所请求的尺寸的存储器,但是以页面尺寸递增来执行物理存储器的分配,并且分配例程管理从所分配的页面管理更小的虚拟存储区的分配。但是,本发明的操作可以被应用到除了页面大小的区之外的存储区,因此本发明应当被理解为扩展到任何尺寸的存储区。本发明的物理存储空间不是实际的机器存储器,而是在每个VM内的虚拟化的机器存储器,用于一般地提供对于实际机器存储器硬件环境的基于零的仿真。一般,被提供到每个VM的物理存储空间将小于被提供的总的实际机器存储器,这与通常大于机器存储空间的虚拟存储空间相反。本发明的机器存储空间可以是实际的硬件存储空间,或者可以本身被管理程序或诸如存储器控制器14的硬件或诸如在系统本地存储器18内的控制器的外部存储器控制器虚拟化,以便提供明显邻接的机器存储器。这样的方案可以将系统本地存储器18与位于在其它处理器组中桥接器16之外的存储器统一,或者可以不如此。本发明提供了一种用于处理机器存储空间的有限可用性(诸如具有较长访问时间的存储器)或不可用性对于处理系统的影响的机制。机器存储器页面可能由于在一个或多个存储器位置检测的故障而变得不可用,例如,奇偶校验检测到在机器存储器位置的故障或者系统监控器确定整个存储器模块已经出故障。机器存储器页面可能变得不可用的另一种方式是由于功率管理硬件或软件控制机制,所述机制将模块置于掉电状态或节能状态中,其中系统策略控制不能访问模块。换句话说,存储器模块已经被有效地“离线”。本发明也提供了用于处理存储器被置于保留存储器的内容的功率管理状态的情形,但是强制对于存储器的访问以引起附加的等待时间(诸如将在自刷新状态中的存储器模块与存储器总线同步所需要的时间)。上述合并专利申请描述了硬件和软件控制机制,用于强制系统和/或本地功率管理策略,以便管理程序可以对于是否存储器模块被降速或离线没有控制,并且不控制这样的事件的定时。最后,可以要求管理程序本身强制系统或本地功率管理策略(例如由于客户功率或存储空间要求),因此使得机器存储器模块不可用。在上述某些情况下,必须采取行动来防止一个或多个机器存储器页面的不可用引起整个处理系统的灾难性故障。可以通过三种机制的一个或多个来避免上述问题1)如果内容可用,则管理程序可以安静地重新映射/重新定位存储器页面,否则管理程序可以从诸如盘页面高速缓冲存储器的其它存储器恢复存储器的内容;2)可以经由例外(或软检错停机(softcheckstop))来向在VM内的操作系统和/或客户通知页面的不可用性;或3)可以关闭受影响的VM(经由通过管理程序的硬检错停机和清除或经由关闭通知)。为了对受影响的VM采取行动,必须知道哪些VM受影响,并且为了向VM通知特定页面的不可用(例如指示故障位置),必须确定在每个受影响的VM中的一个不可用的机器页面的物理页面号。本发明使用反向映射技术来确定受影响的VM和用于受影响的VM的相关联的物理页面号以获得不可用的机器页面。现在参见图2,其中示出了用于描述按照本发明的一个实施例的在计算机系统内的存储器组织的方框图。多个VM20A-20Z被示出,每个具有基于零的物理存储空间,它可以被在VM20A-20Z中运行的操作系统内部虚拟化。为了说明,在物理存储空间内示出了几个物理页面(Ppagexx)。本发明使用结构22,它被称为rtable,它包括每个机器存储器页面的位置。通过在rtable22中的有效项目来反映通过在任何VM20A-20Z中的分配而暗示的每个机器存储器页面。项目可以是两种类型之一专用的或共享的。在项目中提供了一个比特以指示专用或共享状态。对于对在特定的一个VM20A-20Z中的单个物理页面分配专用的页面,项目是用于该特定VM的物理页面号。例如,rtable22中的第一项目是在VM20Z中的物理页面14,rtable22中的第二项目是在VM20A中的物理页面18。但是,管理程序一般共享通过由几个机制(例如,背景内容散列法和盘高速缓冲存储器页面观察)对这个条件的检测来共享相同的机器存储器页面,并且一个机器存储器页面可以对应于在一个或多个VM中的几个物理存储器页面。当共享一个机器存储器页面时,所述项目包括对于被称为rarray的结构24A的指针,它包含多个项目,所述多个项目包括一个VM标识符和对于机器存储器页面的每个引用的物理页面号,所述机器存储器页面对应于具有rarray24A指针的rtable22项目。rarray的大小被选择为对应于预期数量的页面共享引用,如果一个机器页面被大量的物理页面引用,则在rarray24A中的最后一个项目被标记为对于下一个rarray24B的指针,提供对于可扩展数量的存储器的链接以便于对机器存储器页面的引用。在rtable22中的项目和指示项目的状态的rarray24A-B内提供了标志比特p、v和d。首先,上述的专用/共享标志比特被提供来指示是否所述项目直接地包括对于机器存储器页面的单个引用或对于包括多个引用的rtable的指针。其次,当映射的解除分配留下在rtable中的未使用项目时,有效比特v用于指示项目是否是对应于被分配的机器页面的一个有效项目。最后,包括一个标记比特d,用于指示是否所述页面可以被丢弃。因为所有的rarray项目被共享,因此在rarray内的专用/共享标志比特p被用作指示符,用于指示在rarray中的最后一个项目是否是对于下一个rarray的指针或包括直接引用信息的项目。在rtable和rarray项目中包括的引用信息是用于引用的VM标识符和物理页面号。使用页面号而不是指针提供了rtable和rarray的缩小的大小以及降低的访问时间/复杂性,因为一个单个指针大小的位置通常可以存储所有的标志、VM标识符和物理页面号。当管理程序向VM分配和解除分配机器存储器时,它维护反向映射表格,按照需要增加或删除项目。当检测到故障或者功率管理改变使得存储器模块不可用或仅仅在增加的等待时间下可用时,管理程序查找关于暗示的机器存储器页面的项目以便确定受影响的VM和在受影响的VM中的每个机器页面的物理页面号。管理程序可以重新映射/恢复每个VM的物理页面,然后,可以停止受影响的VM,通知受影响的VM或尝试通知,如果未接收到响应则停止VM。管理程序以下述方式来执行上述的反向映射更新页调出(page-out)/丟弃——释放被引用的rarray项目并复位有效比特映射到新的VM——改变在项目中的VM标识符和物理页面号从专用向共享转换——分配一个rarray,在项目中布置指针,向rarray传送旧的专用引用,设置共享比特。向共享页面添加引用——如果在最后的rarray中存在空间,则增加新的引用,如果没有空间,则分配新的rarray并且在最后的rarray中的最后项目中布置指针。从共享页面去除引用——使得在rarray中的引用无效。如果无效引用使得链接的rarray不必要,则紧缩rarray链。从共享向专用的转换——解除分配rarray,将继续存在的项目传送到rtable专用项目。现在参见图3,其中描述了按照本发明的一个实施例的方法。当虚拟机分配和解除分配存储器页面时,管理程序收集反向映射信息(步骤30)。如果存储器页面被管理程序或诸如步骤30的解除分配/分配的一些其它机制共享/不共享,则修改反向映射信息以反映改变后的共享状态(步骤32)。如果检测到存储器模块故障或功率管理改变将使得或已经使得存储器模块离线或已经将所述模块置于增加了的等待时间状态中(确定34),则读取反向映射信息以确定受影响的VM和每个VM的相关联的物理页面(步骤36),并且通知受影响的VM不可用的物理存储器页面或关闭受影响的VM(步骤38)。从步骤30起重复上述的处理直到关闭系统(步骤40)。虽然已经参照本发明的优选实施例具体示出和说明了本发明,本领域的技术人员会明白,在不脱离本发明的精神和范围的情况下,可以在其中进行形式和细节上的上述和其它改变。权利要求1.一种在处理系统中管理存储器的方法,所述处理系统支持在多个虚拟机内的多个操作系统映像的执行,所述方法包括维护用于将在所述处理系统内的机器存储区映射到在每个虚拟机内使用的物理存储区的一个反向映射结构,所述反向映射结构包括对于使用每个虚拟机内的有效机器存储区和一个或多个相关联的物理存储区的、每个虚拟机的每个所述有效机器存储区的指示;确定特定机器存储区的可用性状态;读取所述反向映射结构以使用所述特定机器存储区和每个所述受影响的虚拟机的相关联的物理存储区来确定一个或多个受影响的虚拟机;以及对于所述一个或多个受影响的虚拟机中的每个,采取行动以防止所述特定机器存储区的不可用状态在所述处理系统内引起进一步的故障。2.按照权利要求1的方法,其中所述物理存储区是物理存储器页面,而所述机器存储区是机器存储器页面。3.按照权利要求1的方法,还包括检测在所述处理系统内的机器存储器故障,其中所述确定步骤确定由于所述机器存储器故障而导致的所述特定机器存储区不可用。4.按照权利要求3的方法,其中所述采取行动步骤包括向所述受影响的虚拟机通知所述机器存储器故障,包括与所述通知相结合地为每个受影响的虚拟机提供相关联的物理存储区的指示。5.按照权利要求3的方法,其中所述采取行动步骤包括关闭所述受影响的虚拟机。6.按照权利要求1的方法,还包括向另一个机器存储区填充与所述特定机器存储区的正确内容相同的内容;以及将所述特定机器存储区重新映射到所述其它机器存储区。7.按照权利要求1的方法,还包括接收一个通知所述特定机器存储区被置于节能状态中,其中所述确定步骤响应于接收到所述通知而确定所述特定机器存储区不可用。8.按照权利要求7的方法,其中所述节能状态是高等待时间状态,由此,所述不可用性是由于用于对所述特定机器存储区的访问的较长等待时间。9.按照权利要求7的方法,其中所述采取行动步骤包括响应于接收到所述通知而向所述受影响的虚拟机通知所述相关联的物理存储区的不可用性。10.按照权利要求7的方法,其中所述采取行动步骤包括关闭所述受影响的虚拟机。11.一种处理系统,包括存储器,用于存储程序指令和数据;处理器,用于执行所述程序指令,所述程序指令包括在多个虚拟机内执行的多个操作系统,其中所述程序指令还包括管理程序指令,用于管理所述虚拟机,并且所述管理程序指令包括用于下列的程序指令维护用于将在所述处理系统内的机器存储区映射到在每个虚拟机内使用的物理存储区的一个反向映射结构,所述反向映射结构包括对于使用每个虚拟机内的有效机器存储区和一个或多个相关联的物理存储区的、每个虚拟机的每个所述有效机器存储区的指示;确定特定机器存储区的可用性状态;读取所述反向映射结构以使用所述特定机器存储区和每个所述受影响的虚拟机的相关联的物理存储区来确定一个或多个受影响的虚拟机;以及对于所述一个或多个受影响的虚拟机的每个,采取行动以防止所述特定机器存储区的不可用状态在所述处理系统内引起进一步的故障。12.按照权利要求11的处理系统,其中所述物理存储区是物理存储器页面,而所述机器存储区是机器存储器页面。13.按照权利要求11的处理系统,其中所述管理程序指令还包括用于接收在所述处理系统内的所检测的机器存储器故障的指示的程序指令,并且用于确定的所述管理程序指令确定由于所述机器存储器故障而导致的所述特定机器存储区不可用。14.按照权利要求13的处理系统,其中用于采取行动的所述管理程序指令包括用于向所述受影响的虚拟机通知所述机器存储器故障的程序指令,包括与所述通知相结合地为每个受影响的虚拟机提供相关联的物理存储区的指示。15.按照权利要求13的处理系统,其中用于采取行动的所述管理程序指令包括用于关闭所述受影响的虚拟机的程序指令。16.按照权利要求11的处理系统,其中所述管理程序指令用于接收通知所述特定机器存储区被置于节能状态中,其中用于确定的所述管理程序指令响应于所述通知的接收而确定所述特定机器存储区不可用。17.按照权利要求16的处理系统,其中所述节能状态是高等待时间状态,由此,所述不可用是由于用于对所述特定机器存储区的访问的较长等待时间。18.按照权利要求16的处理系统,其中用于采取行动的所述管理程序指令包括用于响应于接收到所述通知而向所述受影响的虚拟机通知所述相关联的物理存储区的不可用。19.按照权利要求16的处理系统,其中用于采取行动的所述管理程序指令包括用于关闭所述受影响的虚拟机的程序指令。20.按照权利要求16的处理系统,其中用于采取行动的所述管理程序指令包括用于下列的程序指令向另一个机器存储区填充与所述特定机器存储区的正确内容相同的内容;以及将所述特定机器存储区重新映射到所述其它机器存储区。21.一种计算机程序产品,包括信号承载媒体编码程序指令,用于在支持在多个虚拟机内的多个操作系统映像的执行的处理系统内执行,其中所述程序指令包括管理程序指令,用于管理所述虚拟机,并且所述管理程序指令包括用于下列的程序指令维护用于将在所述处理系统内的机器存储区映射到在每个虚拟机内使用的物理存储区的一个反向映射结构,所述反向映射结构包括对于使用每个虚拟机内的有效机器存储区和一个或多个相关联的物理存储区的、每个虚拟机的每个所述有效机器存储区的指示;确定特定机器存储区的可用性状态;读取所述反向映射结构以使用所述特定机器存储区和每个所述受影响的虚拟机的相关联的物理存储区来确定一个或多个受影响的虚拟机;以及对于所述一个或多个受影响的虚拟机的每个采取行动以防止所述特定机器存储区的不可用状态在所述处理系统内引起进一步的故障。22.按照权利要求21的计算机程序产品,其中所述物理存储区是物理存储器页面,而所述机器存储区是机器存储器页面。23.按照权利要求21的计算机程序产品,其中所述管理程序指令还包括用于接收在所述计算机程序产品内的所检测的机器存储器故障的指示的程序指令,其中用于确定的所述管理程序指令确定由于所述机器存储器故障导致所述特定机器存储区不可用。24.按照权利要求23的计算机程序产品,其中用于采取行动的所述管理程序指令包括用于向所述受影响的虚拟机通知所述机器存储器故障的程序指令,其中包括与所述通知相结合地为每个受影响的虚拟机提供相关联的物理存储区的指示。25.按照权利要求23的计算机程序产品,其中用于采取行动的所述管理程序指令包括用于关闭所述受影响的虚拟机的程序指令。26.按照权利要求21的计算机程序产品,其中所述管理程序指令用于接收通知所述特定机器存储区被置于节能状态中,其中用于确定的所述管理程序指令响应于所述通知的接收而确定所述特定机器存储区不可用。27.按照权利要求26的计算机程序产品,其中所述节能状态是高等待时间状态,由此,所述不可用是由于用于对所述特定机器存储区的访问的较长等待时间。28.按照权利要求26的计算机程序产品,其中用于采取行动的所述管理程序指令包括用于响应于接收到所述通知而向所述受影响的虚拟机通知所述相关联的物理存储区的不可用。29.按照权利要求26的计算机程序产品,其中用于采取行动的所述管理程序指令包括用于关闭所述受影响的虚拟机的程序指令。30.按照权利要求21的计算机程序产品,其中用于采取行动的所述管理程序指令包括用于下列的程序指令向另一个机器存储区填充与所述特定机器存储区的正确内容相同的内容;以及将所述特定机器存储区重新映射到所述其它机器存储区。全文摘要在支持多个虚拟机的处理系统中用于机器存储器功率和可用性管理的方法和系统提供了一种机制,用于在大型系统中支持存储器功率管理和存储器故障管理。在决定将存储器模块离线或将所述模块置于功率管理的增加的等待时间状态中,或者在通知存储器模块已经出故障或已经离线或已经被另一个功率管理控制机制提高了等待时间时,支持多个虚拟机的管理程序使用反向映射来查看每个虚拟机及其客户操作系统对于页面的使用。所述管理程序确定哪些虚拟机正在使用特定的机器存储器页面,并且可以将所述机器存储器页面重新映射到另一个可用的机器页面,或者可以经由一种故障或其它通知机制向所述虚拟机通知存储器页面已经变得或正在变得不可用。文档编号G06F9/455GK1629775SQ200410095319公开日2005年6月22日申请日期2004年11月19日优先权日2003年12月17日发明者弗里曼·L·罗森第三申请人:国际商业机器公司