首页> 中国专利> 在动态迁移期间调控存储器相似性

在动态迁移期间调控存储器相似性

摘要

页扫描器可以被配置来在包括多个存储器页从源硬件资源到目标硬件资源的转移的虚拟机的动态迁移期间,识别多个存储器页中的候选存储器页以包括在转移中,同时虚拟机的至少一个操作持续执行。指纹比较器可以被配置来把候选存储器页的候选页指纹与使用第二硬件资源存储的已有存储器页的已有页指纹进行比较,并且还被配置来基于所述比较确定候选页的副本被包括在已有存储器页中。副本页处理器可以被配置来使用候选页的副本和第二硬件资源帮助虚拟机的持续执行。

著录项

  • 公开/公告号CN102043671A

    专利类型发明专利

  • 公开/公告日2011-05-04

    原文格式PDF

  • 申请/专利权人 SAP股份公司;

    申请/专利号CN201010518018.2

  • 申请日2010-10-25

  • 分类号G06F9/48;G06F9/455;

  • 代理机构北京市柳沈律师事务所;

  • 代理人邵亚丽

  • 地址 德国瓦尔多夫

  • 入库时间 2023-12-18 02:26:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-05-06

    授权

    授权

  • 2014-11-26

    著录事项变更 IPC(主分类):G06F9/48 变更前: 变更后: 申请日:20101025

    著录事项变更

  • 2012-12-05

    实质审查的生效 IPC(主分类):G06F9/48 申请日:20101025

    实质审查的生效

  • 2011-05-04

    公开

    公开

说明书

技术领域

本说明涉及虚拟机的动态迁移(live migration)。

背景技术

虚拟计算机或虚拟机通常是指一种软件结构,该软件结构被设计用来模仿和提供独立的、离散的和/或物理计算机(或其一部分)的功能。用于提供这样的虚拟机的技巧或技术可以称为虚拟化,并通常被用来为用户提供与使用实际计算机几乎没有区别的计算体验。

例如,虚拟化技术可以被用来创建利用一个或多个基础(underlying)硬件平台实现的一个或多个这样的虚拟机。例如,物理/硬件服务器可以配备有一定量的处理能力和存储器资源。虚拟化技术可以用来创建要由服务器计算机执行的虚拟机,其中该虚拟机可以被分配基础物理服务器的一些或全部可用处理能力和存储器资源。如所熟知的,且如上面所提到的,所得到的虚拟机可以像其自身是唯一和独立的物理计算设备一样进行操作。例如,虚拟机可以与其自身网络地址、操作系统和其他特性相关联,和/或执行其自身网络地址、操作系统和其他特性,这些自身网络地址、操作系统和其他特性在传统上被看作与实际物理计算机具有一对一的关系。

这样的虚拟机已知提供许多优点和好处。例如,这样的虚拟机可以提供一般在使用传统物理计算机时所没有的灵活的和方便的使用。例如,如上所述,虚拟机通常被分配基础物理硬件的一些或全部可用计算资源,例如,处理能力和存储器资源。因此,这样的用于特定虚拟机的资源分配可以根据需要而增加或减少,从而虚拟机的用户可以被提供与用户当前对能力的需求相匹配的量的计算能力。从而,根据用户的计算需求随时间的改变,虚拟机可以按对应方式改变,以便计算资源以最划算的方式提供给用户。

在虚拟化技术中,被称为监管器(hypervisor)的程序可以用来掌管或管理一个或多个虚拟机的特性和特征。即,虚拟机的基础物理硬件或一些其他计算资源可以被用来实现监管器,以便监管器的用户可以按希望的方式改变虚拟机的特性和特征。例如,这样的监管器的用户可以包括负责将一个或多个虚拟机提供给一个或多个客户或其他用户的网络管理员或其他管理员。在这种情况下,各种客户或其他用户可能会经历他们的计算需求的改变,从而管理员可以使用监管器来相应地增加、降低、或修改分配给每个客户或其他用户的每个虚拟机的计算资源。

这样的监管器的一个具体应用被称为虚拟机迁移,其中虚拟机从源硬件资源迁移或转移到目标硬件资源。例如,如上所述,可能出现,虚拟机用户经历他们的计算需求的临时或长期的增长。在这样的情况下,可能出现,虚拟机的基础硬件资源可能不足以满足所希望的分配给虚拟机的资源的增长。如所知,各种其他原因也可能促成这样的虚拟机从一个硬件资源平台到另一个硬件资源平台的迁移。例如,可能需要使当前的硬件资源平台脱机(offline),例如,为了维护或升级。在其他示例中,这样的迁移可能在虚拟机的提供者获得更适于执行该虚拟机的新的硬件资源时出现。

用于执行虚拟机迁移的一种技术是为了确保虚拟机的全部操作已经停止,然后将虚拟机从第一硬件资源平台复制或转移到第二硬件资源平台。但是,这种解决方案并不总是实用的或希望的。例如,虚拟机可能当前正被(多个)用户使用。具体来讲,可能出现这样的情况,即,虚拟机被部署给许多用户,例如,企业或其他组织中的用户。在这样的情况下,虚拟机基本上处于持续的使用,因此虚拟机的任何停止对用户来讲都代表着不希望的或不可接受的不便。在这样的情况下,虚拟机可以进行动态迁移(live migration),其中在迁移过程中虚拟机的使用持续,大体上不中断。

例如,如果虚拟机正在主动地将一个或多个应用提供给一个或多个用户,则虚拟机的监管器可以用来启动虚拟机从其当前/源硬件资源到目标硬件资源的动态迁移。监管器可以协调虚拟机的正在运行的应用和其他方面从源硬件资源到目标硬件资源的转移。在转移期间,应用的用户可能不知道所述应用和虚拟机正在被转移的过程中。例如,监管器可以保证源硬件资源持续提供与仍存储在其上的虚拟机的剩余部分相关联的功能,同时保证在目标硬件资源处的虚拟机已经转移的部分立即开始提供它们的相关功能。这样,在整个迁移过程中,虚拟机的使用可以在几乎不中断的基础上持续进行。

然而,在实践中,可能很难在动态迁移期间实现虚拟机的连续(或近乎连续)操作的目标。例如,虚拟机可能很大,例如,就存储器资源而言,并且/或者虚拟机可能被相对大量的用户频繁地访问。在这些以及在其他情形下,在不要求在迁移的某些部分期间虚拟机的不希望的或不可接受的程度的停止或不可用的情况下,很难执行虚拟机的动态迁移。

发明内容

根据一个一般方面,系统可以包括记录在计算机可读介质上的指令。系统可以包括页(page)扫描器,在包括多个存储器页从源硬件资源到目标硬件资源的转移的虚拟机的动态迁移期间,页扫描器被配置来识别多个存储器页的候选存储器页以包括在转移中,同时虚拟机的至少一个操作持续执行。系统可以包括指纹比较器,其被配置来比较候选存储器页的候选页指纹与使用第二硬件资源存储的已有存储器页的已有页指纹,并进一步被配置来基于所述比较确定候选页的副本(duplicate)被包括在已有存储器页中。系统可以包括副本页处理器,其配置来使用候选页的副本和第二硬件资源帮助虚拟机的持续执行。

根据另一个一般方面,计算机实施的方法可以包括执行包括多个存储器页的虚拟机从源硬件资源到目标硬件资源的动态迁移,动态迁移包括虚拟机从源硬件资源到目标硬件资源的转移,同时持续执行虚拟机的至少一个操作。计算机实施的方法可以包括:识别多个存储器页中的候选存储器页以包括在转移中;比较候选存储器页的候选页指纹与使用第二硬件资源存储的已有存储器页的候选页指纹;基于所述比较确定候选页的副本被包括在已有存储器页中;以及使用候选页的副本和第二硬件资源执行虚拟机。

根据另一个一般方面,计算机程序产品可以被有形地体现在计算机可读介质上,并且可以包括指令,所述指令被执行时被配置来:在包括多个存储器页从源硬件资源到目标硬件资源的转移的虚拟机的动态迁移期间,识别多个存储器页的候选存储器页以包括在转移中,同时虚拟机的至少一个操作持续执行;比较候选存储器页的候选页指纹与使用第二硬件资源存储的已有存储器页的已有页指纹;并基于所述比较确定候选页的副本被包括在已有存储器页中;以及使用候选页的副本和第二硬件资源帮助虚拟机的持续执行。

在附图和以下说明中阐述了一个或多个实施方式的细节。通过说明和附图,以及通过权利要求,其他特征将更加清楚。

附图说明

图1是用于执行虚拟机的动态迁移的系统100的框图。

图2是示出图1的系统的示例操作的流程图。

图3A和图3B是示出在执行图1的系统时使用的存储器页优先级方案的框图。

图4是示出图1的系统100的操作的流程图,其中动态迁移包括图3A到图3B的页优先级方案。

图5是示出图1的系统的存储器页转移算法的流程图。

图6是示出在动态迁移期间存储器页的接收的流程图。

图7是示出在图1的系统中使用的确认(acknowledgement)方案的流程图。

图8是示出使用图1的系统的最优化预复制(pre-copy)迁移技术的流程图。

图9是示出与图1的系统一起使用的最优化预复制迁移技术的流程图。

图10是示出与图9的最优化预复制技术一起使用的最优化页错误(fault)技术的流程图。

具体实施方式

图1是用于执行虚拟机102的动态迁移的系统100的框图。在图1的示例中,虚拟机102被示出为在源监管器106的监督(supervision)下执行应用104。如图所示,虚拟机102、应用104、以及源监管器106都可以使用基础源硬件资源108来执行。

在指定的或希望的时间点,可能出现动态迁移110,在此期间,虚拟机102被从源硬件资源108转移,以作为虚拟机112执行。如将被理解的,虚拟机112将本质上等同于(identical to)转移的虚拟机102,因此,例如,可以执行本质上等同于应用104的应用114。如图所示,目标监管器116以及虚拟机112可以使用目标硬件资源118来执行。

如上所述,在动态迁移110期间,希望在虚拟机102被转移以作为虚拟机112执行时,虚拟机102的任何用户应当在他们使用虚拟机时体验到很小的中断或体验不到中断。特别地,用户可能当前正在执行虚拟机102的应用104,其中应用104可以包括多个存储器页120。

关于这一点,应当理解的是,虚拟机102可以代表几乎任何虚拟机或其他适于进行动态迁移110的软件结构。同样的,应用104也可以代表几乎任何可以用虚拟机102执行的传统或已知的应用。在图1的示例中,应用104被示出为包括多个存储器页120或与多个存储器页120相关联,所述存储器页120因此也代表已知或传统的存储器页的使用和特性。因此,除了对于帮助理解图1的系统100的操作可能是需要的或有用的,虚拟机102、应用104、以及存储器页120在这里不作详细讨论。

特别的,可以理解,在应用104的操作期间,存储器页120可以被更新或者以不同的频率和/或以不同的程度进行改变。例如,应用104可以代表文字处理应用,因而存储器页120可以代表与文字处理应用相关联的各种文件(document)。在这种情况下,每当文字处理应用的用户更新或改变特定文件时,一个或多个相应的存储器页也可以被更新或改变。在另一个示例中,应用104可以代表客户关系管理(CRM)系统,其中企业寻求跟踪、调控(leverage)、或管理它们的客户数据。在这种情况下,存储器页120可以与相应的客户或客户账户相关联,从而对客户信息的更新可以导致对存储器页120的相应改变。

在一个更具体的示例中,如上所述,可能出现,虚拟机102被部署在企业设定中,或者在其中虚拟机102被希望或要求向例如相对较大的用户库(user base)提供相对大量的计算资源的另一设定中。例如,源硬件资源108可以代表给虚拟机102提供相对大量的处理能力和/或存储器资源的硬件资源的平台。

与虚拟机102本身一样,源硬件资源108一般可以被理解为代表传统的硬件资源,并且同样的,除了对于理解图1的系统100的操作可能是需要的或有帮助的,源硬件资源108也不在这里详细描述。一般,虽然如上所述,可以理解源硬件资源108可以代表相对大量的计算资源,它们中的一些或全部可以被指定或分配用于提供虚拟机102。在特定示例中,源硬件资源108可以包括存储器资源,而该存储器资源包括相对大量的随机存取存储器(RAM)。如应当理解的,这样的存储器资源(包括所提供的RAM)可以为分配给虚拟机102的存储器提供基础的硬件基础,包括用来存储和访问存储器页120的虚拟存储器(虚拟RAM)的量。

在这样以及其他的情形下,在使用应用104的正常过程期间可能出现,大量用户频繁地访问存储器页120。如所知,一般,源监管器106和/或目标监管器116可以协调动态迁移110,包括存储器页120的转移。

例如,监管器106、116可以个别地扫描存储器页120的个别存储器页,或者从存储器页120访问或请求个别存储器页,其示例在图1中示出为候选存储器页121和第二候选存储器页122。当然,应用104的这样的候选页的实际数量可以为例如数千或数百万。

对于每个候选存储器页,可以就是否以及如何将候选存储器页从应用104转移到应用114做出决定。在理想的情形下,动态迁移110将包括每个候选存储器页的顺序的转移,例如,以连贯的次序或在按选择的基础上,直到全部存储器页120都被转移到应用114为止。

然而,在实践中,应用104当前被使用的事实一般排除了这样的理想的或简单化的转移的可能性。特别的,例如,可能出现,动态迁移110初始包括候选存储器页121从应用104到应用114的转移,并且接着可以是第二候选存储器页122以及存储器页120的任何其他后续存储器页的检查以及最终转移。但是在这样的后续页的检查和转移期间,可能出现,候选存储器页121被例如应用104的用户更新或者改变。在这种情况下,则可能出现,被更新或者改变的候选存储器页121将必须从应用104重新转移到应用114。

当这样的存储器页在其作为动态迁移110的一部分的转移之后被改变、从而一般需要被改变的存储器页的重新转移时,则所改变的存储器页可以被称为“脏页”(dirty page)。在一些情况下,通过存储器页的更新或改变而弄脏这样的已经转移的存储器页并不代表执行动态迁移110的严重的困难。例如,能够执行第一扫描/转移迭代(iteration),其中存储器页120的每一个被从应用104转移到应用114。然后,可以执行第二扫描/转移迭代,其中在转移之后且在第一次转移迭代完成之前已经被弄脏或改变的任何存储器页120可以被扫描并最终重新转移到应用114。这样的转移迭代可以继续,理所当然地以存储器页120的剩余候选存储器页的越来越小的组继续,直到全部存储器页120都已经被转移为止。

这样的技术可能是可行的,例如,当存储器页120的总体数量相对较小时,和/或当对存储器页120的更新或改变相对不频繁时。在这样的情况下,在每个连贯的转移迭代期间要求重新传送的脏页的数量一般会变得越来越小,因此转移迭代之间的时间也会变得越来越小,从而存储器页在动态迁移110完成之前被弄脏的可能性越来越小。于是,不需要脏页的重新传送,并最终全部存储器页120可以成功地被转移。

但是,在实践中,这样的转移情形可能变得不实际或不可能。例如,如果存储器页120的数量和/或存储器页被弄脏的频率变得足够高,则可能变得很难或不可能在另外的存储器页被弄脏并要求重新传送之前完成动态迁移110。在这样的情况下,动态迁移可以通过强制停止虚拟机102的全部操作(包括应用104的使用)来完成,由此任何存储器页120的剩余、冻结的页的复制或其他转移可以被完成,从而这样的剩余页可以被一起转移到应用114,由此完成动态迁移110。

如上所述,在许多示例的动态迁移110期间,这样的虚拟机102的停止(有时称为“停止并复制”)通常是不希望的或不可接受的,特别是在停止冗长时。例如,如上所述,可能会有几十上百的虚拟机102的用户,因此任何虚拟机102的停止都会导致人力资源或利润的不可接受的损失。在其他示例中,虚拟机102可以用来执行对时间敏感的操作,包括其中要求虚拟机102的持续的和/或及时的可用性的操作。例如,这样的操作可以在其中病人必须接受持续的治疗的医院或其他临床环境中找到。

如可以理解的,随着虚拟机102的大小的增长,源硬件资源108(例如,RAM或其他存储器资源)的数量一般也会增长,并且用户数量和/或应用104的访问频率也会增加。这些以及其他因素因而促成了相对较高和较快速地弄脏存储器页120。从而,在不要求虚拟机的并非微不足道的停止的情况下,变得很难或不可能完成动态迁移110。而且,这样的停止对于虚拟机102的较大的实例可能特别长,例如,当大量存储器页120被以高速率弄脏时,这有力地阻止了动态迁移110期间它们的转移。

因此,为了在这些以及其他情形下执行动态迁移110,图1的系统100可以被配置来改善或最优化存储器页120被从应用104转移到应用114的过程。例如,图1的系统100可以被配置来提升(leverage)已经被目标硬件资源118存储的(例如,已经存储在虚拟机112上,或者本地存储或可用,如下面更加详细描述的)已有存储器页124的可用性。

更具体地,对于要被转移的特定候选页(如候选页121),图1的系统100可以被配置来确定已有存储器页124包括副本候选页126,其与要被转移的候选页(例如,候选页121)相同或本质上相同。然后,在动态迁移110的执行期间,系统100可以避免转移候选存储器页121的全部内容,而是可以转移代表或指代候选存储器页121的较少量的信息。然后,副本候选页126可以代替候选存储器页121由应用114使用。

这样,可以减少需要在动态迁移110中转移的数据量,从而动态迁移110可以以实质上较快的速率进行。因此,即使在存储器页120的弄脏速率很高时,和/或在存储器页120的数量很大时,系统100可以操作以执行动态迁移110而很少有或没有虚拟机102/112的停止。

在示例实施方式中,源监管器106可以包括迁移管理器128,其被配置来监督、管理、或执行动态迁移110。另外的或者可替代的,目标监管器116可以包括迁移管理器130,其可以执行或者帮助执行动态迁移110。换句话说,如下面更加详细描述的,源监管器106和目标监管器116的任一个或两者可以参与动态迁移110的有效执行。在其他示例实施方式中,第一监管器106和目标监管器116可以以变化的程度相互协调以执行动态迁移110。

在示例实施方式中,目标监管器116的迁移管理器130可以被配置来提供或利用关于已经或当前在目标硬件资源118可用的已有存储器页124的信息,如下面将更加详细描述的。又如下面将更加详细描述的,迁移管理器130可以使用用于提供或利用关于已有存储器页124的信息的多种技术中的一个或多个。

但是,一般可以理解,迁移管理器130使能对关于已有存储器页124的信息的调控,从而如果要被转移的存储器页120之一(例如,候选存储器页121或第二后续存储器页122)已经在目标硬件资源118具有实质的副本可用(例如,副本存储器页126),则可以实质降低或消除对于转移任何这样的复制的候选存储器页的内容的需求。取而代之,如这里所描述的,所识别的副本候选页(126)可以被复制、链接、或利用,以代替实际转移在存储器页120中所识别的候选页(121)的全部内容。这样,可以改善动态迁移110的总体速度和持续时间,同时需要更少的资源来转移存储器页120。

如上所述,在本领域中各种类型的虚拟机迁移被熟知和理解,可以理解传统的迁移管理器在本领域中也是熟知的。因此,除了对于理解系统100的操作以及相关操作可能是必须的内容以外,迁移管理器128、130的各种功能在这里不作详细描述。

例如,传统的迁移管理器可能被理解为包括用于执行存储器页(例如,存储器页120)的存储器转移的各种技术。关于这一点,这样的传统迁移管理器可以被理解为包括存储器转移管理器,存储器转移管理器被明确分派了执行这样的存储器页转移的任务。在图1的系统100中,存储器转移管理器132被示出为在源监管器106的迁移管理器128之内。类似地,存储器转移管理器134被示出为在目标监管器116的迁移管理器130之内。再次,除非对于理解系统100的功能是必须的,存储器转移管理器的各个传统方面在这里不必进行描述。

在示例操作中,当存储器页120处于初始状态时,动态迁移110可以在特定时间开始。各种预备动作可以被认为是开始动态迁移110的一部分,其示例将在下面参考图8和图9被更加详细的描述,随之可以开始存储器页120的转移。

例如,页扫描器136可以被配置来以顺序的次序开始扫描存储器页120,以识别可能被转移到目标虚拟机112的候选存储器页。在示例实施方式中,页扫描器136可以简单地连续地选择和扫描每个存储器页120。但是,如上所述,在各种环境和设定中,存储器页120的数量可能相对较大,从而,例如,存储器页120可以为数千或数百万。在这样的情况下,并且在其他情况下,页扫描器简单地依次扫描每个存储器页120可能是不切实际或者不希望的。

因此,在图1的示例中,优先级管理器138可以被配置来指定应当被页扫描器更早和/或更频繁地扫描的存储器页120中的页或存储器页的集合。优先级管理器138的示例实施方式在下面被更加详细的描述,例如,参考图3A和图3B。

但是,一般优先级管理器138可以被配置来将优先级分配或关联到存储器页120的每个页(或者页的集合或组)。例如,存储器页120的每个存储器页可以基于存储器页被弄脏或改变的频繁程度、或者被弄脏或改变了多久来分配优先级。即,优先级管理器138可以被配置来将没有频繁改变或最近没有改变的存储器页分配为具有较高的转移优先级,该转移作为动态迁移110的一部分。相反地,优先级管理器138可以被配置来将表示出频繁和/或最近发生改变的存储器页分配为具有较低优先级,用于动态迁移110中的立即转移(immediate transfer)。

因此,优先级管理器138帮助识别并利用这样的事实:转移可能在相对不久的将来被弄脏的存储器页益处非常小或者没有任何益处,因为这样的转移可能在所讨论的存储器页的随后的改变之后需要进行重复。换句话说,在动态迁移期间存储器页120的存储器页被应用104的用户访问和改变地越多,这样的存储器页将需要以其新的/改变后的状态进行重新转移的可能性越大,以便保持动态迁移110的完整和准确。

在传统系统中,脏页跟踪器可以用来确定给定存储器页自从其最近的转移之后是否已经被改变。这样,可以对于在随后的扫描/转移迭代期间是否需要重新转移做出决定。在示例实施方式中,如下面更加详细描述的,例如,参考图3A和图3B,优先级管理器138可以包括和/或使用这样的传统脏页跟踪器来分配转移优先级等级(priority level),所述分配转移优先级等级与基于例如相关联的存储器页是否在其最近的转移之后被弄脏来分配与存储器页120中的每个存储器页(或者存储器页的集合)相关联的“脏位”(dirty bit)的值相关联。

更具体地,如图3A和图3B所示并与之相关地详细解释的,这样的脏位被分配给位图数据结构中的每个存储器页,其中数据结构的等级与存储器页转移的不同的优先级等级相关联。如图1所示,这样的位图数据结构可以被存储在存储器转移管理器132的脏位数据140中。如下所述,并且将为本领域技术人员所清楚的,也可以使用其他技术来将优先级分配给存储器页120。因此,页扫描器136可以被配置来扫描可能在动态迁移110中转移的存储器页120的存储器页。如刚刚描述的示例中所述,页扫描器136可以在其特定转移/扫描迭代期间,基于分配给每个存储器页或存储器页的集合的优先级选择性地扫描存储器页120。

而且,如上所述,不管优先级(prioritization)如何分配给扫描过程(或者是否分配了任何优先级),存储器转移管理器132可以被配置来尝试确定是否需要转移当前正被扫描和被认为包括在动态迁移110中的特定候选存储器页的全部。更具体地,存储器转移管理器132可以寻求确定目标硬件资源118的已有存储器页124是否可以被调控或者被使用,以减少或消除对转移当前被考虑进行转移的候选存储器页的全部内容的需要。

例如,在图1的示例中,存储器转移管理器132可以被配置来比较候选存储器页121的“指纹”121f与已有存储器页124的已有页指纹(例如,已有页指纹170)。关于这一点,应当理解,术语“指纹”或“页指纹”一般是指存储器页的简短描述或标识,或者指代存储器页的简短描述或标识。即,存在已知技术用于通过捕获这样的指纹中的存储器页的一定特性或方面,来表现或识别存储器页。这样的页指纹技术本身一般是熟知的,因此不在这里更加详细的进行描述。而且,除了页指纹之外的其他技术也可以被用来识别或指代存储器页120和/或已有存储器页124,这对于本领域技术人员来说是清楚的。

然后,在示例操作中,页扫描器136可能基于其分配的优先级扫描存储器页120,并且可以识别可能在动态迁移110中转移的候选存储器页121。存储器转移管理器132的指纹生成器142可以被配置来生成所讨论的候选存储器页121的候选页指纹121f。

在示例实施方式中,如下面更加详细描述的,指纹生成器142的优先级检查器144可以被配置来基于所讨论的当前存储器页121的优先级,确定是否需要在当前生成候选存储器页121的指纹。又如下面更加详细描述的,一种用于表现候选存储器页指纹121f的技术可以依赖于布隆过滤器(bloom filter)146的使用,一般而言,布隆过滤器提供了以容易用来与已有存储器页124的指纹(例如,170)进行比较的压缩形式表现页指纹121f的能力。

更一般地,存储器转移管理器132的指纹比较器148可以被配置来接收由指纹生成器142提供的候选存储器页121的指纹121f,用于将其与已有存储器页124的指纹(例如,170)进行比较。如上面已经描述的,并且如下面更加详细描述的,存在许多技术用于给指纹比较器148提供已有存储器页124的指纹,并用于执行它们之间的比较。但是,一般应当理解的是,指纹比较器148被配置来比较所生成的候选存储器页121的指纹121f与虚拟机112的一些或全部已有存储器页124(或者它们的指纹)。

从而,指纹比较器148可以决定在候选存储器页121的指纹121f与已有存储器页124的已有页指纹(例如,170)的至少一个指纹之间是否存在匹配。如果存在这样的匹配(例如,由于存在副本候选页126),则页转移管理器150可以被配置来接收关于匹配的信息,并只转移候选存储器页121的指纹121f。然后,副本候选页126可以被复制、链接、指代或代替应用114中的候选存储器页121来使用。这样,页转移管理器150不要求作为动态迁移的一部分发送候选存储器页121的全部内容。

相反,也可能出现,指纹比较器148没有检测到在指纹生成器142所生成的指纹与已有存储器页124的指纹之间的匹配。例如,当页扫描器136到达第二候选存储器页122时,指纹生成器142可以因此生成指纹(未在图1中明确示出),然后指纹比较器148可以用其与已有存储器页124进行比较(即,可以与已有存储器页的指纹170进行比较),并且可以确定第二候选存储器页122与任何已有页指纹170都不匹配,并因此不将其副本包括在已有存储器页124中。因此,与候选存储器页121不同,页转移管理器150可以发送第二候选存储器页122的全部内容122c,作为动态迁移110的一部分。下面更加详细地提供了指纹生成器142、指纹比较器148、以及页转移管理器150的另外的示例。

存储器转移管理器132还可以包括确认(acknowledgement)管理器152,其一般可以被配置为使用一个或多个确认列表154,来跟踪或确认(confirm)动态迁移110的各个方面(例如,消息或其他转移)的成功或失败。例如,每次页转移管理器150传送存储器页或对存储器页的引用或存储器页的一部分时,确认管理器152可以使用等待确认列表跟踪这样的传送,并且可以在此后等待从目标监管器116的存储器管理器132接收相应的消息以确认接收。

一般,存在至少3种确认管理器152可以响应于页转移管理器150的各种传送而接收到(或未接收到)的不同类型的确认(或缺少确认)。例如,页转移管理器150可以转移存储器页的内容、或对存储器页的引用、或存储器页的一部分,并且确认管理器152可以相应地使确认列表154的等待列表递增。稍后,确认管理器152可以接收肯定(positive)确认,这表明从目标监管器116的存储器转移管理器134接收到了确认响应,并且取得了希望的结果。例如,如果页转移管理器150向存储器转移管理器134传送存储器页的内容、或对存储器页的参考、或存储器页的一部分,则肯定确认可以从存储器转移管理器134发送并被确认管理器152接收,确认列表154的等待列表的相应条目可以被指定为已经成功完成。换句话说,达到了确认的或肯定的结果,并且动态迁移110的这方面可以被认为已经成功地完成。相反,如果在取得希望结果的过程中,页转移管理器150的转移不成功,则否定(negative)确认可以由存储器转移管理器134发送并在确认管理器152接收到,作为否定的确认。

例如,可能出现,页转移管理器150可以基于指示在已有存储器页124中存在副本候选页126的信息,传送候选存储器页121的指纹121f。在这样的情况下,如果副本存储器页126实际存在,则副本存储器页126可以如这里所描述的那样被使用和调控,以避免发送所讨论的候选存储器页121的全部内容。在这样的情况下,确认管理器152将接收到肯定确认,从而确认列表154的等待列表的相应条目可以被标记为成功地完成。

相反,可能出现,页转移管理器150基于已有存储器页124中存在副本存储器页126的信息而传送指纹121f,于是可能出现,实际上这样的副本存储器页在已有存储器页124中不可用。在这种情况下,确认管理器152将接收到否定确认(即,说明希望的或预期的结果没有达到),于是这样的否定确认可能与其确认列表154的等待列表的相应条目相匹配,从而可以稍后采取适当的动作(例如,可以稍后转移所讨论的候选存储器页的全部内容)。

从上面讨论中可以理解,目标监管器116的存储器转移管理器134的各种元素和组件可以被配置来与源监管器106的存储器转移管理器132交互,从而例如为存储器转移管理器132提供所需的信息。例如,存储器转移管理器134可以包括页处理器(handler)156,其被配置来接收页转移管理器150的传送。例如,如可以被理解的,页转移管理器156可以接收例如所转移的存储器页的全部内容,或可以接收被认为对应于已有存储器页124中的副本存储器页的存储器页的指纹。

在这样的指纹被页处理器156接收的情况下,指纹比较器158可以被配置来比较所接收的页指纹与已有存储器页124的指纹,以确定所接收的指纹是否实际上对应于其副本存储器页的指纹。如上所述,指纹比较器158可以被配置来提供对于预期结果的检查或验证,例如,可以被用来验证所接收的存储器页120的存储器页的指纹实际上与其在已有存储器页124中的副本存储器页相关联。在其他示例中,如下面更加详细描述的,指纹比较器158可以另外地或者可替代地被用作在所转移的页指纹与已有存储器页124的指纹之间进行比较的根本点(primary point)。

在页处理器156从页转移管理器150接收到页指纹,并且指纹比较器158随后验证所接收的页指纹与已有存储器页124的相应副本存储器页相关联的情况下,则副本页处理器160可以被配置来调控或使用副本存储器页(例如,副本候选页126)。例如,为了在虚拟机112的应用114中适当地使用,副本页处理器160可以将副本候选页126复制到希望的存储器位置。在其他示例中,副本页处理器160可以实现对所识别的副本存储器页126的链接或其他引用,从而应用114可以在正常操作期间访问副本存储器页126。

在另一个示例中,如上所述,可能出现,目标硬件资源118和目标监管器116当前为不止一个虚拟机提供支持和/或平台。例如,如图所示,具有应用114’的第二虚拟机112’可以包括已有存储器页124’。在这种情况下,已有存储器页124’可以包括各种存储器页,这些存储器页也可以用作副本候选页的潜在的存储池(pool)或存储库,副本候选页可以被副本页处理器160调控或使用。

例如,基于内容的页共享(content based page sharing,CBPS)是一种已知技术,其中在相同基础硬件资源上运行的不同虚拟机的存储器页可以共享或相互访问副本存储器页,从而例如最优化基础硬件资源118的使用。例如,在目标硬件资源118的独立的操作中,可能出现,虚拟机112和虚拟机112’都得到目标硬件资源118和目标监管器116的支持。在这种情况下,可能出现,应用114或一些其他应用的存储器页可能与虚拟机112’的应用114’的相应存储器页相同。在这种情况下,基于内容的页共享可以被用来为应用114提供应用114’的相应存储器页的益处或使用。

以类似的方式,副本页处理器160可以实现基于内容的页共享或其他类似的技术,以便最优化如这里所描述的动态迁移110。即,副本页处理器160可以实现CBPS,以便在目标硬件资源118中的任何地方调控已有副本页,用于与当前被转移的虚拟机如虚拟机112一起使用。

如果页处理器156、指纹比较器158、和/或副本页处理器160的操作成功,则存储器转移管理器134的确认管理器162可以动作以提供相应的肯定确认给确认管理器152,从而如上所述,确认管理器152可以此后将肯定确认匹配到确认列表154的等待列表的相应条目。相反,如果出现困难或不成功的结果,则确认管理器162可以发送相应的否定确认给确认管理器152,用于等待列表的适当条目的相应匹配,以便可以此后对否定结果采取适当的响应。

当然,在出现一些困难的情况下(例如,页转移管理器150的传送被中断或从未在页处理器156处被接收到),则确认管理器162可能不能发送任何确认给确认管理器152。在这种情况下,等待列表的相应条目可能不被标为肯定或否定确认为动态迁移110的一部分。然后,如下面更加详细描述的,对这样的页转移管理器150的未确认的转移可以采取适当的动作(例如,重新发送未确认的页)。

如上所述,有许多技术,通过这些技术能够比较候选存储器页的指纹与已有存储器页124(或者已有存储器页124’)的指纹。关于这一点,存储器转移管理器134被示出为包括指纹生成器164,其可以被配置来为一些或全部已有存储器页124/124’生成已有页指纹。这样的已有页指纹可以存储在已有页指纹数据库166中,或者如下面更加详细描述的,如果需要,可以按要求生成。如上所述,一种用于生成或表现页指纹(这里,已有存储器页124/124’的指纹)的技术,布隆过滤器168可以被用来提供压缩的和容易匹配的版本的已有页指纹。

因此,至少一个或多个以下技术可以被用来生成、比较、或使用存储器页120和/或已有存储器页124/124’的指纹。当然,这样的技术仅仅是示例,并且其他技术也可以用在其他实施例中,如本领域技术人员应当清楚的。

例如,可能出现,指纹生成器164在特定时间点简单地生成已有页指纹170,用于存储在已有页指纹数据库166中和/或用于传送给指纹比较器148。在这样的示例实施例中,指纹比较器148可以接收已有页指纹170,用于与来自指纹生成器142的候选页指纹(例如,121f)进行比较,如上所述。

在一些实施例中,以这种方式生成已有页指纹170可能会不必要的消耗系统100的传送资源。因此,在示例实施例中,可能出现,提供并利用已有页指纹高速缓冲存储器172。例如,可能出现,指纹生成器164可以周期性地(或在请求时)生成代表已有存储器页124/124’的当前状态或状况的指纹的已有页指纹高速缓冲存储器172。然后,已有页指纹高速缓冲存储器172可以存储在存储器转移管理器134和/或存储器转移管理器132,从而由此可以立即可用于指纹比较器148。然后,每次从指纹生成器142接收到候选存储器页的页指纹时,指纹比较器148可以立即比较所接收的候选页指纹(例如,121f)与已有页指纹高速缓冲存储器172。

但是,应当理解在这样的示例实施例中,可能出现,已有页指纹高速缓冲存储器172的指纹会变得部分地或完全地过时,这取决于例如相对于已有存储器页124/124’的改变频率生成和/或传送已有页指纹高速缓冲存储器172的频率。即,例如,可能出现,在第一时间点指纹生成器164生成已有页指纹高速缓冲存储器172,而指纹比较器148此后比较来自指纹生成器142的页指纹与所接收的已有页指纹高速缓冲存储器172。但是,已有存储器页124/124’可能随着时间而改变(例如,可以被应用114和/或应用114’的用户改变)。在这种情况下,已有页指纹高速缓冲存储器172可能变得过时。结果,指纹比较器148可能确定肯定的匹配,而实际上在已有存储器页124/124’中实际不存在所讨论的候选存储器页的副本存储器页。

相反,可能出现,指纹比较器148得出结论,即在已有页指纹高速缓冲存储器172中不存在当前比较的候选页指纹的匹配,而实际上可能副本存储器页刚刚被存储在已有存储器页124/124’中(即,由于高速缓冲存储器172刚被创建或更新)。如上所述,并且如下面更加详细描述的,确认管理器152、162因此在跟踪这样的差异是否出现时是有用的,并且由此保证了动态迁移110的结果最终是成功和完整的。

如上所述,作为指纹生成器164可以提供页指纹用于与候选存储器页指纹进行比较的技术的最后的示例,指纹生成器164的布隆过滤器168可以生成已有页指纹布隆过滤器174,用于传送到指纹比较器148/存储在指纹比较器148。这样,如上所述,指纹比较器148可以比较布隆过滤器146(例如,对于候选页121或其指纹121f)与已有页指纹布隆过滤器174,以确定他们之间可能的匹配。

图2是示出图1的系统100的示例操作的流程图200。在图2的示例中,操作202-210以顺序的次序示出;但是,应当理解,这样的图示仅仅是为了举例,其他实施方式对本领域技术人员也是清楚的。例如,操作可以以与所图示的次序不同的次序来执行(除非在这里明确指出),或者,在其他示例中,操作可以以部分重叠的或并行的方式来执行。而且,而图2的示例操作202-210相比较,也可以包括另外的或可替代的操作。

在图2的示例中,可以执行包括多个存储器页的虚拟机从源硬件资源到目标硬件资源的动态迁移,该动态迁移包括虚拟机从源硬件资源到目标硬件资源的转移,同时持续执行虚拟机的至少一个操作(202)。例如,如上面对于图1详细描述的,虚拟机102可以作为来自源硬件资源108的动态迁移110的一部分被转移,用于作为虚拟机112在目标硬件资源118上执行。又如上面示出和描述的,虚拟机102/112可以包括多个存储器页120。而且,虚拟机102的操作,例如,与应用104相关联以及与存储器页120相关联的操作(例如,应用104/114中任意一个或全部两者的操作),可以在动态迁移110期间持续(至少部分地)。

可以识别要包括在转移中的多个存储器页的候选存储器页(204)。例如,页扫描器136可以执行一些或全部存储器页120的扫描操作,并且可以在扫描操作中识别候选存储器页121。又如上所述,优先级管理器138可以跟踪一些或全部存储器页120的优先级等级,并且可以据此指示页扫描器136执行包括授予存储器页120优先级(prioritizing)的页扫描操作。如上所述,这样的授予优先级可以基于存储器页120在虚拟机的持续操作(例如,应用104/114的操作)期间被弄脏或改变的频率或程度。

候选存储器页的候选页指纹可以与使用第二硬件资源存储的已有存储器页的已有页指纹进行比较(206)。例如,指纹生成器142可以根据由优先级管理器138/优先级检查器144确定的、与其相关联的优先级等级生成候选页指纹121f。同时,如上所述,可以获得已有页指纹,用于使用各种可用技术中的一个或多个将其与候选页指纹121f进行比较。例如,如上所述,与目标硬件资源118相关联的指纹生成器164可以被配置来生成在目标硬件资源118支持的一个或多个虚拟机112/112’中当前可用的已有存储器页124/124’的页指纹,如图1所示。在生成已有存储器页124/124’的页指纹之后,所得到的已有存储器页指纹可以被本地存储到目标硬件资源118,例如,存储在已有页指纹166中,或者,和/或可以被转移到源硬件资源108作为已有页指纹170(即,按照需要每次转移一个已有页指纹,或者成组地转移),或者存储在包括多个已有页指纹的已有页指纹高速缓冲存储器172中,或者在布隆过滤器174中被表现为压缩形式或版本的已有存储器页指纹。又如这里所描述的,已有存储器页指纹可以被生成/存储在目标硬件资源118或源硬件资源108中的一个或两者,或者以图1的示例中未明确示出的另一个位置生成/存储,或生成/存储在图1的示例中未明确示出的另一个位置,或以不同于布隆过滤器的压缩形式的压缩形式来表现。

不管如何获得候选页指纹121f和/或已有页指纹166/170/172/174,在源硬件资源108处的指纹比较器148可以用来确定候选页指纹121f是否包含在已有存储器页指纹170/172/174中。即,指纹比较器148可以被配置来确定候选页指纹121f与作为基础候选存储器页121的全部或部分的有效副本的已有存储器页124/124’中的存储器页(比如,副本候选页126/126’)相关联。

基于所述比较,可以确定候选页的副本包括在已有存储器页中(208)。例如,如刚刚描述的,指纹比较器148可以确定候选存储器页121的副本候选页126存在于已有存储器页124中。即,副本候选页在目标硬件资源118已经可用。因此,如上所述,不需要作为动态迁移110的一部分来转移候选存储器页121的全部内容。而是,如这里所描述并在图1中示出的,只需要发送候选页指纹121f,并且副本候选页126(或者副本候选页126’)可以在目标硬件资源118被调控或被使用,例如,在虚拟机112的上下文中被复制、引用、链接、共享、或被使用或利用。

因此,虚拟机可以使用候选页的副本和第二硬件资源来执行(210)。例如,虚拟机112可以在目标硬件资源118使用副本候选页126来执行。

对于图2的操作,应当理解,图1被示出为包括源监管器106和目标监管器116。但是,可能出现,可以使用单一的监管器和/或其他虚拟化管理或管控工具来监控或执行动态迁移110。在具体的示例中,在源监管器106处图示的组件可以全部或部分地包括在目标监管器116中或在目标监管器116中执行,或者相反地,目标监管器116的组件可以在源监管器106全部或部分地执行。因此,动态迁移110可以被理解为在源监管器106或目标监管器116中的任意一个主要或排他地执行,从而以上类似描述的各种操作可以在任意一个位置全部或部分地执行。

例如,如上面对于操作206所描述的,源监管器106的指纹比较器148可以用来比较候选页指纹121f与已有页指纹170/172/174。但是,如上所述,这样的指纹比较可以另外或可替代地使用目标监管器116的存储器转移管理器134的指纹比较器158来执行。例如,如这里所描述的,可能出现,候选页指纹121f由页转移管理器150转移,并由指纹比较器158将其与已有页指纹166进行比较。指纹比较器158可以在接收到候选页指纹121f时使用,从而验证候选存储器页121实际上被副本候选存储器页126有效复制,和/或推动副本页处理器160访问或使用副本候选页126(或126’)的操作。

图3A和图3B是在优先级管理器138、脏位数据140、页扫描器136、和优先级检查器144的示例实施方式中使用的数据结构的框图。在图3A的示例中,数据的行302包括多个脏位,其中每个位对应于存储器页120中的一页。因此,例如,脏位302中的一位可以对应于候选存储器页121,而脏位302的另一位可以对应于第二候选存储器页122。

同时,优先级数据结构304包括这样的数据结构,其中在数据结构304的每一列中再次代表或引用了各个页。如图所示,数据结构304的每一列对应于与位于该列上方的行302的对应脏位相同的存储器页。

如图所示,沿数据结构304垂直方向指示每个存储器页的优先级。例如,如上所述,被频繁弄脏的存储器页会被分配较低的优先级,从而这样的页会相对不频繁地作为动态迁移的一部分被转移。相反,没有在频繁基础上被弄脏的页会被分配较高的优先级,因而更可能在给定时间点被包括在动态迁移110中。

在示例操作中,页扫描器136可以从优先级管理器138获得页优先级等级306。然后,页扫描器136可以通过扫描对应于由页优先级等级306标识的优先级等级的数据结构304的行,来扫描图3A中所示的脏位数据140,如图所示。在该优先级等级,页扫描器136可以通过跟随脏位数据302而前进通过存储器页120,如页计数器308所示。在图3A的示例中,页优先级等级如图所示通过页优先级等级306选择,并且页如图所示通过页计数器308在扫描过程中的给定点被相应地识别。更具体地,如图所示,这样的页的优先级在页优先级等级306与脏位310相关联,如位312所示。

下面,例如,相对于图4-7的流程图详细示出和讨论了使用图3A和3B的示例的操作。但是,一般应当理解,这样的操作可以由存储器页扫描器136通过数据结构304的选择的优先级等级(行)的扫描而继续前进,因此,在该优先级等级(行)中,可以检查在该优先级等级的每个存储器页,以确定是否设置了相应的脏位。

换句话说,页扫描器136将通过每个优先级等级(行)扫描,以选择包含设置为值1的位的条目,并将跳过具有设置为0的值的条目。当选择设置为1的位值时,页扫描器136将确定相应的脏位是否也被设置为1或0。

如果脏位被设置为1,则页扫描器136确定存储器页120中的相应存储器页自从页扫描器136最近的扫描迭代或操作之后已经被改变。在这种情况下,如图3B的示例所示,所讨论的存储器页的优先级等级可以被递减,如所示,通过将数据位值1下降到图3B中的位条目314,相应地将数据值312从1设定到0。

可以理解,随着时间,被频繁弄脏或改变的页将经历与他们相关的优先级等级从高优先级等级到低优先级等级的逐渐和渐进的递减。相反,如果在给定优先级等级的页被页计数器检查,并被确定为具有设置为0的脏位,则页扫描器136可以确定相关存储器页自从在动态迁移110中最近发送其之后没有被改变,并且因此可以确定此时不需要重新发送该页。然后,相应的页优先级可以递增为更高的优先级等级。

图4是示出系统100的操作并使用图3A和图3B的数据结构的流程图400。在图4的示例中,首先确定使用数据结构304和脏位图(dirty bit map)302的给定操作是否已经完成(402)。如果是,则可能出现必要的或周期的指纹化(fingerprinting)(404)。例如,已有存储器页指纹166/172/174可以被生成。

但是,如果操作正在进行,则可以对所讨论的页是否被授权转移进行确定(406)(下面讨论授权(未授权)的标准)。如果页被认为授权转移,则该页的相应脏位可以被检查,以便确定所讨论的页是否构成了脏页(408),即,脏位是否被设置为值1。如上所述,如果脏位被设置为1,则相应的存储器页可能经历页转移算法(410),或其变型,如上面对于图1所描述的,并在图5的示例中更加详细示出的。一般,这样的页转移算法如所述是为了确定和调控所讨论的候选存储器页121的副本候选页126/126’的存在。但是,在另外或可替代的实施方式中,可能出现,图5的页转移算法全部或部分地不被执行。在这样的情况下,所讨论的候选存储器页121可以作为动态迁移110的一部分以整体形式直接转移(411)。例如,在流程图400的第一次迭代中,候选存储器页121可以被考虑,并且可以作为页转移算法的一部分被指纹化(410),或者可以被直接转移(411)。

在任一情况下,候选存储器页(例如,121)的脏位可以从1重置为0,由此指示候选存储器页121被认为自从其在动态迁移110中刚完成的最近的转移之后是干净的(clean)或没有改变的(412)。而且,候选存储器页121的页优先级等级(414)可以被递减,即,在选择器图数据结构304中的候选存储器121的值1可以从该优先级等级降低到紧接着的低优先级等级,如图3B的优先级位312和314的示例所示。

然后,页计数器308可以被重置(416),即,可以由页扫描器136移动到紧接其后的候选存储器页,例如,第二候选存储器页122。然后,流程图400的操作可以继续,例如,如果第二候选存储器页122被授权转移但不是脏页(406、408),则第二候选存储器页122的相应页优先级等级可以被递增(418),例如,对于第二候选存储器页122,设置为1的位值可以在图3A和图3B的优先级数据结构304的相应列的优先级等级中垂直地提升。

当这种递增出现时,或者,如图所示,如果存储器页没有被授权转移(其中给定页没有被授权转移的情形的示例在下面更加详细地提供,但是一般而言,可能出现,先前转移的存储器页还没有被确认为已经被接收到,或者已经接收到否定确认。在这样的情况下,这样的存储器页可能受到处于图4的正常操作流程之外的处理,如下所述),则操作前进到确定所讨论的存储器页是否是要转移的最后一页(420)。

然后,如果第二候选存储器页122不被认为是存储器页120的最后一页(420),则页计数器308可以被页扫描器136递增(422),并且流程图400的操作可以继续(402)。但是,如果第二候选存储器页122是最后一页(420),则可以确定优先级数据结构304的当前优先级等级是其最后一个等级(424),如果不是,则可以选择优先级数据结构304的下一个等级(426)。

相反,如果当前优先级等级是选择器图数据结构304的最后一个等级,则优先级等级可以被重置回到优先级数据结构304的原始优先级等级0(428)。在任一情况下,页计数器308可以继续到下一个或第三个存储器页(未在图1的示例中明确示出)。

操作因此可以继续,直到全部存储器页120都被考虑到为止。如上所述,此时,操作可以被认为临时或永久地完成。否则操作会以存储器页120的下一个选择的存储器页、以及在动态迁移110中的下一个页扫描操作继续。

图5是示出图1的系统100中执行页转移算法的示例操作的流程图500。在图5的示例中,如上所述,这样的页转移算法可以在图4的流程图400的操作410中执行。

因此,图5示出了图4中对于以下内容的确定,即,针对在给定优先级等级的给定页、相应的脏位是否被设定为值1并由此指示所讨论的候选存储器页需要以动态迁移110转移(408)。如果不是,如已经对于图4描述的,操作可以以所讨论的候选存储器页的优先级等级的适当递增来继续(例如,作为图5中更新页优先级等级的示例,其一般可以包括如在图4的操作414/418中所示的递增或递减页优先级等级)。否则,页转移算法可以如上面对于图1所描述的通过尝试调控副本候选存储器页126/126’在已有存储器页124/124’中的可能的存在来继续进行,从而避免发送所讨论的候选存储器页121/122的全部内容。

在图5的示例中,操作以确定所讨论的候选存储器页121是否被包含在由图1的确认管理器152管理的确认列表154的“不用指纹列表(don’tfingerprint list)”开始。这样的“不用指纹列表”的构造在下面对于图7更加详细的描述。但是,一般可以理解,例如,指纹比较器148可能使用用于执行这样的比较的一个或多个各种技术、最初确定候选存储器页121被包括或复制在已有存储器页124中,如这里所述。又如这里所描述的,这样的确定实际上可能是不准确的。例如,使用布隆过滤器146/174可能导致与由于使用布隆过滤器引入的罕见的和不规律的不确定或错误相关联的错误的肯定。在其他情况下,如果已有存储器页124/124’自从已有页指纹高速缓冲存储器172创建之后已经被更新,则已有页指纹高速缓冲存储器172的内容可能过时。

在这些以及其他示例中,指纹比较器148可以做出候选存储器页121(即,其副本126)包括在已有页指纹中的错误确定,以至于页转移管理器150随后错误地(在这个示例中)发送候选页指纹121,即,可能发送候选页指纹121f,而在实际上需要发送候选存储器页121的全部内容。在这样的情况下,如上所述,页处理器156将接收候选页指纹176,并且目标监管器116的指纹比较器158将确定实际上在已有存储器页124/124’中没有适当的副本候选页存在,并且可以因此指示确认管理器152发送消息,确认接收到了候选页指纹176,但是指示实际上在已有存储器页124/124’中不存在其匹配。在这样的情况下,系统100可以将候选存储器页121添加到“不用指纹列表”,因而在将来不会发送该候选存储器页121的页指纹,而是可以只发送该候选存储器页121的全部内容,以便保证这样的内容作为动态迁移110的一部分被接收到。如果候选存储器页在不用指纹列表中,例如,在确认列表154的否定确认列表中,则系统100可以以发送候选存储器页121的全部页信息和内容来继续进行(512)。

否则,如果该页不在“不用指纹列表”中,则可以生成候选存储器页121的页指纹121f(504)。例如,指纹生成器142可以生成候选页指纹121f和/或可以使用布隆过滤器146生成其任何表现形式,如上所述。

如果这样生成的候选页指纹121f被确定在与目标硬件资源118相关联的已有页存储器指纹170/172/174中(506),如这里所描述的,由指纹比较器148确定,(或者由和/或由指纹比较器158确定),则可以确定不必发送全部页信息页内容,而是页转移管理器150可以只发送关于候选存储器页121-定页信息和相关联的候选页指纹121f(508)。

在这种情况下,已经发送候选页指纹121f的确认管理器152可以将对其的引用添加到确认列表154中,即,可以添加到确认列表154的等待列表中。然后,如刚刚描述的,稍后将接收到关于接收到候选页指纹121f的肯定或否定的确认。如果收到肯定的确认,则可以从确认列表154中去除对候选存储器页指纹121f的引用,反之,如已经描述的,如果没有接收到这样的肯定确认,则该页可以被列在“不用指纹列表”中,并稍后将只发送包括其内容的全部。

此时,所讨论的存储器页的脏位可以从1重置为0,如上面对于操作412所描述的,并且页优先级可以被更新(即,这里,被递减),如对于操作414所描述的。

图6是示出在动态迁移110期间在目标硬件资源118的示例操作的流程图600。例如,图6的流程图600示出了这样的示例操作,其中存储器页或其页指纹作为动态迁移110的一部分被接收到,诸如,候选页指纹121f和/或第二候选页内容122c。

在图6的示例中,这样的页数据作为动态迁移110的一部分从例如源监管器106接收(602)。例如,目标硬件资源118的存储器转移管理器134的页处理器156可以接收候选页指纹121f或第二候选页内容122c。

在随后操作中,可以对所接收的页数据是否包含标识正在被转移的页的实际页内容或页指纹做出确定(604)。例如,页处理器156可以对于候选页指纹121f确定实际上已经从页转移管理器150接收到页指纹,并且可以对于第二候选页内容122c来确定转移页的全部内容已经接收到。

在接收到页指纹的前一情况下,在目标硬件资源118搜索对应于页指纹的副本页(606)。例如,指纹比较器158可以接收候选页指纹121f,并且可以由此确定对应于候选存储器页121的副本候选页126和/或126’存在于目标硬件资源118。

在这样的情况下,可以确定已经找到相应的副本页(608),在这种情况下,实际页内容可以从已有存储器页复制到虚拟机112中的适当存储器页段(slot)。例如,副本页处理器160可以利用来自虚拟机112的已有存储器页124中的副本候选页126。在其他示例中,如上所述,副本页处理器160可以实施基于内容的页共享(CBPS)技术,其中来自目标硬件资源118的已经存在的虚拟机112’的副本候选页126’被用来(例如,被复制和/或被引用)在应用114中使用。

随后,包括识别和确认适当的副本候选页被识别和利用的确认被递送到源硬件资源108,例如,源监管器106(614)。例如,确认管理器162可以发送确认给确认管理器152,指示关于所接收的候选页指纹121f的完成和相应的副本候选页126的使用的肯定的确认。随后,确认管理器152可以去除当副本页指纹121f最初由页转移管理器150转移时存储在确认列表154中的相应的等待确认。此时,用于候选页指纹121f的页数据接收操作可以完成(618)。

另一方面,当候选页指纹121f已经被接收时(606),可能出现,在可用的已有存储器页124/124’中没有找到对应的副本候选页(608)。在这种情况下,可以发送指示没有找到希望的副本候选页的否定确认(610)。例如,确认管理器162可以发送这样的否定确认给确认管理器162,因此确认管理器162可能不能从确认列表154的等待列表中去除候选页指纹121f,和/或可以如上面对于图5所描述的,并且如下面对于图7更加详细描述的,将候选存储器页121的标识包括在“不用指纹”列表中(502)。一般,如这里所述,发送标识所接收的页指纹没有与相应的副本页相关的否定确认的操作将保证所讨论的存储器页被最终以其全部被转移到目标硬件资源118,以便保证其转移。

而且,在所接收的页数据包括页内容的情况下(604),比如,当页处理器156接收到第二候选页内容122c时,则例如由页处理器156简单地将所接收的页内容从其复制到虚拟机112的适当的相应的存储器段(616)。在这样的情况下,如图所示,对于所讨论的存储器页的接收操作可以完成(618)。

图7是示出部分地补充了刚刚如上所述的图6的操作的图1的系统100的操作的流程图700,例如,其示出了由存储器转移管理器132的确认管理器152执行的确认过程。

即,如上所述,对于例如图6,确认管理器152周期性地从目标监管器116接收确认(702)。如果确认不是肯定的(704),例如,是否定的,则确认管理器152可以将对所讨论的存储器页的引用添加到“不用指纹列表”(706)。换句话说,确认管理器152可以从否定确认中推断出,先前由页转移管理器150发送的页数据没有在目标监管器116被充分地或适当地利用,例如,当存储器转移管理器134不能将候选页指纹121f匹配到目标硬件资源118处的希望的副本候选页时。在这种情况下,如上所述,存储器转移管理器132可以尝试通过随后在动态迁移110中发送所讨论的候选存储器页121的全部页内容,来确保其最终作为动态迁移110的一部分被适当地接收到。而且,所讨论的存储器页例如候选存储器页121的相应脏位可以被设置为真或值1,以便指示所讨论的存储器页将需要在动态迁移110中被重新发送(即,出现)。

随后,对所讨论的存储器页的引用可以从确认列表154的等待列表中去除,因为确认管理器152实际上的确接收到指示在页分析器156接收到候选页指纹121f的(否定)确认。类似地,如果收到的确认是肯定的(704),则对所讨论的存储器页的引用也可以从确认列表154的等待列表中去除,从而图7的流程图700的确认操作可以完成(712)。

如上所述,存在用于已有系统实现虚拟机的动态迁移的各种传统技术。例如,如上所述,可以使用预复制技术,其中,一般而言,存储器页120被复制或提供给目标硬件资源118,同时应用104持续在虚拟机102上执行。在其他已知技术中,比如后复制技术,在存储器页120的转移开始或完成之前,(转移的)虚拟机112同应用114一起开始执行,然后存储器页120随后在按需基础上被转移到虚拟机112。

相对于图8示出了预复制技术的示例操作,而图9示出了后复制技术的示例操作(其中图10示出了关于图9的示例操作的另外的细节)。但是,应当理解,图8和图9的技术是非限定性的,并且仅仅是为了示例的目的,而且其他技术也可以使用。例如,希望的预复制和后复制技术的混合可以用来执行动态迁移110。例如,最初使用预复制技术,如图8中所示。然后,基于数据结构304中页的重新分配(repartition)和优先级改变,可能确定一些页被不断地以比复制/转移更快的速度被弄脏。在这种情况下,操作可以继续到停止并复制(stop-and-copy)阶段(例如,812,下面),和/或可以全部切换到后复制技术(例如,图9)。

在图8的示例中,预复制技术可以以预迁移操作开始(802),其中,例如,源监管器106向目标监管器116指示希望进行动态迁移,并且将迫切地开始。随后,在目标监管器116可以开始保留操作(804)。例如,目标监管器116可以保留适当数量的目标硬件资源118(例如,适当数量的处理和存储器资源)。

如上所述,可以使用各种技术中的一个或多个来获得已有页指纹(806),这些技术中的一些已经在上面进行了详细的介绍。例如,如上所述,指纹生成器164可以在按需的基础上生成已有页指纹170,或者可以生成已有页指纹高速缓冲存储器172,或者可以使用布隆过滤器168生成已有页指纹布隆过滤器174。使用这些技术中的一个或多个,或使用其他技术,源监管器106,例如,指纹比较器148,可以获得已有页指纹(808)。

