虚拟机内存管理的方法及设备技术

技术编号:27876844 阅读:12 留言:0更新日期:2021-03-31 00:55
本申请提供了虚拟机内存管理的方法及设备,方法包括:从分配给虚拟机的总内存中识别出虚拟机的非操作系统内存;总内存包括虚拟机的内存和虚拟机监控器的管理内存;虚拟机的内存包括虚拟机的操作系统的内存和虚拟机的非操作系统的内存;将虚拟机的非操作系统的内存作为可交换内存;将可交换内存中的数据存放到非易失性存储器。实施本申请有利于避免在虚拟机超量提交场景下计算机的性能的明显下降的问题,提升虚拟机运行的稳定性,提升用户使用体验。

【技术实现步骤摘要】
虚拟机内存管理的方法及设备
本申请涉及虚拟机
,尤其涉及虚拟机内存管理的方法及设备。
技术介绍
虚拟化技术为云场景的核心技术,在部署有多个虚拟机(VirtualMachine,VM)的系统中,多个虚拟机共享同一个物理主机(PhysicalMachine,PM)的物理资源,如处理器、内存、磁盘和网络设备等。从而可实现以VM为粒度将一台物理主机的物理资源共享给多个用户使用,使多个用户能在安全隔离的前提下方便灵活地使用物理资源,极大提升物理资源的利用率。在虚拟化技术中,分配给每台虚拟机的内存都是固定的。在云计算平台中,不管是从虚拟机还是从物理主机的维度来看,内存使用使用率相对都比较低,例如单台物理主机的内存使用率平均只有40%。通过增加同一个物理主机的虚拟机数量,能有效提升单台物理主机上的虚拟机密度和物理内存地使用率。在虚拟机超量提交(oversummit)场景下,为了保证各个虚拟机的性能和服务质量,虚拟机监控器会根据虚拟机不断变化的外部负载为各个虚拟机动态地分配内存资源。由于不同虚拟机的负载高峰时间可能不同,在绝大多数时间内,物理内存都是充裕的。但是在某些情况下,也可能会发生实际的内存需求大于物理内存的场景。当物理内存不足时,可利用一部分硬盘存储空间作为内存来使用,操作系统在给虚拟机分配的全部内存中选择部分内容存放到磁盘上。由于磁盘的访问速度通常比内存的访问速度慢几个数量级,当需要使用这部分内容时,计算机的性能明显下降,极大影响用户的使用体验。
技术实现思路
本申请实施例提供了虚拟机内存管理的方法及设备,有利于避免在虚拟机超量提交场景下计算机的性能的明显下降的问题,提升虚拟机运行的稳定性,提升用户使用体验。第一方面,本申请实施例提供了一种虚拟机内存管理的方法,方法包括:从分配给虚拟机(VM)的总内存中识别出所述虚拟机的非操作系统内存;该总内存包括虚拟机的内存和虚拟机监控器(Hypervisor)的内存;虚拟机的内存用于存放虚拟机的代码和和所述虚拟机运行过程中产生的数据,虚拟机监控器的管理内存用于存放虚拟机监控器管理虚拟机运行所需的数据;虚拟机的内存包括虚拟机的操作系统的内存和虚拟机的非操作系统的内存;虚拟机的操作系统的内存用于存放所述虚拟机的操作系统的代码和数据,虚拟机的非操作系统的内存表示所述虚拟机的内存中,除所述虚拟机的操作系统的内存之外剩余的内存;从所述总内存中识别出所述虚拟机的非操作系统的内存;将所述虚拟机的非操作系统的内存作为可交换内存;所述可交换内存表示允许进行内存交换的内存;将所述可交换内存中的数据存放到非易失性存储器。也就是说,在虚拟机启动时,物理主机的操作系统(HostOS)会给该虚拟机分配虚拟机的内存规格(即总内存),该内存规格表示允许该虚拟机申请使用的总内存大小。该内存规格涵盖了虚拟机的内存和Hypervisor的管理内存,虚拟机的内存为提供给虚拟机申请使用的内存大小,Hypervisor的管理内存为提供给Hypervisor申请使用的内存大小。例如,分配的内存规格为4G,其中虚拟机的内存的大小占了3.5G,Hypervisor的管理内存的大占了0.5G。当然,这里的示例仅用于解释本申请而非限定。此时,物理内存中并没有真正为该虚拟机实际分配如内存规格大小(例如,内存规格为3G)的存储空间,而是待虚拟机的内存和Hypervisor的管理内存实际申请内存时,再根据申请建立虚拟机的内存或和Hypervisor的管理内存与物理内存中的内存页的映射关系。其中,虚拟机的内存涵盖了虚拟机的操作系统的内存和虚拟机的非操作系统的内存。本文中,虚拟机的操作系统又可称为客户机操作系统(Guestoperatingsystem,GuestOS),GuestOS的内存为提供给GuestOS自身申请使用的内存大小。相应的,本文中虚拟机的非操作系统可相应称为非GuestOS,非GuestOS的内存为虚拟机的内存除GuestOS的内存之外剩余的内存。例如,虚拟机的内存大小为3.5G,其中GuestOS的内存大小占了1G,非GuestOS的内存大小占了2.5G。当然,这里的示例仅用于解释本申请而非限定。非GuestOS的内存例如可以提供给GuestOS中的应用程序申请使用,也就是说非GuestOS的内存可用于存放应用程序的代码和数据。Hypervisor的管理内存中存放的数据例如可以包括描述各种硬件设备(比如CPU、内存、网卡、磁盘、显卡等设备)的数据结构、每个硬件设备各自的管理信息等。以CPU(即centralprocessingunit,中央处理器)为例,其管理信息里面会记录包括CPU的数量、模拟的CPU硬件架构描述等信息。Hypervisor的管理内存中存放的数据Hypervisor的管理内存例如还可以包括显示用缓存、输入输出(Input/Output,IO)用缓存等缓存数据。Hypervisor可用于协调虚拟机对内存、CPU、网卡、磁盘等这些硬件设备的共享访问,而虚拟机启动时每个虚拟机都有对应的数据结构、缓存等数据需要存储,所以要创建虚拟机时,需要在分配的内存规格中涵盖虚拟机内存和Hypervisor的管理内存。虚拟机的操作系统的内存用于存放所述虚拟机的操作系统的代码和数据,其中,虚拟机操作系统的内存存放的数据例如可以是编译库、应用程序运行需要的堆栈数据、GuestOS内核模块运行时需要的数据,等等。虚拟机的非操作系统的内存例如可用于存放运行在GuestOS上的各种应用程序的相关代码和数据。应用程序的具体数据例如可以包括数据库程序的加载到内存中的数据、文字处理程序打开的文件数据,等等。本文中,为了描述方便,有时也将分配给VM的总内存简称为“虚拟机进程内存”,将Hypervisor的管理内存简称为“Hypervisor管理内存”,将VM的内存简称为“虚拟机内存”,将VM的操作系统的内存简称为“GuestOS内存”,将VM的非操作系统的内存称为“非GuestOS内存”或者称为虚拟机常规(VirtualMachineNormal,VM-Normal)内存。本申请方案中,限定非GuestOS内存为可交换内存,当物理内存不足时,仅允许可交换内存进行内存交换,即将可交换内存中的部分或全部数据存放到非易失性存储器(例如磁盘)的交换空间,而不允许其他的内存(例如Hypervisor管理内存以及GuestOS内存)进行内存交换。这样,一方面,通过基于一部分内存而不是全局的内存进行内存交换,从而能释放出一定的内存空间,优化系统内存占用;另一方面,诸如Hypervisor管理内存或GuestOS内存中的数据如果被交换到磁盘,当需要重新访问这部分的内存页时,从磁盘对这部分的数据进行访问会导致整个虚拟机进程长时间地等待数据访问,进而导致出现用户业务进程大幅波动的严重性能问题甚至稳定性问题,而本申请由于只允许诸如应用程序的内存等非GuestOS内存被交换到磁盘,而非GuestOS内存对系统性能的影响相对较小,业务迟滞时用户可接受性高,所以能够避免在虚拟机超量提交场景下计算机的性能本文档来自技高网...

