一种保障虚拟机在线迁移服务质量的方法与流程

文档序号:13094628阅读:317来源:国知局
一种保障虚拟机在线迁移服务质量的方法与流程

本发明涉及一种保障虚拟机在线迁移服务质量的方法。



背景技术:

虚拟化技术(virtualization)将物理资源划分为细粒度的虚拟资源,实现系统多用户资源的隔离运行,减少共享软件间冲突,有效解决了资源的共享使用问题,支撑了云计算平台的资源聚合、负载均衡、节能、可扩展等特性,已经成为现代云计算平台的核心技术。

虚拟化技术的一个关键特性是在物理节点之间进行虚拟机迁移。虚拟机迁移技术将虚拟机系统运行时的状态从一台物理节点传送到另一台物理节点,并在目标物理节点上继续运行。虚拟机迁移技术又可以分为停机迁移(offlinemigration)和在线迁移(livemigration)。停机迁移是指在迁移过程中,虚拟机需要停机或者被挂起不再对外提供服务。在线迁移是指在迁移过程中,虚拟机对外持续可用。在线迁移技术由于在迁移过程中用户仍然能够访问虚拟机内运行的服务而受到格外的关注,也使得虚拟化集群的自动化运营成为可能。

对虚拟机进行在线迁移时,源节点上虚拟机继续执行,迁移程序扫描该虚拟机的内存页面,并评估将该虚拟机当前阶段产生的所有脏页(dirtypage,即写入过数据的页面)传输到目标节点的时间t。由于在评估和传输脏页的过程中虚拟机还在继续执行,因此也会继续产生脏页,所以这一过程是一个迭代的过程,直到评估得出的时间t小于某个阈值threshold(在该阈值内暂停后恢复虚拟机不会影响虚拟机对外提供的服务,例如100ms以内的tcp/ip连接暂停并不会影响上层软件),就将虚拟机挂起,然后将该阶段产生的脏页和虚拟机进程上下文一起传输到目标节点上并恢复虚拟机进程的运行。

从虚拟机进行在线迁移的过程来看,在源节点上需要启动一个进程协助扫描并传输虚拟机的脏页,在目标节点上需要启动一个进程接受脏页。这些进程分别与源节点和目标节点上运行的虚拟机共享片上的最后一级缓存资源(lastlevelcache,llc),因此会受到源节点和目标节点上运行的其他的虚拟机或进程的干扰,导致服务质量不稳定。所以,通过控制并保证迁移过程中源节点和目标节点上迁移进程的最后一级缓存llc的使用情况,可以控制并保障虚拟机迁移过程中源节点和目标节点的服务质量。



技术实现要素:

本发明的目的是提出一种保障虚拟机在线迁移服务质量的方法,该方法在迁移过程中,将源节点和目标节点上共享的片上缓存资源进行分区,使得迁移进程和节点上的其他进程使用不同的缓存分区,从而避免迁移过程中源节点和目标节点的其他进程干扰迁移进程,保障虚拟机在线迁移过程中源节点和目标节点的服务质量。

为了实现上述目的,本发明采用如下技术方案:

一种保障虚拟机在线迁移服务质量的方法,包括如下步骤:

步骤(1):开始,在虚拟机在线迁移之前,首先判断源节点以及目标节点上各自的最后一级缓存资源llc是否已经进行分区,若是则进入步骤(3),若否则进入步骤(2);

步骤(2):分区:

a、对源节点上的最后一级缓存资源llc进行分区:建立z1分区,z1分区供辅助迁移进程和即将迁移的虚拟机使用;源节点上的最后一级缓存资源llc的剩余部分建立其他分区,所述其他分区供源节点上的其他虚拟机和进程使用;

b、对目标节点上的最后一级缓存资源llc进行分区:建立z2分区,z2分区供接收进程和迁移后的虚拟机使用;目标节点上的最后一级缓存资源llc的剩余部分建立其他分区,所述其他分区供目标节点上的其他虚拟机和进程使用;

步骤(3):源节点启动扫描进程和辅助迁移进程,目的节点启动接收进程:假设开始时间是t1时刻,首先启动扫描进程,扫描进程在源节点的内存中扫描需要迁移的虚拟机的内存页面,并将在虚拟机运行过程中已经被修改过的内存页面dirtypage形成一个脏页集合wt1,随后辅助迁移进程将脏页集合wt1通过连接源节点和目标节点的网络发送到目标节点,由目标节点上的接收进程进行接收,假设完成时间是t2时刻,然后进入步骤(4);

