一种优化计算机内存数据同步的方法与流程

文档序号:26003763发布日期:2021-07-23 21:21阅读:147来源:国知局
一种优化计算机内存数据同步的方法与流程

本发明涉及计算机虚拟化技术领域,具体涉及一种优化计算机内存数据同步的方法。



背景技术:

虚拟化技术允许多个vm(虚拟机)同时运行在一个物理服务器上。其中,所有物理资源被虚拟化为虚拟cpu、内存、网卡和各种虚拟设备的资源池。虚拟化资源,多个操作系统共享一组物理硬件不仅提高硬件利用率较低功耗,而且还极大地使弹性软件定义的可管理性,如动态迁移、内存快照,动态配置。vm实时迁移被认为是虚拟化带来的最重要的好处,因为它是支持零停机维护服务的重点支持技术。vm迁移技术可以将运行中的vm从一台主物理机器转移到另一台从物理机器,而在迁移过程中不中断其服务(如图1所示)。为了最小化迁移时间,现代虚拟基础设施中通常使用共享网络存储系统来节省迁移存储系统的时间。一般来说,动态迁移是虚拟化基础设施中的一种常见实践,它是一种强大的工具,可以节省电源并消除硬件升级期间的服务中断。

但是,由于硬件事故(如电源故障或硬件故障),仍然可能发生意外的服务停机,这使得在线迁移服务在迁移过程中会丢掉宕机的机器内存数据,造成vm进行重启操作。由于运营商级业务通常需要高可用性、不间断的业务基础设施,本文提出了一种基于虚拟的容错体系结构,在实现高效、连续的内存状态同步的同时,能够提高vm性能。



技术实现要素:

针对现有技术的不足,本发明提供了一种优化计算机内存数据同步的方法,克服了现有技术的不足,设计合理,通过优化节省了处理器、内存使用量和同步带宽,提高了vm性能和网络吞吐量延迟。在实现高效、连续的内存状态同步的同时,能够提高vm性能。

为实现以上目的,本发明通过以下技术方案予以实现:

一种优化计算机内存数据同步的方法,包括:

将主vm一个数据页面被分割成连续的块;

如果一个块在一个epoch期间保持不变,那么在这个epoch结束时,这个块不会被转移到从vm;而修改过的块将被转移到从vm;

从vm通过将收到的修改过的块应用到引用页,使从vm获得与主vm上相同的脏页内容;

主vm将根树数据结构作为脏块的位置发送给从vm。

优选地,被分割的块的大小取决于运行的处理器上sse指令能处理多少位。

优选地,所述根树由两层脏位头组成。且每个脏位头都是一个字节长。

优选地,将复制函数从vm空间更改为内核空间。让kvm模块将数据从客户内存复制到内核缓冲区。

本发明提供了一种优化计算机内存数据同步的方法。具备以下有益效果:通过优化节省了处理器、内存使用量和同步带宽,提高了vm性能和网络吞吐量延迟。在实现高效、连续的内存状态同步的同时,能够提高vm性能。

附图说明

为了更清楚地说明本发明或现有技术中的技术方案,下面将对现有技术描述中所需要使用的附图作简单地介绍。

图1本发明的结构示意图;

图2本发明中以基数树的数据结构图;

图3本发明中数据传输结构图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述。

如图1-3所示,一种优化计算机内存数据同步的方法,包括:

主vm一个数据页面被分割成连续的块,块的大小取决于运行的处理器上sse指令能处理多少位;在本实施例中,数据页面为4096字节。假设块大小为512位或64字节,然后一个页面可以被划分为64个块。

如果一个块在一个epoch期间保持不变,那么在这个epoch结束时,这个块不会被转移到从vm,只有那些修改过的块将被转移到从vm。从vm已经在前一个时期收到了这些页,所以通过将修改过的块应用到引用页,从vm将获得与主vm上相同的脏页内容。除了脏块之外,主vm还将根树数据结构作为脏块的位置发送给从vm。

根树由两层脏位头组成,每个脏位头都是一个字节长。第一级脏位头是一个字节长,这意味着每个位代表数据长度为4096字节/8=512字节。如果页面内的第i个512字节是脏的,那么(i-1)位被设置在第一级脏的位头中。对于每个512字节的脏数据块,有一个二级脏位头,每个脏位表示512字节/8=64字节的数据长度。类似地,如果大小为64字节的第i个块在512字节内被脏了,(i-1)位被设置在第2级脏位头中。所以第一级脏比特头中的一位对应于第二级脏比特头。如果在一级脏位头中没有设置一位,则该位不存在相应的二级脏位头,并且没有数据块。

在传输阶段,需要传输上一节所跟踪的细粒度脏区域产生的脏块。只存储脏块的地址,所以如果想要传输脏块,需要将数据从vm内存复制到备份传输套接字缓冲区。在完整的数据复制路径中,数据应该复制三次,第一次是将vm内存复制到qemu缓冲区。第二步是从qemu缓冲区(vm空间)复制到内核缓冲区(内核空间)。最后,数据将从内核缓冲区复制到套接字缓冲区,供网卡驱动程序传输。

将复制函数从vm空间更改为内核空间。让kvm模块将数据从客户内存复制到内核缓冲区。减少了复制路径的一次复制次数,减少从vm内存到内核缓冲区的复制(如图3所示)。直接将数据从vm内存复制到套接字缓冲区。复制的次数只是一次。提供全量同步内存数据的效率。收集内核缓冲区上的数据,并让传输套接字能够高效地传输数据块。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。



技术特征:

1.一种优化计算机内存数据同步的方法,其特征在于:包括:

将主vm一个数据页面被分割成连续的块;

如果一个块在一个epoch期间保持不变,那么在这个epoch结束时,这个块不会被转移到从vm;而修改过的块将被转移到从vm;

从vm通过将收到的修改过的块应用到引用页,使从vm获得与主vm上相同的脏页内容;

主vm将根树数据结构作为脏块的位置发送给从vm。

2.根据权利要求1所述的一种优化计算机内存数据同步的方法,其特征在于:被分割的块的大小取决于运行的处理器上sse指令能处理多少位。

3.根据权利要求2所述的一种优化计算机内存数据同步的方法,其特征在于:所述根树由两层脏位头组成,且每个脏位头都是一个字节长。

4.根据权利要求1所述的一种优化计算机内存数据同步的方法,其特征在于:将复制函数从vm空间更改为内核空间,让kvm模块将数据从客户内存复制到内核缓冲区。


技术总结
一种优化计算机内存数据同步的方法,包括:将主VM一个数据页面被分割成连续的块;如果一个块在一个epoch期间保持不变,那么在这个epoch结束时,这个块不会被转移到从VM;而修改过的块将被转移到从VM;从VM通过将收到的修改过的块应用到引用页,使从VM获得与主VM上相同的脏页内容;主VM将根树数据结构作为脏块的位置发送给从VM。本发明克服了现有技术的不足,通过优化节省了处理器、内存使用量和同步带宽,提高了VM性能和网络吞吐量延迟。在实现高效、连续的内存状态同步的同时,能够提高VM性能。

技术研发人员:杜志军;曾庆杰
受保护的技术使用者:上海泓戟信息科技有限公司
技术研发日:2021.04.20
技术公布日:2021.07.23
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1