【技术保护点】
1.一种虚拟机内存管理的方法,其特征在于,所述方法包括:/n从分配给虚拟机的总内存中识别出所述虚拟机的非操作系统内存;所述总内存包括所述虚拟机的内存和虚拟机监控器的管理内存;所述虚拟机的内存用于存放所述虚拟机的代码和所述虚拟机运行过程中产生的数据,所述虚拟机监控器的管理内存用于存放所述虚拟机监控器管理所述虚拟机所需的数据;所述虚拟机的内存包括所述虚拟机的操作系统的内存和所述虚拟机的非操作系统的内存;所述虚拟机的操作系统的内存用于存放所述虚拟机的操作系统的代码和数据,所述虚拟机的非操作系统的内存表示所述虚拟机的内存中,除所述虚拟机的操作系统的内存之外剩余的内存;/n将所述虚拟机的非操作系统的内存作为可交换内存;所述可交换内存表示允许进行内存交换的内存;/n将所述可交换内存中的数据存放到非易失性存储器。/n

【技术特征摘要】
1.一种虚拟机内存管理的方法,其特征在于,所述方法包括:
从分配给虚拟机的总内存中识别出所述虚拟机的非操作系统内存;所述总内存包括所述虚拟机的内存和虚拟机监控器的管理内存;所述虚拟机的内存用于存放所述虚拟机的代码和所述虚拟机运行过程中产生的数据,所述虚拟机监控器的管理内存用于存放所述虚拟机监控器管理所述虚拟机所需的数据;所述虚拟机的内存包括所述虚拟机的操作系统的内存和所述虚拟机的非操作系统的内存;所述虚拟机的操作系统的内存用于存放所述虚拟机的操作系统的代码和数据,所述虚拟机的非操作系统的内存表示所述虚拟机的内存中,除所述虚拟机的操作系统的内存之外剩余的内存;
将所述虚拟机的非操作系统的内存作为可交换内存;所述可交换内存表示允许进行内存交换的内存;
将所述可交换内存中的数据存放到非易失性存储器。


2.根据权利要求1所述的方法,其特征在于,所述从分配给虚拟机的总内存中识别出所述虚拟机的非操作系统的内存,包括:
从所述分配给所述虚拟机的总内存中,识别出所述虚拟机的内存;
从所述虚拟机的内存中,识别出所述虚拟机的非操作系统的内存作为所述可交换内存。


3.根据权利要求2所述的方法,其特征在于,所述从所述分配给所述虚拟机的总内存中,识别出所述虚拟机的内存之后,还包括:
对所述虚拟机的操作系统的内存和所述虚拟机的非操作系统的内存均增加标记信息;所述标记信息表示允许被标记的内存中的数据进行所述内存交换;
相应的,所述从所述虚拟机的内存中,识别出所述虚拟机的非操作系统的内存作为所述可交换内存,包括:
从所述虚拟机的内存中,识别出所述虚拟机的非操作系统的内存;删除所述虚拟机的操作系统的内存的标记信息,同时保留所述虚拟机的非操作系统的内存的标记信息;
相应的,所述将所述可交换内存中的数据存放到非易失性存储器,包括:
将所述具有所述标记信息的内存中的数据存放到非易失性存储器。


4.根据权利要求2或3所述的方法,其特征在于,所述从所述分配给所述虚拟机的总内存中,识别出所述虚拟机的内存,包括:
确定所述分配给所述虚拟机的总内存中的不同内存段的内存用途;所述内存用途包括供所述虚拟机使用和供所述虚拟机监控器使用;
将供所述虚拟机使用的所有内存段作为所述虚拟机的内存。


5.根据权利要求2-4任一项所述的方法,其特征在于,所述从所述虚拟机的内存中,识别出所述虚拟机的非操作系统的内存作为所述可交换内存,包括:
申请所述虚拟机的内存中的空闲内存,获得所有空闲内存的内存地址;
将所述所有空闲内存的内存地址对应的内存作为所述虚拟机的非操作系统的内存,并用作所述可交换内存。


6.根据权利要求2-5任一项所述的方法,其特征在于,
所述从所述分配给所述虚拟机的总内存中,识别出所述虚拟机的内存,包括:
在所述虚拟机的启动阶段,从所述分配给所述虚拟机的总内存中,识别出所述虚拟机的内存;
所述从所述虚拟机的内存中,识别出所述虚拟机的非操作系统的内存作为所述可交换内存,包括:
在所述虚拟机启动后的运行阶段,从所述虚拟机的内存中,识别出所述虚拟机的非操作系统的内存作为所述可交换内存。


7.根据权利要求1-6任一项所述的方法,其特征在于,所述将所述可交换内存中的数据存放到非易失性存储器,包括:
当所述虚拟机所在物理主机的物理内存处于满负载状态时,将所述可交换内存中的数据存放到非易失性存储器;所述满负载状态表示所述物理内存无空闲空间存储新的内存页。


8.根据权利要求1-6任一项所述的方法,其特征在于,所述将所述可交换内存中的数据存放到非易失性存储器,包括:
当所述虚拟机所在物理主机的物理内存中剩余可用的内存页与所述物理内存总内存页之间的比率达到预设阈值时,将所述可交换内存中的数据存放到非易失性存储器。


9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括:
在所述虚拟机申请分配内存时,确定所述申请分配的内存的内存类型;
当内存类型属于所述虚拟机监控器的管理内存或所述虚拟机的操作系统的内存时,不触发内存回收;
当内存类型属于所述虚拟机的非操作系统的内存时,触发内存回收。


10.一种虚拟机内存管理的方法,其特征在于,所述方法包括:
从分配给虚拟机的总内存中识别出所述虚拟机的内存;所述总内存包括所述虚拟机的内存和虚拟机监控器的管理内存;所述虚拟机的内存用于存放所述虚拟机的代码和所述虚拟机运行过程中产生的数据,所述虚拟机监控器的管理内存用于存放所述虚拟机监控器管理所述虚拟机所需的数据;
将所述虚拟机的内存作为可交换内存;所述可交换内存表示允许进行内存交换的内存;
将所述可交换内存中的数据存放到非易失性存储器。


11.一种用于虚拟机内存管理的设备,其特征在于,所述设备包括:
可交换内存确定模块,用于从分配给虚拟机的总内存中识别出所述虚拟机...

【专利技术属性】
技术研发人员:王志钢蒋毅飞马剑
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1