CN111651236A - 虚拟机内存优化处理方法及相关装置 - Google Patents

虚拟机内存优化处理方法及相关装置 Download PDF

Info

Publication number
CN111651236A
CN111651236A CN202010394370.3A CN202010394370A CN111651236A CN 111651236 A CN111651236 A CN 111651236A CN 202010394370 A CN202010394370 A CN 202010394370A CN 111651236 A CN111651236 A CN 111651236A
Authority
CN
China
Prior art keywords
memory
virtual machine
page
target
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010394370.3A
Other languages
English (en)
Inventor
韩宝英
郑松坚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010394370.3A priority Critical patent/CN111651236A/zh
Publication of CN111651236A publication Critical patent/CN111651236A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Abstract

本申请提供一种虚拟机内存优化处理方法及相关装置,属于云计算技术领域。该方法包括:实时监测宿主机上虚拟机的内存使用总量,以确定所述内存使用总量与预设使用量的差值是否小于预定阈值;当所述差值小于预定阈值时,从分配给所述虚拟机的物理内存中确定目标内存页面;将所述目标内存页面的内存数据压缩存储至预定位置,以回收所述目标内存页面。本申请的实施例能够在虚拟机内存超量分配的基础上,极大的避免虚拟机使用内存过大触发宿主机OOM Killer机制,导致虚拟机宕机,提高了资源的利用率和虚拟机的健壮性。

Description

