CN106843756B - 基于页面分类的内存页面回收方法及系统 - Google Patents
基于页面分类的内存页面回收方法及系统 Download PDFInfo
- Publication number
- CN106843756B CN106843756B CN201710024148.2A CN201710024148A CN106843756B CN 106843756 B CN106843756 B CN 106843756B CN 201710024148 A CN201710024148 A CN 201710024148A CN 106843756 B CN106843756 B CN 106843756B
- Authority
- CN
- China
- Prior art keywords
- page
- client
- host
- memory
- pages
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种基于页面分类的内存页面回收方法及系统,该方法步骤为:定时循环扫描主机中所有内存页面所对应的“struct page”结构,根据该“struct page”结构分析内存页面在主机中的页面类型;当内存页面在主机中的页面类型为匿名页面时根据主机内核提供的逆向映射关系判断内存页面是否属于客户机进程,求出属于客户机进程的内存页面在客户机中的“struct page”结构,根据该“struct page”结构分析内存页面在客户机中的页面类型;根据上述页面分类信息将所有页面链接到相应类型链表上;读取每种类型页面的数量,按照客户机页面分类回收顺序模型确定当前时刻的回收策略,根据该回收策略回收内存页面。
Description
技术领域
本发明涉及计算机操作系统以及虚拟化技术领域,尤其涉及一种基于页面分类的内存页面回收方法及系统。
背景技术
随着计算机硬件性能的不断提高,如何让软件更加有效的使用现代硬件的强大计算能力一直都是产业界和学术界关注的焦点。硬件虚拟化技术的出现为该问题的解决提供一个全新的解决方案。在硬件虚拟化技术的支撑下,多台虚拟的客户机可以在同一台物理主机上同时运行,这极大的提高了主机的硬件利用效率。然而,多台虚拟机竞争物理主机资源的矛盾又日益的凸显了出来。
内存是计算机系统中最重要的硬件资源之一,如何有效的管理和分配内存一直都是操作系统领域的一个研究方向。在历史的发展中,操作系统对内存的管理经过了实地址空间管理、分段式管理以及分页式管理,并最终在分页机制的支持下实现了虚地址空间管理和页面交换机制——即将内存中的页面交换至磁盘以提升内存可使用的总量。在虚拟化环境下对内存页面的管理是对上述历史发展的沿革,其关键的任务在于两点:1)及时将一台客户机中不再使用的内存进行回收并分配给有内存需求的另一台客户机;2)提高换页机制的效率,即不要对无效页面进行换页操作,例如,将客户机中的空闲页面交换到磁盘上就是一种典型的无效操作,其浪费了大量的系统资源。
KVM是Kernel-based Virtual Machine的简写,其意为基于内核的虚拟机。KVM是专门为Linux内核开发的虚拟化基础设施,通过将KVM模块插入内核就可以使得Linux变成一个虚拟机监控器,并在其上运行虚拟的客户机。当前,在以KVM为基础的虚拟化环境中主要实现了三种对内存的管理机制:
(1)页面交换:物理机有内存压力时进行,根据LRU算法将较长时间未使用的页面交换到磁盘上。物理机的内存压力能及时降低,但有磁盘访问的开销。另外,物理机对客户机内存的实际使用情况并不了解,无法做到高效地管理客户机内存。这种内存管理机制就是传统的操作系统内存管理机制,其并未针对虚拟化环境进行优化。
(2)气球技术(memory ballooning):客户机内安装有驱动程序,由物理机指示该驱动在客户机上控制内存“气球”的大小,在物理机上管理“气球”所对应的内存。内存压力从物理机转移到客户机中,可根据客户机内存使用情况较为高效地回收内存页面。这种机制最主要的问题在于:1)如何确定“气球”的大小,即应该从一台客户机中拿走多少内存;2)由客户机将内存页面写入磁盘的开销要比由主机来执行的开销大。
(3)KSM(Kernel Samepage Merging):即内核相同页面合并,用一个内核线程扫描客户机进程所使用的内存区域,合并相同内容页面,写时复制。该机制的问题在于:1)需要消耗较多的处理器资源且时效性较差;2)不一定能够显著地减轻内存压力,需要根据页面内容的重复程度而定。
发明内容
本发明是针对KVM虚拟化环境提出的。如上所述,当前KVM虚拟化环境中的三种内存管理机制存在着各自的缺点,但归结起来这三种方法所存在的最根本的问题在于:主机系统并不真正了解客户机系统对内存的具体使用情况。
针对上述问题,本发明提供一种基于页面分类的内存页面回收方法及系统,该方法及系统提高了KVM虚拟化系统内存页面回收的效率,从而使得当主机系统处于较大内存压力时的性能得到提升。
针对上述目的,本发明所采用的技术方案为:
一种基于页面分类的内存页面回收方法,其步骤包括:
1)定时循环扫描主机中所有内存页面所对应的“struct page”结构,并根据该“struct page”结构分析内存页面在主机中的页面类型;
2)当内存页面在主机中的页面类型为匿名页面时根据主机内核提供的逆向映射关系判断内存页面是否属于客户机进程,求出属于客户机进程的内存页面在客户机中的“struct page”结构,并根据该“struct page”结构分析内存页面在客户机中的页面类型;
3)根据上述页面分类信息将所有页面链接到相应类型的链表上;
4)读取每种类型页面的数量,按照客户机页面分类的回收顺序模型确定当前时刻的回收策略,并根据该回收策略回收内存页面。
进一步地,在步骤1)之后还包括:根据步骤1)中的“struct page”结构中的mapping成员的值的最低比特位是否置位来判断当前内存页面在主机中是否属于匿名页面,若置位则属于匿名页面。
进一步地,步骤2)中采用自省方法求出属于客户机进程的内存页面在客户机中的“struct page”结构;所述自省方法是指将客户机地址快速转换为主机地址;所述求出属于客户机进程的内存页面在客户机中的“struct page”结构是指将客户机中“struct page”结构的GVA(客户机虚拟地址)转换为HPA(主机物理地址),其转换步骤为:
a)利用公式GPAstruct page=GFN*sizeof(struct page)+gva_to_gpa(VMEMMAP),将GVA转换为GPA(客户机物理地址);
b)利用KVM以及主机的页表所提供的信息将GPA转化为HPA。
进一步地,步骤4)中所述客户机页面分类的回收顺序模型是指以不活跃页面优先于活跃页面、文件缓存页面优先于匿名页面为原则所确立的页面回收顺序,即按照如下的顺序来对内存页面进行回收:客户机空闲页面>=主机不活跃文件缓存页面>=客户机不活跃文件缓存页面>=主机不活跃匿名页面>=客户机不活跃匿名页面>=主机活跃文件缓存页面>=客户机活跃文件缓存页面>=主机活跃匿名页面>=客户机活跃匿名页面。
进一步地,当一个正在执行的进程向主机系统申请内存而该主机系统中的空闲内存小于阈值时,主机系统回收内存页面,其中阈值的大小由确定。
更进一步地,根据内存页面被访问的频率将主机系统中所有被使用的内存页面分为活跃页面集合和不活跃页面集合,当主机系统执行内存页面回收时,其步骤包括:
a)将内存页面从活跃页面集合转移到不活跃页面集合中;
b)从不活跃页面集合中选择最不活跃页面进行回收。
更进一步地,步骤a)中所述将内存页面从活跃页面集合转移到不活跃页面集合中的方法步骤包括:
1)选定所有属于活跃页面集合中的页面,并重新检查活跃页面集合中每个页面在客户机中的页面类型;
2)按照客户机空闲页面>=客户机不活跃文件缓存页面>=客户机活跃文件缓存页面>=客户机不活跃匿名页面>=客户机活跃匿名页面>=主机活跃文件缓存页面>=主机活跃匿名页面的优先级顺序从活跃页面集合中对应的虚拟LRU链表中选择一定数量的页面并将其放入相应类型的不活跃页面集合中。
更进一步地,步骤b)中所述从不活跃页面集合中选择最不活跃页面进行回收的方法步骤包括:
1)按照客户机空闲页面>=客户机不活跃文件缓存页面>=客户机活跃文件缓存页面>=客户机不活跃匿名页面>=客户机活跃匿名页面>=主机不活跃文件缓存页面>=主机不活跃匿名页面的优先级顺序从不活跃页面集合中对应的虚拟LRU链表中选择一定数量的页面;
2)如果选取的页面属于客户机空闲页面,则直接将该页面转化为主机空闲页面;
3)如果选取的页面属于客户机不活跃文件缓存页面,则首先将该页面在客户机中所对应的“struct page”结构中flags成员的PG_update标志位清零,然后再将该页面转换为主机空闲页面;
4)如果是其它类型的页面,则首先将其内存写入磁盘上的SWAP空间(即交换分区)中,然后再将该页面转换为主机空闲页面。
一种基于页面分类的内存页面回收系统,包括主机页面扫描模块、客户机页面类型分析模块、虚拟LRU链表模块和页面分类的回收模块;
所述主机页面扫描模块用于定时循环扫描主机中所有内存页面所对应的“structpage”结构,并根据该“struct page”结构中的相关信息判断该内存页面是否属于客户机进程,如果是则发给客户机页面类型分析模块对该内存页面进行分析并将分析结果发给虚拟LRU链表模块;
所述客户机页面类型分析模块用于对从所述主机页面扫描模块发来的分析请求进行页面分析,之后将分析结果返回给所述主机页面扫描模块;并且该模块利用自省方法求出客户机中的“struct page”结构,并根据该“struct page”结构分析内存页面在客户机中的页面类型;
所述虚拟LRU链表模块用于接收所述主机页面扫描模块发送的页面分类信息,将页面链接到相应的类型链表上;并且当页面分类的回收模块发出请求时,从相应虚拟LRU链表上取出相应的内存页面以供回收;
所述页面分类的回收模块用于从所述虚拟LRU链表模块中读取每种类型页面的数量,按照客户机页面分类的回收顺序模型确定当前时刻的回收策略,并根据该回收策略向虚拟LRU链表模块请求需要回收的类型页面,之后将需要回收的页面传递给Linux内存页面回收子系统。
进一步地,所述页面分类的回收模块还对客户机空闲页面和客户机文件缓存页面进行了专门的优化处理,使得在回收这两种页面时不需要进行磁盘写入。
本发明提供一种基于页面分类的内存页面回收方法及系统,首先使用自省方法(即不需要对客户机进行任何修改)分析出客户机的页面类型,然后提出了一种客户机页面分类的回收顺序模型,最后根据该模型来对系统中的页面进行回收。
本发明的积极效果体现在如下方面:1)由于识别出了客户机中的空闲页面从而避免了将客户机空闲页面写入磁盘中交换空间的无效操作;2)尽可能的避免了将客户机中的文件缓存页面写入磁盘中交换空间,减小了对磁盘交换区的读写所带来的I/O压力;3)提出了一种更加精确的回收顺序模型,从而使得最不活跃的页面被最优先换出,减小了将活跃页面交换到磁盘上所带来的多次换页的问题。也就是说,本发明是对当前KVM虚拟化环境中三种已有的内存管理技术的改进,本发明提高了KVM虚拟化系统内存页面回收的效率,从而使得当系统处于较大内存压力时的性能得到提升。
附图说明
图1为本发明客户机页面分类的回收顺序模型示意图。
图2为本发明基于页面分类的内存页面回收系统总体结构示意图。
图3为本发明基于页面分类的内存页面回收方法流程示意图。
图4为本发明页面类型分析流程示意图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
在Linux系统中,内存页面分为三类:匿名页面(Anonymous Page)、文件缓存页面(File Cache Page)以及空闲页面(Free Page)。其中,根据页面活跃程度的不同又可以把匿名页面分为活跃匿名页面(Active Anonymous Page)与不活跃匿名页面(InactiveAnonymous Page),把文件缓存页面分为活跃文件缓存页面(Active File Cache Page)与不活跃文件缓存页面(Inactive File Cache Page)。在KVM虚拟化环境(插入了KVM模块的Linux系统)中,KVM客户机被主机当中一个进程来进行管理,所以KVM客户机所使用的内存页面全部都被主机认定为匿名页面。然而,客户机中的Linux操作系统将其自身所使用的内存页面同样划分成上述的三类。正是这种主机与客户机对同一页面的不同认识导致了主机对内存页面进行了不当的回收。
本发明提出的正是一种根据客户机页面类型来确定页面回收顺序的方法和系统。本发明首先使用自省的方法(即不需要对客户机进行任何修改)分析出客户机的页面类型;然后提出了一种客户机页面分类的回收顺序模型,如图1所示,原有的页面回收顺序为主机不活跃文件缓存页面>=主机不活跃匿名页面>=主机活跃文件缓存页面>=主机活跃匿名页面,在考虑了客户机的页面类型后,回收的顺序调整为客户机空闲页面>=主机不活跃文件缓存页面>=客户机不活跃文件缓存页面>=主机不活跃匿名页面>=客户机不活跃匿名页面>=主机活跃文件缓存页面>=客户机活跃文件缓存页面>=主机活跃匿名页面>=客户机活跃匿名页面;最后根据该模型来对系统中的页面进行回收。
本发明提供一种基于页面分类的页面回收系统,该系统对于所有的用户均是透明的,系统不需要任何配置,并且随着主机系统的启动而自动启动。该系统总体结构示意图如图2所示,该系统由四大模块组成,分别阐述如下:
(1)主机页面扫描模块:该模块将定时的循环扫描主机中所有内存页面所对应的“struct page”结构,然后根据该结构中的相关信息判断该页面是否属于客户机进程,如果页面被判定属于客户机进程,则通知客户机页面类型分析模块对该页面进行深度分析以得出其在客户机中的具体类型。
(2)客户机页面类型分析模块:该模块接收从主机页面扫描模块发来的分析请求,在对页面分析后将分析结果返回主机页面扫描模块。该模块首先利用KVM内核模块中所提供的信息实现一种在64位环境下将客户机地址快速转换为主机地址的自省方法;然后利用这种方法求出客户机中的“struct page”结构;最后根据客户机中的“struct page”结构分析出页面所属的客户机类型。
(3)虚拟LRU链表模块:该模块实现16条分类虚拟的LRU链表(每条链表链接着同一类型的页面),在接收主机页面扫描模块发送的页面分类信息后,该模块将页面链接到相应的类型链表上。该模块的另一个功能是当页面分类的回收模块发出请求时,从相应虚拟LRU链表上取出相应的页面以供回收。
(4)页面分类的回收模块:该模块首先从虚拟LRU链表模块中读取每种类型页面的数量;然后按照客户机页面分类的回收顺序模型确定当前时刻的回收策略;接着根据策略向虚拟LRU链表模块请求需要回收的类型页面;最后将需要回收的页面传递给Linux内存页面回收子系统以完成最终的回收。另外,该模块针对客户机空闲页面(Guest Free Page)和客户机文件缓存页面(Guest File Cache Page)进行了专门的优化处理,使得在回收这两种页面时不需要进行磁盘写入,从而减小了整个系统的I/O次数,最终大大的提高了系统的效率。
本发明还提供一种在KVM虚拟化环境下基于页面分类的内存页面回收方法,该方法流程示意图如图3所示,其步骤包括:
1)扫描页面。当虚拟化主机环境启动之后,主机系统内核将启动内核扫描线程vmm_scan。该内核扫描线程将周期性的扫描系统中的每一个页面,每扫描完一遍之后扫描线程将休息1秒钟。
2)分析页面类型。当一个内存页面被扫描到之后,系统将对该页面的类型进行分析。在Linux内核中使用“struct page”结构来记录系统中内存页面的使用状态,每一个内存页面都对应这一个“struct page”结构的实例。当系统分析一个页面的类型时,实质上是在分析该内存页面所对应的“struct page”结构中各个成员的状态。
请参考图4,该图为本发明页面类型分析流程示意图。对于本发明方法及系统而言,只需要分析成员“flags”、“mapping”、“_count”和“_mapcount”的状态就可以得到页面的类型。其中“_count”成员记录了引用该页面的对象的个数,所以当“_count”成员的值为零的时候就表明该页面为空闲页面。“_mapcount”成员记录了引用该页面的页表的个数,如果“_count”的值不为零而“_mapcount”的值为零就表明该页面被系统内核所使用,即内核页面。当页面被用户进程所使用时,“mapping”成员记录了页面是被用于匿名页面还是用于文件缓存页面,当“mapping”成员的值的最低比特位置位时,表明该页面为匿名页面。“flags”成员的“PG_active”标志位记录了页面是否是活跃页面(Active Page)。当“mapping”代表匿名页面时,“PG_active=1”表明该页面为活跃匿名页面,“PG_active”不为1表明该页面为不活跃匿名页面;当“mapping”不代表匿名页面(即用于文件缓存页面)时,“PG_active=1”表明该页面为活跃文件缓存页面,“PG_active”不为1表明该页面为不活跃文件缓存页面。
如果要得到对一个页面的完整分类,系统需要分别分析页面在主机中的类型以及在客户机中的类型,最后将这两个结果进行综合从而得出完整的分类结果。在实际的执行过程中,系统将首先读取页面在主机中的“struct page”结构然后分析其类型,当且仅当页面在主机中属于匿名页面时(客户机被主机当成一个进程来管理,而进程所使用的内存都被主机定义为匿名页面),系统才尝试读取页面在客户机中的“struct page”结构并分析其在客户机中的类型。
当系统要读取页面在客户机中的“struct page”结构就必须首先将该结构在客户机中的地址转换为主机中的地址。在一个虚拟化的系统中,一共存在四类地址:主机物理地址(Host Physical Address,简称HPA)、主机虚拟地址(Host Virtual Address,简称HVA)、客户机物理地址(Guest Physical Address,简称GPA)和客户机虚拟地址(Guest VirtualAddress,简称GVA)。与这四类地址相关的还有HFN(Host Frame Number主机页帧号)和GFN(Guest Frame Number客户机页帧号)。系统读取页面在客户机中的“struct page”结构其本质就是要将客户机中“struct page”结构的GVA转换为HPA。具体的转换分两个步骤来进行:1)使用公式GPAstruct page=GFN*sizeof(struct page)+gva_to_gpa(VMEMMAP)来将GVA转换为GPA;2)利用KVM以及主机的页表所提供的信息将GPA转化为HPA,从而最终可以读取和分析客户机中的“struct page”结构。
3)建立分类队列。在回收内存页面时,根据回收策略,系统会确定当前时刻需要进行回收的页面类型以及数量。为了在回收时尽可能快的找到需要回收的相应类型的页面,系统在对页面进行类型分析之后将把页面链接到相应页面类型的链表上,即建立分类队列。分类队列模块主要提供如下功能:1)将页面加入到一个对应特定页面类型的队列;2)从一个特定类型的队列中取出一个页面;3)获取某一个队列当前所含有的页面的个数;4)根据一个给定的页面,查询其所属的队列。为了快速判断页面是否在某一个队列中,为分类队列模块设计了位图机制:每一条队列都关联了一个对应主机系统中所有页面的位图。当页面入队列时,队列所关联的位图中的相应比特位将被置位;而当页面出队列时,其相应的比特位将被清零。这样,当需要确定某一个页面是否属于某个队列时,只需要检测其相应的比特位而不需要对整个队列进行遍历,从而大大的加速了查询的过程。此外,由于对页面的回收是一个并发执行的过程,分类队列模块中设计了锁机制,每一个队列都对应了一个互斥锁,当页面被添加到队列或者被从队列中删除的时候都必须进行加锁和解锁的操作,这样就可以保证队列的完整性和有效性。
4)执行回收。对系统中内存页面的回收并不是在任何时候都进行的,系统中设有一个阈值,当且仅当一个执行中进程向系统申请内存而此时系统中的空闲内存小于阈值时回收程序才被执行,其中阈值的大小由确定。在主机系统中(站在主机的角度),对于每一个被进程使用的内存页面,根据其被访问的频率被分为活跃页面集合与不活跃页面集合。当主机系统执行页面回收时,其过程实际分为了两个步骤:1)将页面从活跃页面集合转移到不活跃页面集合中;2)从不活跃页面集合中选择最不活跃页面进行回收。
本系统在执行活跃度转换时将按照如下顺序执行:1)选定所有属于活跃页面集合中的页面,并重新检查活跃页面集合中每个页面在客户机中的页面类型;2)按照客户机空闲页面>=客户机不活跃文件缓存页面>=客户机活跃文件缓存页面>=客户机不活跃匿名页面>=客户机活跃匿名页面>=主机活跃文件缓存页面>=主机活跃匿名页面的优先级顺序从活跃页面集合中对应的虚拟LRU链表中选择一定数量的页面并将其放入相应类型的不活跃页面集合中。
本系统在执行最终页面回收时将按照如下顺序执行:1)按照客户机空闲页面>=客户机不活跃文件缓存页面>=客户机活跃文件缓存页面>=客户机不活跃匿名页面>=客户机活跃匿名页面>=主机不活跃文件缓存页面>=主机不活跃匿名页面的优先级顺序从不活跃页面集合中对应的虚拟LRU链表中选择一定数量的页面;2)如果选取的页面属于客户机空闲页面,则直接将该页面转化为主机空闲页面;3)如果选取的页面属于客户机不活跃文件缓存页面(Guest Inacitve File Page),则首先将该页面在客户机中所对应的“struct page”结构中flags成员的PG_update标志位清零,然后再将该页面转换为主机空闲页面;4)如果是其它类型的页面,则首先将其内存写入磁盘上的SWAP空间(交换分区)中,然后再将该页面转换为主机空闲页面。
以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (9)
1.一种基于页面分类的内存页面回收方法,其步骤包括:
1)定时循环扫描主机中所有内存页面所对应的“struct page”结构,并根据该“structpage”结构分析内存页面在主机中的页面类型;
2)当内存页面在主机中的页面类型为匿名页面时根据主机内核提供的逆向映射关系判断内存页面是否属于客户机进程,采用自省方法求出属于客户机进程的内存页面在客户机中的“struct page”结构,将客户机中“struct page”结构的GVA转换为HPA,并根据该“struct page”结构中各个成员的状态分析内存页面在客户机中的页面类型,包括客户机空闲页面、客户机不活跃文件缓存页面、客户机活跃文件缓存页面、客户机不活跃匿名页面、客户机活跃匿名页面;
3)根据上述页面分类信息将所有页面链接到相应类型的链表上;
4)读取每种类型页面的数量,按照客户机页面分类的回收顺序模型确定当前时刻的回收策略,并根据该回收策略回收内存页面;所述客户机页面分类的回收顺序模型是指以不活跃页面优先于活跃页面、文件缓存页面优先于匿名页面为原则所确立的页面回收顺序,即按照如下的顺序来对内存页面进行回收:客户机空闲页面>=主机不活跃文件缓存页面>=客户机不活跃文件缓存页面>=主机不活跃匿名页面>=客户机不活跃匿名页面>=主机活跃文件缓存页面>=客户机活跃文件缓存页面>=主机活跃匿名页面>=客户机活跃匿名页面。
2.如权利要求1所述的方法,其特征在于,在步骤1)之后还包括:根据步骤1)中的“struct page”结构中的mapping成员的值的最低比特位是否置位来判断当前内存页面在主机中是否属于匿名页面,若置位则属于匿名页面。
3.如权利要求1所述的方法,其特征在于,步骤2)所述将客户机中“struct page”结构的GVA转换为HPA,其转换步骤为:
a)利用公式GPAstruct page=GFN*sizeof(struct page)+gva_to_gpa(VMEMMAP),将GVA转换为GPA;
b)利用KVM以及主机的页表所提供的信息将GPA转化为HPA。
4.如权利要求1所述的方法,其特征在于,当一个正在执行的进程向主机系统申请内存而该主机系统中的空闲内存小于阈值时,主机系统回收内存页面,其中阈值的大小由确定。
5.如权利要求4所述的方法,其特征在于,根据内存页面被访问的频率将主机系统中所有被使用的内存页面分为活跃页面集合和不活跃页面集合,当主机系统执行内存页面回收时,其步骤包括:
a)将内存页面从活跃页面集合转移到不活跃页面集合中;
b)从不活跃页面集合中选择最不活跃页面进行回收。
6.如权利要求5所述的方法,其特征在于,步骤a)中所述将内存页面从活跃页面集合转移到不活跃页面集合中的方法步骤包括:
1)选定所有属于活跃页面集合中的页面,并重新检查活跃页面集合中每个页面在客户机中的页面类型;
2)按照客户机空闲页面>=客户机不活跃文件缓存页面>=客户机活跃文件缓存页面>=客户机不活跃匿名页面>=客户机活跃匿名页面>=主机活跃文件缓存页面>=主机活跃匿名页面的优先级顺序从活跃页面集合中对应的虚拟LRU链表中选择一定数量的页面并将其放入相应类型的不活跃页面集合中。
7.如权利要求5所述的方法,其特征在于,步骤b)中所述从不活跃页面集合中选择最不活跃页面进行回收的方法步骤包括:
1)按照客户机空闲页面>=客户机不活跃文件缓存页面>=客户机活跃文件缓存页面>=客户机不活跃匿名页面>=客户机活跃匿名页面>=主机不活跃文件缓存页面>=主机不活跃匿名页面的优先级顺序从不活跃页面集合中对应的虚拟LRU链表中选择一定数量的页面;
2)如果选取的页面属于客户机空闲页面,则直接将该页面转化为主机空闲页面;
3)如果选取的页面属于客户机不活跃文件缓存页面,则首先将该页面在客户机中所对应的“struct page”结构中flags成员的PG_update标志位清零,然后再将该页面转换为主机空闲页面;
4)如果是其它类型的页面,则首先将其内存写入磁盘上的SWAP空间(即交换分区)中,然后再将该页面转换为主机空闲页面。
8.一种采用权利要求1所述方法的基于页面分类的内存页面回收系统,包括主机页面扫描模块、客户机页面类型分析模块、虚拟LRU链表模块和页面分类的回收模块;
所述主机页面扫描模块用于定时循环扫描主机中所有内存页面所对应的“structpage”结构,并根据该“struct page”结构中的相关信息判断该内存页面是否属于客户机进程,如果是则发给客户机页面类型分析模块对该内存页面进行分析并将分析结果发给虚拟LRU链表模块;
所述客户机页面类型分析模块用于对从所述主机页面扫描模块发来的分析请求进行页面分析,之后将分析结果返回给所述主机页面扫描模块;并且该模块利用自省方法求出客户机中的“struct page”结构,并根据该“struct page”结构分析内存页面在客户机中的页面类型;
所述虚拟LRU链表模块用于接收所述主机页面扫描模块发送的页面分类信息,将页面链接到相应的类型链表上;并且当页面分类的回收模块发出请求时,从相应虚拟LRU链表上取出相应的内存页面以供回收;
所述页面分类的回收模块用于从所述虚拟LRU链表模块中读取每种类型页面的数量,按照客户机页面分类的回收顺序模型确定当前时刻的回收策略,并根据该回收策略向虚拟LRU链表模块请求需要回收的类型页面,之后将需要回收的页面传递给Linux内存页面回收子系统。
9.如权利要求8所述的系统,其特征在于,所述页面分类的回收模块还对客户机空闲页面和客户机文件缓存页面进行了专门的优化处理,使得在回收这两种页面时不需要进行磁盘写入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710024148.2A CN106843756B (zh) | 2017-01-13 | 2017-01-13 | 基于页面分类的内存页面回收方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710024148.2A CN106843756B (zh) | 2017-01-13 | 2017-01-13 | 基于页面分类的内存页面回收方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106843756A CN106843756A (zh) | 2017-06-13 |
CN106843756B true CN106843756B (zh) | 2019-12-31 |
Family
ID=59123481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710024148.2A Active CN106843756B (zh) | 2017-01-13 | 2017-01-13 | 基于页面分类的内存页面回收方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106843756B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205473B (zh) * | 2017-08-21 | 2022-02-08 | 珠海市魅族科技有限公司 | 内存处理方法及装置、计算机装置及计算机可读存储介质 |
CN108089998A (zh) * | 2017-12-13 | 2018-05-29 | 郑州云海信息技术有限公司 | 一种Linux分页替换方法及系统 |
CN109992402B (zh) * | 2017-12-29 | 2021-07-09 | Oppo广东移动通信有限公司 | 内存处理方法和装置、电子设备、计算机可读存储介质 |
CN110162396A (zh) * | 2018-02-14 | 2019-08-23 | 阿里巴巴集团控股有限公司 | 内存回收方法、装置、系统和存储介质 |
CN108595270B (zh) * | 2018-04-27 | 2021-07-23 | 新华三信息安全技术有限公司 | 一种内存资源的回收方法及装置 |
CN110928635B (zh) * | 2018-09-19 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 工作集划分方法和系统 |
CN110955614B (zh) * | 2018-09-26 | 2022-05-03 | Oppo广东移动通信有限公司 | 文件缓存的回收方法、装置、存储介质及终端 |
CN109522179B (zh) * | 2018-10-12 | 2022-05-27 | 网易(杭州)网络有限公司 | 服务器运行状态的监控方法、装置、处理器及服务器 |
CN109582437A (zh) * | 2018-10-29 | 2019-04-05 | 中国科学院信息工程研究所 | 一种基于内存类型感知的恶意进程检测方法和系统 |
CN110908771A (zh) * | 2019-11-14 | 2020-03-24 | 杭州趣链科技有限公司 | 一种基于java的智能合约的内存管理方法 |
CN115757193B (zh) | 2019-11-15 | 2023-11-03 | 荣耀终端有限公司 | 一种内存的管理方法及电子设备 |
CN111078586B (zh) * | 2019-12-10 | 2022-03-01 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN112988610A (zh) * | 2019-12-16 | 2021-06-18 | 深圳市万普拉斯科技有限公司 | 内存回收处理方法、装置、计算机设备和存储介质 |
CN113392037B (zh) * | 2020-03-12 | 2024-06-18 | 深圳市万普拉斯科技有限公司 | 内存回收方法、装置、计算机设备和存储介质 |
CN111562983B (zh) * | 2020-04-30 | 2023-01-06 | Oppo(重庆)智能科技有限公司 | 内存优化方法、装置、电子设备及存储介质 |
CN111858057B (zh) * | 2020-07-24 | 2022-04-15 | Oppo(重庆)智能科技有限公司 | 运行内存的分配方法、装置、计算机设备以及存储介质 |
CN111949564B (zh) * | 2020-08-13 | 2024-05-17 | Vidaa(荷兰)国际控股有限公司 | 一种内存交换方法及显示设备 |
CN112035253B (zh) * | 2020-08-27 | 2023-01-20 | 浪潮商用机器有限公司 | 一种linux系统页缓存回收方法及相关装置 |
CN112052089B (zh) * | 2020-09-01 | 2023-03-28 | Oppo(重庆)智能科技有限公司 | 内存回收方法、装置以及电子设备 |
CN113986540B (zh) * | 2021-10-25 | 2024-05-10 | 苏州浪潮智能科技有限公司 | 定时回收linux高速缓存的方法和装置 |
CN114840330A (zh) * | 2022-03-01 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 一种内存回收方法、装置及控制设备 |
CN117785370A (zh) * | 2022-09-20 | 2024-03-29 | 成都华为技术有限公司 | 一种页面换出方法、装置、设备及数据处理系统 |
CN116089032B (zh) * | 2022-12-26 | 2023-09-05 | 中用科技有限公司 | 通过自适应配置的快速移动应用程序切换方法及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101189584A (zh) * | 2005-06-27 | 2008-05-28 | 起元软件有限公司 | 内存页面管理 |
CN103593298A (zh) * | 2013-10-16 | 2014-02-19 | 北京航空航天大学 | 内存回收方法和装置 |
CN104008061A (zh) * | 2013-02-22 | 2014-08-27 | 华为技术有限公司 | 内存回收方法及装置 |
CN104794182A (zh) * | 2015-04-10 | 2015-07-22 | 中国科学院计算技术研究所 | 一种并行网络文件系统小文件异步预读装置及方法 |
-
2017
- 2017-01-13 CN CN201710024148.2A patent/CN106843756B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101189584A (zh) * | 2005-06-27 | 2008-05-28 | 起元软件有限公司 | 内存页面管理 |
CN104008061A (zh) * | 2013-02-22 | 2014-08-27 | 华为技术有限公司 | 内存回收方法及装置 |
CN103593298A (zh) * | 2013-10-16 | 2014-02-19 | 北京航空航天大学 | 内存回收方法和装置 |
CN104794182A (zh) * | 2015-04-10 | 2015-07-22 | 中国科学院计算技术研究所 | 一种并行网络文件系统小文件异步预读装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106843756A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106843756B (zh) | 基于页面分类的内存页面回收方法及系统 | |
US11803306B2 (en) | Handling frequently accessed pages | |
US8190827B2 (en) | Memory sharing among computer programs | |
US7472249B2 (en) | Kernel memory free algorithm | |
US7945761B2 (en) | Maintaining validity of cached address mappings | |
US20150234669A1 (en) | Memory resource sharing among multiple compute nodes | |
US8074047B2 (en) | System and method for content replication detection and elimination in main memory | |
US8046521B2 (en) | Computer virtualization apparatus and program and method therefor | |
KR101441188B1 (ko) | 가상 시스템에서 메모리 중복 제거를 위한 기술 | |
Dwarkadas et al. | Cashmere-VLM: Remote memory paging for software distributed shared memory | |
CN109697016B (zh) | 用于改进容器的存储性能的方法和装置 | |
Chen et al. | CMD: Classification-based memory deduplication through page access characteristics | |
TW201346591A (zh) | 用於多上下文計算引擎的轉譯後備緩衝之技術 | |
WO2015043376A1 (zh) | 一种页的访问方法和页的访问装置、服务器 | |
CN104239237A (zh) | 一种tlb管理方法及装置 | |
US20050193169A1 (en) | Memory management | |
Mishra et al. | A survey of memory management techniques in virtualized systems | |
Fujimoto et al. | Design and performance of special purpose hardware for Time Warp | |
Zhou et al. | A correlation-aware page-level FTL to exploit semantic links in workloads | |
Hua et al. | Data similarity-aware computation infrastructure for the cloud | |
Veni et al. | MDedup++: Exploiting temporal and spatial page-sharing behaviors for memory deduplication enhancement | |
US8886675B2 (en) | Method and system for managing data clusters | |
Lin et al. | GPU acceleration for kernel samepage merging | |
Huang et al. | A survey of memory deduplication approaches for intelligent urban computing | |
Li et al. | HCCache: a hybrid client-side cache management scheme for I/O-intensive workloads in network-based file systems |
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 |