首页> 中国专利> 一种适用于虚拟机动态迁移的内存状态迁移方法

一种适用于虚拟机动态迁移的内存状态迁移方法

摘要

本发明提供一种适用于虚拟机动态迁移的内存状态迁移方法,包括以下步骤:步骤1,以一个固定的时间间隔定期收集源主机中内存脏页历史数据,记录每个页面被改写的次数以及最近N次的观察状态值;步骤2,识别源主机的空闲内存页,向选定的目标主机发送迁移请求;步骤3,迭代拷贝;步骤4,停机拷贝阶段。本发明提供的内存状态迁移方法,拷贝效率高、总迁移时间短、停机时间短、迁移数据量小。

著录项

  • 公开/公告号CN104268003A

    专利类型发明专利

  • 公开/公告日2015-01-07

    原文格式PDF

  • 申请/专利权人 南京理工大学;

    申请/专利号CN201410523490.3

  • 申请日2014-09-30

  • 分类号G06F9/455(20060101);G06F9/50(20060101);

  • 代理机构32203 南京理工大学专利中心;

  • 代理人朱显国

  • 地址 210094 江苏省南京市玄武区孝陵卫200号

  • 入库时间 2023-12-17 03:57:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-11-14

    授权

    授权

  • 2015-02-04

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

    实质审查的生效

  • 2015-01-07

    公开

    公开

说明书

技术领域

本发明涉及虚拟机技术领域,尤其涉及适用于虚拟机动态迁移的内存状态迁 移方法。

背景技术

随着云计算和数据中心的发展,虚拟机(VM)动态迁移已成为今年来的研 究热点。VM动态迁移是一种可以再没有断开客户端或应用程序连接的情况下, 在不同的物理机器之间移动正在运行的VM的技术。因此,在负载均衡、在线 维护、主动容错等领域,VM动态迁移被用作管理集群个云平台的一个强大工具。

为了执行一台VM的动态迁移,VM运行状态时的物理内存、网络连接、 VCPU以及其他资源都必须从源主机迁移到目的主机,在迁移过程中,VM仍旧 保持运行。最复杂的问题就在于迁移物理内存,因为随着VM的运行,内存的 内容是动态的,它是影响迁移性能的主要因素。但是,在内存状态迁移方面,现 有的动态迁移方法存在以下问题:(1)判断脏页是否需要被发送到目的VM仅 仅依赖于上一轮和当前一轮迭代,造成不必要的重复传送;(2)迭代次数仅为三 次,三轮迭代的历史脏页数据对于准确判断页面类型依旧缺乏可靠性;(3)没有 对内存页面详细划分,导致不必要的内存页面传送。

发明内容

为解决现有技术存在的问题,本发明提供一种拷贝效率高、总迁移时间短、 停机时间短、迁移数据量小的适用于虚拟机动态迁移的内存状态迁移方法,包括 以下步骤:

步骤1,以一个固定的时间间隔定期收集源主机中内存脏页历史数据,记录 每个页面被改写的次数以及最近N次的观察状态值:

步骤1.1,定义存放内存页面状态信息的数据结构global_pfn_info,其中有 三个int类型的成员,分别是客户操作系统的物理页号pfn、页面类型type和被 改写的页面数量dirty_num;

步骤1.2,设置一个固定的时间间隔,从预迁移阶段开始每一个时间间隔收 集一次数据,并将被改写的页面数量存入数据结构global_pfn_info中,直到迭代 拷贝阶段结束;

步骤1.3,用int类型数组global_pfn_info.dirty_num记录每个页面被改写的 次数,用int类型数组nearest_n记录最近N次页面的观察状态值;

步骤1.4,收集内存页面历史数据进程,并将收集的数据存入步骤1.2和1.3 定义的数据结构中。

步骤2,识别源主机的空闲内存页,向选定的目标主机发送迁移请求:

步骤2.1,选定目标主机,向目标主机发送迁移请求,确保目标主机有足够 的磁盘空间、内存容量和资源容纳被迁移的VM,否则,迁移结束;

步骤2.2,识别迁移前源主机的空闲内存页,定义空闲内存页集合FS。

步骤3,迭代拷贝:

步骤3.1,定义源主机内存页的不同类型,包括空闲内存页、工作内存页, 工作内存页又包括冷页内存页和脏页内存页,脏页内存页包括热工作内存页和温 工作内存页;

步骤3.2,设定迭代拷贝终止条件,设定阈值Wdpr;

步骤3.3,第一轮迭代拷贝,发送除了空闲内存页的其他所有页面至目的主 机的VM;

步骤3.4,第二轮迭代拷贝,遍历每个内存页,执行工作集识别算法,区分 冷页内存页、热工作内存页、温工作内存页;

步骤3.5,剩余迭代期间,为每个温工作内存页页面的最近N次记录分配权 重,并按照权重大小降序排列并储存,计算每个页面的脏页率 若一个温工作内存页面的dpr超过设定的阈 值Wdpr,则步骤3.4结束;若dpr未超过设定的阈值Wdpr,则将该页面加入待 传送的缓冲区;当缓冲区放满之后,开始内存页的传送;

步骤3.6,重复步骤3.5直至迭代拷贝终止条件达成。

步骤4,停机拷贝阶段:

步骤4.1,传送剩余的内存页至目的主机,包括剩余迭代拷贝期间未被发送 的温工作内存页以及发送过后又被改写温工作内存页和全部热工作内存页;

步骤4.2,保存各种寄存器状态和共享内存信息,并发送给目的主机。

步骤4.3,目的主机向源主机发送内存已全部收到的信息,源主机确认后, 销毁虚拟机;

步骤4.4,虚拟机在目的主机上恢复运行,内存迁移全部完成。

本发明与现有技术相比具有显著优点:(1)本发明定期收集更多的历史脏页 信息,并且从预迁移阶段就开始收集而不是迭代拷贝阶段,更好的避免不必要的 重传;(2)使用基于消除空闲内存页的方法来确保仅迁移有用的页面,利用区分 空闲内存页算法来保证不必要的传送;(3)本发明为历史脏页点阵图中最近N 次脏页分配不同的权重,被改写的时间越接近于当前时间,其权重越大,利用了 空间局部性原理,页面被改动的时间约接近于当前时间,则在下一阶段时间该页 面被改写的可能性就越大。

下面结合附图对本发明作进一步详细描述。

附图说明

图1是VM动态迁移流程图;

图2是内存页分类示意图;

图3是收集脏页信息的守护进程流程图;

图4是区分空闲内存页流程图;

图5是区分只读内存页、热脏页、一般脏页的流程图;

图6是加权脏页率评估流程图;

具体实施方式

结合图1,阐述VM动态迁移的各个阶段及重要操作,包括以下步骤:

步骤1,内存页面历史数据收集,将收集到的信息存入定义的数据结构中, 具体过程如下:

步骤1.1,定义存放内存页面状态信息的数据结构。定义一个数据结构 global_pfn_info,有三个int类型的成员,分别是pfn、type和dirty_num。pfn表 示客户操作系统的物理页号;type表示下面四种类型之一,这四种类型是 PFINFO_FREE、PFINFO_RDO、PFINFO_HW以及PFINFO_WW,描述了每个 客户操作系统物理页面的状态,分别表示空闲内存页、只读内存页、高频率改写 页以及低频率改写页;dirty_num表示被改写页面的数量。

步骤1.2,确定收集时间跨度和时间间隔。从预迁移阶段就开始收集并将数 据存入特定的数据结构,直到迭代拷贝阶段结束。设置一个固定的时间间隔,定 期收集更多内存页面历史数据信息,时间间隔越小,就能获取越多的脏页信息, 系统开销也就越高。权衡数据大小和系统开销,根据经验将这个时间间隔设置为 80ms。

步骤1.3,定义存放页面被改写信息以及最近N次观察值的数据结构。N由 用户设定,取决于内存大小、对内存页操作的是否频繁等因素。N越大,占用内 存就越多,影响系统运行。使用两个int类型数组global_pfn_info.dirty_num和 nearest_n,global_pfn_info.dirty_num大小为P2M_SIZE(定义在Xen中,表示页 面总数),用来记录每个页面被改写的次数。nearest_n大小为N,记录最近N次 页面的观察状态值,1表示被改写,0表示未被改写。数组 global_pfn_info.dirty_num的信息可以从全局的角度确定该脏页是否是热脏页,数 组nearest_n的信息只能从局部的角度确定该脏页是否需要在这一轮迭代被发送 至目的主机。

步骤1.4,结合图3,执行收集内存页面历史数据进程,并将收集的数据存 入步骤1.2和1.3定义的数据结构中,具体过程如下:遍历所有内存页,针对每 个页面,调用函数xc_shadow_control()的日志模式把脏页位图拷贝到to_skip中, 该函数和to_skip都定义在Xen中,记录本次时间间隔中出现的脏页。如果收集 页面信息的次数n已经达到N次,意味着数组nearest_n已满,则移除存放在 neares_n数组中的第一个值,其余值全部左移一位,保证数组nearest_n记录的 是最近N次观察值。检测to_skip,若to_skip=1,表示在本次时间间隔中页面被 改写,则global_page_status[m].dirty_num增1,nearest_n[n]赋值为1,否则赋值 为0,若收集的次数n还未达到N,则n=n+1。利用Thread.sleep(SCAN_INTERVAL) 使得上述操作每隔80ms就执行一次,SCAN_INTERVAL即时间间隔。

步骤2,预迁移阶段,预定资源,识别空闲内存页。具体过程如下:

步骤2.1,选定目标主机,向目标主机发送迁移请求,确保目标主机有足够 的磁盘空间、内存容量和资源容纳被迁移的VM,否则,迁移结束。

步骤2.2,识别迁移前源主机的空闲内存页,定义空闲内存页集合FS。空闲 内存页识别过程为:Xen已经定义了一个数据结构page_info (/xen/include/asm-x86/mm.h)来记录页面框架信息,通过页面访问接口得到页 面框架的使用情况,page_info中的count_info是一个32位的整数,用作页框的 引用计数,源主机上的Xen判断迁移VM中的客户物理页面是否为空闲,若页 面n的count_info为0,则将global_page_status[n].type设置为PFINFO_FREE, 即将pfn_type(定义在/tools/libxc/xc_domain_save.c中的函数xc_domain_save()) 中的相关入口都标记为空闲。

定义集合FS表示迁移前源主机上永远不会被用到的主存区域,FS中的页面 不需要被传送。识别FS具体过程如下:被标记为空闲的页面不会被传送至目的 主机,目的主机上的Xen将它们复制到一个全零页,从而避免了不必要的传送。

步骤3,迭代拷贝过程。基本思想是将非空闲内存页分到3个不同的集合并 给它们分配不同的传输策略。具体过程如下:

步骤3.1,结合图2,定义内存页的不同类型。VMMS表示虚拟机配置的主 存储器大小,在运行时期这是一个恒定值,在典型的非过载情况下,实际使用的 内存大小要小得多。VMMS包括空闲集合FS和工作集合WS。WS表示迁移结 束之前,源主机上必须迁移到目的主机的主存区域。这个值可以近似等于客户操 作系统及其所有进程使用的主存大小,也可以近似等于为虚拟机配置的主存大 小,这依赖于虚拟机管理程序的特定迁移策略。进一步,WS又包括冷页集合 CWS和脏页集合DPS,CWS表示源主机上只读的主存区域,DPS表示源主机上 已通过页面拷贝和页面写入操作改变的但还没被发送到目的VM的主存区域。 再将DPS细分,DPS又分为热工作集合HWS和温工作集合WWS,HWS表示 迁移时改变特别频繁的主存区域,WWS表示迁移是发生改变但是没有HWS那 么频繁的主存区域。迭代拷贝阶段对CWS、HWS、WWS中的内存页面执行不 同的传输策略。

步骤3.2,设定迭代拷贝终止条件,设定阈值Wdpr。终止条件是迭代拷贝次 数达到预定数量或者工作集小到内存页面总数的5%-10%。

步骤3.3,第一轮迭代拷贝阶段,发送除了FS中的内存页的其他所有页面 至目的VM。CWS中的页面就是在这个时候被传送至目的VM的,并且仅被传 送这一次。拷贝过程进行期间VM依旧运行,因此,内存页会不断更新,这就 导致源VM和目的VM的相关内存页内容不一致。通过运行收集内存页面信息 的守护进程,并将这些信息保存到相关的对象global_pfn_info,为页面分类提供 依据。

步骤3.4,迭代拷贝阶段第二轮开始时,结合图5,执行工作集识别算法, 即区分该页是属于CWS、HWS还是WWS。定义参数Tdpr,表示一个脏页率阈 值,脏页根据其改写次数是否在这个阈值内区分该脏页属于HWS还是WWS。 工作集识别算法具体过程如下:遍历每个内存页,如果该页面不属于FS且 dirty_num为0,则该页面属于CWS,如果该页面的dirty_num超过设定的阈值 SCAN_NUM*Tdpr,则属于HWS,剩余页面都属于WWS。CWS的页面已在步骤3.2 被传送至目的VM,HWS中的页面被传送两次,第一次和CWS一样,即在第一 轮迭代拷贝期间被传送,第二次是在停机迁移阶段。

步骤3.5,剩余迭代期间,结合图6,执行一个基于最近N次页面信息的加 权脏页率评估算法,来决定是否将WWS的页面发送至目的VM。定义参数脏页 率dpr,表示在特定时间间隔内页面改写活动的频率,并且假设这个参数描述的 页面改写仅仅发生在DPS参数描述的主存区域,每页都有一个对应的脏页率。 评估算法具体过程如下:为页面的最近N次记录分配权重,权重存储在数组w[N] 中,并且逐渐减小,表示收集到的脏页信息的时间离当前时间越近,分配到的权 重就越大。每个页面都有一个dpr值,这个值等于w[i]为每个页面的权重。若页面的dpr超过设定的阈值Wdpr,则本轮迭代跳过该 页面不传送,若dpr未超过Wdpr,则将该页面加入待传送的缓冲区。使用加权脏 页率考虑了最近N轮迭代的脏页历史信息,可以更准确的避免页面的重复发送。 当缓冲区放满之后,开始温工作内存页内存页的传送。

步骤3.6,重复步骤3.5直至迭代拷贝阶段结束。

步骤4,停机拷贝阶段,具体过程如下:

步骤4.1,迭代拷贝终止条件被触发,这个条件可以是迭代拷贝次数达到预 定数量或者工作集小到内存页面总数的10%以内。进入停机拷贝阶段。停止虚拟 机的运行,包括停止各种I/O设备。

步骤4.2,传送剩余的内存页至目的主机。这里的剩余内存页包括WWS中 的部分页面以及HWS中的全部页面,WWS中的部分页面又包括在迭代拷贝期 间未被发送的页面以及发送过后又被改写的页面。

步骤4.3,保存各种寄存器状态和共享内存配置信息,并发送给目的主机。

步骤4.4,目的主机向源主机发送内存已全部收到的信息,源主机确认后, 销毁虚拟机。

步骤4.5,虚拟机在目的主机上恢复运行,内存迁移全部完成。在停机拷贝 阶段,VM是不可用的,所以这个阶段所用时间即为停机时间。停机时间是判断 预迁移方法优劣的重要指标,停机时间很大程度上取决于停机拷贝阶段需要发送 的脏页数量,因此,这需要迭代拷贝期间尽可能的减少脏页。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号