虚拟机内存优化处理方法及相关装置
技术领域
本申请涉及云计算技术领域,具体而言,涉及一种虚拟机内存优化处理方法及相关装置。
背景技术
云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructureas a Service,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。
在云计算产品中,虚拟机内存最终使用宿主机的内存资源,为了提高资源的利用率,往往需要对内存资源进行超量分配,即分配给虚拟机的内存大于实际的宿主机内存量。但Linux内核有保护机制,当虚拟机实际内存使用量总和大于宿主机实际内存时,宿主机的操作系统OOM(over-commit memory)Killer机制会选择内存使用最大的进程杀掉(往往是虚拟机进程),此时,会导致虚拟机异常宕机,影响运行在其上的业务。为了避免这种情况的发生,生产环境中往往禁止内存的超量分配,这样又存在内存的资源利用率不高的问题,无法发挥出云计算的优势。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本申请实施例的目的在于提供一种虚拟机内存优化处理方法及装置,其能够在虚拟机内存超量分配的基础上,极大地避免因虚拟机使用内存过大触发宿主机OOM Killer机制而导致虚拟机宕机,提高了资源的利用率和虚拟机的健壮性。
根据本申请的一个实施例,一种虚拟机内存优化处理方法可以包括:实时监测宿主机上虚拟机的内存使用总量,以确定所述内存使用总量与预设使用量的差值是否小于预定阈值;当所述差值小于预定阈值时,从分配给所述虚拟机的物理内存中确定目标内存页面;将所述目标内存页面的内存数据压缩存储至预定位置,以回收所述目标内存页面。
根据本申请的一个实施例,一种虚拟机内存优化处理装置可以包括:监控模块,用于实时监测宿主机上虚拟机的内存使用总量,以确定所述内存使用总量与预设使用量的差值是否小于预定阈值;确定模块,用于当所述差值小于预定阈值时,从分配给所述虚拟机的物理内存中确定目标内存页面;优化模块,用于将所述目标内存页面的内存数据压缩存储至预定位置,以回收所述目标内存页面。
在本申请的一些实施例中,所述确定模块还被配置成:获取分配给所述虚拟机的物理内存中各内存页面的使用频率信息;根据所述使用频率信息,将使用频率低于预定频率阈值的内存页面确定为所述目标内存页面。
在本申请的一些实施例中,所述确定模块还被配置成:扫描分配给所述虚拟机的物理内存中的各内存页面,并比较各所述内存页面存储的内存数据,得到存储重复内存数据的内存页面;将所述存储重复内存数据的内存页面,共同确定为所述目标内存页面。
在本申请的一些实施例中,所述确定模块还被配置成:当所述差值小于预定阈值时,确定所述宿主机是否开启了内存保护机制;当所述宿主机开启了内存保护机制,从分配给所述虚拟机的物理内存中确定目标内存页面。
在本申请的一些实施例中,所述优化模块还被配置成:将所述目标内存页面的内存数据进行压缩,得到第一内存压缩数据;将所述第一内存压缩数据存储至预定内存位置,并将所述目标内存页面的页面标识存储至预设索引列表,以回收所述目标内存页面;所述预定内存位置为所述宿主机上虚拟机共享的内存区域。
在本申请的一些实施例中,还包括恢复模块被配置成:当所述虚拟机所请求内存页面的页面标识位于所述预设索引列表中时,从所述预定内存位置解压所述页面标识对应的第一内存压缩数据,得到第一内存解压数据;将所述第一内存解压数据放回至分配给所述虚拟机的物理内存中。
在本申请的一些实施例中,所述优化模块还被配置成:将所述目标内存页面的内存数据进行压缩,得到第二内存压缩数据;将所述第二内存压缩数据存储至硬盘,并在预设位置列表中记录所述目标内存页面的内存数据在所述硬盘中的硬盘位置,以回收所述目标内存页面。
在本申请的一些实施例中,还包括恢复模块被配置成:当所述虚拟机所请求内存页面的页面标识位于所述预设位置列表中时,从所述预设位置列表中获取所述页面标识对应的硬盘位置;从所述页面标识对应的硬盘位置解压所述页面标识对应的第二内存压缩数据,得到第二内存解压数据;将所述第二内存解压数据放回至分配给所述虚拟机的物理内存中。
根据本申请的另一实施例,一种电子设备可以包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行如上所述的方法。
根据本申请的另一实施例,一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行如上所述的方法。
根据本申请的实施例,能够通过实时监测宿主机上虚拟机内存使用总量与预设使用量的差值是否小于预定阈值,判断宿主机上虚拟机的内存使用量是否过高;而在该差值小于预定阈值时,判断到内存使用量过高,极有可能会触发宿主机OOM Killer机制,导致虚拟机的宕机。此时,从分配给虚拟机的物理内存中确定目标内存页面,并将该目标内存页面的内存数据压缩存储至预定位置,以回收该目标内存页面。可以在宿主机上虚拟机内存超量分配的基础上,有效减少虚拟机运行时的物理内存使用量,使得生产环境中可分配的内存量增加。有效降低虚拟机内存超量分配导致的宿主机OOM Killer机制触发,导致虚拟机被终止的概率,提高了虚拟机的健壮性。
本申请的其他特征和优点将通过下面结合附图的详细描述变得显然,或部分地通过本申请的实践而习得。
应当理解,以上的一般描述和后文的详细描述仅是示例性和解释性的,并不旨在限制本申请。
附图说明
图1示出了可以应用本申请实施例的系统的示意图。
图2示出了根据本申请的一个实施例的虚拟机内存优化处理方法的流程图。
图3示出了根据本申请的又一个实施例的虚拟机内存优化处理方法的流程图。
图4示出了根据本申请的又一个实施例的虚拟机内存优化处理方法的流程图。
图5示出了根据本申请的又一个实施例的虚拟机内存优化处理方法的流程图。
图6示出了根据本申请的又一个实施例的虚拟机内存优化处理方法的流程图。
图7示出了根据本申请的又一个实施例的虚拟机内存优化处理方法的流程图。
图8A-8B示出了一个实施例的虚拟机内存优化处理的应用场景中的终端界面变化图。
图9示出了根据本申请的一个实施例的虚拟机内存优化处理装置的框图。
图10示出了根据本申请的一个实施例的电子设备的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了可以应用本申请实施例的系统100的示意图。
如图1所示,系统100可以包括宿主机101以及运行在宿主机101上的虚拟机102、虚拟机103、虚拟化平台104、内存监控模块105、阈值管理模块106及内存压缩模块107。
宿主机101为一种物理主机,可以是多个服务器组成的服务器集群或者多个终端组成的区块链网络等。
虚拟机102及虚拟机103为在宿主机101上运行的虚拟设备,虚拟机102及虚拟机103共享宿主机101的物理内存MA(Machine Memory)。可以理解,宿主机101上运行的虚拟机数量可以根据需求设定,例如可以是5个或者10个虚拟机等。
虚拟化平台104也就是虚拟机监视器VMM(Virtual Machine Monitor)。虚拟化平台104管理着虚拟机102及虚拟机103内存(分配给虚拟机的物理内存)到宿主机101内存的映射,可以监控虚拟机102及虚拟机103的内存分页的使用频率信息。
内存监控模块105可以实时的监测宿主机101上的虚拟机102及虚拟机103内存使用总量(虚拟机102内存使用量及虚拟机103内存使用量之和),并与阈值管理模块106中的预设使用量进行比较,确定内存使用总量与预设使用量的差值是否小于预定阈值,以判断内存使用总量是否过高。
内存压缩模块107可以对分配给虚拟机102或者虚拟机103的物理内存中的内存分页进行压缩回收处理,例如,可以将目标内存页面的内存数据压缩存储至预定位置,以回收该目标内存页面。
应该理解,图1中的宿主机、虚拟机的数目仅仅是示意性的。根据实现需要,可以具有任意数目的宿主机、虚拟机。
在本申请的一个实施例中,宿主机101可以实时监测宿主机上虚拟机的内存使用总量,以确定该内存使用总量与预设使用量的差值是否小于预定阈值;当该差值小于预定阈值时,从分配给该虚拟机的物理内存中确定目标内存页面;将该目标内存页面的内存数据压缩存储至预定位置,以回收该目标内存页面。
图2示意性示出了根据本申请的一个实施例的虚拟机内存优化处理方法的流程图。该虚拟机内存优化处理方法的执行主体可以是具有计算处理功能的电子设备,比如图1中所示的宿主机101。如图2所示,该虚拟机内存优化处理方法可以包括步骤S210至步骤S230。
步骤S210,实时监测宿主机上虚拟机的内存使用总量,以确定该内存使用总量与预设使用量的差值是否小于预定阈值;
步骤S220,当该差值小于预定阈值时,从分配给该虚拟机的物理内存中确定目标内存页面;
步骤S230,将该目标内存页面的内存数据压缩存储至预定位置,以回收该目标内存页面。
下面描述虚拟机内存优化处理时,所进行的各步骤的具体过程。
在步骤S210中,实时监测宿主机上虚拟机的内存使用总量,以确定该内存使用总量与预设使用量的差值是否小于预定阈值。
本示例的实施方式中,宿主机是一种物理主机,本身有物理内存空间,可以用HPA表示。
虚拟机是将一台宿主机系统虚拟化为一台或多台虚拟计算机系统得到的。每个虚拟机都拥有自己的虚拟硬件(如CPU,内存和设备等),来提供一个独立的虚拟机执行环境。虚拟机本身有虚拟地址空间,可以用GVA表示。
虚拟化平台是一个虚拟化层,管理着虚拟机内存到宿主机内存的映射,可以维护多个高效的、隔离的虚拟机,使得每个虚拟机支持用户直接去访问真实硬件。所以,该虚拟化平台的虚拟化模拟使得宿主机上所有虚拟机同时认为自己独占整个内存空间(虚拟机中的操作系统认为自己仍然是独占一个宿主机系统在运行),该独占的整个内存空间也就是客户机物理地址,可以用GPA表示。
因此,虚拟机里面的进程访问宿主机上的物理内存,就是客户机物理地址GPA->物理内存空间HPA的映射,虚拟化平台可以截获虚拟机对客户机物理地址GPA的访问,并根据所记录的映射关系,将客户机物理地址GPA转换成宿主机物理内存空间HPA。
宿主机上的虚拟机共享宿主机物理内存,虚拟机在运行时实时使用宿主机物理内存。为了提高宿主机物理内存资源的利用率,往往需要对内存资源进行超量分配,即分配给虚拟机的内存大于实际的宿主机物理内存总量。例如,VM1和VM2两个虚拟机共享宿主机的物理内存,假设宿主机的物理内存为100G,我们设置超分比1:2,即假设给VM1分配100G,给VM2分配100G,共分配200G的内存,超过了宿主机物理内存100G,这样可以使得VM1和VM2两个虚拟机尽可能的使用宿主机的所有物理内存,提高内存资源的利用率。
而对内存资源进行超量分配,当虚拟机内部进程压力上升时,内存使用量会急剧增大。宿主机上虚拟机的内存使用总量会急剧增大,其中,内存使用总量即宿主机上所有虚拟机实时的内存使用量的总和。例如,假设VM1和VM2两个虚拟机在同一时刻内存使用量都为80G,则VM1和VM2一共需要使用的宿主机物理内存的内存使用总量为:80G+80G=160G,这就超过的宿主机的实际内存100G,会导致宿主机OOM(over-commit memory)Killer机制的触发,宿主机操作系统会随机杀死一个虚拟机,导致虚拟机宕机。
通过实时监测宿主机上虚拟机的内存使用总量,确定内存使用总量与预设使用量的差值是否小于预定阈值(例如,0.5或者1等),可以判断宿主机上虚拟机的内存使用量是否过高,即是否接近预设使用量(可以根据实际情况配置,例如,80G等,接近该预设使用量极有可能会触发宿主机OOM Killer机制)。可以及时判断出是否具有触发宿主机OOMKiller机制,导致虚拟机的宕机的风险。进而可以及时通过后续步骤采取措施,在宿主机上虚拟机内存超量分配的基础上,避免虚拟机的宕机。
可以理解,宿主机上可以根据需求设置任意数量的虚拟机,例如,一个宿主机上可以包括2个或者5个虚拟机等。
在步骤S220中,当该差值小于预定阈值时,从分配给该虚拟机的物理内存中确定目标内存页面。
本示例的实施方式中,分配给该虚拟机的物理内存(即工作集)是某个虚拟机正在使用的物理内存,一个私有工作集代表这部分物理内存专属于某一个虚拟机。虚拟机中工作集分页的某些内存页面似乎不常被使用或者重复使用(目标内存页面),可以将这些内存页面回收以供再次利用。
当该差值小于预定阈值时,可以判断宿主机上虚拟机的内存使用量过高,即接近预设使用量。进而,从分配给该虚拟机的物理内存中确定目标内存页面,例如,例如可以通过虚拟化平台确定出使用频率较低的内存页面,或者虚拟化平台可以扫描出存储重复内存数据的内存页面。进而可以对目标内存页面在后续步骤进行压缩处理,以增加宿主机上可分配的内存。
一种实施例中,参考图3所示,步骤S220中,从分配给该虚拟机的物理内存中确定目标内存页面,包括:
步骤S2201,获取分配给虚拟机的物理内存中各内存页面的使用频率信息;
步骤S2202,根据使用频率信息,将使用频率低于预定频率阈值的内存页面确定为目标内存页面。
虚拟化平台(VMM)可以观察每个内存页面的使用频率信息(例如,多长时间使用一次或者闲置了多长时间等),当观察到一个内存页面长时间不活跃时,也即该内存页面的使用频率低于预定频率阈值(可以根据情况设定),将使用频率低于预定频率阈值的内存页面确定为目标内存页面,可以采取措施对不常用的内存进行处理,可以在尽可能保证虚拟机的正常工作的情况下进行回收处理。
一种实施例中,参考图4所述,步骤S220中,从分配给该虚拟机的物理内存中确定目标内存页面,包括:
步骤S2203,扫描分配给虚拟机的物理内存中的各内存页面,并比较各内存页面存储的内存数据,得到存储重复内存数据的内存页面;
步骤S2204,将存储重复内存数据的内存页面,共同确定为目标内存页面。
虚拟化平台可以通过基于内核的虚拟机KVM(Kernel-based Virtual Machine)借助于Linux内核中的同页合并KSM(Kernel Same-page Merging)内核扫描分配给虚拟机的物理内存中的各内存页面,并比较各内存页面存储的内存数据,找到虚拟机间存储重复内存数据的内存页面。其中,KVM(Kernel-based Virtual Machine)是一种用于Linux内核中的虚拟化基础设施,可以通过简单地加载内核模块而将Linux内核转换为一个虚拟化平台。
将存储重复内存数据的内存页面,共同确定为目标内存页面,可以将这些内存页面压缩合并处理为一个被各相关虚拟机共享的单独页面,降低内存占用。
一种实施例中,参考图5所示,步骤S220,当差值小于预定阈值时,从分配给虚拟机的物理内存中确定目标内存页面,包括:
步骤S2205,当该差值小于预定阈值时,确定宿主机是否开启了内存保护机制;
步骤S2206,当宿主机开启了内存保护机制,从分配给虚拟机的物理内存中确定目标内存页面。
内存保护机制即内存超量分配时保护虚拟机不被宿主机OOM Killer机制杀掉进程的机制。用户可以灵活地根据需求决定启动该内存保护机制,对宿主机上的虚拟机进行内存优化保护。
参考图8A-图8B所示,在运维平台中,管理员可以查看用户界面,操作宿主机,点击图8A中所示的内存超分保护的设置按钮,点击设置按钮310中任一个,也就是宿主机a-d中任一个对应的内存超分保护的设置按钮,可以弹出图8B中所示的确定界面中的确定按钮320,点击确定按钮320,该节点开始启动了目标宿主机的内存保护机制。
进而,在该差值小于预定阈值,说明有宿主机OOM Killer机制杀掉进程的风险时,通过确定宿主机是否开启了内存保护机制,如果开启了内存保护机制,从分配给虚拟机的物理内存中确定目标内存页面,就可以针对该目标内存页面,根据需求进行虚拟机内存的优化处理。
在步骤S230中,将该目标内存页面的内存数据压缩存储至预定位置,以回收该目标内存页面。
本示例的实施方式中,预定位置可以是在内存中分配一块区域用于储存压缩后的内存数据的区域,也可以是硬盘。
通过将该目标内存页面的内存数据压缩存储至预定位置,可以在宿主机上虚拟机内存超量分配的基础上,有效减少虚拟机运行时的物理内存使用量,使得生产环境中可分配的内存量增加。有效降低虚拟机内存超量分配导致的宿主机OOM Killer机制触发,导致虚拟机被终止的概率,提高了虚拟机的健壮性。
一种实施例中,参考图6所示,步骤S230,将该目标内存页面的内存数据压缩存储至预定位置,以回收该目标内存页面,包括:
步骤S2301,将目标内存页面的内存数据进行压缩,得到第一内存压缩数据;
步骤S2302,将第一内存压缩数据存储至预定内存位置,并将目标内存页面的页面标识存储至预设索引列表,以回收目标内存页面;预定内存位置为宿主机上虚拟机共享的内存区域。
可以采用一个异步进程对目标内存页面的内存数据进行压缩,将第一内存压缩数据存储至预定内存位置(在内存中分配一块区域用于储存压缩后的内存数据的区域),其中,压缩时可以使用可逆的压缩算法,例如lZ4等。在实践中,压缩过的内存可以减小60%的大小,能让宿主机系统在开启同样多的虚拟机时拥有更多的可用内存。
将目标内存页面的页面标识存储至预设索引列表,虚拟化平台VMM就会知道目标内存页面已压缩过且随时可被重新写入分配给虚拟机的物理内存,便于基于预设索引列表查询获取目标内存页面的第一内存压缩数据。
一种实施例中,还包括:
当虚拟机所请求内存页面的页面标识位于预设索引列表中时,从预定内存位置解压该页面标识对应的第一内存压缩数据,得到第一内存解压数据;
将该第一内存解压数据放回至分配给虚拟机的物理内存中。
当虚拟机请求某个内存页面时,虚拟化平台VMM发现虚拟机所请求内存页面的页面标识位于预设索引列表中时,可以确定虚拟机请求的内存页面是当前已压缩的页面。
虚拟化平台VMM只需从预定内存位置解压该页面标识对应的第一内存压缩数据,得到第一内存解压数据,并将该第一内存解压数据放回至分配给虚拟机的物理内存中,实现内存数据的回写,从而保证虚拟机的正常工作。其中,可以为解压缩添加并行处理能力,提升内存分页回写的速度。
一种实施例中,参考图7所示,步骤S230,将该目标内存页面的内存数据压缩存储至预定位置,以回收该目标内存页面,包括:
步骤S2303,将目标内存页面的内存数据进行压缩,得到第二内存压缩数据;
步骤S2304,将第二内存压缩数据存储至硬盘,并在预设位置列表中记录目标内存页面的内存数据在硬盘中的硬盘位置,以回收目标内存页面。
可以采用一个异步进程对目标内存页面的内存数据进行压缩,将第二内存压缩数据存储至硬盘,即将内存置换到硬盘,因为硬盘空间大,放大了内存存在的空间。宿主机系统在开启同样多的虚拟机时拥有更多的可分配内存。
预设位置列表中记录目标内存页面的内存数据在硬盘中的硬盘位置,预设位置列表中可以将页面标识与硬盘位置一一对应保存。虚拟化平台VMM可以基于预设位置列表准确查询获取目标内存页面的第二内存压缩数据。
一种实施例中,还包括:
当虚拟机所请求内存页面的页面标识位于预设位置列表中时,从预设位置列表中获取页面标识对应的硬盘位置;
从页面标识对应的硬盘位置解压页面标识对应的第二内存压缩数据,得到第二内存解压数据;
将第二内存解压数据放回至分配给虚拟机的物理内存中。
当虚拟机请求某个内存页面时,虚拟化平台VMM发现虚拟机所请求内存页面的页面标识位于预设位置列表中时,可以确定虚拟机请求的内存页面是当前已置换到硬盘的页面。
虚拟化平台VMM只需根据预设位置列表获取该页面标识对应的硬盘位置,进而从页面标识对应的硬盘位置解压第二内存压缩数据,得到第二内存解压数据,并将该第二内存解压数据放回至分配给虚拟机的物理内存中,实现内存数据的回写,从而保证虚拟机的正常工作。其中,可以为解压缩添加并行处理能力,提升内存分页回写的速度。
图9示出了根据本申请的一个实施例的虚拟机内存优化处理装置的框图。
如图9所示,虚拟机内存优化处理装置400可以包括监控模块410、确定模块420及优化模块430。
监控模块410可以用于实时监测宿主机上虚拟机的内存使用总量,以确定内存使用总量与预设使用量的差值是否小于预定阈值;确定模块420可以用于当该差值小于预定阈值时,从分配给虚拟机的物理内存中确定目标内存页面;优化模块430可以用于将该目标内存页面的内存数据压缩存储至预定位置,以回收该目标内存页面。
在本申请的一些实施例中,所述确定模块还被配置成:获取分配给虚拟机的物理内存中各内存页面的使用频率信息;根据使用频率信息,将使用频率低于预定频率阈值的内存页面确定为目标内存页面。
在本申请的一些实施例中,所述确定模块还被配置成:扫描分配给虚拟机的物理内存中的各内存页面,并比较各内存页面存储的内存数据,得到存储重复内存数据的内存页面;将存储重复内存数据的内存页面,共同确定为目标内存页面。
在本申请的一些实施例中,所述确定模块还被配置成:当差值小于预定阈值时,确定宿主机是否开启了内存保护机制;当宿主机开启了内存保护机制,从分配给虚拟机的物理内存中确定目标内存页面。
在本申请的一些实施例中,所述优化模块还被配置成:将目标内存页面的内存数据进行压缩,得到第一内存压缩数据;将第一内存压缩数据存储至预定内存位置,并将目标内存页面的页面标识存储至预设索引列表,以回收目标内存页面;预定内存位置为所述宿主机上虚拟机共享的内存区域。
在本申请的一些实施例中,还包括恢复模块被配置成:当虚拟机所请求内存页面的页面标识位于预设索引列表中时,从预定内存位置解压该页面标识对应的第一内存压缩数据,得到第一内存解压数据;将第一内存解压数据放回至分配给虚拟机的物理内存中。
在本申请的一些实施例中,所述优化模块还被配置成:将目标内存页面的内存数据进行压缩,得到第二内存压缩数据;将第二内存压缩数据存储至硬盘,并在预设位置列表中记录目标内存页面的内存数据在硬盘中的硬盘位置,以回收目标内存页面。
在本申请的一些实施例中,还包括恢复模块被配置成:当虚拟机所请求内存页面的页面标识位于预设位置列表中时,从预设位置列表中获取页面标识对应的硬盘位置;从页面标识对应的硬盘位置解压页面标识对应的第二内存压缩数据,得到第二内存解压数据;将第二内存解压数据放回至分配给虚拟机的物理内存中。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
图10示意性示出了根据本申请的一个实施例的电子设备的框图。
需要说明的是,图10示出的电子设备500仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图10所示,电子设备500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机存取存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统操作所需的各种程序和数据。CPU501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN(局域网)卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本申请的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的实施例,而可以在不脱离其范围的情况下进行各种修改和改变。

Claims (10)

1.一种虚拟机内存优化处理方法,其特征在于,包括:
实时监测宿主机上虚拟机的内存使用总量,以确定所述内存使用总量与预设使用量的差值是否小于预定阈值;
当所述差值小于预定阈值时,从分配给所述虚拟机的物理内存中确定目标内存页面;
将所述目标内存页面的内存数据压缩存储至预定位置,以回收所述目标内存页面。
2.根据权利要求1所述的方法,其特征在于,所述从分配给所述虚拟机的物理内存中确定目标内存页面,包括:
获取分配给所述虚拟机的物理内存中各内存页面的使用频率信息;
根据所述使用频率信息,将使用频率低于预定频率阈值的内存页面确定为所述目标内存页面。
3.根据权利要求1所述的方法,其特征在于,所述从分配给所述虚拟机的物理内存中确定目标内存页面,包括:
扫描分配给所述虚拟机的物理内存中的各内存页面,并比较各所述内存页面存储的内存数据,得到存储重复内存数据的内存页面;
将所述存储重复内存数据的内存页面,共同确定为所述目标内存页面。
4.根据权利要求1所述的方法,其特征在于,所述当所述差值小于预定阈值时,从分配给所述虚拟机的物理内存中确定目标内存页面,包括:
当所述差值小于预定阈值时,确定所述宿主机是否开启了内存保护机制;
当所述宿主机开启了内存保护机制,从分配给所述虚拟机的物理内存中确定目标内存页面。
5.根据权利要求1所述的方法,其特征在于,所述将所述目标内存页面的内存数据压缩存储至预定位置,以回收所述目标内存页面,包括:
将所述目标内存页面的内存数据进行压缩,得到第一内存压缩数据;
将所述第一内存压缩数据存储至预定内存位置,并将所述目标内存页面的页面标识存储至预设索引列表,以回收所述目标内存页面;所述预定内存位置为所述宿主机上虚拟机共享的内存区域。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述虚拟机所请求内存页面的页面标识位于所述预设索引列表中时,从所述预定内存位置解压所述页面标识对应的第一内存压缩数据,得到第一内存解压数据;
将所述第一内存解压数据放回至分配给所述虚拟机的物理内存中。
7.根据权利要求1所述的方法,其特征在于,所述将所述目标内存页面的内存数据压缩存储至预定位置,以回收所述目标内存页面,包括:
将所述目标内存页面的内存数据进行压缩,得到第二内存压缩数据;
将所述第二内存压缩数据存储至硬盘,并在预设位置列表中记录所述目标内存页面的内存数据在所述硬盘中的硬盘位置,以回收所述目标内存页面。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述虚拟机所请求内存页面的页面标识位于所述预设位置列表中时,从所述预设位置列表中获取所述页面标识对应的硬盘位置;
从所述页面标识对应的硬盘位置解压所述页面标识对应的第二内存压缩数据,得到第二内存解压数据;
将所述第二内存解压数据放回至分配给所述虚拟机的物理内存中。
9.一种虚拟机内存优化处理装置,其特征在于,包括:
监控模块,用于实时监测宿主机上虚拟机的内存使用总量,以确定所述内存使用总量与预设使用量的差值是否小于预定阈值;
确定模块,用于当所述差值小于预定阈值时,从分配给所述虚拟机的物理内存中确定目标内存页面;
优化模块,用于将所述目标内存页面的内存数据压缩存储至预定位置,以回收所述目标内存页面。
10.一种电子设备,其特征在于,包括:存储器,存储有计算机可读指令;处理器,读取存储器存储的计算机可读指令,以执行如上所述的方法。
CN202010394370.3A 2020-05-11 2020-05-11 虚拟机内存优化处理方法及相关装置 Pending CN111651236A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010394370.3A CN111651236A (zh) 2020-05-11 2020-05-11 虚拟机内存优化处理方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010394370.3A CN111651236A (zh) 2020-05-11 2020-05-11 虚拟机内存优化处理方法及相关装置

Publications (1)

Publication Number Publication Date
CN111651236A true CN111651236A (zh) 2020-09-11

Family

ID=72346768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010394370.3A Pending CN111651236A (zh) 2020-05-11 2020-05-11 虚拟机内存优化处理方法及相关装置

Country Status (1)

Country Link
CN (1) CN111651236A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506665A (zh) * 2020-12-21 2021-03-16 中电福富信息科技有限公司 一种基于kvm虚拟化的算力资源管理及调度方法
CN112882791A (zh) * 2021-02-04 2021-06-01 深信服科技股份有限公司 虚拟机性能的优化方法、设备及存储介质
CN113076175A (zh) * 2021-03-26 2021-07-06 北京汇钧科技有限公司 用于虚拟机的内存共享方法及装置
CN113391882A (zh) * 2021-06-28 2021-09-14 北京字节跳动网络技术有限公司 虚拟机内存管理方法、装置、存储介质及电子设备
CN113641464A (zh) * 2021-10-15 2021-11-12 云宏信息科技股份有限公司 Xen平台的内存配置方法、系统及计算机可读存储介质

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506665A (zh) * 2020-12-21 2021-03-16 中电福富信息科技有限公司 一种基于kvm虚拟化的算力资源管理及调度方法
CN112506665B (zh) * 2020-12-21 2023-06-16 中电福富信息科技有限公司 一种基于kvm虚拟化的算力资源管理及调度方法
CN112882791A (zh) * 2021-02-04 2021-06-01 深信服科技股份有限公司 虚拟机性能的优化方法、设备及存储介质
CN112882791B (zh) * 2021-02-04 2024-04-09 深信服科技股份有限公司 虚拟机性能的优化方法、设备及存储介质
CN113076175A (zh) * 2021-03-26 2021-07-06 北京汇钧科技有限公司 用于虚拟机的内存共享方法及装置
CN113076175B (zh) * 2021-03-26 2022-09-30 北京汇钧科技有限公司 用于虚拟机的内存共享方法及装置
CN113391882A (zh) * 2021-06-28 2021-09-14 北京字节跳动网络技术有限公司 虚拟机内存管理方法、装置、存储介质及电子设备
CN113391882B (zh) * 2021-06-28 2023-12-22 北京字节跳动网络技术有限公司 虚拟机内存管理方法、装置、存储介质及电子设备
CN113641464A (zh) * 2021-10-15 2021-11-12 云宏信息科技股份有限公司 Xen平台的内存配置方法、系统及计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN111651236A (zh) 虚拟机内存优化处理方法及相关装置
US8914797B2 (en) Determining an allocation configuration for allocating virtual machines to physical machines
US20200042338A1 (en) System and method for memory resizing in a virtual computing environment
US10228737B2 (en) Affinity-aware parallel zeroing of memory for initialization of large pages in non-uniform memory access (NUMA) servers
CN111352861B (zh) 内存压缩方法、装置及电子设备
US9286199B2 (en) Modifying memory space allocation for inactive tasks
CN111338779B (zh) 资源分配方法、装置、计算机设备和存储介质
CN112667405B (zh) 信息处理方法、装置、设备及存储介质
CN111209080A (zh) 一种图形处理器透传的方法
US11188370B2 (en) Memory scheduler using guest-originated statistics
CN109412865B (zh) 一种虚拟网络资源分配方法、系统及电子设备
CN111488316B (zh) 文件缓存回收方法及装置
CN105900066A (zh) 计算机以及基于管理程序的资源调度方法
US20130346975A1 (en) Memory management method, information processing device, and computer-readable recording medium having stored therein memory management program
US11663026B2 (en) Allocation of accelerator resources based on job type
CN109086223B (zh) 一种控制垃圾回收的方法和装置
CN113377490A (zh) 虚拟机的内存分配方法、装置和系统
CN112732449B (zh) 基于gpu虚拟化技术的显存资源分配方法、装置及设备
US20230418643A1 (en) Improved memory management for busy virtual machine guests
US11392493B2 (en) System and method for optimizing non-volatile random access memory usage
US20240037032A1 (en) Lcs data provisioning system
CN109002347B (zh) 一种虚拟机内存分配方法、装置及系统
CN116339959A (zh) 应用于神经网络的内存申请方法、装置及设备
KR101341254B1 (ko) 가상 머신 구동 시스템 및 그 제어방법
CN117203625A (zh) 一种用于在计算机中进行虚拟内存管理的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination