CN107783812B - 虚拟机内存管理方法及装置 - Google Patents
虚拟机内存管理方法及装置 Download PDFInfo
- Publication number
- CN107783812B CN107783812B CN201610717587.7A CN201610717587A CN107783812B CN 107783812 B CN107783812 B CN 107783812B CN 201610717587 A CN201610717587 A CN 201610717587A CN 107783812 B CN107783812 B CN 107783812B
- Authority
- CN
- China
- Prior art keywords
- memory
- virtual machine
- memory block
- amount
- physical
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本发明提供的虚拟机内存管理方法及装置,通过获取虚拟机对内存块的需求量,从分配给虚拟机的总量内存块中,按照虚拟机的需求量为该虚拟机配置待使用内存块,为待使用内存块对应的用于管理物理内存页面的数组分配物理地址。本发明中按照虚拟机的需求量,将相应数量的内存块加载到虚拟机中,并且按需为虚拟机配置待使用内存块,只为实际配置到到虚拟机中的待使用内存块对应的数组分配物理地址,对总量内存块中未配置到虚拟机中的处于空闲状态的内存块对应的数组并不分配物理地址,从而能够节省内存空间,解决虚拟机数组占用内存空间大的问题。
Description
技术领域
本发明属于计算机领域,尤其涉及一种虚拟机内存管理方法及装置。
背景技术
目前,系统可以根据虚拟机配置的内存大小,分配与该内存大小对应量的内存到虚拟机中。虚拟机通过其伙伴系统(buddy system)对分配到内存进行管理。在Linux内核中,虚拟机中在分页机制的基础上进行内存管理,虚拟机中的物理内存页面可以通过一个对应的page-struct数据结构进行描述,在该page_struct数据结构中包含对物理内存页面进行管理的所有信息。虚拟机中将所有的page_struct数据结构作为数组元素存储在mem_map数组中,即通过该mem_map数组来管理虚拟机所有的物理内存页面。由于page_struct数据结构需要占用的实际字节(常见page_struct占用32bit或64bit的物理空间)用于描述物理内存页面,相应地由page_struct数据结构构成的mem_map数组就需要占用虚拟机中实际的物理空间。
正常情况下,mem_map数组占用的内存空间与虚拟机配置的内存大小成正比,即虚拟机的mem_map数组所需要占用的内存空间与虚拟机的总量内存大小对应。而针对虚拟机上运行的操作系统自身数据结构所占用内存量的统计表明,mem_map数组消耗的内存巨大,严重消耗了分配给虚拟机的内存空间。
发明内容
本发明提供一种虚拟机内存管理方法及装置,用于解决由于现有虚拟机分配机制中,将该虚拟机实际内存所对应的所有内存块都加载到虚拟机的伙伴系统中,即使有些内存块处于空闲状态,伙伴系统仍然会为这些空闲状态的内存块对应的mem_map数组分配内存空间,使得现有虚拟机中的mem_map数组消耗内存空间较多,存在资源浪费的问题。
为了实现上述目的,本发明提供了一种虚拟机内存管理方法,包括:
获取虚拟机对内存块的需求量;
从分配给所述虚拟机的总量内存块中,按照所述需求量为所述虚拟机配置待使用内存块;
为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址。
为了实现上述目的,本发明提供了一种虚拟机内存管理装置,包括:
获取模块,用于获取虚拟机对内存块的需求量;
配置模块,用于从分配给所述虚拟机的总量内存块中,按照所述需求量为所述虚拟机配置待使用内存块;
分配模块,用于为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址。
本发明提供的虚拟机内存管理方法及装置,通过获取虚拟机对内存块的需求量,从分配给虚拟机的总量内存块中,按照虚拟机的需求量为该虚拟机配置待使用内存块,为待使用内存块对应的用于管理物理内存页面的数组分配物理地址。本实施例中,按需从分配给虚拟机的总量内存块中,选取部分内存块作为该虚拟机待使用内存块,只为与待添加的内存块对应的数组分配物理地址,并未对总量内存块中处于空闲状态的内存块对应的数组分配物理地址,从而能够节省内存空间,解决虚拟机中用于管理物理内存页面的数组占用内存空间大的问题。
附图说明
图1为本发明实施例一的虚拟机内存管理方法的流程示意图;
图2为采用稀疏内存思想对虚拟机划分内存块的示意图;
图3为本发明实施例二的虚拟机内存管理方法的流程示意图;
图4为本发明实施例三的虚拟机内存管理装置的结构示意图;
图5为本发明实施例四的虚拟机内存管理装置的结构示意图;
图6为本发明实施例五的虚拟机内存管理装置的结构示意图。
具体实施方式
下面结合附图对本发明实施例提供的虚拟机内存管理方法及装置进行详细描述。
内存管理模块,操作系统中用于管理内存的模块,在本发明实施例中主要涉及针对虚拟机的物理内存分配和管理。
伙伴系统:现代通用操作系统用于管理物理内存的算法模型,较为典型的为Linux系统中使用的一种同时适用于32位和64位系统的内存分页模型,在本发明实施例中,伙伴系统位于虚拟机中,用于管理该虚拟机自身的内存。
总量内存:操作系统为虚拟机分配的可以供其使用的内存,总量内存在虚拟机加载到操作系统时就是被分配好的。
总量内存块:以固定大小的内存块对总量内存进行划分后,便形成总量内存块,总量内存块包括多块固定大小的内存块。
实施例一
如图1所示,其为本发明实施例一的虚拟机内存管理方法的流程示意图。本实施例的中的下述步骤可以由操作系统中的内存管理模块来执行。该虚拟机内存管理方法包括以下步骤:
S101、获取虚拟机对内存块的需求量。
本实施例中,获取虚拟机对内存块的需求量,具体地,虚拟机上设置有多个应用程序,每个应用程序需要占用资源时,可以向虚拟机发送用于申请资源的申请信息,其中,应用程序发送的申请信息中携带该应用程序所需的资源量。接收应用程序提交的用于申请资源的申请信息,根据接收到的申请信息获取虚拟机对内存块的需求量。将当前接收到所有的申请信息中携带的资源量进行计算,根据接收得到的资源量,就可以得到虚拟机对内存块的需求量。
在获取虚拟机对内存块的需求量之前,本实施例中,基于稀疏内存技术对分配给虚拟机的总量内存(即操作系统为虚拟机分配的可以供其使用的内存,总量内存在虚拟机加载到操作系统时就是被分配好的)进行划分成多个内存块,生成包括多块固定大小的内存块的所述总量内存块。
具体地,以固定大小的内存块对虚拟机的总量内存进行划分,例如,虚拟机的总量内存为1G,设定内存块的固定大小为128M,这样1G的总量内存可以被划分成8个内存块,每个内存块的大小为128M,即该虚拟机对应的总量内存块包括8个大小为128M的内存块。
S102、从分配给虚拟机的总量内存块中,按照所述需求量为虚拟机配置待使用内存块。
本实施例中,为了避免为伙伴系统中处于空闲状态的内存块对应的数组分配内存空间,可以按照虚拟机当前对内存块的需求量分配待使用内存块,将与需求量对应的内存块作为待使用内存块,加载到到伙伴系统中,伙伴系统就可以为这些待使用内存块对应的数组分配物理地址,实际中每个物理地址对应一个实际的内存空间。
本实施例中,由于按照需求量为虚拟机分配内存块,可以保证加载到伙伴系统中的内存块处于使用状态,相应地,由于按照需求量为虚拟机分配内存块,可以保证处于空闲状态的内存块不会被加载到虚拟机中的伙伴系统,这样就不需要为这些处于空闲状态的内存块对应的数组分配内存空间,避免资源的浪费。
此处需要说明,分配给虚拟机的总量内存块不能被其他的计算机资源使用,只能给该虚拟机使用。
S103、为待使用内存块对应的用于管理物理内存页面的数组分配物理地址。
现有的虚拟机内存分配中,将与虚拟机的总量内存对应数量的总量内存块全部加载到到伙伴系统中,其中,伙伴系统为Linux系统中使用的一种同时适用于32位和64位系统的内存分页模型,在本实施例中,伙伴系统位于虚拟机内,用于管理该虚拟机自身的内存。
在Linux内核中的每个物理内存页面都可以使用一个page struct数据结构进行描述,而所有page struct数据结构都存储在mem_map数组。在本实施例中,管理物理内存页面的数组可以具体为mem_map数组。
而现有的虚拟机内存管理中,为了保证最后一个内存块被伙伴系统管理,即使有些空闲内存块不会被使用,仍然需要为中间的空闲的内存块对应的mem_map数组分配内存空间,导致资源浪费。
本实施例中在对虚拟机的总量内存进行稀疏划分成内存块之后,为了减少mem_map数组占用的内存空间,可以按照虚拟机实际的需求量为其分配待使用内存块,按需为虚拟机分配内存块,可以降低内存块的能耗。
进一步地,为待使用内存块对应的用于管理物理内存页面的数组分配物理地址,其中,每个物理地址对应一个具体的内存空间。
本实施例中,当为虚拟机分配完总量内存块之后,可以为每个内存块对应的用于管理物理内存页面的数组分配虚拟地址,实际中虚拟地址为逻辑地址,并不占用实际的内存空间。为了便于对内存块的动态调整,分配的虚拟地址是连续的。
在为待使用内存块对应的数组分配物理地址之后,将该数组的物理地址与该数组的虚拟地址进行映射,建立两者之间的对应关系。
本实施例中,管理物理内存页面的数组为mem_map数组,mem_map数组不再是物理地址连续的,而是虚拟地址连续,并按需为每个内存块对应的mem_map数组分配物理地址。虽然空闲内存块对应的mem_map数组占用虚拟地址,但并不需要为之分配物理地址对应的物理内存空间,从而可以节省部分内存空间,避免资源浪费。
本实施例中,使用稀疏内存技术将虚拟机配置的总量内存划分成多个内存块。图2,其为采用稀疏内存技术对虚拟机划分内存块的示意图。如图2所示,内存管理模块可以管理多个虚拟机的物理内存,而每个虚拟机中通过伙伴系统对加载到自身中的物理内存进行管理。
以虚拟机1为例进行解释说明,虚拟机1的总量内存大小配置为1GB,通过稀疏内存技术将1GB划分成8个内存块,每个内存块为128M。本实施中按照实际需求量为虚拟机1分配内存块之后,只有4块大小为128M的内存块处于伙伴系统中,即处于正在使用的状态。处于使用状态的4个内存块分别对应有mem_map数组,每个mem_map数组占用对应内存块一定的内存空间,如图2所示,mem_map数组占用的内存空间为处于使用状态的4个内存块中灰色部分。而其余的4块128M的内存块空闲状态,本实施例中,隶属虚拟机1中的处于空闲状态的4个内存块在内存管理模块中,但却未被加载到虚拟机1的伙伴系统中进行管理,因此这些处于空闲状态的内存块对应的数组并不分配物理地址,从而能够节省内存空间。
假设虚拟机1的1GB内存对应8个插槽,每个插槽对应一个内存块,如图2所示,插槽0、1、6、7插入128M的内存块,而插槽2~5处于空缺状态。
本实施例中,每个内存块对应一个mem_map数组。如图2所示,从0x00000000到0x3FFFFFFFF,为了便于对虚拟机1的内存进行动态调整,需要为该虚拟机1的mem_map数组分配了连续的虚拟地址。在该示例中,当按需求量为虚拟机1分配内存后后,需要为分配后到伙伴系统中的内存块所对应的数组建立虚拟机地址与物理地址之间的映射关系,即图2所示的地址映射关系图。具体地,插槽0对应的起始物理内存地址为0x00000000,该插槽0上放置有第一个128M的内存块,该第一个128的内存块对应mem_map数组[0],由于第一个128M的内存块为加载到虚拟机1的伙伴系统中,因此mem_map数组[0]占用实际的内存空间,即图2中第一个128M内存块上灰色部分,该mem_map数组[0]分配有与其所占用的内存空间对应的物理地址,然后将该mem_map数组[0]的虚拟地址与该物理地址进行了映射。
类似地,插槽1中上放置有第二个128M的内存块,该第二个128的内存块对应mem_map数组[1],由于第二个128M的内存块为加载到虚拟机1的伙伴系统中,因此mem_map数组[1]占用实际的内存空间,即图2中第二个128M内存块上灰色部分,该mem_map数组[1]分配有与其所占用的内存空间对应的物理地址,然后将该mem_map数组[1]的虚拟地址与该物理地址进行了映射。
而插槽2~插槽5上未放置有128M的内存块,因此mem_map数组[2]~mem_map数组[5]未实际占用内存空间,仅分配有虚拟地址,并未分配物理地址。
类似地,插槽6和插槽7上分别放置有第三个128M内存块和第四个128M内存块,由于第三个128M的内存块和第四个128M内存块均加载到虚拟机1的伙伴系统中,因此mem_map数组[6]和mem_map数组[7]占用实际的内存空间,即图2中第三个128M内存块和第四个128M内存块上灰色部分,该mem_map数组[6]和mem_map数组[7]分配有与其所占用的内存空间对应的物理地址,然后将mem_map数组[6]的虚拟地址与mem_map数组[6]的物理地址进行了映射,以及将mem_map数组[7]的虚拟地址与mem_map数组[7]的物理地址进行了映射。
实际应用中,mem_map数组占用的内存空间与虚拟机配置的内存大小成正比。在64位操作系统中,一个物理内存页面需要占用4KB,而128M的内存块可以放置32个物理内存页面,每个物理内存页面都可以由一个page_struct数据结构进行描述,即该page_struct数据结构中包含对物理内存页面进行管理的所有信息。在64位操作系统中每个page struct数据结构需要占用64个字节,128M的内存块包括32个物理内存页面,相应地该内存块则需要32个page_struct数据结构,来描述该内存块的32个物理内存页面。该内存块的32个page_struct数据结构作为数组元素,存储在该内存块对应的mem_map数组中,因此每个内存块对应的mem_map数组均需要占用内存块一定的内存空间,在该内存空间上存储这些page_struct数据结构。
如图2所示,本实施例中按实际需求量为虚拟机1分配内存块之后,有四个内存块加载到伙伴系统中,则mem_map数组占用的内存空间为(128M/4K*64B)*4=8M。
而现有的虚拟机内存分配中,当虚拟机配置的总量内存为1G时,则总量内存所对应的mem_map数组需要消耗的内存为16M,即1G/4K*64B=16M。图2中插槽0对应的起始物理内存地址为0x00000000,最大的可用物理内存地址为0x3ffffffff,即使插槽0~插槽7之间存在空闲的内存块不会被使用,仍然需要为中间的空闲的内存块对应的mem_map数组分配内存空间,mem_map数组占用的内存空间为128M/4K*64B*8=16M,与本实施例相比存在资源浪费的问题。
此处需要说明,关于图2中虚拟机2~虚拟机N的内存管理的具体过程,与虚拟机1的内存管理的具体过程类似,此处不再赘述。
本实施例提供的虚拟机内存管理方法,通过获取虚拟机对内存块的需求量,从为虚拟机分配的总量内存块中按照虚拟机的需求量为该虚拟机配置待使用内存块,为待使用内存块对应的用于管理物理内存页面的数组分配物理地址。本实施例中,按需为虚拟机配置内存块,为mem_map数组分配物理地址时,只为实际分配到虚拟机伙伴系统中的内存块所对应的mem_map数组分配物理地址,而对未分配到伙伴系统中的内存块所对应的mem_map数组并不分配物理地址,从而能够节省内存空间,解决虚拟机中mem_map数组占用内存空间大的问题。
进一步地,虚拟机在启动过程中,由于虚拟机初始化的物理内存变小,因此加速了虚拟机的启动速度,尤其对内存配置大的虚拟机来说加速效果明显。
实施例二
如图3所示,其为本发明实施例二的虚拟机内存管理方法的流程示意图。本实施例的中的下述步骤可以由操作系统中的内存管理模块来执行。该虚拟机内存管理方法包括以下步骤:
S201、获取虚拟机对内存块的需求量。
本实施例中,获取虚拟机对内存块的需求量,具体地,虚拟机上设置有多个应用程序,每个应用程序需要占用资源时,可以向虚拟机发送用于申请资源的申请信息,其中,应用程序发送的申请信息中携带该应用程序所需的资源量。接收应用程序提交的用于申请资源的申请信息,根据接收到的申请信息获取虚拟机对内存块的需求量。将当前接收到所有的申请信息中携带的资源量进行计算,根据接收得到的资源量,就可以得到虚拟机对内存块的需求量。
实际应用中,虚拟机通过操作系统中的内存管理模块中的伙伴系统管理正在使用的内存块,可以在伙伴系统最底层的分配函数__rmqueue函数加入探测函数dynamic_plug_check,通过该探测函数来获取虚拟机对内存块的需求量。
S202、获取虚拟机当前剩余的内存量。
本实施例中,在虚拟机初始启动时,可以先为虚拟机分配一定数量的内存块。在虚拟机的运行过程中,对已添加到虚拟机中的所有内存块中的空闲物理页面进行计数,根据该空闲物理页面的计数值能够获取虚拟机当前剩余的内存量。
实际应用中,已添加到虚拟机中的内存块通过虚拟机的伙伴系统进行管理,伙伴系统对已添加的内存块的空闲物理页面进行计数,伙伴系统采用一个整形变量NR_FREE_PAGES来记录空闲物理页面数,根据这个计数值确定出虚拟机当前剩余的内存量。
S203、将需求量与剩余的内存量进行比较。
在获取到需求量和剩余的内存量之后,将需求量和剩余的内存量进行比较,如果需求量大于剩余的内存量,说明当前虚拟机的内存不足,需要添加新的内存块,执行S204。如果需求量小于剩余的内存量,说明当前虚拟机的内存充足,执行S207。
S204、按照需求量与剩余的内存量的差值,从分配给虚拟机的总量内存块中,选取处于空闲状态的第一目标内存块作为待使用内存块,并添加到虚拟机中。
其中,分配给虚拟机的总量内存块中处于空闲状态的内存块隶属该虚拟机。
当比较出需求量大于剩余的内存量时,获取需求量与剩余的内存量的差值,根据该差值从未被使用的内存块中选取第一目标内存块,将第一目标内存块添加到虚拟机中,为第一目标内存块对应的用于管理物理内存页面的第一数组分配所需的内存空间。其中,第一数组就是第一目标内存块对应的mem_map数组。由于每个内存块的内存容量都是一样的,可以从未被使用的内存块中随机的选取与上述差值大小匹配的部分内存块作为第一目标内存块。
其中,第一目标内存块至少为一块内存块,而且第一目标内存块的内存容量要大于等于需求量与剩余的内存量的差值,这样才能使虚拟机有足够的内存为应用程序提供所需的资源。
本实施例中,未被使用的内存块为根据虚拟机的配置内存分配的所有内存块中的部分内存块。由于当前虚拟机所需的内存块数量较少,未将分配的内存块全部添加到虚拟机中。本实施例中,未被使用的内存块并不会被其他的虚拟机所竞争,只隶属被分配给的虚拟机。
S205、为第一目标内存块对应的用于管理物理内存页面的第一数组分配所需的内存空间。
S206、将所述部分内存对应的物理地址分配给第一数组。
实际应用中,将第一目标内存块添加到虚拟机中,即将第一目标内存块添加到虚拟机的伙伴系统中进行管理。为了保证伙伴系统的一致性,在调用__rmqueue函数之前需要对伙伴系统设置自旋锁spin_lock(zone->lock),避免其他CPU在同一时刻向伙伴系统申请或释放物理内存。因此,在执行函数dynamic_plug_check时不能阻塞,否则将会导致伙伴系统处于死锁状态。
由于动态添加第一目标内存块需要为其对应的第一mem_map数组分配内存空间,动态分配内存块由处于伙伴系统的最底层分配函数执行,不能再调用伙伴系统通用的为mem_map数组分配内存空间的函数alloc_pages()。因为目前虚拟机的内存已经不足,调用这些分配函数将会导致阻塞或失败。
由于当前准备新加入的第一目标内存块中包含大量的空闲物理内存,为了能够为第一目标内存块的第一数组成功分配内存空间,从第一目标内存块中选取部分内存作为其第一数组所需的内存空间,将部分内存对应的物理地址分配给第一数组,并且建立第一数组的物理地址与虚拟地址之间的对应关系。第一数组就是第一目标内存块对应的mem_map数组。
本实施例中,待添加的第一目标内存块的第一数组对应的内存空间直接从内存块自身获得,这样就能够保证该数组的内存空间分配成功,避免出现分配时遇到阻塞的情况。
S207、判断剩余的内存量的与需求量的差值是否超过内存块的固定大小。
当比较出需求量小于剩余的内存量时,说明虚拟机的内存充足,为降低实际内存消耗,可以尝试从虚拟机中移除空闲的内存块。具体地,获取剩余的内存量与需求量的差值,进一步地,判断所述差值是否超出内存块的固定大小。如果该差值超出内存块的固定大小,说明有至少一个内存块大小的资源处于空闲状态,执行S208;如果该差值未超出内存块的固定大小,说明虽然虚拟机内存足够,但是空闲的资源量还不足于从虚拟机中移除一个内存块,返回继续执行S203。
S208、从已添加到虚拟机中的内存块中,选取第二目标内存块进行删除。
S209、删除与第二数组所占用的内存空间对应的物理地址。
本实施例中,当剩余的内存量与需求量的差值超出内存块的固定大小时,则从已添加到虚拟机中的内存块中选取第二目标内存块,优选地,可以检测到已添加到虚拟机中每个内存块当前的资源使用率,按照资源使用率从低到高的顺序从中选取部分内存块作为第二目标内存块。可选地,从中随机地选取与所述差值大小对应的部分内存块作为第二目标内存块。
其中,第二目标内存块至少为一块内存块,而且第二目标内存块的内存容量要小于等于剩余的内存量与需求量的差值,这样才能使虚拟机有足够的内存为应用程序提供所需的资源。
在对第二目标内存块进行删除的过程中,为了保证第二目标内存块上所承载的业务的不被终端,需要将第二目标内存块中正在使用的物理页面进行迁移,具体地,需要获取第二目标内存块上正在使用的物理页面,将正在使用的物理页面迁移到虚拟机中其他的内存块上,将该第二目标内存块从虚拟机中删除。也就是从虚拟机的伙伴系统中将第二目标内存块进行了删除。
在将第二目标内存块从虚拟机中删除之后,释放与第二目标内存块对应的用于管理物理页面的第二数组所占用的内存空间,进一步地,需要将与第二数组所占用的内存空间对应的物理地址删除,相印地,第二数组的虚拟地址与该第二数组的物理地址之间的对应关系也会被删除。其中,第二数组就是第二目标内存块对应的mem_map数组。
实际应用中,使用一个操作系统中的内存管理模块中的内核线程Kthread来执行删除第二目标内存块的过程。通过内核线程周期性扫描虚拟机的当前内存剩余量,并判断虚拟机当前内存是否出现空闲,并且判断空闲的内存是否过剩,如果条件满足,选出第二目标内存块,启用内存块动态删除机制,将第二目标内存块从伙伴系统中删除。
本实施例中,动态添加和删除内存块对上层应用程序是透明,并不影响应用程序实际的可用内存量。具体地,通过对空闲物理页面进行计数向应用程序显示可用内存量。其中,该空闲物理页面计算值不仅包括伙伴系统中的内存块的空闲物理页面的数量,还包括未加载到伙伴系统中进行管理的内存块的空闲物理页面的数量。
为了便于对本实施例提供的虚拟机内存管理方法进行理解,下面举例说明:
虚拟机的总量内存大小为1G,将1G内存分成8块,则每个内存块为128M。为了减少mem_map数组的物理内存消耗,按需求为虚拟机分配内存块,即并不将这8块内存块一起分配给虚拟机的伙伴系统,而是根据虚拟机上应用程序的实际需求分配内存块。例如,一般情况下当虚拟机初始启动时,1块内存块就能够满足启动的需求,此时虚拟机中管理物理内存的伙伴系统中只需要管理这一块内存块,相应地为mem_map分配2M内存,即128M/4K*64B=2M。此时mem_map数组不再是物理地址连续的,而是虚拟地址连续,并按需为每个内存块对应的mem_map数组分配物理地址,虚拟地址与物理地址之间的映射关系是按需建立的。而现有的虚拟机分配中,mem_map数组占用的内存空间为128M/4K*64B*8=16M,与本实施例相比存在资源浪费的问题。
在虚拟机运行的过程中,当应用程序可以向虚拟机申请资源,如果申请的资源量大于伙伴系统中剩余内存量时,就需要添加一个或者多个内存块,具体根据两者的差值进行确定。例如,当前申请的资源量为16K,而当前虚拟机中剩余内存量为8K,此时就需要从未加载伙伴系统中内存块中选取1块内存块作为第一目标内存块加载到伙伴系统中。添加了1块内存块后,相应地需要为该内存块对应的第一mem_map数组分配2M内存,第一mem_map数组从内存块自身获得对应的内存。
当应用程序被关闭或者完成后,虚拟机内存将出现空闲,通过扫描的方式获取剩余内存量,根据剩余内存量,从空闲的内存块中选取一个或者多个内存块进行删除,例如,当前伙伴系统中有5块内存块时,从5块内存中将选取1块内存块进行删除,可以选取剩余内存量最大的1块作为第二目标内存块。在删除之前,需要将正在使用的物理页面进行迁移到其他内存块上。在将第二目标内存块从伙伴系统中删除后,将第二目标内存块对应的第二mem_map数组所占用的2M内存空间进行释放。
本实施例提供的虚拟机内存管理方法,通过获取虚拟机对内存块的需求量,从分配给虚拟机的总量内存块中按照虚拟机的需求量为该虚拟机配置待使用内存块,为待使用内存块用于管理物理内存页面的数组分配物理地址。本实施例中,按需为虚拟机分配内存块,为mem_map数组分配物理地址时,只为实际分配到虚拟机伙伴系统中的内存块所对应的mem_map数组分配物理地址,而对未分配到伙伴系统中的内存块所对应的mem_map数组不分配物理地址,从而能够节省内存空间,解决虚拟机mem_map数组占用内存空间大的问题。进一步地,虚拟机在启动过程中,由于虚拟机初始化的物理内存变小,因此加速了虚拟机的启动速度,尤其内存配置大的虚拟机来说加速效果明显。
实施例三
如图4所示,其为本发明实施例三的虚拟机内存管理装置的结构示意图。该虚拟机内存管理装置包括:获取模块11、配置模块12和分配模块13。
其中,获取模块11,用于获取虚拟机对内存块的需求量。
本实施例中,获取模块11获取虚拟机对内存块的需求量具体过程可参见上述实施例一和二中相关内容的记载,此处不再赘述。
在获取虚拟机对内存块的需求量之前,本实施例中,基于稀疏内存技术对虚拟机的配置内存进行划分成多个内存块。例如,虚拟机的总量内存为1G,设定内存块的固定大小为128M,这样1G内存可以被划分成8个内存块,每个内存块的大小为128M。
配置模块12,用于从分配给所述虚拟机的总量内存块中,按照所述需求量为所述虚拟机配置待使用内存块。
现有的虚拟机内存分配中,将与虚拟机的配置内存对应数量的内存块全部放置在伙伴系统中。为了保证最后一个内存块被伙伴系统管理,即使有些空闲内存块不会被使用,仍然需要为中间的空闲的内存块对应的mem_map数组分配内存空间,导致资源浪费。
本实施例中在对虚拟机的配置内存进行稀疏划分成内存块之后,为了减少mem_map数组占用的内存空间,配置模块12可以按照虚拟机实际的需求量为其配置待使用内存块。
分配模块13为待使用内存块分配用于管理物理内存页面的数组分配物理地址。
本实施例中,mem_map数组不再是物理地址连续的,而是虚拟地址连续,并按需为每个块对应的mem_map数组分配物理地址。虽然空闲内存块对应的mem_map数组占用虚拟地址,但并不需要为之分配物理地址对应的内存空间。
本实施例提供的虚拟机内存管理装置,通过获取虚拟机对内存块的需求量,按照虚拟机的需求量为该虚拟机分配内存块,根据实际分配给虚拟机的内存块和虚拟机的配置内存,为用于管理物理内存页面的数组分配地址,其中,为实际分配给所述虚拟机的内存块对应的第一部分的数组分配的内存空间包括物理地址,为配置内存除第一部分之外的其他部分的数组分配的内存空间为虚拟地址。本实施例中,按需为虚拟机配置内存块,在为mem_map数组分配物理地址时,只为实际分配到虚拟机伙伴系统中的内存块所对应的mem_map数组分配物理地址,而对未分配到伙伴系统中的内存块所对应的mem_map数组不分配物理地址,从而能够节省内存空间,解决虚拟机mem_map数组占用内存空间大的问题。进一步地,虚拟机在启动过程中,由于虚拟机初始化的物理内存变小,因此加速了虚拟机的启动速度,尤其内存配置大的虚拟机来说加速效果明显。
实施例四
如图5所示,其为本发明实施例四的虚拟机内存管理装置的结构示意图。该虚拟机内存管理装置包括:划分模块20、获取模块21、配置模块22和分配模块23。
其中,划分模块20,用于在获取模块21获取虚拟机对内存块的需求量之前,以固定大小的内存块对所述虚拟机的配置内存进行划分。
本实施例中第一分配模块22的一种可选地实现方式,包括:
获取单元221,用于获取所述虚拟机当前剩余的内存量。
比较单元222,用于将所述需求量与所述剩余的内存量进行比较。
选取单元223,用于在如果所述需求量大于所述剩余的内存量时,按照所述需求量与所述剩余的内存量的差值,从分配给虚拟机的总量内存块中,选取处于空闲状态的第一目标内存块作为所述待使用内存块,并添加到所述虚拟机中;其中,所述总量内存块中处于空闲状态的内存块隶属所述虚拟机。
判断单元224,用于在如果所述需求量小于所述剩余的内存量时,判断所述剩余的内存量的与所述需求量的差值是否超过所述内存块的固定大小。
删除单元225,用于在所述判断单元的判断结果为是时,从已添加到所述虚拟机中的内存块中选取第二目标内存块进行删除。
选取单元223,具体用于将所述第一目标内存块添加到所述虚拟机中,为所述第一目标内存块对应的用于管理物理内存页面的第一数组分配所需的内存空间。
选取单元223,还用于从所述第一目标内存块中选取部分内存作为所述第一数组所需的内存空间,以及将所述部分内存对应的物理地址分配给所述第一数组,并建立所述第一数组的虚拟地址与第一数组的物理地址之间的对应关系。
获取单元221,具体用于对已添加到所述虚拟机中所有内存块中的空闲物理页面进行计数,根据所述空闲物理页面的计数值获取所述当前剩余的内存量。
获取模块21,具体用于接收应用程序提交的用于申请资源的申请信息,所述申请信息中携带所述应用程序所需的资源量,根据接收到的所述申请信息获取所述虚拟机的所述需求量。
删除单元225,具体用于获取所述第二目标内存块上正在使用的物理页面,将所述正在使用的物理页面迁移到所述虚拟机中其他的内存块上,将所述第二目标内存块从所述虚拟机中删除。
删除单元225,还用于在将所述第二目标内存块从所述虚拟机中删除之后,释放与所述第二目标内存块对应的用于管理物理页面的第二数组所占用的内存空间,以及删除与所述第二数组所占用的内存空间对应的物理地址。
本实施例提供的虚拟机内存管理装置,通过获取虚拟机对内存块的需求量,从分配给虚拟机的总量内存块中,按照虚拟机的需求量为该虚拟机配置待使用内存块,为待使用内存块对应的用于管理物理内存页面的数组分配物理地址。本实施例中,按需为虚拟机配置内存块,相应地在为mem_map数组分配物理地址时,也只为实际分配到虚拟机伙伴系统中的内存块对应的mem_map数组分配物理地址,而对未分配到伙伴系统中的内存块所对应的mem_map数组不分配物理地址,从而能够节省内存空间,解决虚拟机mem_map数组占用内存空间大的问题。进一步地,虚拟机在启动过程中,由于虚拟机初始化的物理内存变小,因此加速了虚拟机的启动速度,尤其内存配置大的虚拟机来说加速效果明显。
实施例五
上述实施例四描述了虚拟机内存管理装置的内部功能和结构,如图6所示,实际中,虚拟机内存管理装置,包括:存储器31以及处理器32。
存储器31,可被配置为存储程序。
存储器31可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
存储器31和处理器32可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器32,用于执行存储器31中的程序,以用于:
获取虚拟机对内存块的需求量;
从分配给所述虚拟机的总量内存块中,按照所述需求量为所述虚拟机配置待使用内存块;
为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址。
进一步地,处理器32具体用于:
为所述虚拟机分配的总量内存块对应的用于管理物理内存页面的数组分配虚拟地址,其中各数组对应的所述虚拟地址为连续的。
进一步地,处理器32具体用于:
为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址之后,建立所述待使用内存块对应的所述数组的所述虚拟地址与所述物理地址之间的对应关系。
进一步地,处理器32具体用于:
获取所述虚拟机当前剩余的内存量;
将所述需求量与所述剩余的内存量进行比较;
在如果所述需求量大于所述剩余的内存量时,按照所述需求量与所述剩余的内存量的差值,从分配给所述虚拟机的总量内存块中,选取处于空闲状态的第一目标内存块作为所述待使用内存块,并添加到所述虚拟机中;其中,所述配置的总量内存块中处于空闲状态的内存块隶属所述虚拟机;
在如果所述需求量小于所述剩余的内存量时,判断所述剩余的内存量的与所述需求量的差值是否超过所述内存块的固定大小;
在所述判断单元的判断结果为是时,从已添加到所述虚拟机中的正在使用的内存块中选取第二目标内存块进行删除。
进一步地,处理器32具体用于:
从所述第一目标内存块中选取部分内存作为所述第一数组所需的内存空间;
将所述部分内存对应的物理地址分配给所述第一数组。
进一步地,处理器32具体用于:
对已添加到所述虚拟机中所有内存块中的空闲物理页面进行计数,根据所述空闲物理页面的计数值获取所述当前剩余的内存量。
进一步地,处理器32具体用于:
获取所述第二目标内存块上正在使用的物理页面,将所述正在使用的物理页面迁移到所述虚拟机中其他的内存块上,将所述第二目标内存块从所述虚拟机中删除。
进一步地,处理器32具体用于:
在将所述第二目标内存块从所述虚拟机中删除之后,释放与所述第二目标内存块对应的用于管理物理页面的第二数组所占用的内存空间,以及删除与所述第二数组所占用的内存空间对应的物理地址。
本实施例提供的虚拟机内存管理装置,通过获取虚拟机对内存块的需求量,从分配给虚拟机的总量内存块中,按照虚拟机的需求量为该虚拟机配置待使用内存块,为待使用内存块对应的用于管理物理内存页面的数组分配物理地址。本实施例中,按需为虚拟机配置内存块,相应地在为mem_map数组分配物理地址时,也只为实际分配到虚拟机伙伴系统中的内存块对应的mem_map数组分配物理地址,而对未分配到伙伴系统中的内存块所对应的mem_map数组不分配物理地址,从而能够节省内存空间,解决虚拟机mem_map数组占用内存空间大的问题。进一步地,虚拟机在启动过程中,由于虚拟机初始化的物理内存变小,因此加速了虚拟机的启动速度,尤其内存配置大的虚拟机来说加速效果明显。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (28)
1.一种虚拟机内存管理方法,其特征在于,包括:
获取虚拟机对内存块的需求量;
从分配给所述虚拟机的总量内存块中,按照所述需求量为所述虚拟机配置待使用内存块;
为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址,并且不对总量内存块中处于空闲状态的内存块对应的数组分配物理地址。
2.根据权利要求1所述的方法,其特征在于,还包括:
为分配给所述虚拟机的总量内存块对应的用于管理物理内存页面的数组分配虚拟地址,其中各数组对应的所述虚拟地址为连续的。
3.根据权利要求2所述的方法,其特征在于,所述为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址之后,包括:
建立所述待使用内存块对应的所述数组的所述虚拟地址与所述物理地址之间的对应关系。
4.根据权利要求1所述的方法,其特征在于,所述获取虚拟机对内存块的需求量之前,包括:
以固定大小的内存块对分配给所述虚拟机的总量内存进行划分,生成包括多块固定大小的内存块的所述总量内存块。
5.根据权利要求1所述的方法,其特征在于,所述从分配给所述虚拟机的总量内存块中,按照所述需求量为所述虚拟机配置待使用内存块,包括:
获取所述虚拟机当前剩余的内存量;
将所述需求量与所述剩余的内存量进行比较;
如果所述需求量大于所述剩余的内存量,按照所述需求量与所述剩余的内存量的差值,从分配给所述虚拟机的总量内存块中,选取处于空闲状态的第一目标内存块作为所述待使用内存块,并添加到所述虚拟机中;其中,所述总量内存块中处于空闲状态的内存块隶属所述虚拟机;
如果所述需求量小于所述剩余的内存量,判断所述剩余的内存量的与所述需求量的差值是否超过所述内存块的固定大小;
如果判断结果为所述剩余的内存量的与所述需求量的差值超过所述内存块的固定大小,从已添加到所述虚拟机中的内存块中,选取第二目标内存块进行删除。
6.根据权利要求5所述的方法,其特征在于,所述如果所述需求量大于所述剩余的内存量,按照所述需求量与所述剩余的内存量的差值,从分配给所述虚拟机的总量内存块中,选取处于空闲状态的第一目标内存块作为所述待使用内存块,并添加到所述虚拟机中之后,包括:
从所述第一目标内存块中选取部分内存作为第一数组所需的内存空间;
将所述部分内存对应的物理地址分配给所述第一数组,并建立所述第一数组的虚拟地址与第一数组的物理地址之间的对应关系。
7.根据权利要求6所述的方法,其特征在于,所述获取所述虚拟机当前剩余的内存量,包括:
对已添加到所述虚拟机中所有内存块中的空闲物理页面进行计数;
根据所述空闲物理页面的计数值获取所述当前剩余的内存量。
8.根据权利要求7所述的方法,其特征在于,所述如果判断结果为所述剩余的内存量的与所述需求量的差值超过所述内存块的固定大小,从已添加到所述虚拟机中的内存块中,选取第二目标内存块进行删除,包括:
获取所述第二目标内存块上正在使用的物理页面;
将所述正在使用的物理页面迁移到所述虚拟机中其他的内存块上;
将所述第二目标内存块从所述虚拟机中删除。
9.根据权利要求8所述的方法,其特征在于,所述将所述第二目标内存块从所述虚拟机中删除之后,包括:
释放与所述第二目标内存块对应的用于管理物理页面的第二数组所占用的内存空间;
删除与所述第二数组所占用的内存空间对应的物理地址。
10.根据权利要求1-9任一项所述的方法,其特征在于,所述获取虚拟机对内存块的需求量,包括:
接收应用程序提交的用于申请资源的申请信息,所述申请信息中携带所述应用程序所需的资源量;
根据接收到的所述申请信息获取所述虚拟机的所述需求量。
11.一种虚拟机内存管理装置,其特征在于,包括:
获取模块,用于获取虚拟机对内存块的需求量;
配置模块,用于从分配给所述虚拟机的总量内存块中,按照所述需求量为所述虚拟机配置待使用内存块;
分配模块,用于为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址,并且不对总量内存块中处于空闲状态的内存块对应的数组分配物理地址。
12.根据权利要求11所述的装置,其特征在于,所述分配模块,还用于为所述虚拟机分配的总量内存块对应的所有用于管理物理内存页面的数组分配虚拟地址,其中分配的所述虚拟地址为连续的。
13.根据权利要求12所述的装置,其特征在于,所述分配模块,还用于为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址之后,建立所述待使用内存块对应的所述数组的所述虚拟地址与所述物理地址的对应关系。
14.根据权利要求11所述的装置,其特征在于,还包括:
划分模块,用于在所述获取模块获取虚拟机对内存块的需求量之前,以固定大小的内存块对分配给所述虚拟机的总量内存进行划分,生成包括多块固定大小的内存块的所述总量内存块。
15.根据权利要求14所述的装置,其特征在于,所述配置模块,包括:
获取单元,用于获取所述虚拟机当前剩余的内存量;
比较单元,用于将所述需求量与所述剩余的内存量进行比较;
选取单元,用于在如果所述需求量大于所述剩余的内存量时,按照所述需求量与所述剩余的内存量的差值,从分配给所述虚拟机的总量内存块中,选取处于空闲状态的第一目标内存块作为所述待使用内存块,并添加到所述虚拟机中;其中,所述配置的总量内存块中处于空闲状态的内存块隶属所述虚拟机;
判断单元,用于在如果所述需求量小于所述剩余的内存量时,判断所述剩余的内存量的与所述需求量的差值是否超过所述内存块的固定大小;
删除单元,用于在所述判断单元的判断结果为是时,从已添加到所述虚拟机中的内存块中,选取第二目标内存块进行删除。
16.根据权利要求15所述的装置,其特征在于,所述选取单元,还用于从所述第一目标内存块中选取部分内存作为第一数组所需的内存空间,以及将所述部分内存对应的物理地址分配给所述第一数组。
17.根据权利要求16所述的装置,其特征在于,所述获取单元,具体用于对已添加到所述虚拟机中所有内存块中的空闲物理页面进行计数,根据所述空闲物理页面的计数值获取所述当前剩余的内存量。
18.根据权利要求17所述的装置,其特征在于,所述删除单元,具体用于获取所述第二目标内存块上正在使用的物理页面,将所述正在使用的物理页面迁移到所述虚拟机中其他的内存块上,将所述第二目标内存块从所述虚拟机中删除。
19.根据权利要求18所述的装置,其特征在于,所述删除单元,还用于在将所述第二目标内存块从所述虚拟机中删除之后,释放与所述第二目标内存块对应的用于管理物理页面的第二数组所占用的内存空间,以及删除与所述第二数组所占用的内存空间对应的物理地址。
20.根据权利要求11-19任一项所述的装置,其特征在于,所述获取模块,具体用于接收应用程序提交的用于申请资源的申请信息,所述申请信息中携带所述应用程序所需的资源量,根据接收到的所述申请信息获取所述虚拟机的所述需求量。
21.一种虚拟机内存管理装置,其特征在于,包括:存储器以及处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,以用于:
获取虚拟机对内存块的需求量;
从分配给所述虚拟机的总量内存块中,按照所述需求量为所述虚拟机配置待使用内存块;
为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址,并且不对总量内存块中处于空闲状态的内存块对应的数组分配物理地址。
22.根据权利要求21所述的装置,其特征在于,所述处理器具体用于:
为所述虚拟机分配的总量内存块对应的用于管理物理内存页面的数组分配虚拟地址,其中各数组对应的所述虚拟地址为连续的。
23.根据权利要求22所述的装置,其特征在于,所述处理器具体用于:
为所述待使用内存块对应的用于管理物理内存页面的数组分配物理地址之后,建立所述待使用内存块对应的所述数组的所述虚拟地址与所述物理地址之间的对应关系。
24.根据权利要求22所述的装置,其特征在于,所述处理器具体用于:
获取所述虚拟机当前剩余的内存量;
将所述需求量与所述剩余的内存量进行比较;
在如果所述需求量大于所述剩余的内存量时,按照所述需求量与所述剩余的内存量的差值,从分配给所述虚拟机的总量内存块中,选取处于空闲状态的第一目标内存块作为所述待使用内存块,并添加到所述虚拟机中;其中,所述配置的总量内存块中处于空闲状态的内存块隶属所述虚拟机;
在如果所述需求量小于所述剩余的内存量时,判断所述剩余的内存量的与所述需求量的差值是否超过所述内存块的固定大小;
在判断结果为是时,从已添加到所述虚拟机中的正在使用的内存块中,选取第二目标内存块进行删除。
25.根据权利要求24所述的装置,其特征在于,所述处理器具体用于:
从所述第一目标内存块中选取部分内存作为第一数组所需的内存空间;
将所述部分内存对应的物理地址分配给所述第一数组。
26.根据权利要求25所述的装置,其特征在于,所述处理器具体用于:
对已添加到所述虚拟机中所有内存块中的空闲物理页面进行计数,根据所述空闲物理页面的计数值获取所述当前剩余的内存量。
27.根据权利要求26所述的装置,其特征在于,所述处理器具体用于:
获取所述第二目标内存块上正在使用的物理页面,将所述正在使用的物理页面迁移到所述虚拟机中其他的内存块上,将所述第二目标内存块从所述虚拟机中删除。
28.根据权利要求27所述的装置,其特征在于,所述处理器具体用于:
在将所述第二目标内存块从所述虚拟机中删除之后,释放与所述第二目标内存块对应的用于管理物理页面的第二数组所占用的内存空间,以及删除与所述第二数组所占用的内存空间对应的物理地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610717587.7A CN107783812B (zh) | 2016-08-24 | 2016-08-24 | 虚拟机内存管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610717587.7A CN107783812B (zh) | 2016-08-24 | 2016-08-24 | 虚拟机内存管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107783812A CN107783812A (zh) | 2018-03-09 |
CN107783812B true CN107783812B (zh) | 2022-03-08 |
Family
ID=61388597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610717587.7A Active CN107783812B (zh) | 2016-08-24 | 2016-08-24 | 虚拟机内存管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107783812B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108256103B (zh) | 2018-02-05 | 2019-02-05 | 清华大学 | 一种基于双层列表结构的容量扩充方法及系统 |
CN108920254B (zh) * | 2018-06-27 | 2021-07-06 | 中国科学技术大学 | 一种基于细粒度的内存分配方法 |
CN110633130B (zh) * | 2019-08-29 | 2023-10-31 | 上海仪电(集团)有限公司中央研究院 | 一种基于内存热插拔技术的虚拟内存管理方法和装置 |
CN112988609B (zh) * | 2019-12-02 | 2023-05-02 | 杭州海康机器人股份有限公司 | 数据处理方法、装置、存储介质和客户端 |
CN112099903B (zh) * | 2020-08-18 | 2023-01-31 | 海光信息技术股份有限公司 | 一种虚拟机的内存管理方法、装置、cpu芯片及服务器 |
CN113076174A (zh) * | 2021-03-24 | 2021-07-06 | 海光信息技术股份有限公司 | 一种虚拟机内存的管理方法及管理系统 |
CN113505101B (zh) * | 2021-07-13 | 2023-07-07 | 电子科技大学 | 一种基于vfs的内核文件系统 |
CN114579304A (zh) * | 2022-02-25 | 2022-06-03 | 阿里巴巴(中国)有限公司 | 内存管理方法以及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
CN102141931A (zh) * | 2011-03-15 | 2011-08-03 | 华为技术有限公司 | 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 |
CN102193814A (zh) * | 2010-03-09 | 2011-09-21 | 上海拜翰网络科技有限公司 | 嵌入式虚拟化内存动态分配方法及系统 |
CN102222014A (zh) * | 2011-06-16 | 2011-10-19 | 华中科技大学 | 基于内存热插拔的虚拟机动态内存管理系统 |
CN102306126A (zh) * | 2011-08-24 | 2012-01-04 | 华为技术有限公司 | 内存管理方法、装置和系统 |
CN103885838A (zh) * | 2014-03-27 | 2014-06-25 | 北京大学 | 一种获取虚拟机内存工作集的方法及内存优化分配方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1271524C (zh) * | 2003-03-19 | 2006-08-23 | 华为技术有限公司 | 一种静态内存管理方法 |
JP2010211644A (ja) * | 2009-03-11 | 2010-09-24 | Nec Corp | メモリ消費電力削減システム、方法及びプログラム |
CN103064796B (zh) * | 2011-10-18 | 2015-09-23 | 财团法人工业技术研究院 | 虚拟机内存的共享方法与计算机系统 |
TWI497296B (zh) * | 2013-12-04 | 2015-08-21 | Univ Nat Taiwan | 記憶體配置與分頁位址轉換系統及方法 |
-
2016
- 2016-08-24 CN CN201610717587.7A patent/CN107783812B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158924A (zh) * | 2007-11-27 | 2008-04-09 | 北京大学 | 一种虚拟机管理器的动态内存映射方法 |
CN102193814A (zh) * | 2010-03-09 | 2011-09-21 | 上海拜翰网络科技有限公司 | 嵌入式虚拟化内存动态分配方法及系统 |
CN102141931A (zh) * | 2011-03-15 | 2011-08-03 | 华为技术有限公司 | 一种创建虚拟机的方法、虚拟机监控器及虚拟机系统 |
CN102222014A (zh) * | 2011-06-16 | 2011-10-19 | 华中科技大学 | 基于内存热插拔的虚拟机动态内存管理系统 |
CN102306126A (zh) * | 2011-08-24 | 2012-01-04 | 华为技术有限公司 | 内存管理方法、装置和系统 |
CN103885838A (zh) * | 2014-03-27 | 2014-06-25 | 北京大学 | 一种获取虚拟机内存工作集的方法及内存优化分配方法 |
Non-Patent Citations (1)
Title |
---|
HotPlug Memory Redux;Joel Schopp, Dave Hansen, Mike Kravetz;《Proceedings of the Linux Symposium》;20050623;文章第152-154、167-169页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107783812A (zh) | 2018-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107783812B (zh) | 虚拟机内存管理方法及装置 | |
TWI661301B (zh) | 記憶體系統及控制非揮發性記憶體之控制方法 | |
JP5510556B2 (ja) | 仮想マシンのストレージスペースおよび物理ホストを管理するための方法およびシステム | |
CN109725846B (zh) | 存储器系统及控制方法 | |
US8082400B1 (en) | Partitioning a memory pool among plural computing nodes | |
US9811465B2 (en) | Computer system and cache control method | |
KR102290540B1 (ko) | 네임스페이스/스트림 관리 | |
EP3121731A1 (en) | Memory management method and device | |
US10613796B2 (en) | System and method of writing to nonvolatile memory using write buffers | |
US20190004724A1 (en) | Memory system and method for controlling nonvolatile memory | |
JP7467593B2 (ja) | リソース割振り方法、記憶デバイス、および記憶システム | |
CN110196770A (zh) | 云系统内存数据处理方法、装置、设备及存储介质 | |
CN110727517A (zh) | 一种基于分区设计的内存分配方法和装置 | |
CN104317734A (zh) | 一种适用于slab的内存分配方法及装置 | |
CN113204407A (zh) | 一种内存超配管理方法及装置 | |
CN112463356A (zh) | Gpu堆管理器内存地址分配方法、系统、终端及存储介质 | |
US20210191777A1 (en) | Memory Allocation in a Hierarchical Memory System | |
CN118069575A (zh) | 一种存储空间管理方法及管理设备 | |
CN116483740B (zh) | 内存数据的迁移方法、装置、存储介质及电子装置 | |
CN116401043A (zh) | 一种计算任务的执行方法和相关设备 | |
CN116149552A (zh) | 一种存储系统优化方法、系统、设备及存储介质 | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
US20190004720A1 (en) | Systems and methods of controlling memory footprint | |
CN107526691B (zh) | 一种缓存管理方法及装置 | |
CN109144231B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230615 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province Patentee after: Aliyun Computing Co.,Ltd. Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK Patentee before: ALIBABA GROUP HOLDING Ltd. |
|
TR01 | Transfer of patent right |