CN103593298B - 内存回收方法和装置 - Google Patents

内存回收方法和装置 Download PDF

Info

Publication number
CN103593298B
CN103593298B CN201310484776.0A CN201310484776A CN103593298B CN 103593298 B CN103593298 B CN 103593298B CN 201310484776 A CN201310484776 A CN 201310484776A CN 103593298 B CN103593298 B CN 103593298B
Authority
CN
China
Prior art keywords
page
virtual
page number
virtual page
host
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
Application number
CN201310484776.0A
Other languages
English (en)
Other versions
CN103593298A (zh
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.)
Beihang University
Original Assignee
Beihang University
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 Beihang University filed Critical Beihang University
Priority to CN201310484776.0A priority Critical patent/CN103593298B/zh
Publication of CN103593298A publication Critical patent/CN103593298A/zh
Application granted granted Critical
Publication of CN103593298B publication Critical patent/CN103593298B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供一种内存回收方法和装置,其中,方法包括:获取虚拟机的内存信息,内存信息包括:虚拟机的内存容量,虚拟机的内存中起始虚拟页面的页框号和终止虚拟页面的页框号;根据内存信息确定虚拟机的内存中各虚拟页面的页框号;查询各虚拟页面的页框号对应的页描述符,确定各虚拟页面的页面类型;若虚拟页面的页面类型为空闲页面,则确定虚拟页面对应的回收策略为回收虚拟页面在虚拟机所在的宿主机上对应的物理页面,将虚拟页面映射到宿主机上的零页面;根据回收策略对虚拟页面进行处理,从而不需要对虚拟机的内存中的所有页面都进行扫描及合并,提高了扫描效率,提高了内存页面的合并效率,从而提高了宿主机上内存的回收效率。

Description

内存回收方法和装置
技术领域
本发明涉及一种计算机技术,尤其涉及一种内存回收方法和装置。
背景技术
现有技术中,主要通过相同页面合并机制实现对宿主机上虚拟机内存的回收。相同页面合并机制的基本原理是扫描虚拟机的所有虚拟页面,在上述虚拟页面中查找相同页面,针对相同页面进行合并,即针对相同页面在宿主机上只保留一份拷贝,相同页面指的是内容完全相同的多个虚拟页面。
然而现有技术中,相同页面合并机制对虚拟机的所有虚拟页面都需要进行扫描,降低了扫描效率,降低了内存页面的合并效率,从而降低了宿主机上内存的回收效率。
发明内容
本发明提供一种内存回收方法和装置,用于解决现有技术中内存回收效率低的问题。
本发明的第一方面是提供一种内存回收方法,包括:
获取虚拟机的内存信息,所述内存信息包括:虚拟机的内存容量,虚拟机的内存中起始虚拟页面的页框号和终止虚拟页面的页框号;
根据所述内存信息确定所述虚拟机的内存中各虚拟页面的页框号;
查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型;
若虚拟页面的页面类型为空闲页面,则确定所述虚拟页面对应的回收策略为回收所述虚拟页面在所述虚拟机所在的宿主机上对应的物理页面,将所述虚拟页面映射到所述宿主机上的零页面;
根据所述回收策略对所述虚拟页面进行处理。
基于本发明的第一方面,在第一方面的第一种可行的实施方式中,所述查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型之后,还包括:若虚拟页面的页面类型为索引节点页面或大块页面,则确定所述虚拟页面对应的回收策略为不对所述虚拟页面进行处理。
基于本发明的第一方面,在第一方面的第二种可行的实施方式中,所述根据所述内存信息确定所述虚拟机的内存中各虚拟页面的页框号之前,还包括:
依次获取所述虚拟机中各进程所占用的内存容量和/或读次数;
将占用的内存容量超过预设的第一阈值的进程确定为待扫描进程,和/或,将读次数超过预设的第二阈值的进程确定为待扫描进程;
对所述待扫描进程所占用的内存中的各虚拟页面进行扫描,获取所述待扫描进程所占用的内存中的各虚拟页面的内容;
若所述各虚拟页面中存在相同页面,则对所述相同页面中的其中一个虚拟页面之外的其他虚拟页面在所述宿主机上对应的物理页面进行回收,将所述相同页面映射到所述其中一个虚拟页面在所述宿主机上对应的物理页面。
基于本发明的第一方面的第二种可行的实施方式,在第一方面的第三种可行的实施方式中,所述对所述待扫描进程所占用的内存中的各虚拟页面进行扫描,获取所述待扫描进程所占用的内存中的各虚拟页面的内容之后,还包括:
若所述各虚拟页面中的第一虚拟页面与已扫描的第二虚拟页面为相同页面,则回收所述第一虚拟页面在所述宿主机上对应的物理页面,将所述第一虚拟页面映射到所述第二虚拟页面在所述宿主机上对应的页面,所述第二虚拟页面为所述宿主机上除所述虚拟机之外的其他虚拟机的虚拟页面。
基于本发明的第一方面的第二种和第三种可行的实施方式,在第一方面的第四种可行的实施方式中,所述将所述相同页面映射到所述其中一个虚拟页面在所述宿主机上对应的物理页面之后,还包括:
在所述宿主机的页面扫描信息表中与所述其他虚拟页面的页框号对应的页面扫描信息中记录所述其他虚拟页面在所述宿主机上对应的物理页面被回收过的信息;
所述查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型之前,还包括:
根据所述各虚拟页面的页框号查询页面扫描信息表,确定所述各虚拟页面中在所述宿主机上对应的物理页面未被回收过的各页面的页框号;
所述查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型,包括:
查询对应的物理页面未被回收过的各虚拟页面的页框号对应的页描述符,确定对应的物理页面未被回收过的各虚拟页面的页面类型。
基于本发明的第一方面和第一方面的第一种可行的实施方式,在第一方面的第五种可行的实施方式中,所述根据所述回收策略对所述虚拟页面进行处理之后,还包括:
统计各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目;
根据各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目调整各页面类型对应的虚拟页面的回收策略。
基于本发明的第一方面的第五种可行的实施方式,在第一方面的第六种可行的实施方式中,所述根据各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目调整各页面类型对应的虚拟页面的回收策略,包括:
若页面类型对应的虚拟页面中相同页面的数目小于预设的第三阈值,或者,对应的物理页面被回收过的虚拟页面的数目小于预设的第四阈值,则将页面类型对应的虚拟页面的回收策略调整为不对页面类型对应的虚拟页面进行处理。
本发明的第二方面还提供一种内存回收装置,包括:
获取模块,用于获取虚拟机的内存信息,所述内存信息包括:虚拟机的内存容量,虚拟机的内存中起始虚拟页面的页框号和终止虚拟页面的页框号;
确定模块,用于根据所述内存信息确定所述虚拟机的内存中各虚拟页面的页框号;
所述确定模块,还用于查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型;
若虚拟页面的页面类型为空闲页面,则所述确定模块,还用于确定所述虚拟页面对应的回收策略为回收所述虚拟页面在所述虚拟机所在的宿主机上对应的物理页面,将所述虚拟页面映射到所述宿主机上的零页面;
处理模块,用于根据所述回收策略对所述虚拟页面进行处理。
基于本发明的第二方面,在第二方面的第一种可行的实施方式中,所述获取模块还用于,在所述确定模块根据所述内存信息确定所述虚拟机的内存中各虚拟页面的页框号之前,依次获取所述虚拟机中各进程所占用的内存容量和/或读次数;
所述获取模块还用于,对所述待扫描进程所占用的内存中的各虚拟页面进行扫描,获取所述待扫描进程所占用的内存中的各虚拟页面的内容;
若所述各虚拟页面中存在相同页面,则所述处理模块还用于,对所述相同页面中的其中一个虚拟页面之外的其他虚拟页面在所述宿主机上对应的物理页面进行回收,将所述相同页面映射到所述其中一个虚拟页面在所述宿主机上对应的物理页面。
基于本发明的第二方面,在第二方面的第二种可行的实施方式中,所述内存回收装置还包括:统计模块,用于在所述处理模块根据所述回收策略对所述虚拟页面进行处理之后,统计各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目;
调整模块,用于根据各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目调整各页面类型对应的虚拟页面的回收策略。
本发明通过根据虚拟机的内存中各虚拟页面的页面类型,采取与页面类型对应的回收策略对各虚拟页面进行处理,从而不需要对虚拟机的内存中的所有虚拟页面都进行扫描及合并,提高了扫描效率,提高了虚拟页面的合并效率,从而提高了宿主机上内存的回收效率。
附图说明
图1为本发明提供的内存回收方法一个实施例的流程图;
图2为本发明提供的内存回收方法又一个实施例的流程图;
图3为本发明提供的内存回收装置一个实施例的结构示意图;
图4为本发明提供的内存回收装置又一个实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的内存回收方法一个实施例的流程图,如图1所示,包括:
101、获取虚拟机的内存信息,内存信息包括:虚拟机的内存容量,虚拟机的内存中起始虚拟页面的页框号和终止虚拟页面的页框号。
本发明中各步骤的执行主体为内存回收装置。内存回收装置具体可以为安装在虚拟机所在的宿主机上的应用软件。内存回收装置获取虚拟机的内存信息的过程可以为:(1)获取宿主机上需要进行内存扫描的进程;(2)判断该进程是否是宿主机上的虚拟机进程;(3)若该进程不是虚拟机进程,则按照相同页面合并机制对该进程对应的内存进行处理,处理结束后跳转到(1);(4)若该进程是虚拟机进程,则判断是否已经获取该进程对应的虚拟机的内存信息;(5)若还未获取该进程对应的虚拟机的内存信息,则判断该进程对应的虚拟机的操作系统是否已经完成初始化操作;(6)若该进程对应的虚拟机的操作系统已经完成初始化操作,则获取该进程对应的虚拟机的内存信息;(7)若该进程对应的虚拟机的操作系统未完成初始化操作,则跳转到(1)。其中,可以将宿主机上的安装的一个虚拟机作为一个虚拟机进程。
102、根据内存信息确定虚拟机的内存中各虚拟页面的页框号。
由于虚拟机的内存中还包括预留块,预留块一般不进行使用。因此,虚拟机的内存中各虚拟页面的页框号并不是连续的。因此,内存回收装置需要根据虚拟机的内存容量、虚拟机的内存中起始虚拟页面的页框号和终止虚拟页面的页框号确定虚拟机的内存中可用的各虚拟页面的页框号。
103、查询各虚拟页面的页框号对应的页描述符,确定各虚拟页面的页面类型。
其中,页描述符中存有虚拟页面的页框号与页面类型的对应关系。
104、若虚拟页面的页面类型为空闲页面,则确定虚拟页面对应的回收策略为回收虚拟页面在虚拟机所在的宿主机上对应的物理页面,将虚拟页面映射到宿主机上的零页面。
进一步地,若虚拟页面的页面类型为索引节点(inode)页面或大块(slab)页面,则确定虚拟页面对应的回收策略为不对虚拟页面进行处理。
另外,若虚拟页面的页面类型为内核页面、页缓存页面或匿名页面,由于这三种虚拟页面为相同页面概率较大的虚拟页面或者修改频率较低的虚拟页面,因此对应的回收策略可以相同页面合并机制,即对虚拟页面进行扫描,若存在相同页面,则对相同页面中的其中一个虚拟页面之外的其他虚拟页面在宿主机上对应的物理页面进行回收,将相同页面映射到其中一个虚拟页面在宿主机上对应的物理页面。在宿主机上包括多个虚拟机的情况下,对应的回收策略也可以为对虚拟页面进行扫描,若虚拟页面中的第三虚拟页面的内容与已扫描的第四虚拟页面的内容相同,则回收第三虚拟页面在宿主机上对应的物理页面,将第三虚拟页面映射到已扫描的第四虚拟页面在宿主机上对应的物理页面,已扫描的第四虚拟页面可以为宿主机上除第三虚拟页面所在的虚拟机之外的其他虚拟机的虚拟页面。
虚拟页面的页面类型还可以为代码页面或堆栈页面等页面,内存回收装置根据实际需要可以为本发明中未列举出来的其他虚拟页面设置回收策略,此处不再进行赘述。
105、根据回收策略对虚拟页面进行处理。
为了进一步提高内存回收效率,内存回收装置还可以对页面类型对应的虚拟页面的回收策略进行调整,以便内存回收装置能够对各种类型的虚拟页面采取最合适的回收策略。因此步骤105之后,还可以包括:
统计各页面类型对应的虚拟页面中的相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目;根据各页面类型对应的虚拟页面中的相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目,调整各页面类型对应的虚拟页面的回收策略。
例如,当某个页面类型对应的虚拟页面中相同页面的数目小于预设的第三阈值,或者对应的物理页面被回收过的虚拟页面的数目小于预设的第四阈值,内存回收装置可以将该页面类型对应的虚拟页面的回收策略调整为不对页面类型对应的虚拟页面进行处理。
另外,当某个页面类型对应的虚拟页面中相同页面的数目大于或等于预设的第五阈值,或者对应的物理页面被回收过的虚拟页面的数目大于或等于预设的第六阈值,内存回收装置可以将该页面类型对应的虚拟页面的回收策略调整为页面类型为内核页面、页缓存页面或匿名页面的虚拟页面对应的回收策略。
本实施例中,通过根据虚拟机的内存中各虚拟页面的页面类型,采取与页面类型对应的回收策略对各虚拟页面进行处理,从而不需要对虚拟机的内存中的所有虚拟页面都进行扫描及合并,提高了扫描效率,提高了内存页面的合并效率,从而提高了宿主机上内存的回收效率。
图2为本发明提供的内存回收方法又一个实施例的流程图,如图2所示,在图1所示实施例的基础上,为了进一步提高扫描效率,步骤102之前,还可以包括以下步骤:
106、依次获取虚拟机中各进程所占用的内存容量和/或读次数。
其中,若内存回收装置未获取到虚拟机中某个进程所占用的内存容量和/或读次数,则内存回收装置不对该进程进行处理,直接获取下一个进程所占用的内存容量和/或读次数。
107、将占用的内存容量超过预设的第一阈值的进程确定为待扫描进程,和/或,将读次数超过预设的第二阈值的进程确定为待扫描进程。
其中,进程的读次数指的是读该进程对应的内存的次数。
108、对待扫描进程所占用的内存中的各虚拟页面进行扫描,获取待扫描进程所占用的内存中的各虚拟页面的内容。
109、若各虚拟页面中存在相同页面,则对相同页面中的其中一个虚拟页面之外的其他虚拟页面在宿主机上对应的物理页面进行回收,将相同页面映射到其中一个虚拟页面在宿主机上对应的物理页面。
进一步地,在宿主机上包括多个虚拟机的情况下,若各虚拟页面中的第一虚拟页面与已扫描的第二虚拟页面为相同页面,则回收第一虚拟页面在宿主机上对应的物理页面,将第一虚拟页面映射到第二虚拟页面在宿主机上对应的页面,第二虚拟页面为宿主机上除第一虚拟页面所在的虚拟机之外的其他虚拟机的虚拟页面。
更进一步地,为了避免内存回收装置对页面类型为内核页面、页缓存页面或匿名页面的虚拟页面进行重复扫描和回收,步骤109之后,还可以包括:
在宿主机的页面扫描信息表中与其他虚拟页面的页框号对应的页面扫描信息中记录其他虚拟页面在宿主机上对应的物理页面被回收过的信息。
对应的,步骤103之前,还可以包括:
步骤110、根据各虚拟页面的页框号查询页面扫描信息表,确定各虚拟页面中在宿主机上对应的物理页面未被回收过的各虚拟页面的页框号。
对应的,步骤103具体可以为步骤103’:查询对应的物理页面未被回收过的各虚拟页面的页框号对应的页描述符,确定对应的物理页面未被回收过的各虚拟页面的页面类型。
本实施例中,通过根据虚拟机中各进程所占用的内存容量和/或读次数,确定待扫描进程,对待扫描进程所占用的内存进行扫描及回收处理,然后根据对应的物理页面未被回收过的各虚拟页面的页框号,获取对应的物理页面未被回收过的各虚拟页面的页面类型,采取与页面类型对应的回收策略对各虚拟页面进行处理,从而不需要对虚拟机的内存中的所有虚拟页面都进行扫描及合并,提高了扫描效率,提高了虚拟页面的合并效率,从而提高了宿主机上内存的回收效率。
另外,当虚拟机结束运行或者被设置为停止进行页面扫描及回收的模式时,内存回收装置可以撤销对虚拟机的内存的处理。在此过程中需要将该虚拟机中之前被回收的物理页面全部还原,然后将虚拟机的资源释放工作交由宿主机上的操作系统完成。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图3为本发明提供的内存回收装置一个实施例的结构示意图,如图3所示,包括:
获取模块31,用于获取虚拟机的内存信息,内存信息包括:虚拟机的内存容量,虚拟机的内存中起始虚拟页面的页框号和终止虚拟页面的页框号;
确定模块32,用于根据内存信息确定虚拟机的内存中各虚拟页面的页框号;
确定模块32,还用于查询各虚拟页面的页框号对应的页描述符,确定各虚拟页面的页面类型;
若虚拟页面的页面类型为空闲页面,则确定模块32,还用于确定虚拟页面对应的回收策略为回收虚拟页面在虚拟机所在的宿主机上对应的物理页面,将虚拟页面映射到宿主机上的零页面;
处理模块33,用于根据回收策略对虚拟页面进行处理。
进一步地,若虚拟页面的页面类型为索引节点页面或大块页面,确定模块32还可以用于,确定虚拟页面对应的回收策略为不对虚拟页面进行处理。
另外,若页面的页面类型为内核页面、页缓存页面或匿名页面,由于这三种虚拟页面为相同页面概率较大的虚拟页面或者修改频率较低的虚拟页面,因此确定模块32还可以用于确定虚拟页面对应的回收策略为相同页面合并机制,即对虚拟页面进行扫描,若存在相同页面,则对相同页面中的其中一个虚拟页面之外的其他虚拟页面在宿主机上对应的物理页面进行回收,将相同页面映射到其中一个虚拟页面在宿主机上对应的物理页面。在宿主机上包括多个虚拟机的情况下,对应的回收策略也可以为对虚拟页面进行扫描,若虚拟页面中的第三虚拟页面的内容与已扫描的第四虚拟页面的内容相同,则回收第三虚拟页面在宿主机上对应的物理页面,将第三虚拟页面映射到已扫描的第四虚拟页面在宿主机上对应的物理页面,已扫描的第四虚拟页面可以为宿主机上除第三虚拟页面所在的虚拟机之外的其他虚拟机的虚拟页面。
实际中,获取模块的功能具体可以由虚拟机内存分析器来实现,确定模块和处理模块的功能具体可以由内存扫描流程控制器来实现。
本实施例中,通过根据虚拟机的内存中各虚拟页面的页面类型,采取与页面类型对应的回收策略对各虚拟页面进行处理,从而不需要对虚拟机的内存中的所有虚拟页面都进行扫描及合并,提高了扫描效率,提高了内存页面的合并效率,从而提高了宿主机上内存的回收效率。
更进一步地,为了提高扫描效率,获取模块31还可以用于,在确定模块32根据内存信息确定虚拟机的内存中各虚拟页面的页框号之前,依次获取虚拟机中各进程所占用的内存容量和/或读次数;
确定模块32还用于,将占用的内存容量超过预设的第一阈值的进程确定为待扫描进程,和/或,将读次数超过预设的第二阈值的进程确定为待扫描进程;
获取模块31还用于,对待扫描进程所占用的内存中的各虚拟页面进行扫描,获取待扫描进程所占用的内存中的各虚拟页面的内容;
若各虚拟页面中存在相同页面,则处理模块33还用于,对相同页面中的其中一个虚拟页面之外的其他虚拟页面在宿主机上对应的物理页面进行回收,将相同页面映射到其中一个虚拟页面在宿主机上对应的物理页面。
更进一步地,在宿主机上包括多个虚拟机的情况下,若各虚拟页面中的第一虚拟页面与已扫描的第二虚拟页面为相同页面,处理模块33还用于,回收第一虚拟页面在宿主机上对应的物理页面,将第一虚拟页面映射到第二虚拟页面在宿主机上对应的页面,第二虚拟页面为宿主机上除第一虚拟页面所在的虚拟机之外的其他虚拟机的虚拟页面。
再进一步地,为了避免内存回收装置对页面类型为内核页面、页缓存页面或匿名页面的虚拟页面进行重复扫描和回收,内存回收装置还可以包括:记录模块,记录模块用于,在处理模块33将相同页面映射到其中一个虚拟页面在宿主机上对应的物理页面之后,在宿主机的页面扫描信息表中与其他虚拟页面的页框号对应的页面扫描信息中记录其他虚拟页面在宿主机上对应的物理页面被回收过的信息。
对应的,确定模块32查询各虚拟页面的页框号对应的页描述符,确定各虚拟页面的页面类型之前,确定模块32还可以用于根据各虚拟页面的页框号查询页面扫描信息表,确定各虚拟页面中在宿主机上对应的物理页面未被回收过的各虚拟页面的页框号。
对应的,确定模块32查询各虚拟页面的页框号对应的页描述符,确定各虚拟页面的页面类型中,确定模块32具体用于查询对应的物理页面未被回收过的各虚拟页面的页框号对应的页描述符,确定对应的物理页面未被回收过的各虚拟页面的页面类型。
上述实施例中,通过根据虚拟机中各进程所占用的内存容量和/或读次数,确定待扫描进程,对待扫描进程所占用的内存进行扫描及回收处理,然后根据对应的物理页面未被回收过的各虚拟页面的页框号,获取对应的物理页面未被回收过的各虚拟页面的页面类型,采取与页面类型对应的回收策略对各虚拟页面进行处理,从而不需要对虚拟机的内存中的所有虚拟页面都进行扫描及合并,提高了扫描效率,提高了虚拟页面的合并效率,从而提高了宿主机上内存的回收效率。
在图3所示实施例的基础上,为了进一步提高内存回收效率,如图4所示,内存回收装置还可以包括:统计模块34和调整模块35;
统计模块34用于,在处理模块33根据回收策略对虚拟页面进行处理之后,统计各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目;
调整模块35用于,根据各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目调整各页面类型对应的虚拟页面的回收策略。
实际中,统计模块和调整模块的功能具体可以由内存扫描性能评估器来实现。
本实施例中,通过根据虚拟机的内存中各虚拟页面的页面类型,采取与页面类型对应的回收策略对各虚拟页面进行处理,从而不需要对虚拟机的内存中的所有虚拟页面都进行扫描及合并,并且实时调整各页面类型对应的虚拟页面的回收策略,以便能够针对各种类型的虚拟页面采取最合适的回收策略,提高了扫描效率,提高了内存页面的合并效率,从而提高了宿主机上内存的回收效率。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种内存回收方法,其特征在于,包括:
获取虚拟机的内存信息,所述内存信息包括:虚拟机的内存容量,虚拟机的内存中起始虚拟页面的页框号和终止虚拟页面的页框号;
根据所述内存信息确定所述虚拟机的内存中各虚拟页面的页框号;
查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型;
若虚拟页面的页面类型为空闲页面,则确定所述虚拟页面对应的回收策略为回收所述虚拟页面在所述虚拟机所在的宿主机上对应的物理页面,将所述虚拟页面映射到所述宿主机上的零页面;
根据所述回收策略对所述虚拟页面进行处理。
2.根据权利要求1所述的方法,其特征在于,所述查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型之后,还包括:若虚拟页面的页面类型为索引节点页面或大块slab页面,则确定所述虚拟页面对应的回收策略为不对所述虚拟页面进行处理。
3.根据权利要求1所述的方法,其特征在于,所述根据所述内存信息确定所述虚拟机的内存中各虚拟页面的页框号之前,还包括:
依次获取所述虚拟机中各进程所占用的内存容量和/或读次数;
将占用的内存容量超过预设的第一阈值的进程确定为待扫描进程,和/或,将读次数超过预设的第二阈值的进程确定为待扫描进程;
对所述待扫描进程所占用的内存中的各虚拟页面进行扫描,获取所述待扫描进程所占用的内存中的各虚拟页面的内容;
若所述各虚拟页面中存在相同页面,则对所述相同页面中的其中一个虚拟页面之外的其他虚拟页面在所述宿主机上对应的物理页面进行回收,将所述相同页面映射到所述其中一个虚拟页面在所述宿主机上对应的物理页面。
4.根据权利要求3所述的方法,其特征在于,所述对所述待扫描进程所占用的内存中的各虚拟页面进行扫描,获取所述待扫描进程所占用的内存中的各虚拟页面的内容之后,还包括:
若所述各虚拟页面中的第一虚拟页面与已扫描的第二虚拟页面为相同页面,则回收所述第一虚拟页面在所述宿主机上对应的物理页面,将所述第一虚拟页面映射到所述第二虚拟页面在所述宿主机上对应的页面,所述第二虚拟页面为所述宿主机上除所述虚拟机之外的其他虚拟机的虚拟页面。
5.根据权利要求3或4所述的方法,其特征在于,所述将所述相同页面映射到所述其中一个虚拟页面在所述宿主机上对应的物理页面之后,还包括:
在所述宿主机的页面扫描信息表中与所述其他虚拟页面的页框号对应的页面扫描信息中记录所述其他虚拟页面在所述宿主机上对应的物理页面被回收过的信息;
所述查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型之前,还包括:
根据所述各虚拟页面的页框号查询页面扫描信息表,确定所述各虚拟页面中在所述宿主机上对应的物理页面未被回收过的各虚拟页面的页框号;
所述查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型,包括:
查询对应的物理页面未被回收过的各虚拟页面的页框号对应的页描述符,确定对应的物理页面未被回收过的各虚拟页面的页面类型。
6.根据权利要求1或3所述的方法,其特征在于,所述根据所述回收策略对所述虚拟页面进行处理之后,还包括:
统计各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目;
根据各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目调整各页面类型对应的虚拟页面的回收策略。
7.根据权利要求6所述的方法,其特征在于,所述根据各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目调整各页面类型对应的虚拟页面的回收策略,包括:
若页面类型对应的虚拟页面中相同页面的数目小于预设的第三阈值,或者,对应的物理页面被回收过的虚拟页面的数目小于预设的第四阈值,则将页面类型对应的虚拟页面的回收策略调整为不对页面类型对应的虚拟页面进行处理。
8.一种内存回收装置,其特征在于,包括:
获取模块,用于获取虚拟机的内存信息,所述内存信息包括:虚拟机的内存容量,虚拟机的内存中起始虚拟页面的页框号和终止虚拟页面的页框号;
确定模块,用于根据所述内存信息确定所述虚拟机的内存中各虚拟页面的页框号;
所述确定模块,还用于查询所述各虚拟页面的页框号对应的页描述符,确定所述各虚拟页面的页面类型;
若虚拟页面的页面类型为空闲页面,则所述确定模块,还用于确定所述虚拟页面对应的回收策略为回收所述虚拟页面在所述虚拟机所在的宿主机上对应的物理页面,将所述虚拟页面映射到所述宿主机上的零页面;
处理模块,用于根据所述回收策略对所述虚拟页面进行处理。
9.根据权利要求8所述的装置,其特征在于,所述获取模块还用于,在所述确定模块根据所述内存信息确定所述虚拟机的内存中各虚拟页面的页框号之前,依次获取所述虚拟机中各进程所占用的内存容量和/或读次数;
所述获取模块还用于,对待扫描进程所占用的内存中的各虚拟页面进行扫描,获取所述待扫描进程所占用的内存中的各虚拟页面的内容;
若所述各虚拟页面中存在相同页面,则所述处理模块还用于,对所述相同页面中的其中一个虚拟页面之外的其他虚拟页面在所述宿主机上对应的物理页面进行回收,将所述相同页面映射到所述其中一个虚拟页面在所述宿主机上对应的物理页面。
10.根据权利要求8所述的装置,其特征在于,还包括:
统计模块,用于在所述处理模块根据所述回收策略对所述虚拟页面进行处理之后,统计各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目;
调整模块,用于根据各页面类型对应的虚拟页面中相同页面的数目或者对应的物理页面被回收过的虚拟页面的数目调整各页面类型对应的虚拟页面的回收策略。
CN201310484776.0A 2013-10-16 2013-10-16 内存回收方法和装置 Active CN103593298B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310484776.0A CN103593298B (zh) 2013-10-16 2013-10-16 内存回收方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310484776.0A CN103593298B (zh) 2013-10-16 2013-10-16 内存回收方法和装置

Publications (2)

Publication Number Publication Date
CN103593298A CN103593298A (zh) 2014-02-19
CN103593298B true CN103593298B (zh) 2016-08-31

Family

ID=50083449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310484776.0A Active CN103593298B (zh) 2013-10-16 2013-10-16 内存回收方法和装置

Country Status (1)

Country Link
CN (1) CN103593298B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103870315B (zh) * 2014-03-26 2017-05-31 中国联合网络通信集团有限公司 一种jvm能耗控制方法及装置
CN104407928A (zh) * 2014-11-18 2015-03-11 杭州华为企业通信技术有限公司 一种数据传输方法及装置
CN105159777B (zh) * 2015-08-03 2018-07-27 中科创达软件股份有限公司 进程的内存回收方法及装置
CN108021442A (zh) * 2016-11-03 2018-05-11 阿里巴巴集团控股有限公司 释放物理内存的系统、装置及方法
CN106843756B (zh) * 2017-01-13 2019-12-31 中国科学院信息工程研究所 基于页面分类的内存页面回收方法及系统
CN108205501B (zh) * 2017-06-26 2020-08-07 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108205471B (zh) * 2017-08-01 2021-04-27 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108205498B (zh) * 2017-08-01 2021-04-27 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN108228449B (zh) * 2017-08-15 2021-02-19 珠海市魅族科技有限公司 终端设备控制方法及装置、终端设备及计算机可读存储介质
CN111651236A (zh) * 2020-05-11 2020-09-11 腾讯科技(深圳)有限公司 虚拟机内存优化处理方法及相关装置
CN111858057B (zh) * 2020-07-24 2022-04-15 Oppo(重庆)智能科技有限公司 运行内存的分配方法、装置、计算机设备以及存储介质
CN113986540B (zh) * 2021-10-25 2024-05-10 苏州浪潮智能科技有限公司 定时回收linux高速缓存的方法和装置
CN114595038A (zh) * 2022-04-28 2022-06-07 阿里云计算有限公司 数据处理方法、计算设备及计算机存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1162786A (zh) * 1996-01-31 1997-10-22 株式会社东芝 用于多任务设施信息处理系统的资源管理方法和设备
US7516291B2 (en) * 2005-11-21 2009-04-07 Red Hat, Inc. Cooperative mechanism for efficient application memory allocation
CN101403992A (zh) * 2008-07-18 2009-04-08 华为技术有限公司 实现远程内存交换的方法、装置及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1162786A (zh) * 1996-01-31 1997-10-22 株式会社东芝 用于多任务设施信息处理系统的资源管理方法和设备
US7516291B2 (en) * 2005-11-21 2009-04-07 Red Hat, Inc. Cooperative mechanism for efficient application memory allocation
CN101403992A (zh) * 2008-07-18 2009-04-08 华为技术有限公司 实现远程内存交换的方法、装置及系统

