掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请涉及计算机技术领域,尤其涉及一种虚拟机热迁移方法、计算机设备及介质。

背景技术

随着数据中心和云计算等技术的发展,虚拟化技术和半虚拟化技术有广泛应用,例如处理器虚拟化、存储器虚拟化、设备虚拟化等。虚拟服务器和虚拟计算服务可以部署在多个计算节点、多个硬件平台上。有时候需要将虚拟机从一个计算节点转移到另一个计算节点,或者从一个硬件平台转移到另一个硬件平台。虚拟机热迁移指的是,通过虚拟机保存和恢复技术,将一个虚拟机的运行状态完整保存并且可以在新的硬件平台或者新的计算节点上快速恢复到原本的运行状态以便实现虚拟机平滑运行。发起虚拟机热迁移的虚拟机称作源虚拟机,而新的虚拟机称作目的虚拟机,用于承载目的虚拟机的物理节点或者物理主机需要有足够的内存资源并且满足特定状态要求。现有技术中,虚拟机热迁移的解决方案缺乏足够的灵活性来应对硬件环境的变化也不利于提升系统性能。

为此,本申请提供了一种虚拟机热迁移方法、计算机设备及介质,用于应对现有技术中的技术难题。

发明内容

第一方面,本申请提供了一种虚拟机热迁移方法。所述虚拟机热迁移方法用于从第一虚拟机到第二虚拟机的虚拟机热迁移,所述第一虚拟机包括第一物理内存和第一虚拟内存,所述第二虚拟机包括第二物理内存和第二虚拟内存,所述虚拟机热迁移方法包括:基于第一虚拟机迁移协议,调用第一函数接口,传输所述第一虚拟机的队列信息、内存信息和设备信息到所述第二虚拟机;基于所述第一虚拟机迁移协议,启动从所述第一虚拟机到所述第二虚拟机的虚拟机热迁移流程,包括:停止所述第一虚拟机,排空所述第一虚拟机的队列,执行从所述第一虚拟机到所述第二虚拟机的数据拷贝,以及实现从所述第一虚拟机到所述第二虚拟机的设备特性和设备状态的转移;其中,至少在启动所述虚拟机热迁移流程之前,基于独立于所述第一虚拟机迁移协议的第二虚拟机迁移协议,调用独立于所述第一函数接口的第二函数接口,分配所述第二虚拟机的所述第二物理内存中的第三物理内存,锁定所述第二虚拟机的所述第三物理内存,以及建立所述第二虚拟机的所述第三物理内存和所述第二虚拟机的所述第二虚拟内存之间的第一直接内存访问映射,所述第三物理内存用于所述虚拟机热迁移流程和所述第一直接内存访问映射用于所述虚拟机热迁移流程完成后的虚拟化设备数据访问。

通过本申请的第一方面,通过第二虚拟机迁移协议以及调用第二函数接口,将内存分配、内存锁定以及建立直接内存访问映射从依赖第一虚拟机迁移协议来进行的所述虚拟机热迁移流程中独立出来,从而可以独立地管理和执行,有利于体现第二虚拟机相关的硬件环境的变化,并且,可以优化内存延时分配和大内存映射的影响,有助于降低时延。

在本申请的第一方面的一种可能的实现方式中,至少在启动所述虚拟机热迁移流程之后并且在完成所述虚拟机热迁移流程之前,基于所述第二虚拟机迁移协议,调用所述第二函数接口,分配所述第二虚拟机的所述第二物理内存中的第四物理内存,锁定所述第二虚拟机的所述第四物理内存,解除所述第一直接内存访问映射,以及建立所述第二虚拟机的所述第四物理内存和所述第二虚拟机的所述第二虚拟内存之间的第二直接内存访问映射,所述第四物理内存用于所述虚拟机热迁移流程和所述第二直接内存访问映射用于所述虚拟机热迁移流程完成后的虚拟化设备数据访问。

在本申请的第一方面的一种可能的实现方式中,所述第三物理内存包括第一内存空间和第二内存空间,所述第四物理内存包括所述第一内存空间和第三内存空间,所述第二内存空间不同于所述第三内存空间。

在本申请的第一方面的一种可能的实现方式中,所述第二内存空间位于第一节点,所述第三内存空间位于第二节点,所述第二虚拟机的物理处理器对所述第二节点的访问速度高于所述物理处理器对所述第一节点的访问速度。

在本申请的第一方面的一种可能的实现方式中,所述第二虚拟机的物理处理器位于所述第二节点。

在本申请的第一方面的一种可能的实现方式中,所述第四物理内存对所述第二虚拟机的中央处理器的亲和度高于所述第三物理内存对所述第二虚拟机的中央处理器的亲和度。

在本申请的第一方面的一种可能的实现方式中,所述第二内存空间通过内存热插拔被移除,所述第三内存空间通过内存热插拔被添加。

在本申请的第一方面的一种可能的实现方式中,所述第一虚拟机迁移协议不支持在执行所述虚拟机热迁移流程期间的内存热插拔。

在本申请的第一方面的一种可能的实现方式中,所述第一虚拟机迁移协议基于虚拟宿主机用户协议和虚拟化硬件加速还有数据平面开发工具包。

在本申请的第一方面的一种可能的实现方式中,所述第二虚拟机的系统模拟器基于所述虚拟宿主机用户协议传输所述第一虚拟机的队列信息、内存信息和设备信息到所述第二虚拟机的数据平面开发工具包,所述第二虚拟机的数据平面开发工具包用于调用所述第二虚拟机的虚拟化硬件加速驱动以便实现从所述第一虚拟机到所述第二虚拟机的设备特性和设备状态的转移,其中,所述第一函数接口和所述第二函数接口均属于所述虚拟化硬件加速驱动的函数指针数组。

在本申请的第一方面的一种可能的实现方式中,所述第二虚拟机的所述虚拟化硬件加速驱动的所述函数指针数组中的所述第二函数接口被调用以便建立所述第一直接内存访问映射。

在本申请的第一方面的一种可能的实现方式中,所述第一直接内存访问映射还用于所述第二虚拟机的主机物理地址和所述第二虚拟机的客户机物理地址之间的输入输出内存管理单元映射。

在本申请的第一方面的一种可能的实现方式中,通过第一进程调用所述第一函数接口,以及,通过第二进程调用所述第二函数接口,其中,所述第二进程独立于所述第一进程。

第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。

第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。

第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。

附图说明

为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为一种虚拟机热迁移的示意图;

图2为本申请实施例提供的一种虚拟机热迁移方法的流程示意图;

图3为本申请实施例提供的一种计算设备的结构示意图。

具体实施方式

下面将结合附图对本申请实施例作进一步地详细描述。

应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。

图1为一种虚拟机热迁移的示意图。如图1所示,从源虚拟机100向目的虚拟机110进行虚拟机热迁移。图1中示意性示出了,源虚拟机100与目的虚拟机110之间共享队列信息、内存信息、设备信息,源虚拟机100启动虚拟机迁移,开始拷贝脏页和数据到目的虚拟机110。源虚拟机100和目的虚拟机110可以部署在不同的计算节点、不同的硬件平台上。从源虚拟机100向目的虚拟机110进行虚拟机热迁移,意味着将源虚拟机100的运行状态完整保存起来,并且在目的虚拟机110上快速恢复到原本的运行状态以便实现虚拟机平滑运行。其中,源虚拟机100发起虚拟机热迁移,目的虚拟机110是虚拟机热迁移结束后的新的虚拟机。其中,目的虚拟机110所在的计算节点或者硬件平台或者服务器,为了能够承载目的虚拟机110的正常运行,需要具备足够的内存资源等,也需要满足特定状态要求。在源虚拟机100正式启动虚拟机热迁移并开始拷贝脏页和数据到目的虚拟机110之前,目的虚拟机110所在的主机侧的系统模拟器,可以通过占用虚拟内存空间以及通过内存延时分配技术在使用内存时再分配具体物理内存的方式,提供足够的内存资源,并且,通过锁定真实物理内存防止内存页换入换出从而避免将原本分配的物理内存释放给其它进程。但是,这样就因为内存延时分配和大内存映射造成虚拟机热迁移的时延,而且也缺乏对内存条热插拔的支持。接着,源虚拟机100正式启动虚拟机热迁移,开始拷贝脏页。虚拟机热迁移过程中,脏页是需要从源虚拟机100迁移到目的虚拟机110的页面,虚拟机模拟器会一轮一轮地复制脏页并认为被复制完成的脏页被清除。当脏页数量下降到一定阈值之后,停止源虚拟机100,排空从源虚拟机100到目的虚拟机110的发送队列,然后将剩余脏页和虚拟机相关的设备状态等都拷贝过去。然后,目的虚拟机110根据状态信息和虚拟化协议来配置参数,恢复处理器状态,完成虚拟机热迁移。因此,在正式启动虚拟机热迁移之后并且在完成虚拟机热迁移之前,源虚拟机100可能已经停止运行且排空了发送队列,这样意味着目的虚拟机110相关的硬件环境的变化特别是真实物理内存情况的变化难以得到及时的反馈。例如,对物理内存条的热插拔和大规格内存技术的应用等,可能增加虚拟机热迁移的时延,并且可能造成业务中断,从而不利于提升系统性能。下面结合图2说明本申请实施例提供的一种虚拟机热迁移方法如何应对硬件环境的变化以及提升系统性能。

图2为本申请实施例提供的一种虚拟机热迁移方法的流程示意图。所述虚拟机热迁移方法用于从第一虚拟机到第二虚拟机的虚拟机热迁移,所述第一虚拟机包括第一物理内存和第一虚拟内存,所述第二虚拟机包括第二物理内存和第二虚拟内存。如图2所示,所述虚拟机热迁移方法包括以下步骤。

步骤S210:基于第一虚拟机迁移协议,调用第一函数接口,传输所述第一虚拟机的队列信息、内存信息和设备信息到所述第二虚拟机。

步骤S220:基于所述第一虚拟机迁移协议,启动从所述第一虚拟机到所述第二虚拟机的虚拟机热迁移流程,包括:停止所述第一虚拟机,排空所述第一虚拟机的队列,执行从所述第一虚拟机到所述第二虚拟机的数据拷贝,以及实现从所述第一虚拟机到所述第二虚拟机的设备特性和设备状态的转移,其中,至少在启动所述虚拟机热迁移流程之前,基于独立于所述第一虚拟机迁移协议的第二虚拟机迁移协议,调用独立于所述第一函数接口的第二函数接口,分配所述第二虚拟机的所述第二物理内存中的第三物理内存,锁定所述第二虚拟机的所述第三物理内存,以及建立所述第二虚拟机的所述第三物理内存和所述第二虚拟机的所述第二虚拟内存之间的第一直接内存访问映射,所述第三物理内存用于所述虚拟机热迁移流程和所述第一直接内存访问映射用于所述虚拟机热迁移流程完成后的虚拟化设备数据访问。

参阅图2,在步骤S210,基于第一虚拟机迁移协议,调用第一函数接口,传输所述第一虚拟机的队列信息、内存信息和设备信息到所述第二虚拟机。第一虚拟机是发起虚拟机热迁移的虚拟机,可以看作源虚拟机。第二虚拟机是虚拟机热迁移后的继续负责虚拟机运行的虚拟机,可以看作目的虚拟机。第一虚拟机和第二虚拟机各自部署在计算节点、硬件平台或者服务器上。第一虚拟机和第二虚拟机通过各自的主机上的系统模拟器来实现如处理器虚拟化、存储器虚拟化、设备虚拟化等。其中,所述第一虚拟机包括第一物理内存和第一虚拟内存,所述第二虚拟机包括第二物理内存和第二虚拟内存。第一物理内存是用于支持第一虚拟机的运行的真实物理内存,第一虚拟内存是用于支持第一虚拟机的虚拟内存空间,通过第一虚拟机的虚拟化架构建立起第一物理内存与第一虚拟内存之间的映射关系,这样第一虚拟机的各种虚拟化设备可以在包括了第一物理内存的硬件环境中运行。类似的,第二物理内存是用于支持第二虚拟机的运行的真实物理内存,第二虚拟内存是用于支持第二虚拟机的虚拟内存空间,通过第二虚拟机的虚拟化架构建立起第二物理内存与第二虚拟内存之间的映射关系,这样第二虚拟机的各种虚拟化设备可以在包括了第二物理内存的硬件环境中运行。第一虚拟机迁移协议用于规范在第一虚拟机和第二虚拟机之间的虚拟机热迁移,包括共享队列信息、内存信息和设备信息,还包括实现脏页拷贝、数据拷贝、设备状态转移等。第一虚拟机迁移协议的具体内容可以基于第一虚拟机和第二虚拟机采用的虚拟化技术确定,例如虚拟宿主机数据路径加速(vhost Data Path Acceleration,VDPA)也叫虚拟化硬件加速,虚拟宿主机用户协议(vhost user),还可以涉及各种虚拟化和半虚拟化架构,如开放堆栈架构(openstack),virtio架构及其子方案(如virtio-net、vhost-net、vhost-user等)。另外,第一虚拟机迁移协议也可以支持在第一虚拟机和第二虚拟机上采用如多层虚拟机交换机(OpenvSwitch,OVS),数据平面开发工具包(Data Plane DevelopmentKit,DPDK)以及单根输入输出虚拟化(Single Root I/O Virtualization,SRIOV)等技术。例如,第一虚拟机可以采用数据平面开发工具包和虚拟化硬件加速的结合,利用数据平面开发工具包的大页内存和数据路径硬件化加速数据传输。在步骤S210中,基于第一虚拟机迁移协议,调用第一函数接口,传输所述第一虚拟机的队列信息、内存信息和设备信息到所述第二虚拟机,如此,实现了在第一虚拟机和第二虚拟机之间共享队列信息、内存信息和设备信息。这样意味着第二虚拟机可以利用共享的这些信息来配置参数和恢复状态。上面提到,第一虚拟机迁移协议的具体内容是基于第一虚拟机和第二虚拟机采用的虚拟化技术确定的,这里,在第一虚拟机和第二虚拟机之间共享的队列信息、内存信息和设备信息也是基于第一虚拟机和第二虚拟机采用的虚拟化技术确定的。通过共享相应的队列信息和内存信息,可以在被迁移的虚拟机本身无感知的情况下,通过第一虚拟机和第二虚拟机各自的系统模拟器进行内存以及状态迁移,这样在虚拟机热迁移完成后就可以恢复队列状态继续收发数据。另外,通过将相应的设备信息传递给第二虚拟机的虚拟化架构中的驱动例如多层虚拟机交换机与数据平面开发工具包的架构下的虚拟化硬件加速驱动,可以实现虚拟宿主机用户协议定义的消息还有中断状态等的传输与共享,这样有助于第二虚拟机进行相应的参数配置和状态恢复,以便在完成虚拟机热迁移后通过第二虚拟机提供虚拟机运行所需要的各项虚拟化功能。

继续参阅图2,在步骤S220,基于所述第一虚拟机迁移协议,启动从所述第一虚拟机到所述第二虚拟机的虚拟机热迁移流程。其中,从所述第一虚拟机到所述第二虚拟机的所述虚拟机热迁移流程包括:停止所述第一虚拟机,排空所述第一虚拟机的队列,执行从所述第一虚拟机到所述第二虚拟机的数据拷贝,以及实现从所述第一虚拟机到所述第二虚拟机的设备特性和设备状态的转移。这里,基于所述第一虚拟机迁移协议,利用在步骤S210中共享的所述第一虚拟机的队列信息、内存信息和设备信息,正式启动从所述第一虚拟机到所述第二虚拟机的虚拟机热迁移流程。所述虚拟机热迁移流程包括停止所述第一虚拟机和排空所述第一虚拟机的队列,这样意味着,基于所述第一虚拟机迁移协议,在正式启动所述虚拟机热迁移流程之后并且在完成所述虚拟机热迁移流程之前,第二虚拟机相关的硬件环境的变化难以通过第一虚拟机得到反馈和应对。应当理解的是,按照所述第一虚拟机迁移协议来执行的虚拟机热迁移流程,因为包括了停止所述第一虚拟机和排空所述第一虚拟机的队列,因此使得第一虚拟机在被停止后难以及时且有效地对第二虚拟机相关的硬件环境的变化做出反馈,也就意味着难以依赖所述第一虚拟机迁移协议来及时地调节所述虚拟机热迁移流程进而体现第二虚拟机相关的硬件环境的变化。例如,第二虚拟机相关的硬件环境可能发生如内存条的热插拔的事件从而改变了第二虚拟机的第二物理内存的组成和/或第二虚拟内存与第二物理内存之间的映射关系。再例如,第二虚拟机可能包括非一致性内存访问(Non-Uniform Memory Access,NUMA)系统,因为NUMA系统的特性可能使得第二虚拟机相关的存储环境发生变化。并且,基于所述第一虚拟机迁移协议,执行所述虚拟机热迁移流程包括:执行从所述第一虚拟机到所述第二虚拟机的数据拷贝,以及实现从所述第一虚拟机到所述第二虚拟机的设备特性和设备状态的转移。这样意味着,在正式启动所述虚拟机热迁移流程之前,需要在第二虚拟机准备好足够的内存资源来支持虚拟机热迁移。如果基于第一虚拟机迁移协议来分配第二虚拟机的内存资源并锁定相应的真实物理内存,例如利用第二虚拟机所在的主机侧的系统模拟器,通过占用所述第二虚拟机的第二虚拟内存中足够的虚拟内存空间以及通过内存延时分配技术在使用时再分配具体物理内存的方式从而提供足够的内存资源,虽然这样可以提供足够的内存资源,但是也会受到内存延时分配和大内存映射的影响,从而导致虚拟机热迁移的时延。

继续参阅图2,如上所述,基于所述第一虚拟机迁移协议执行的从所述第一虚拟机到所述第二虚拟机的虚拟机热迁移流程,包括:停止所述第一虚拟机,排空所述第一虚拟机的队列,执行从所述第一虚拟机到所述第二虚拟机的数据拷贝,以及实现从所述第一虚拟机到所述第二虚拟机的设备特性和设备状态的转移。因此,基于所述第一虚拟机迁移协议,在正式启动所述虚拟机热迁移流程之后并且在完成所述虚拟机热迁移流程之前,第一虚拟机可能已经被停止并且第一虚拟机到第二虚拟机的发送队列也被排空,这样意味着,当第二虚拟机相关的硬件环境发生变化时,难以通过第一虚拟机和所述第一虚拟机迁移协议来及时且有效地调节所述虚拟机热迁移流程进而体现第二虚拟机相关的硬件环境的变化。因此,依赖第一虚拟机迁移协议来进行的所述虚拟机热迁移流程,难以应对如内存条的热插拔和非一致性内存访问系统等情况,因此难以充分适应环境变化以提升系统性能。另外,如果依赖第一虚拟机迁移协议来准备第二虚拟机上的内存资源,则可能受到内存延时分配和大内存映射的影响,从而导致虚拟机热迁移的时延。为了避免内存延时分配和大内存映射导致的虚拟机热迁移的时延,以及为了在虚拟机热迁移期间及时反馈第二虚拟机相关的硬件环境的变化包括支持内存条热插拔,图2所示的虚拟机热迁移方法,提供了独立于所述第一虚拟机迁移协议的第二虚拟机迁移协议以及调用独立于所述第一函数接口的第二函数接口。具体地,至少在启动所述虚拟机热迁移流程之前,基于独立于所述第一虚拟机迁移协议的第二虚拟机迁移协议,调用独立于所述第一函数接口的第二函数接口,分配所述第二虚拟机的所述第二物理内存中的第三物理内存,锁定所述第二虚拟机的所述第三物理内存,以及建立所述第二虚拟机的所述第三物理内存和所述第二虚拟机的所述第二虚拟内存之间的第一直接内存访问映射,所述第三物理内存用于所述虚拟机热迁移流程和所述第一直接内存访问映射用于所述虚拟机热迁移流程完成后的虚拟化设备数据访问。应当理解的是,所述第一直接内存访问映射用于所述虚拟机热迁移流程完成后的虚拟化设备数据访问,例如支持虚拟化硬件加速的网络设备的报文收发。另外,上面提到分配所述第二虚拟机的所述第二物理内存中的第三物理内存,所述第三物理内存用于所述虚拟机热迁移流程,例如用于保存从第一虚拟机发送来的脏页。如此,通过第二虚拟机迁移协议以及调用第二函数接口,将内存分配、内存锁定以及建立直接内存访问映射从依赖第一虚拟机迁移协议来进行的所述虚拟机热迁移流程中独立出来,从而可以独立地管理和执行,有利于体现第二虚拟机相关的硬件环境的变化。并且,通过第二虚拟机迁移协议以及调用第二函数接口来执行的内存分配、内存锁定以及建立直接内存访问映射,可以通过影响所述第二虚拟机的所述第三物理内存还有第一直接内存访问映射进而体现第二虚拟机相关的硬件环境的变化,因此能够充分适应环境变化以提升系统性能。例如,当发生内存条的热插拔和非一致性内存访问系统等情况,可以通过改变第三物理内存和改变所述第三物理内存和第二虚拟内存之间的第一直接内存访问映射来体现变化,而且不需要重启整个虚拟机热迁移流程;相对的,如果依赖所述第一虚拟机迁移协议和调用第一函数接口来反馈内存条的热插拔和非一致性内存访问系统,则可能需要重启已经停止的第一虚拟机以及重启整个虚拟机热迁移流程,从而造成业务中断和虚拟机热迁移的时延。进一步地,因为是通过额外的协议和额外的接口来执行内存分配、内存锁定以及建立直接内存访问映射,因此不需要借助第一虚拟机迁移协议和第一函数接口就能提供足够的内存资源,因此可以优化内存延时分配和大内存映射的影响,有助于降低时延。

在一种可能的实施方式中,至少在启动所述虚拟机热迁移流程之后并且在完成所述虚拟机热迁移流程之前,基于所述第二虚拟机迁移协议,调用所述第二函数接口,分配所述第二虚拟机的所述第二物理内存中的第四物理内存,锁定所述第二虚拟机的所述第四物理内存,解除所述第一直接内存访问映射,以及建立所述第二虚拟机的所述第四物理内存和所述第二虚拟机的所述第二虚拟内存之间的第二直接内存访问映射,所述第四物理内存用于所述虚拟机热迁移流程和所述第二直接内存访问映射用于所述虚拟机热迁移流程完成后的虚拟化设备数据访问。应当理解的是,所述第二直接内存访问映射用于所述虚拟机热迁移流程完成后的虚拟化设备数据访问,例如支持虚拟化硬件加速的网络设备的报文收发。所述第四物理内存用于所述虚拟机热迁移流程,例如用于保存从第一虚拟机发送来的脏页。如上所述,在启动所述虚拟机热迁移流程之后并且在完成所述虚拟机热迁移流程之前,第一虚拟机可能已经被停止并且第一虚拟机的队列包括从第一虚拟机到第二虚拟机的发送队列被排空,这样意味着难以依赖第一虚拟机迁移协议来通过第一虚拟机去影响所述虚拟机热迁移流程。为此,至少在启动所述虚拟机热迁移流程之前,通过第二虚拟机迁移协议以及调用第二函数接口,将内存分配、内存锁定以及建立直接内存访问映射从依赖第一虚拟机迁移协议来进行的所述虚拟机热迁移流程中独立出来,从而可以独立地管理和执行,有利于体现第二虚拟机相关的硬件环境的变化。应当理解的是,至少在启动所述虚拟机热迁移流程之前,分配所述第二虚拟机的所述第二物理内存中的第三物理内存,锁定所述第二虚拟机的所述第三物理内存,以及建立所述第二虚拟机的所述第三物理内存和所述第二虚拟机的所述第二虚拟内存之间的第一直接内存访问映射;相对的,至少在启动所述虚拟机热迁移流程之后并且在完成所述虚拟机热迁移流程之前,分配所述第二虚拟机的所述第二物理内存中的第四物理内存,锁定所述第二虚拟机的所述第四物理内存,解除所述第一直接内存访问映射,以及建立所述第二虚拟机的所述第四物理内存和所述第二虚拟机的所述第二虚拟内存之间的第二直接内存访问映射。因此,第四物理内存和第二直接内存访问映射对应的时间段是在启动所述虚拟机热迁移流程之后,从而区别于,至少在启动所述虚拟机热迁移流程之前的第三物理内存和第一直接内存访问映射。如此,基于第四物理内存和第二直接内存访问映射与第三物理内存和第一直接内存访问映射之间的区别,可以及时且有效地体现第二虚拟机相关的硬件环境的变化,因此能够充分适应环境变化以提升系统性能。

在一些实施例中,所述第三物理内存包括第一内存空间和第二内存空间,所述第四物理内存包括所述第一内存空间和第三内存空间,所述第二内存空间不同于所述第三内存空间。如此,第四物理内存与第三物理内存共同具有第一内存空间,不同在于第二内存空间变成了第三内存空间。因此,通过第二虚拟机迁移协议以及调用第二函数接口来执行的内存分配、内存锁定以及建立直接内存访问映射,可以体现物理内存条的拔插,物理存储设备的替换和增删等变化,因此能够充分适应环境变化以提升系统性能。

在一些实施例中,所述第二内存空间位于第一节点,所述第三内存空间位于第二节点,所述第二虚拟机的物理处理器对所述第二节点的访问速度高于所述物理处理器对所述第一节点的访问速度。如此,通过第二虚拟机迁移协议以及调用第二函数接口来执行的内存分配、内存锁定以及建立直接内存访问映射,可以使得所述第二虚拟机的物理处理器选择访问速度更快的第二节点,进而可以适配需要切换物理内存区域的业务场景的需求,提升访问速度和系统性能。在一些示例中,所述第二虚拟机的物理处理器位于所述第二节点。如此,通过第二虚拟机迁移协议以及调用第二函数接口来执行的内存分配、内存锁定以及建立直接内存访问映射,可以使得所述第二虚拟机的物理处理器选择访问位于同一节点的第三内存空间,提升访问速度和系统性能。

在一些实施例中,所述第四物理内存对所述第二虚拟机的中央处理器的亲和度高于所述第三物理内存对所述第二虚拟机的中央处理器的亲和度。如此,通过第二虚拟机迁移协议以及调用第二函数接口来执行的内存分配、内存锁定以及建立直接内存访问映射,可以使得所述第二虚拟机的中央处理器选择访问亲和度更高的所述第四物理内存,这样亲和度更高的物理内存区域可能是在虚拟机热迁移的过程中释放的,或者是响应需要切换物理内存区域的业务场景的需求。通过访问亲和度更高的物理内存区域,可以节约开销,提升响应速度,从而提升系统性能。

在一些实施例中,所述第二内存空间通过内存热插拔被移除,所述第三内存空间通过内存热插拔被添加。如此,通过第二虚拟机迁移协议以及调用第二函数接口来执行的内存分配、内存锁定以及建立直接内存访问映射,实现了对内存热插拔的支持。应当理解的是,因为所述第二内存空间通过内存热插拔被移除,这意味着必须在正式启动从所述第一虚拟机到所述第二虚拟机的虚拟机热迁移流程之前准备新的可用的存储空间,否则从第一虚拟机向第二虚拟机的通过内存热插拔被移除的第二内存空间进行数据拷贝必然导致错误和业务中断。如此,通过第二虚拟机迁移协议以及调用第二函数接口来执行的内存分配、内存锁定以及建立直接内存访问映射,可以体现物理内存条的拔插,物理存储设备的替换和增删等变化,因此能够充分适应环境变化以提升系统性能。在一些实施例中,所述第一虚拟机迁移协议不支持在执行所述虚拟机热迁移流程期间的内存热插拔。如此,通过第二虚拟机迁移协议以及调用第二函数接口来执行的内存分配、内存锁定以及建立直接内存访问映射,绕过了不支持在执行所述虚拟机热迁移流程期间的内存热插拔的第一虚拟机迁移协议,可以体现物理内存条的拔插,物理存储设备的替换和增删等变化,因此能够充分适应环境变化以提升系统性能。

在一种可能的实施方式中,所述第一虚拟机迁移协议基于虚拟宿主机用户协议和虚拟化硬件加速还有数据平面开发工具包。在一些实施例中,所述第二虚拟机的系统模拟器基于所述虚拟宿主机用户协议传输所述第一虚拟机的队列信息、内存信息和设备信息到所述第二虚拟机的数据平面开发工具包,所述第二虚拟机的数据平面开发工具包用于调用所述第二虚拟机的虚拟化硬件加速驱动以便实现从所述第一虚拟机到所述第二虚拟机的设备特性和设备状态的转移,其中,所述第一函数接口和所述第二函数接口均属于所述虚拟化硬件加速驱动的函数指针数组。在一些实施例中,所述第二虚拟机的所述虚拟化硬件加速驱动的所述函数指针数组中的所述第二函数接口被调用以便建立所述第一直接内存访问映射。如此,实现了对各种虚拟化架构和虚拟化技术的支持。并且,可以利用所述第二虚拟机的所述虚拟化硬件加速驱动的所述函数指针数组,从而有助于推广应用本发明。

在一种可能的实施方式中,所述第一直接内存访问映射还用于所述第二虚拟机的主机物理地址和所述第二虚拟机的客户机物理地址之间的输入输出内存管理单元映射。如此,实现了支持输入输出内存管理单元映射。

在一种可能的实施方式中,通过第一进程调用所述第一函数接口,以及,通过第二进程调用所述第二函数接口,其中,所述第二进程独立于所述第一进程。如此,因为是通过额外的协议和额外的接口来执行内存分配、内存锁定以及建立直接内存访问映射,因此不需要借助第一虚拟机迁移协议和第一函数接口就能提供足够的内存资源,因此可以优化内存延时分配和大内存映射的影响,有助于降低时延。并且,可以通过额外的进程,也就是独立于所述第一进程的所述第二进程,来调用第二函数接口,有利于进程之间的隔离,也保持了在通过第二虚拟机迁移协议以及调用第二函数接口来执行的内存分配、内存锁定以及建立直接内存访问映射方面的独立性。

图3是本申请实施例提供的一种计算设备的结构示意图,该计算设备300包括:一个或者多个处理器310、通信接口320以及存储器330。所述处理器310、通信接口320以及存储器330通过总线340相互连接。可选地,该计算设备300还可以包括输入/输出接口350,输入/输出接口350连接有输入/输出设备,用于接收用户设置的参数等。该计算设备300能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器310还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备300执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器310用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备300可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口320具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器310具体可用于为了实现这些装置、部件的功能所必须的处理功能等。

应当理解的是,图3的计算设备300可以包括一个或者多个处理器310,并且多个处理器310可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器310可以构成处理器序列或者处理器阵列,或者多个处理器310之间可以分成主处理器和辅助处理器,或者多个处理器310之间可以具有不同的架构如采用异构计算架构。另外,图3所示的计算设备300,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备300可以包括比图3所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。

处理器310可以有多种具体实现形式,例如处理器310可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器310还可以是单核处理器或多核处理器。处理器310可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器310也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口320可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。

存储器330可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器330也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器330也可用于存储程序代码和数据,以便于处理器310调用存储器330中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备300可能包含相比于图3展示的更多或者更少的组件,或者有不同的组件配置方式。

总线340可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线340可以分为地址总线、数据总线、控制总线等。总线340除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

技术分类

06120116551558