CN106980541B - 一种大页内存压缩回收系统及方法 - Google Patents
一种大页内存压缩回收系统及方法 Download PDFInfo
- Publication number
- CN106980541B CN106980541B CN201710142827.XA CN201710142827A CN106980541B CN 106980541 B CN106980541 B CN 106980541B CN 201710142827 A CN201710142827 A CN 201710142827A CN 106980541 B CN106980541 B CN 106980541B
- Authority
- CN
- China
- Prior art keywords
- compression
- module
- page
- stream
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
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 Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种大页内存压缩回收系统,包括:回收控制器,用于对大页进行解映射处理;压缩执行流模块,用于控制大页中内存数据的压缩和解压缩的执行流程,负责调用压缩流模块的单压缩或多压缩流压缩内存数据;压缩流模块,负责单压缩流或多压缩流的控制和调度,实时地根据CPU的负载情况分配空闲的单压缩流或多压缩流压缩内存数据;压缩/解压缩算法模块,用于对大页中内存数据的压缩或解压;压缩数据管理模块,用于压缩数据的动态存储管理;本发明还公开了一种利用上述大页内存压缩回收系统今进行大页内存压缩回收方法,本发明不仅可以极大地减少系统内存开销合提升CPU检索cache的速度,还能极大的拓展内存复用率。
Description
技术领域
本发明属于计算机操作系统技术领域,具体涉及一种大页内存压缩回收系统及方法。
背景技术
随着计算机技术的发展,特别是巨型机服务器的内存越来越大。而现有的服务器普遍采用Linux内核对内存按4k一个页的粒度进行管理,对于大内存就显得捉襟见肘。比如对于256G的大内存,用4k页机制的话,单页表描述符就需要2G的内存空间。同时其对应的页表也很巨大,导致CPU的cache因不能全部缓存页表而造成CPU的检索过慢,从而影响性能。
对此Linux内核采用了一种Hugetlb机制把多个连续4k页拼接成2M大页来对大内存进行管理。但是Hugetlb机制不支持大页压缩回收机制,以至于大页内存的利用率不高。因为在大页内存中会存在许多活跃度不高的大页,对其进行压缩存储可以提高内存的利用率。
4k页机制虽然能对内存进行压缩回收但是开销太大以及Hugetlb机制虽然提供2M大页支持但是不能对其进行压缩回收。
现有的典型的内存复用技术,主要有以下几种:内存压缩、内存去重、ballooning技术、transcendent memory技术以及SWAP技术等。
内存去重(memory dedulplication),就是把内存中的重复内容消除以提高内存利用率的技术。由于现代计算机的内存是分页管理的,所以内存去重技术往往指的就是页共享(page sharing)技术。它通过共享相同内容的物理内存页从而降低物理内存消耗。内存去重是去掉重复的物理内存,以节省物理内存。
Ballooning技术和transcendent memory技术是基于虚拟化平台上的内存复用技术。简而言之,就是通过监测虚拟化平台上各个虚拟机的实际内存使用情况,来对各个虚拟机的内存进行管理,即将实际使用内存少于分配的内存的虚拟机内存进行回收,来供给其余用途。
SWAP技术是Linux内核最常用的一种内存扩容技术。该技术把不常用的冷页内存交换到磁盘的swap分区中,需要访问的时候再把其读取到内存中。该机制由于需要读写磁盘,导致系统的响应特别慢。
内存压缩则比较好理解:由于现今计算机的CPU利用率比较空闲,因此,通过使CPU变得“忙碌”起来,将内存中的一些“冷页”进行压缩然后重新存放到内存中,从而来使我们有更多的可用内存。
内存压缩可以有效的提高内存有效容量,降低页故障率,同时不会有大容量内存的使用带来的能耗和空间消耗。同时可以提高内存带宽使用率。但是压缩和解压缩会带来延迟,如果处理不当可能把压缩带来的好处抵消掉。因此有效使用压缩技术需要谨慎选择实现框架、压缩算法等等。
发明内容
鉴于上述,本发明提供了一种大页内存压缩回收系统及方法,主要是基于全新的大页内存管理机制对大页内存进行压缩回收,把不经常访问的大页内存进行压缩回收,腾出的空间让其他用户进程利用,以提高内存的复用率。
一种大页内存压缩回收系统,包括:
回收控制器,用于对接收的大页进行解映射处理,将压缩执行流模块发送来的解压缩数据转送给操作系统;
压缩执行流模块,用于控制解映射处理后大页中内存数据的压缩执行流程,负责调用压缩流模块的单压缩或多压缩流压缩内存数据,得到压缩数据;用于控制压缩数据管理模块中的压缩数据的解压缩执行流程,负责调用压缩流模块的单压缩或多压缩流解压缩压缩数据,得到解压缩数据;
压缩流模块,用于负责单压缩流或多压缩流的控制和调度,实时地根据CPU的负载情况分配空闲的单压缩流或多压缩流压缩内存数据或解压缩压缩数据;
压缩/解压缩算法模块,用于对大页中内存数据的压缩和压缩数据的解压缩;
压缩数据管理模块,用于压缩数据的动态存储管理。
所述的回收控制器用于对从冷热页跟踪模块隔离的冷大页进行解映射处理。因为在压缩期间,进程的页表项还映射了该页,因此必须对其进行解除映射,保证在压缩数据期间不能有其他用户进程修改大页内存里的数据。
所述的压缩执行流模块包括Compress模块、Decompress模块以及压缩流程控制模块,其中,Compress模块用于执行大页中内存数据的压缩,Decompress模块用于执行压缩数据的解压,压缩流程控制模块用于调用单压缩或多压缩流,并控制Compress模块执行大页中内存数据的压缩或控Decompress模块制执行压缩数据的解压。
所述的压缩流模块包括单压缩流、多压缩流以及控制压缩流动态分配模块,其中,控制压缩流动态分配模块用于根据CPU的负载情况分配单压缩流或多压缩流去执行压缩内存数据操作。
压缩流是缓存buffer和算法私有的,每个压缩操作都会独享压缩流。由于上层调用者kswap是多线程的,如果采用单压缩流,将限制kswap的并发。同时如果单压缩流出现数据奔溃或卡住的情况,所有的其他压缩操作将一直处于等待状态,这样将造成效率低下,而多流压缩架构可以让多个压缩操作并行执行,这大大提高了压缩的效率和稳定性。
所述的压缩/解压缩算法模块包括LZO算法模块、LZ4算法模块以及开放算法模块,其中,LZO算法模块内置有压缩或解压的LZO算法,且该算法被单压缩流或多压缩流调用去执行压缩或解压,LZ4算法模块内置有压缩或解压的LZ4算法,且该算法被单压缩流或多压缩流调用去执行压缩或解压,开放算法模块用于将其他开源算法直接移植于该模块内,并被单压缩流或多压缩流调用。
LZO和LZ4算法是比较成熟的压缩算法。目前Linux内核3.10版本只有LZO算法,Linux内核3.15版本引入了LZ4算法。本系统直接移植这两种算法,LZO算法比LZ4算法有更好的压缩比和更快的压缩速度,但是LZ4在解压速度上比LZO算法更优秀。由于大页有2M大,必须对其进行快速的解压,因此LZ4算法在本系统中更具优势。这两个模块是独立模块,可以用开放算法模块中引入的其他算法替换。
所述的压缩数据管理模块包括压缩数据的组织存放模块和Mem_pool模块,其中,压缩数据的组织存放模块用于将接收的压缩数据存放于Mem_pool模块,Mem_pool模块用于压缩数据。
如果将2M大页进行压缩后的压缩数据还是存放于2M大页内,这会导致空间利用率低和数据迁移慢的问题。处于空间率用率和安全性通用性的考虑,本发明运用vmalloc函数将压缩数据放在内核空间的4k小页内,占用整数个4k小页,不满4k小页也占用整个4k小页。这样每个2M大页压缩后的压缩数据最多就浪费4k的内存空间,空间浪费率为1/512。对于解压缩以后,系统将整个4k小页直接释放掉,不会造成空间碎片化。
所述的压缩数据的组织存放模块包含用于对大页数据进行管理的红黑树,所述的红黑树的每个节点是三元组mapping、index、address,其中,mapping和index为每个大页page中独有的元素,以mapping为第一关键字和以index作为第二关键字在红黑树中进行排序,用于对大页进行标记;address保存存储压缩数据4k小页的虚拟地址。这样每次解压缩的时候只需要log(n)的复杂度就可以找到压缩数据的地址进行解压缩。
压缩数据的组织存放模块改变了页表项的映射,压缩前虚拟地址映射的是一块连续的2M物理页,压缩以后将虚拟地址映射到一组4K页。本质就是开始时虚拟地址指向2M页,压缩以后将虚拟地址直指向新存放的地址。
本发明还提供了一种大页内存压缩回收方法,具体包括:
大页内存数据的压缩:回收控制器对大页进行枷锁和unmap操作处理,并将处理后的大页发送至压缩执行流模块,压缩执行流模块调用压缩流模块中的压缩流和压缩/解压算法模块中的压缩算法对大页进行压缩,并将得到的压缩数据发送至压缩数据管理模块,利用红黑树将压缩数据存储于小页中。
压缩数据的解压缩:压缩执行流模块接收来自回收控制器的解压缩命令,通过压缩数据管理模块中的红黑树查找压缩数据,并调用压缩流模块中的压缩流和压缩/解压算法模块中的解压算法对小页进行解压缩,然后将解压缩后的数据写入当前大页,发送至回收流控制器。
所的大页内存数据的压缩具体包括以下步骤:
(a-1)利用回收控制器对冷热页追踪隔离出来的大页进行加锁,防止其他内核模块或进程占用该页;
(a-2)利用回收控制器对该大页进行unmap操作,清空所有映射此大页的页表项pte,保证在压缩过程中用户进程不能修改该大页的数据;
(a-3)Compress模块判断大页是否超出压缩限制,若是,则不进行压缩,若否,执行步骤(a-4);
(a-4)Compress模块检查大页是否为全0页,若是,将该大页进行特殊标记,并将数据直接扔掉,不进行压缩;若否,执行步骤(a-5);
(a-5)压缩流程控制模块根据回收控制器发送来的大页向控制压缩流的动态分配模块发出调用压缩流的指令;
(a-6)控制压缩流的动态分配模块根据CPU的负载情况分配空闲的单压缩流或多压缩流供压缩流程控制模块调用,若没有空闲的单压缩流或多压缩流,控制压缩流的动态分配模块则进行睡眠等待,直到存在空闲的单压缩流或多压缩流再进行分配;
(a-7)被分配的单压缩流或多压缩流调用压缩/解压缩算法模块中的一个或多个压缩算法随同自身被压缩流程控制模块调用;
(a-8)压缩流程控制模块根据调用的单压缩流或多压缩流以及压缩算法控制Compress模块对大页中的内存数据进行压缩,得到压缩数据;
(a-9)压缩数据的组织存放模块将接收到的压缩流中的压缩数据拷贝至Mem_pool模块的4k小页中,并将4k小页的address以及当前大页的mapping和index插入到红黑树里;
(a-10)压缩流程控制模块释放单圧缩流或多压缩流,将当前大页从页缓存PageCache中移除;
(a-11)回收控制器接触页锁,并释放该大页。
所述的压缩数据的解压缩具体包括以下步骤:
(b-1)当访问大页触发缺页异常时,回收控制器判断大页的页表项pte是否为空,若是,执行步骤(b-2),若否,则不是由压缩造成的缺页异常,结束解压缩;
(b-2)Decompress模块判断页缓存Page Cache中是否有对应的文件页,若是,将文件页映射给当前产生缺页异常的页表项pte;若否,执行步骤(b-3);
(b-3)Decompress模块申请一个新大页,并将该新大页加入至页缓存Page Cache;
(b-4)Decompress模块利用当前产生缺页异常的vma找到相应的mapping和index,并利用该二元组mapping和index到红黑树中查找是否存在压缩数据,若是,执行步骤(b-5);若否,则是第一次访问,执行步骤(b-6);
(b-5)Decompress模块从红黑树中找到压缩数据的地址,通过标志位判断大页是否是全0页,若是,则直接对大页写0。若否,执行步骤(b-6);
(b-6)压缩流程控制模块调用压缩/解压缩算法模块中的一个或多个压缩解压缩算法并控制Decompress模块对4k小页中的压缩数据进行解压缩,并将解压后的数据写入当前大页;
(b-7)把当前的页表项pte映射到该大页。
本发明基于全新的4k小页和2M大页分开管理框架,对2M大页进行压缩回收,不仅可以极大地减少系统内存开销合提升CPU检索cache的速度,还能极大的拓展内存复用率。经测试,可以对内存进行“扩容”2倍以上。比如256G的物理内存,用户能够用的内存可达500G以上。同时本压缩系统采用模块化设计,支持热插拔,和原生的Linux内核耦合性低,可方便修改适应不同的内核版本。
附图说明
图1是本发明实施例大页内存压缩构架概要图;
图2是本发明实施例大页内存压缩回收系统的结构示意图;
图3是本发明实施例改变页表项的映射原理图;
图4是本发明实施例大页内存数据的压缩方法流程图;
图5是本发明实施例压缩数据的解压缩方法流程图。
具体实施方式
为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。
图1所示的是大页内存压缩构架概要图,该架构把物理内存分为两个部分:4k空间和2M空间。利用全新的大页内存独立管理机制管理2M大页内存。而原生的Linux内存管理机制负责管理4k页空间,针对于冷热页追踪模块筛选出来的冷大页,采用本发明提出的大页内存压缩回收系统对其进行压缩存储管理。
图2所示的是实施例大页内存压缩回收系统的结构示意图,如图2所示,本实施例大页内存压缩回收系统,包括:回收控制器、压缩执行流模块、压缩流模块、压缩/解压缩算法模块以及压缩数据管理模块。
回收控制器用于对从冷热页跟踪模块隔离的冷大页进行解映射处理。因为在压缩期间,进程的页表项还映射了该页,因此必须对其进行解除映射,保证在压缩数据期间不能有其他用户进程修改大页内存里的数据。
压缩执行流模块包括Compress模块、Decompress模块以及压缩流程控制模块,其中,Compress模块用于执行大页中内存数据的压缩,Decompress模块用于执行压缩数据的解压,压缩流程控制模块用于调用单压缩或多压缩流,并控制Compress模块执行大页中内存数据的压缩或控Decompress模块制执行压缩数据的解压。
压缩流模块包括单压缩流、多压缩流以及控制压缩流动态分配模块,其中,控制压缩流动态分配模块用于根据CPU的负载情况分配单压缩流或多压缩流去执行压缩内存数据操作。
压缩流是缓存buffer和算法私有的,每个压缩操作都会独享压缩流。由于上层调用者kswap是多线程的,如果采用单压缩流,将限制kswap的并发。同时如果单压缩流出现数据奔溃或卡住的情况,所有的其他压缩操作将一直处于等待状态,这样将造成效率低下,而多流压缩架构可以让多个压缩操作并行执行,这大大提高了压缩的效率和稳定性。
压缩/解压缩算法模块包括LZO算法模块、LZ4算法模块以及开放算法模块,其中,LZO算法模块内置有压缩或解压的LZO算法,且该算法被单压缩流或多压缩流调用去执行压缩或解压,LZ4算法模块内置有压缩或解压的LZ4算法,且该算法被单压缩流或多压缩流调用去执行压缩或解压,开放算法模块用于将其它开源算法直接移植于该模块内,并被单压缩流或多压缩流调用。
LZO和LZ4算法是比较成熟的压缩算法。目前Linux内核3.10版本只有LZO算法,Linux内核3.15版本引入了LZ4算法。本系统直接移植这两种算法,LZO算法比LZ4算法有更好的压缩比和更快的压缩速度,但是LZ4在解压速度上比LZO算法更优秀。由于大页有2M大,必须对其进行快速的解压,因此LZ4算法在本系统中更具优势。这两个模块是独立模块,可以用开放算法模块中引入的其他算法替换。
压缩数据管理模块包括压缩数据的组织存放模块和Mem_pool模块,其中,压缩数据的组织存放模块用于将接收的压缩数据存放于Mem_pool模块,Mem_pool模块用于压缩数据。
如果将2M大页进行压缩后的压缩数据还是存放于2M大页内,这会导致空间利用率低和数据迁移慢的问题。处于空间率用率和安全性通用性的考虑,本发明运用vmalloc函数将压缩数据放在内核空间的4k小页内,占用整数个4k小页,不满4k小页也占用整个4k小页。这样每个2M大页压缩后的压缩数据最多就浪费4k的内存空间,空间浪费率为1/512。对于解压缩以后,系统将整个4k小页直接释放掉,不会造成空间碎片化。
压缩数据的组织存放模块包含用于对大页数据进行管理的红黑树,所述的红黑树的每个节点是三元组mapping、index、address,其中,mapping和index为每个大页page中独有的元素,以mapping为第一关键字和以index作为第二关键字在红黑树中进行排序,用于对大页进行标记;address保存存储压缩数据4k小页的虚拟地址。这样每次解压缩的时候只需要log(n)的复杂度就可以找到压缩数据的地址进行解压缩。
压缩数据的组织存放模块改变了页表项的映射,压缩前虚拟地址映射的是一块连续的2M物理页,压缩以后将虚拟地址映射到一组4K页。本质就是开始时虚拟地址指向2M页,压缩以后将虚拟地址直指向新存放的地址,其原理图如图3所示。
本实施例还提供了一种利用上述大页内存压缩回收系统今进行大页内存压缩回收方法,包括大页内存数据的压缩方法和压缩数据的解压缩方法。
如图4所示的是本发明提供的大页内存数据的压缩方法实施例流程示意图,本实施例所描述的大页内存数据的压缩方法,具体包括以下步骤:
S101,利用回收控制器对冷热页追踪隔离出来的大页进行加锁,防止其他内核模块或进程占用该页。
S102,利用回收控制器对该大页进行unmap操作,清空所有映射此大页的页表项pte,保证在压缩过程中用户进程不能修改该大页的数据。
S103,Compress模块判断大页是否超出压缩限制,若是,即大页没有空间存放数据,则不进行压缩,若否,执行步骤S104。
S104,Compress模块判断大页是否为全0页,若是,将该大页进行特殊标记,并将数据直接扔掉,不进行压缩;若否,执行S105。
S105,压缩流程控制模块根据回收控制器发送来的大页向控制压缩流的动态分配模块发出调用压缩流的指令。
S106,控制压缩流的动态分配模块根据CPU的负载情况分配空闲的多压缩流供压缩流程控制模块调用。
S107,被分配的多压缩流调用压缩/解压缩算法模块中的LZ4算法随同自身被压缩流程控制模块调用。
S108,压缩流程控制模块根据调用的多压缩流以及LZ4算法控制Compress模块对大页中的内存数据进行压缩,得到压缩数据。
S109,压缩数据的组织存放模块将接收到的压缩流中的压缩数据拷贝至Mem_pool模块的4k小页中,并将4k小页的address以及当前大页的mapping和index插入到红黑树里。
S110,压缩流程控制模块释放多压缩流,将当前大页从页缓存Page Cache中移除。
S111,回收控制器接触页锁,并释放该大页。
如图5所示是本发明提供的压缩数据的解压缩方法实施例流程示意图,本实施例所描述的压缩数据的解压缩方法,具体包括以下步骤;
S201,当访问大页触发缺页异常时,回收控制器判断大页的页表项pte是否为空,若是,执行S202,若否,则不是由压缩造成的缺页异常,结束解压缩。
S202,Decompress模块判断页缓存Page Cache中是否有对应的文件页,若是,将文件页映射给当前产生缺页异常的页表项pte;若否,执行S203。
S203,Decompress模块申请一个新大页,并将该新大页加入至页缓存Page Cache。
S204,Decompress模块利用当前产生缺页异常的vma找到相应的mapping和index,并利用该二元组mapping和index到红黑树中查找是否存在压缩数据,若是,执行S205;若否,则是第一次访问,执行S206。
S205,Decompress模块从红黑树中找到压缩数据的地址,通过标志位判断大页是否是全0页,若是,则直接对大页写0。若否,执行S206。
S206,压缩流程控制模块调用压缩/解压缩算法模块中的LZO算法并控制Decompress模块对4k小页中的压缩数据进行解压缩,并将解压后的数据写入当前大页。
S207,把当前的页表项pte映射到该大页。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种大页内存压缩回收系统,其特征在于,包括:
回收控制器,用于对接收的大页进行解映射处理,将压缩执行流模块发送来的解压缩数据转送给操作系统;
压缩执行流模块,用于控制解映射处理后大页中内存数据的压缩执行流程,负责调用压缩流模块的单压缩或多压缩流压缩内存数据,得到压缩数据;用于控制压缩数据管理模块中的压缩数据的解压缩执行流程,负责调用压缩流模块的单压缩或多压缩流解压缩压缩数据,得到解压缩数据;
压缩流模块,用于负责单压缩流或多压缩流的控制和调度,实时地根据CPU的负载情况分配空闲的单压缩流或多压缩流压缩内存数据或解压缩压缩数据;
压缩/解压缩算法模块,用于对大页中内存数据的压缩和压缩数据的解压缩;
压缩数据管理模块,用于压缩数据的动态存储管理;
具体地,所述的压缩执行流模块包括Compress模块、Decompress模块以及压缩流程控制模块,其中,Compress模块用于执行大页中内存数据的压缩,Decompress模块用于执行压缩数据的解压,压缩流程控制模块用于调用单压缩或多压缩流,并控制Compress模块执行大页中内存数据的压缩或控Decompress模块制执行压缩数据的解压;
所述的压缩流模块包括单压缩流模块、多压缩流模块以及控制压缩流动态分配模块,其中,控制压缩流动态分配模块用于根据CPU的负载情况分配单压缩流模块或多压缩流模块去执行压缩内存数据操作;
所述的压缩/解压缩算法模块包括LZO算法模块、LZ4算法模块以及开放算法模块,其中,LZO算法模块内置有压缩或解压的LZO算法,且该算法被单压缩流或多压缩流调用去执行压缩或解压,LZ4算法模块内置有压缩或解压的LZ4算法,且该算法被单压缩流或多压缩流调用去执行压缩或解压,开放算法模块用于将其他开源算法直接移植于该模块内,并被单压缩流或多压缩流调用;
所述的压缩数据管理模块包括压缩数据的组织存放模块和Mem_pool模块,其中,压缩数据的组织存放模块用于将接收的压缩数据存放于Mem_pool模块,Mem_pool模块用于压缩数据;
所述的压缩数据的组织存放模块包含用于对大页数据进行管理的红黑树,所述的红黑树的每个节点是三元组mapping、index、address,其中,mapping和index为每个大页page中独有的元素,以mapping为第一关键字和以index作为第二关键字在红黑树中进行排序,用于对大页进行标记;address保存存储压缩数据4k小页的虚拟地址。
2.一种应用权利要求1 所述的 大页内存压缩回收系统进行大页内存压缩回收方法,具体包括:
大页内存数据的压缩:回收控制器对大页进行加锁和unmap操作处理,并将处理后的大页发送至压缩执行流模块,压缩执行流模块调用压缩流模块中的压缩流和压缩/解压算法模块中的压缩算法对大页进行压缩,并将得到的压缩数据发送至压缩数据管理模块,利用红黑树将压缩数据存储于小页中;
压缩数据的解压缩:压缩执行流模块接收来自回收控制器的解压缩命令,通过压缩数据管理模块中的红黑树查找压缩数据,并调用压缩流模块中的压缩流和压缩/解压算法模块中的解压算法对小页进行解压缩,然后将解压缩后的数据写入当前大页,发送至回收流控制器。
3.根据权利要求2所述的大页内存压缩回收方法,其特征在于,所述的大页内存数据的压缩具体包括以下步骤:
(a-1)利用回收控制器对冷热页追踪隔离出来的大页进行加锁;
(a-2)利用回收控制器对该大页进行unmap操作,清空所有映射此大页的页表项pte;
(a-3)Compress模块判断大页是否超出压缩限制,若是,则不进行压缩,若否,执行步骤(a-4);
(a-4)Compress模块检查大页是否为全0页,若是,将该大页进行特殊标记,并将数据直接扔掉,不进行压缩;若否,执行步骤(a-5);
(a-5)压缩流程控制模块根据回收控制器发送来的大页向控制压缩流的动态分配模块发出调用压缩流的指令;
(a-6)控制压缩流的动态分配模块根据CPU的负载情况分配空闲的单压缩流或多压缩流供压缩流程控制模块调用,若没有空闲的单压缩流或多压缩流,控制压缩流的动态分配模块则进行睡眠等待,直到存在空闲的单压缩流或多压缩流再进行分配;
(a-7)被分配的单压缩流或多压缩流调用压缩/解压缩算法模块中的一个或多个压缩算法随同自身被压缩流程控制模块调用;
(a-8)压缩流程控制模块根据调用的单压缩流或多压缩流以及压缩算法控制Compress模块对大页中的内存数据进行压缩,得到压缩数据;
(a-9)压缩数据的组织存放模块将接收到的压缩流中的压缩数据拷贝至Mem_pool模块的4k小页中,并将4k小页的address以及当前大页的mapping和index插入到红黑树里;
(a-10)压缩流程控制模块释放单圧缩流或多压缩流,将当前大页从页缓存Page Cache中移除;
(a-11)回收控制器接触页锁,并释放该大页。
4.根据权利要求2所述的大页内存压缩回收方法,其特征在于,所述的压缩数据的解压缩具体包括以下步骤:
(b-1)当访问大页触发缺页异常时,回收控制器判断大页的页表项pte是否为空,若是,执行步骤(b-2),若否,则不是由压缩造成的缺页异常,结束解压缩;
(b-2)Decompress模块判断页缓存Page Cache中是否有对应的文件页,若是,将文件页映射给当前产生缺页异常的页表项pte;若否,执行步骤(b-3);
(b-3)Decompress模块申请一个新大页,并将该新大页加入至页缓存Page Cache;
(b-4)Decompress模块利用当前产生缺页异常的vma找到相应的mapping和index,并利用二元组mapping和index到红黑树中查找是否存在压缩数据,若是,执行步骤(b-5);若否,则是第一次访问,执行步骤(b-6);
(b-5)Decompress模块从红黑树中找到压缩数据的地址,通过标志位判断大页是否是全0页,若是,则直接对大页写0;若否,执行步骤(b-6);
(b-6)压缩流程控制模块调用压缩/解压缩算法模块中的一个或多个压缩解压缩算法并控制Decompress模块对4k小页中的压缩数据进行解压缩,并将解压后的数据写入当前大页;
(b-7)把当前的页表项pte映射到该大页。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201710142827.XA CN106980541B (zh) | 2017-03-10 | 2017-03-10 | 一种大页内存压缩回收系统及方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201710142827.XA CN106980541B (zh) | 2017-03-10 | 2017-03-10 | 一种大页内存压缩回收系统及方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN106980541A CN106980541A (zh) | 2017-07-25 |
| CN106980541B true CN106980541B (zh) | 2019-11-19 |
Family
ID=59339516
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201710142827.XA Active CN106980541B (zh) | 2017-03-10 | 2017-03-10 | 一种大页内存压缩回收系统及方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN106980541B (zh) |
Families Citing this family (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107704321A (zh) * | 2017-09-30 | 2018-02-16 | 北京元心科技有限公司 | 内存分配的方法、装置及终端设备 |
| EP4345629B1 (en) | 2017-11-07 | 2026-01-14 | Huawei Technologies Co., Ltd. | Memory block reclamation method and apparatus |
| CN108664419A (zh) * | 2018-04-03 | 2018-10-16 | 郑州云海信息技术有限公司 | 一种确定内存大页数目的方法及其装置 |
| CN115220918A (zh) | 2018-06-13 | 2022-10-21 | 华为技术有限公司 | 一种神经网络的内存分配方法及装置 |
| CN110895492B (zh) * | 2019-12-11 | 2023-01-10 | Oppo(重庆)智能科技有限公司 | 设备控制方法、装置、存储介质及电子设备 |
| CN113590500B (zh) | 2020-04-30 | 2024-10-11 | 华为技术有限公司 | 一种内存管理方法及终端设备 |
| CN114661238B (zh) * | 2022-03-29 | 2024-01-02 | 江苏安超云软件有限公司 | 带缓存的存储系统空间回收的方法及应用 |
| CN115509958B (zh) * | 2022-08-31 | 2026-02-17 | Oppo广东移动通信有限公司 | 内存页的缓存方法、装置、电子设备以及存储介质 |
| CN116089128B (zh) * | 2023-03-03 | 2025-08-26 | 阿里云计算有限公司 | 数据处理方法和电子设备 |
| CN117290263B (zh) * | 2023-09-27 | 2024-10-18 | 中科驭数(北京)科技有限公司 | 一种用于大容量bar空间的大页映射实现方法及系统 |
| CN121166560A (zh) * | 2024-06-19 | 2025-12-19 | 华为技术有限公司 | 一种匿名页回收方法及电子设备 |
| CN118779251B (zh) * | 2024-09-11 | 2025-02-18 | 阿里云计算有限公司 | 内核页面的迁移方法、装置、设备及计算机程序产品 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101526923A (zh) * | 2009-04-02 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种数据处理方法、装置和闪存存储系统 |
| CN101572552A (zh) * | 2009-06-11 | 2009-11-04 | 哈尔滨工业大学 | 基于内容可寻址存储器的高速无损数据压缩系统 |
| CN103620564A (zh) * | 2011-05-10 | 2014-03-05 | 马维尔国际贸易有限公司 | 用于存储器设备的数据压缩和紧缩 |
| CN106462494A (zh) * | 2014-05-21 | 2017-02-22 | 高通股份有限公司 | 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7769728B2 (en) * | 2004-12-06 | 2010-08-03 | Ivie James R | Method and system for intra-row, inter-row compression and decompression of data items in a database using a page-based structure where allocating a page-buffer based on a stored value indicating the page size |
-
2017
- 2017-03-10 CN CN201710142827.XA patent/CN106980541B/zh active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101526923A (zh) * | 2009-04-02 | 2009-09-09 | 成都市华为赛门铁克科技有限公司 | 一种数据处理方法、装置和闪存存储系统 |
| CN101572552A (zh) * | 2009-06-11 | 2009-11-04 | 哈尔滨工业大学 | 基于内容可寻址存储器的高速无损数据压缩系统 |
| CN103620564A (zh) * | 2011-05-10 | 2014-03-05 | 马维尔国际贸易有限公司 | 用于存储器设备的数据压缩和紧缩 |
| CN106462494A (zh) * | 2014-05-21 | 2017-02-22 | 高通股份有限公司 | 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN106980541A (zh) | 2017-07-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN106980541B (zh) | 一种大页内存压缩回收系统及方法 | |
| US10834224B2 (en) | Transaction log acceleration | |
| USRE43483E1 (en) | System and method for managing compression and decompression of system memory in a computer system | |
| CN105893269B (zh) | 一种Linux系统下内存管理方法 | |
| US10133515B2 (en) | Facilitating processing within computing environments supporting pageable guests | |
| US6789156B1 (en) | Content-based, transparent sharing of memory units | |
| CN116302491A (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
| US11449430B2 (en) | Key-value store architecture for key-value devices | |
| KR100734823B1 (ko) | 메모리 압축된 머신을 모핑하는 방법 및 장치 | |
| CN105938458B (zh) | 软件定义的异构混合内存管理方法 | |
| KR20100081880A (ko) | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 | |
| CN115712500A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
| CN107016100A (zh) | 一种基于非易失性内存文件系统的元数据管理方法 | |
| CN112579252A (zh) | 虚拟机复制和迁移 | |
| CN114115711B (zh) | 基于非易失内存文件系统的快速缓存系统 | |
| US20200042239A1 (en) | Distributed Memory Object Architecture | |
| CN110688345A (zh) | 一种内存文件系统的多粒度结构化空间管理机制 | |
| CN101826055B (zh) | 一种用于Linux系统数据缓存分配的管理方法 | |
| US8375194B2 (en) | System and method for freeing memory | |
| KR20020016513A (ko) | 메모리 저장 장치 관리 시스템 및 방법, 프로그램 저장 장치 | |
| CN102915282A (zh) | 一种存储系统的块设备数据缓存管理方法及系统 | |
| US12169728B2 (en) | Non fragmenting memory ballooning | |
| Pan et al. | Hart: A concurrent hash-assisted radix tree for DRAM-PM hybrid memory systems | |
| CN106970826B (zh) | 一种基于大页的缺页异常解决方法 | |
| CN111694765A (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 |