Also Published As

Publication number Publication date
CN103593298A (zh) 2014-02-19

Similar Documents

Publication Publication Date Title
CN103593298B (zh) 内存回收方法和装置
CN105283855B (zh) 一种寻址方法及装置
CN106843756A (zh) 基于页面分类的内存页面回收方法及系统
CN103677653B (zh) 一种基于ssd的数据处理方法及电子设备
CN104484283B (zh) 一种降低固态硬盘写放大的方法
CN101645043B (zh) 写数据的方法、读数据的方法及存储设备
CN105989129A (zh) 实时数据统计方法和装置
CN106201908A (zh) 包括半导体存储器件的存储系统及其操作方法
CN103412825B (zh) 一种内存释放方法及装置
CN107102896A (zh) 一种多级缓存的操作方法、装置及电子设备
CN107179878A (zh) 基于应用优化的数据存储的方法和装置
CN106709013A (zh) 数据处理方法及对应装置、数据交互方法及对应装置
CN114356248B (zh) 一种数据处理方法和装置
CN104346384A (zh) 一种小文件处理方法及装置
CN107797772A (zh) 一种基于闪存介质的垃圾回收系统及方法
US20170160940A1 (en) Data processing method and apparatus of solid state disk
CN106558083A (zh) 一种webp压缩算法帧内预测阶段的加速方法、装置及系统
CN101246440A (zh) Java卡系统垃圾回收方法
CN108763100A (zh) 一种固态存储设备快速trim方法及其系统
CN106815232A (zh) 目录管理方法、装置及系统
CN103514098B (zh) 用于回收存储空间的方法和系统
CN107341049A (zh) 一种事务处理的优化处理方法及装置
CN1961296A (zh) 缓存装置及方法
CN112015791B (zh) 数据处理方法、装置、电子设备及计算机存储介质
CN105912404B (zh) 一种基于磁盘的大规模图数据中寻找强连通分量的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant