本申请属于云计算,尤其涉及一种虚拟机加载启动方法、装置、电子设备及存储介质。
背景技术:
1、当虚拟机分配hugepage作为其memory backend时,通常会在加载虚拟机镜像前将需要的hugepage提前分配,或者此时如果有设备透传给虚拟机,也需要将hugepage提前分配,出于安全考虑,linux内核在分配页给qemu使用前需要对其做清零操作,但对于分配了大量内存的虚拟机,同一时间对大量内存做清零操作会消耗大量的cpu算力,同时该操作也非常耗时,严重影响虚拟机启动速度。对于有透传设备的虚拟机,还需要再加载虚拟机镜像之前将内存pin住,这进一步降低了虚拟机启动速度。
2、默认情况下以hugepage作为其memory backend的虚拟机启动流程如图1所示,为了安全考虑,qemu通过系统调用从内核分配内存时,内核分配的内存页会先清零再返回给qemu。如果需要将设备透传给虚拟机,那么图1的启动流程变为如图2所示的形式,可以看出当需要将设备透传进虚拟机时,除了分配内存,对内存清零,还需要在qemu初始化阶段建立dma映射,并将内存pin住,而这些操作都是非常耗时的,而通常具备透传设备的虚拟机分配的内存也相对较大,这将严重影响虚拟机的启动速度。
3、就目前的具有透传设备的虚拟机使用hugepage作为memory backend的启动流程实现来看,主要存在以下几方面的缺陷:
4、(1)虚拟机启动时需要将所有内存分配就绪,并对这些内存清零,非常耗时;
5、(2)需要将虚拟机内存pin住,而pin的过程并没有考虑巨页对齐,没有达到最优效率;
6、(3)在pin的过程中会重复原子更新页的计数,原子操作是一个代价较大的操作,验证影响虚拟机的启动速度。
技术实现思路
1、有鉴于此,本申请旨在提出一种虚拟机加载启动方法、装置、电子设备及存储介质,以解决上述至少一个问题。
2、为达到上述目的,本申请的技术方案是这样实现的:
3、第一方面,本申请提供一种虚拟机加载启动方法,所述方法包括:
4、通过内核线程对配置好的hugepage进行异步清零,将hugepage释放到内存池中;
5、触发启动虚拟机,响应于qemu初始化分配内存阶段,对页表对应的hugepage进行批量pin操作,并合并pin内存页时的原子更新页计数操作;
6、加载虚拟机镜像,并启动虚拟机。
7、第二方面,基于同一发明构思,本申请还提供了一种虚拟机加载启动装置,其特征在于,所述装置包括:
8、异步清零模块,被配置为通过内核线程对配置好的hugepage进行异步清零,将hugepage释放到内存池中;
9、pin操作模块,被配置为触发启动虚拟机,响应于qemu初始化分配内存阶段,对页表对应的hugepage进行批量pin操作,并合并pin内存页时的原子更新页计数操作;
10、加载启动模块,被配置为加载虚拟机镜像,并启动虚拟机。
11、第三方面,基于同一发明构思,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的虚拟机加载启动方法。
12、第四方面,基于同一发明构思,本申请还提供了一种非暂态计算机可读存储介质,其中,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如第一方面所述的虚拟机加载启动方法。
13、相对于现有技术,本申请所述的虚拟机加载启动方法、装置、电子设备及存储介质具有以下有益效果:
14、本申请所述的虚拟机加载启动方法、装置、电子设备及存储介质,所述虚拟机加载启动方法通过内核线程对配置好的hugepage进行异步清零,将hugepage释放到内存池中;触发启动虚拟机,响应于qemu初始化分配内存阶段,对页表对应的hugepage进行批量pin操作,并合并pin内存页时的原子更新页计数操作;加载虚拟机镜像,并启动虚拟机;本实施例采用预清零机制,并结合批量pin操作和合并原子操作,极大的加速了虚拟机的启动速度。
1.一种虚拟机加载启动方法,其特征在于,所述方法包括:
2.根据权利要求1所述的虚拟机加载启动方法,其特征在于,在所述内核线程对配置好的hugepage进行异步清零,将hugepage释放到内存池中之前,还包括:
3.根据权利要求1所述的虚拟机加载启动方法,其特征在于,所述通过内核线程对配置好的hugepage进行异步清零,将hugepage释放到内存池中,包括:
4.根据权利要求1所述的虚拟机加载启动方法,其特征在于:
5.根据权利要求1所述的虚拟机加载启动方法,其特征在于,所述触发启动虚拟机,响应于qemu初始化分配内存阶段,对页表对应的hugepage进行批量pin操作,并合并pin内存页时的原子更新页计数操作,包括:
6.根据权利要求5所述的虚拟机加载启动方法,其特征在于,所述合并pin内存页,并执行原子更新页计数操作,包括:
7.一种虚拟机加载启动装置,其特征在于,所述装置包括:
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-6任一项所述的虚拟机加载启动方法。
9.一种非暂态计算机可读存储介质,其特征在于,其中,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1-6任一项所述的虚拟机加载启动方法。