一种内存回收方法、装置及控制设备制造方法及图纸

技术编号:34384025 阅读:64 留言:0更新日期:2022-08-03 21:04
本申请提供了一种内存回收方法、装置及控制设备,所述方法包括:获取虚拟机的内存管理元数据信息和解析该内存管理元数据信息的内存解析函数;基于所述内存解析函数和所述内存管理元数据信息,回收所述虚拟机的空闲内存。通过对虚拟机的空闲的内存进行回收,从而避开了对设备侧DMA无法改变内存映射的问题,且无需额外的硬件或半虚拟化驱动程序。需额外的硬件或半虚拟化驱动程序。需额外的硬件或半虚拟化驱动程序。

【技术实现步骤摘要】
一种内存回收方法、装置及控制设备


[0001]本申请涉及内存分配
,具体而言,涉及一种内存回收方法、装置及控制设备。

技术介绍

[0002]对虚拟机的空闲内存进行回收,提升虚拟机内存弹性,能够有效提高宿主机的资源使用效率,帮助提高宿主机能够部署的虚拟机的密度,降低虚拟机使用成本。但是在虚拟机设备直通大规模普及的今天,设备侧DMA要求虚拟机在运行过程中,内存映射完全不能改变,因此也就无法动态地回收虚拟机的内存。
[0003]解决该问题的一个方法是提供设备侧缺页处理能力,但这种方法依赖特殊的硬件,无法在现有硬件中使用。此外,还有一些半虚拟化方案能够解决此类问题,但是这些方案需要虚拟机中运行专用的半虚拟化驱动程序。

技术实现思路

[0004]本申请解决的问题是现有内存回收方法中DMA的内存映射无法改变导致无法回收虚拟机的内存。
[0005]为解决上述问题,本申请首先提供一种内存回收方法,包括:
[0006]获取虚拟机的内存管理元数据信息和解析该内存管理元数据信息的内存解析函数;
[0007]基于所述内存解析函数和所述内存管理元数据信息,回收所述虚拟机的空闲内存。
[0008]在一种实施方式中,所述基于所述内存解析函数和所述内存管理元数据信息,回收所述虚拟机的空闲内存之后,所述方法还包括:
[0009]响应于所述虚拟机对已回收的空闲内存的分配请求,对所述虚拟机分配新的物理内存。
[0010]在一种实施方式中,所述内存解析函数为所述虚拟机编译后的BPF字节码。
[0011]在一种实施方式中,所述获取虚拟机的内存管理元数据信息和解析该内存管理元数据信息的内存解析函数,包括:
[0012]当所述虚拟机启动后对预先编写的所述内存解析函数的eBPF源程序进行编译时,接收所述虚拟机注入的内存管理元数据信息和编译后的所述内存解析函数的BPF字节码。
[0013]在一种实施方式中,所述基于所述内存解析函数和所述内存管理元数据信息,回收所述虚拟机的空闲内存中,通过所述内存解析函数和所述内存管理元数据信息扫描出所述虚拟机的空闲内存后,回收所述虚拟机的空闲内存。
[0014]在一种实施方式中,所述内存管理元数据信息,包括struct page物理页信息和对应的struct page结构体信息;所述通过所述内存解析函数和所述内存管理元数据信息扫描出所述虚拟机的空闲内存后,回收所述虚拟机的空闲内存,包括:
[0015]扫描所述虚拟机的struct page物理页信息,调用所述内存解析函数解析与对应的struct page结构体信息,确定空闲的struct page物理页;
[0016]删除EPT映射表和IOMMU映射表中空闲的所述struct page物理页的映射,并将EPT映射表和IOMMU映射表中struct page结构体物理页的映射的权限位置为只读,所述struct page结构体物理页为存储空闲的所述struct page物理页对应的struct page结构体信息的struct page物理页。
[0017]在一种实施方式中,所述虚拟机对已回收的空闲内存的分配请求是在所述虚拟机访问所述EPT映射表或所述IOMMU映射表中权限位为只读的struct page结构体物理页的映射时触发的。
[0018]在一种实施方式中,所述对所述虚拟机分配新的物理内存是在所述EPT映射表或所述IOMMU映射表中重新建立空闲的struct page物理页的映射。
[0019]本申请其次一种控制设备,其包括:存储器和处理器;
[0020]所述存储器,其用于存储程序;
[0021]所述处理器,耦合至所述存储器,用于执行所述程序,以用于:
[0022]获取虚拟机的内存管理元数据信息和解析该内存管理元数据信息的内存解析函数;
[0023]基于所述内存解析函数和所述内存管理元数据信息,回收所述虚拟机的空闲内存。
[0024]在一种实施方式中,所述处理器具体用于:
[0025]响应于所述虚拟机对已回收的空闲内存的分配请求,对所述虚拟机分配新的物理内存。
[0026]在一种实施方式中,所述内存解析函数为所述虚拟机编译后的BPF字节码。
[0027]在一种实施方式中,所述处理器具体用于:
[0028]当所述虚拟机启动后对预先编写的所述内存解析函数的eBPF源程序进行编译时,接收所述虚拟机注入的内存管理元数据信息和编译后的所述内存解析函数的BPF字节码。
[0029]在一种实施方式中,所述处理器具体用于:通过所述内存解析函数和所述内存管理元数据信息扫描出所述虚拟机的空闲内存后,回收所述虚拟机的空闲内存。
[0030]在一种实施方式中,所述内存管理元数据信息,包括struct page物理页信息和对应的struct page结构体信息;基于此,所述处理器具体用于:
[0031]扫描所述虚拟机的struct page物理页信息,调用所述内存解析函数解析与对应的struct page结构体信息,确定空闲的struct page物理页;
[0032]删除EPT映射表和IOMMU映射表中空闲的所述struct page物理页的映射,并将EPT映射表和IOMMU映射表中struct page结构体物理页的映射的权限位置为只读,所述struct page结构体物理页为存储空闲的所述struct page物理页对应的struct page结构体信息的struct page物理页。
[0033]在一种实施方式中,所述处理器具体用于:
[0034]所述虚拟机对已回收的空闲内存的分配请求是在所述虚拟机访问所述EPT映射表或所述IOMMU映射表中权限位为只读的struct page结构体物理页的映射时触发的。
[0035]在一种实施方式中,所述处理器具体用于:
[0036]所述对所述虚拟机分配新的物理内存是在所述EPT映射表或所述IOMMU映射表中重新建立空闲的struct page物理页的映射。
[0037]本申请再次提供一种内存回收装置,其包括:
[0038]信息获取模块,其用于获取虚拟机的内存管理元数据信息和解析该内存管理元数据信息的内存解析函数;
[0039]内存回收模块,其用于基于所述内存解析函数和所述内存管理元数据信息,回收所述虚拟机的空闲内存。
[0040]在一种实施方式中,所述装置还包括:
[0041]内存分配模块,其用于响应于所述虚拟机对已回收的空闲内存的分配请求,对所述虚拟机分配新的物理内存。
[0042]本申请通过对虚拟机的空闲的内存进行回收,从而避开了对设备侧DMA无法改变内存映射的问题,且无需额外的硬件或半虚拟化驱动程序。
[0043]本申请中,虚拟机除启动时向宿主机注入代码与数据之外,无任何其它改动,因此对虚拟机的侵入控制最小,很容易做到软件兼容;宿主机主动自发地对虚拟机本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存回收方法,其特征在于,包括:获取虚拟机的内存管理元数据信息和解析该内存管理元数据信息的内存解析函数;基于所述内存解析函数和所述内存管理元数据信息,回收所述虚拟机的空闲内存。2.根据权利要求1所述的方法,其特征在于,所述基于所述内存解析函数和所述内存管理元数据信息,回收所述虚拟机的空闲内存之后,所述方法还包括:响应于所述虚拟机对已回收的空闲内存的分配请求,对所述虚拟机分配新的物理内存。3.根据权利要求1所述的方法,其特征在于,所述内存解析函数为所述虚拟机编译后的BPF字节码。4.根据权利要求1所述的方法,其特征在于,所述获取虚拟机的内存管理元数据信息和解析该内存管理元数据信息的内存解析函数,包括:当所述虚拟机启动后对预先编写的所述内存解析函数的eBPF源程序进行编译时,接收所述虚拟机注入的内存管理元数据信息和编译后的所述内存解析函数的BPF字节码。5.根据权利要求2所述的方法,其特征在于,所述基于所述内存解析函数和所述内存管理元数据信息,回收所述虚拟机的空闲内存中,通过所述内存解析函数和所述内存管理元数据信息扫描出所述虚拟机的空闲内存后,回收所述虚拟机的空闲内存。6.根据权利要求5所述的方法,其特征在于,所述内存管理元数据信息,包括struct page物理页信息和对应的struct page结构体信息;所述通过所述内存解析函数和所述内存管理元数据信息扫描出所述虚拟机的空闲内存后,回收所述虚拟机的空闲内存,包括:扫描所述虚拟机的struct page物理页信息,调用所述内存解析函数解析与对应的struct page结构体信息,确定空闲的struct page...

【专利技术属性】
技术研发人员:王耀辉罗犇
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1