步骤(4):再次启动扫描进程得到t1到t2时间段内虚拟机新产生的脏页集合wt2;根据t1到t2时间内传输的脏页集合wt1容量计算出网速,进而计算出将wt2传输到目标节点所需要的时间δt;

判断所需要的时间δt是否在设定阈值tthreshold内,如果是,则进入步骤(5),否则将wt2传输到目标节点,并重复步骤(4);

步骤(5):在源节点上将需要迁移的虚拟机挂起,将脏页集合wt2以及虚拟机挂起后保存的进程上下文c传输到目标节点;目标节点上的接收进程接收完数据后,从进程上下文c恢复虚拟机的执行,至此虚拟机在线迁移成功。

所述步骤(2)的z1分区的存储容量为源节点上的最后一级缓存资源llc容量除以共享源节点上的最后一级缓存资源llc的处理器核数;

所述步骤(2)的z2分区的存储容量为目标节点上的最后一级缓存资源llc容量除以共享目标节点上的最后一级缓存资源llc的处理器核数;

所述步骤(3)在辅助迁移进程将脏页集合wt1通过连接源节点和目标节点的网络发送到目标节点的过程中,分别在源节点和目标节点上设置相应的硬件性能计数器,源节点上的硬件性能计数器用于对源节点上llc分区的命中率进行记录并统计;目标节点上的硬件性能计数器用于对目标节点上llc分区的命中率进行记录并统计。

如果所述源节点上的硬件性能计数器通过统计发现源节点上除了z1分区以外的其他分区命中率降低幅度超过设定阈值,则将z1分区缩小,并将缩小出来的分区并入z5分区,即z1缩小,z5扩大;如果统计发现除了z1分区以外的其他分区命中率不受影响,则缩减z5分区,增大z1分区。

源节点上除了z1分区以外的其他分区命中率降低超过设定阈值表明当前迁移进程占用llc资源过多,已经影响到其他进程和虚拟机的性能,因此需要将z1分区缩小,并将缩小出来的分区并入z5分区,即z1分区缩小,z5分区扩大。如果统计发现除了z1以外的其他分区命中率不受影响,那么说明目前迁移进程并未影响其他虚拟机的性能,因此可以尝试缩减z5增大z1来进一步提高迁移进程的性能。扩大和缩小的单位都是缓存路(way);目标节点的调节与此类似。

所述步骤(4)由于在t1到t2时间段内,源节点上的虚拟机还在运行中,所以在这个期间也会再次产生脏页,所以需要再次启动扫描进程。

硬件性能计数器hardwareperformancecounter

本发明的有益效果:

1本发明通过在源节点上为虚拟机及其迁移辅助进程设立llc分区z1并动态调节分区z1大小,从而避免对该节点上其他进程和虚拟机造成性能干扰,保障源节点在迁移过程中的服务质量;

2本发明通过在目标节点上为接收进程设立llc分区z2并动态调节该分区大小,避免对该节点上已有虚拟机和进程造成干扰,保障目标节点在迁移过程中的服务质量。

3本发明z1分区供辅助迁移进程和即将迁移的虚拟机使用,避免辅助迁移进程和即将迁移的虚拟机影响其他进程和虚拟机的工作。

4本发明z2分区供接收进程和已经迁移的虚拟机使用,避免接收进程和已经迁移的虚拟机影响其他进程和虚拟机的工作。

附图说明

图1(a)和图1(b)是本发明的系统结构示意图;

图2(a)和图2(b)是本发明在虚拟机迁移过程中应用的示意图;

图3为本发明的流程图。

具体实施方式

下面结合附图与实施例对本发明作进一步说明。

如图3所示,一种保障虚拟机在线迁移服务质量的方法,包括如下步骤:

步骤(1):开始,在虚拟机在线迁移之前,首先判断源节点以及目标节点上各自的最后一级缓存资源llc是否已经进行分区,若是则进入步骤(3),若否则进入步骤(2);

步骤(2):分区:

a、对源节点上的最后一级缓存资源llc进行分区:建立z1分区,所述z1分区的存储容量为源节点上的最后一级缓存资源llc容量除以共享源节点上的最后一级缓存资源llc的处理器核数(如图2(a)原节点有两个处理器核共享llc,因此z1分区的初始大小为llc的大小除以2);z1分区供辅助迁移进程和即将迁移的虚拟机使用(如图2(a)中的vm虚拟机);llc的剩余部分建立另一个分区,该分区供源节点上的其他虚拟机和进程使用(如图2(a)中的vm1虚拟机);

b、对目标节点上的最后一级缓存资源llc进行分区:建立z2分区,该分区的存储容量为llc容量除以共享llc的处理器核数;z2分区供接收进程和迁移后的虚拟机使用(如图2(b)中的vm’虚拟机);llc的剩余部分建立另一个分区,该分区供目标节点上的其他虚拟机和进程使用(如图2(b)中的vm2虚拟机);

步骤(3):源节点启动扫描进程和辅助迁移进程,目的节点启动接收进程:假设开始时间是t1时刻,首先启动扫描进程,扫描进程在源节点的内存中扫描需要迁移的虚拟机的内存页面,并将在虚拟机运行过程中已经被修改过的内存页面dirtypage形成一个脏页集合wt1,随后辅助迁移进程将脏页集合wt1通过连接源节点和目标节点的网络发送到目标节点,由目标节点上的接收进程进行接收,假设完成时间是t2时刻,然后进入步骤(4);

在脏页数据从源节点传输到目标节点的过程中,需要分别在源节点和目标节点上设置相应的硬件性能计数器(hardwareperformancecounter)对源节点和目标节点上llc分区的命中率进行记录并统计。以图2(a)中源节点为例,llc在步骤(2)中初始分为两部分z1和z5,大小都是llc/2。如果统计发现z5分区命中率降低过大(例如降低了30%,与具体的策略有关),那么说明目前迁移进程占用的llc资源过多,已经影响到其他进程和虚拟机的性能,因此需要将z1分区缩小,并将缩小出来的分区并入z5分区,即z1缩小,z5扩大。如果统计发现z5分区命中率不受影响,那么说明目前迁移进程并未影响其他虚拟机的性能,因此可以尝试缩减z5增大z1来进一步提高迁移进程的性能。扩大和缩小的单位都是缓存路(way);目标节点的调节与此类似。

步骤(4):再次启动扫描进程得到t1到t2时间段内虚拟机新产生的脏页集合wt2;根据t1到t2时间内传输的脏页集合wt1容量计算出网速,进而计算出将wt2传输到目标节点所需要的时间δt;

判断所需要的时间δt是否在设定阈值tthreshold内,如果是,则进入步骤(5),否则将wt2传输到目标节点,并重复步骤(4);

步骤(5):在源节点上将需要迁移的虚拟机挂起,将脏页集合wt2以及虚拟机挂起后保存的进程上下文c传输到目标节点;目标节点上的接收进程接收完数据后,从进程上下文c恢复虚拟机的执行,至此虚拟机在线迁移成功。

多核处理器缓存层次结构中,假设有两级缓存,其中第二级缓存为最后一级缓存,被多个核共享,即llc;第一级缓存为各个核的私有缓存,即l1cache,如图1(a)和图1(b)所示;

llc资源能够进行分区,即能从逻辑上或物理上划分成多个部分供不同的处理器核使用,并且各部分之间不会互相干扰;目前intel处理器的缓存分配技术(cacheallocationtechnology,cat)已经支持对llc进行类似的分区。

当进行虚拟机迁移时,在源节点上需要启动一个辅助进程协助传输脏页数据,该进程主要从内存读并传输数据,需要频繁的读取数据到llc中,属于访存密集型程序,会严重干扰源节点上其他进程的性能,因此需要在llc中设置一个分区并限制该进程的缓存使用仅仅在该区域z1内(如图2(a)中的源节点部分所示),从而保障源节点上其他进程的服务质量;另由于需要迁移的虚拟机也需要使用llc,因此可将该虚拟机的缓存使用也限制到z1分区域,以便与迁移进程共享数据;

在目标节点上同样需要一个进程接收源节点传输过来的脏页数据,该进程主要从网络读取数据并写入内存,数据需要经过llc,会对目标节点上的其他进程形成干扰,造成服务质量下降,因此需要将该进程的llc使用限制在一个分区z2内(如图2(b)中的目标节点部分所示);

z1分区的存储容量:如果在虚拟机迁移之前源节点llc已经分区并为该虚拟机分配了分区大小zs,那么迁移过程中继续沿用该分区大小zs;如果迁移之前llc并未分区,则在迁移开始前需要为其设立一个大小为llc大小除以处理器核数的分区;在迁移过程的每次脏页扫描迭代中通过硬件计数器统计llc的命中率是增加还是减少并与缓存路数(way)为单位来决定扩充还是缩减z1分区的存储容量;

z2分区的存储容量:如果在虚拟机迁移之前目标节点llc已经分区并分配完了所有空间,那么从已有分区中挑选最大的分区并拆分出一个缓冲路(way)建立新分区;如果没有分区则设立一个大小为llc大小除以处理器核数的分区;在迁移过程中通过硬件计数器统计llc的命中率来决定扩充或缩减z2分区的存储容量。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1