此时,存储器转移管理器132可以分别地使用例如至少图2-5的流程图200-500的操作来执行迭代的和最优化的预复制技术。例如,如上所述,可以使用各种优先级化方案来识别用于在源监管器106进行扫描和/或指纹化的适当的存储器页,从而所描述的页转移算法可以用来转移存储器页120或其页指纹。

理想地,这样的预复制技术将足以转移全部存储器页120。但是在实践中,可能出现,对于大量的存储器页120和/或对于其频繁地被弄脏,(例如,大量和/或频繁地使用应用104),很难或不可能在存储器页120中的至少一些被再次弄脏或被改变之前转移全部存储器页120。在这样的情况下,可能变得需要或希望停止虚拟机102的操作,例如,停止应用104的操作,以便使得剩余的存储器页120不能再被弄脏或改变。在这种情况下,可以进行任何剩余的存储器页到目标硬件资源118的大量复制(812)。

作为这样的操作的一部分,或者其随后的一部分,存储器转移管理器132可以使用由确认管理器152保持在确认列表154中的信息,来确定被指纹化用于在动态迁移110中的转移、但是没有被肯定地确认为已经被接收到或者在目标硬件资源118可用的存储器页(814)。例如,这样的操作(814)可以是指在确认列表154的等待列表中被跟踪、但是实际上从未被肯定地确认为已经被例如在目标硬件资源118的确认管理器162接收到的存储器页,因此操作(814)可以被认为是代表对于任何这样的存储器页的清除操作,其中重新发送这样的存储器页以便能够确保它们包括在动态迁移110中。随后,可以执行提交操作(816),其中虚拟机102的处理器和存储器的实际状态被捕获并转移到目标硬件资源118,因此虚拟机102可以作为虚拟机112被重新激活(818),用于由其应用104/114和其他应用的用户对其继续使用。

图9是后复制技术的示例,其中,如上面对于图8所描述的,可以初始执行类似的预迁移(902)和保留(904)操作。随后,存储器页120或其子集可以被指纹生成器142考虑,用于生成其相应的页指纹。类似地,也可以生成在目标硬件资源118的已有页指纹或其子集(908)。如上所述,在这样的后复制技术期间,目标硬件资源118可以使用应用114的可用的已有存储器页124(如果有当前可用的已有存储器页124,或者达到这样的已有存储器页当前可用的程度)来开始执行虚拟机112。

在这种情况下,由于没有转移全部存储器页120,因此最终会出现虚拟机112,例如,应用114,可能尝试访问没有从存储器页120转移的特定存储器页,这可以成为页错误。在这种情况下,对于所讨论的页,相应的希望的页指纹可以被识别并生成,并发送给源监管器106的存储器转移管理器132。下面对于图10更加详细地描述这样的本地页指纹的使用,但是一般应当理解,本地页指纹可以用于确定是否需要从源硬件资源108转移相应的存储器页,或者相应的副本页在目标硬件资源118是否可用。当已经了发送本地页指纹(910)时,则可以执行提交(912)和重新激活(914)操作,类似上面对于图8所描述的。

此时,可以基于至少上面图2-5的页优先级化和转移技术使用最优化的后复制技术(916),其中,每当页错误出现时并且由此表示希望的存储器页在虚拟机112不可用。然后,相应的存储器页可以从目标硬件资源118访问,或由目标硬件资源118使用。后复制操作(916)可以迭代地继续,直到存储器页120的全部希望的或需要的存储器页都被转移或获得为止,因此存储器转移可以被认为完成(918)。

如上所述,图10示出了图9的页错误操作的示例操作。更具体地,当确定页错误时(1002),可以确定在所讨论的页指纹与在目标硬件资源118的已有页指纹之间是否存在匹配(1004)。如果没有匹配,则可以从源监管器106转移所讨论的存储器页(1006)。另一方面,如果存在匹配,则可以在当前活动并运行的虚拟机112利用相应的副本候选页(1008)。例如,如上所述,所识别的副本候选页可以被复制或使用基于内容的页共享来访问。在任一情况下,图10的页错误操作可以完成(1010),除非并且直到随后的页错误出现。

可以实现各种另外的或可替代的实施例。例如,当执行图3A、图3B和图4的页优先级方案时,以上描述了传统脏页跟踪操作可以被调控,例如,可以在传统脏页跟踪操作期间插入页优先级方案。在其他示例中,页优先级方案可以被插入在用于要被转移的脏页的迭代的预复制存储器扫描期间。在页优先级方案中,可以在所述方案中迅速地检查脏位和/或优先级等级,例如,使用简单的异或(XOR)操作。其他技术也可以被使用。

而且,对数据结构304的结构可以进行各种修改,例如,以减少其内存印记(memory footprint)。例如,通过改变优先级等级的数目可以改变结构304的深度。而且,通过基于对特定等级的设置的位的阈值等级繁衍或删除优先级等级,可以使数据结构成为动态的。在其他示例中,数据结构304的宽度可以被改变。例如,单一位可以代表页的集簇或集合(例如,1位等效于4页)。在最后的示例中,可以使用例如分层的计数布隆过滤器结构来取代分层的位图结构304。

在预复制阶段的初始迭代期间,或者在之后的某点,数据结构304可以以随机位设定分布来编排(seeded)或更新。另外,或可替代地,页优先级指纹化次序可以被随机地预编排。这样(或通过类似的技术),可以加速数据结构304的迭代学习过程。在可能的相关实施方式中,可以对是否以及如何执行存储器页120的候选存储器页的指纹化做出智能的决定。即,例如,如果给定页在不久的将来很可能会被弄脏,则优先级检查器144可以服从承认对该页的指纹化没什么用处,因此只对较高优先级的页进行指纹化。

这里描述的各种技术的实施方式可以以数字电路的方式实现,或者以计算机硬件、固件、软件、或它们的组合来实现。实施方式可以实现为计算机程序产品,即,有形地体现在信息载体中的计算机程序,例如在机器可读存储设备中或者在传播的信号中,以供数据处理装置执行,或者控制数据处理装置的操作,数据处理装置例如可编程处理器、计算机、多个计算机。计算机程序,如上面描述的计算机程序,可以以任何形式的编程语言编写,包括汇编或解释语言,并且可以以任何形式进行布置,包括作为独立的程序或者作为模块、组件、子例程或其他适于在计算环境中使用的单元。计算机程序可以布置以便在一个计算机上或在位于一个地点或在多个地点分布并由通信网络相互连接的多个计算机上执行。

方法步骤可以由一个或多个可编程处理器执行,可编程处理器执行计算机程序,以便通过对输入数据进行操作并产生输出来执行功能。方法步骤还可以由专用逻辑电路执行,以及装置可以被实现为专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

作为示例,适于执行计算机程序的处理器包括全部通用和专用微处理器,以及任何类型的数字计算机的任意一个或多个处理器。一般,处理器将从只读存储器或随机访问存储器、或者从两者接收指令和数据。计算机的元件可以包括至少一个用于执行指令的处理器,和用于储存指令和数据的一个或多个存储器设备。一般,计算机还可以包括,或者可操作地耦接,以从一个或多个用于存储数据的海量储存设备接收数据,或把数据传送到海量储存设备,或者二者皆有,海量储存设备例如磁盘、磁光盘或光盘。适于体现计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,作为示例,包括半导体存储器器件,例如EPROM、EEPROM和闪存设备;磁盘,例如内置硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以用专用逻辑电路补充,或者结合到专用逻辑电路中。

为了提供与用户的交互,实施方式可以在具有显示设备和键盘以及指示设备(pointing device)的计算机上实现,显示设备例如阴极射线管(CRT)或液晶显示器(LCD)监视器,用于向用户显示信息,键盘和指示设备例如鼠标或跟踪球,用户可以利用它们将输入提供给计算机。其他种类的设备也可以被用来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且,来自用户的输入可以以任何形式接收,包括声音、语音或触觉输入。

实施方式可以在包括后端组件或包括中间件组件或包括前端组件的计算系统中实现,或者在这样的后端、中间件、前端组件的任意组合中实现,后端组件例如数据服务器,中间件组件例如应用服务器,前端组件例如具有图形用户接口或Web浏览器的客户端计算机,用户可以通过图形用户界面或Web浏览器与实施方式进行交互。组件可以通过任何形式或介质的数字数据通信相互连接,例如,通信网络。通信网络的示例包括局域网(LAN)和广域网(WAN),例如,因特网。

虽然已经如这里所描述地说明了所描述的实施方式的某些特征,但是本领域技术人员现在会想到许多修改、替换,变化或等效物。因此,应当理解,所附权利要求是为了覆盖落入实施例的范围内的全部这样的修改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号