CN111309645B - 基于非易失性内存的新型混合内存垃圾回收方法及*** - Google Patents
基于非易失性内存的新型混合内存垃圾回收方法及*** Download PDFInfo
- Publication number
- CN111309645B CN111309645B CN202010171263.4A CN202010171263A CN111309645B CN 111309645 B CN111309645 B CN 111309645B CN 202010171263 A CN202010171263 A CN 202010171263A CN 111309645 B CN111309645 B CN 111309645B
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- garbage collection
- nonvolatile memory
- cache
- 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
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种基于非易失性内存的新型混合内存垃圾回收方法及***,包括:步骤1:当托管运行时无可用内存时,触发内存垃圾回收;步骤2:对内存区域进行划分,初始化内存区域数据;步骤3:在内存垃圾回收过程中,更新每个内存区域的数据信息;步骤4:将数据信息写入到非易失性内存中,并清理使用到的易失性内存缓存。本发明使用极少的易失性内存用作非易失内存的缓存,加快了内存数据读请求;通过异步地将缓存中的数据写入到非易失内存,提高了非易失性内存上垃圾回收的性能;对可能同时访问的数据进行存放位置的重分配,利用了非易失内存连续局部访问更快的特性,从而提高了程序的性能。
Description
技术领域
本发明涉及内存管理技术领域,具体地,涉及一种基于非易失性内存的新型混合内存垃圾回收方法及***。
背景技术
非易失性内存是一种新型的计算机内存。传统的计算机内存一旦断开电源,内存中的数据会被清除;而在非易失性内存中的数据,即使内存设备的电源被断开,也能保证不会失效,从而实现数据在内存中的持久化保存。同时除了能够持久化保存数据,非易失性内存还能够像易失性内存一样支持字节寻址,这为使用非易失性内存来辅助甚至代替易失性内存带来了进一步优势。同时相比于易失性内存,非易失性内存的密度也高,单位容量价格更低。但这些优点带来的后果就是非易失性内存在的访问延迟更高,数据带宽更低。
程序对内存的资源管理可以分为两类:一类是由开发程序的程序员手动进行内存管理;另一类是由一个程序,通常叫托管运行时,自动进行管理管理。是否自动进行内存管理是由选择的编程语言决定。目前在云环境下,自动内存管理的语言,如Java,Scala等,被大量的使用。
在自动内存管理中,至关重要的一点是如何进行内存的回收,通常称为内存的垃圾回收。内存垃圾回收中,有两个需要主要考虑的方面:一是如何识别出有效数据;二是如何处理这些有效数据。在第一点中,垃圾回收器会对内存中大量的数据进行访问,涉及到大量的随机的内存读请求。在第二点中,垃圾回收器通常会将有效数据复制到一段新的内存空间中,涉及到大量的内存写请求。
由于传统的垃圾回收器主要是针对易失性内存进行设计,没有考虑到非易失性内存的新特性,造成了非易失内存上的内存垃圾回收延迟高、效率低,影响了非易失内存在自动内存管理语言上的使用。
专利文献CN110018966A(申请号:201810020423.8)公开了一种存储器、存储***、主机及数据操作、垃圾回收方法,所述存储***包括存储器和主机,所述存储器包括:管理单元,用于实现与存储介质相关的处理逻辑;基于对象的访问接口,供主机通过所述访问接口对所述存储器执行对象操作;所述主机包括:存储控制单元,用于实现与数据布局相关的存储逻辑,通过所述基于对象的访问接口执行对象操作。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于非易失性内存的新型混合内存垃圾回收方法及***。
根据本发明提供的基于非易失性内存的新型混合内存垃圾回收方法,包括:
步骤1:当托管运行时无可用内存时,触发内存垃圾回收;
步骤2:对内存区域进行划分,初始化内存区域数据;
步骤3:在内存垃圾回收过程中,更新每个内存区域的数据信息;
步骤4:将数据信息写入到非易失性内存中,并清理使用到的易失性内存缓存。
优选地,所述内存区域数据包括:总的数据量和易失性缓存的位置。
优选地,所述步骤3包括:在内存垃圾回收过程中,每当一个区域的数据量达到一个阈值时,创建并切换使用易失性存储器,将易失性存储器作为非易失性内存上的数据的缓存。
优选地,所述步骤4包括:将所有数据先写入到一个易失性存储器的缓存中,再异步地写回到非易失性内存中。
优选地,在垃圾回收过程中对非易失性内存中的数据进行位置重分配;
在数据存放位置重分配过程中,对应用程序内存的访问行为进行分析,将会同时访问的数据放置在相邻的内存区域中。
根据本发明提供的基于非易失性内存的新型混合内存垃圾回收***,包括:
模块M1:垃圾回收触发模块;
模块M2:数据读缓存模块;
模块M3:数据写缓存模块;
模块M4:数据重分配模块。
优选地,所述模块M1包括:监控托管运行时内存使用状况,在内存不够时触发垃圾回收。
优选地,所述模块M2包括:将内存划分为多个区域,统计每个区域的垃圾回收信息,为回收数据量超过某一阈值的区域,异步地创建易失性内存读缓存。
优选地,所述模块M3包括:垃圾回收过程中所有的数据先写入到一个易失性内存缓存中,再异步的写回到非易失性内存中。
优选地,所述模块M4包括:在垃圾回收过程中对非易失性内存的数据进行位置重分配,在数据存放位置重分配过程中,对应用程序内存的访问行为进行分析,将会同时访问的数据放置在相邻的内存区域中。
与现有技术相比,本发明具有如下的有益效果:
1、本发明利用大量的有效数据集中在少量的内存区域中这一特点,动态的确定有效数据密集的内存区域,使用极少的易失性内存,用作非易失内存的缓存,加快了内存数据读请求;
2、本发明通过异步地将缓存中的数据写入到非易失内存,提高了非易失性内存上垃圾回收的性能;
3、本发明在垃圾回收过程中,对可能同时访问的数据进行存放位置的重分配,利用了非易失内存连续局部访问更快的特性,从而提高了程序的性能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的内存布局和原理示意图;
图2为本发明的读缓存示意图;
图3位本发明的写缓存和数据重分配示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明通过使用易失性内存用作非易失性内存的缓存,并利用大量有效数据集中在少量的内存区域中的特性,使用极少的易失性内存资源即可为大部分内存读请求提供高速的服务。通过位图维护创建读缓存中易失性内存与非易失性内存之间的一致性。同时也使用易失性内存为非易失性内存创建写缓存,通过异步的方式将缓存数据写入到非易失性内存中,并在写回过程中进行数据存放位置的重分配,达到同时访问的数据存放在相邻的内存区域的目的。
数据读缓存中使用了大量的有效数据集中在少量的内存区域中的特征,即可使用少量的易失性内存缓存大部分有效数据。同时通过统计内存区域中的有效数据信息,为超过某一阈值的内存区域异步的创建易失性内存的缓存,在创建过程中通过一个位图来维护易失性内存和非易失性内存之间的一致性。
数据写缓存中,通过监控缓存区状态,动态地将缓存内容写入到非易失性内存中,从而减少易失性内存的总使用量。并通过将写入非易失性内存的过程与正常执行垃圾回收过程重叠,从而隐藏写入易失性内存的耗时。
本发明的方法主要针对托管运行时的内存管理部分。如图1所示,程序运行在托管运行时上,通过托管运行时进行自动内存管理。当托管运行时发现无可用内存时,内存管理模块触发内存垃圾回收。此时内存空间分为两部分,待回收区与有效数据复制区,回收区中的有效数据会被复制到有效数据复制区。本方法为回收区的非易失性内存异步创建易失性内存读缓存,在有效数据复制区也使用易失性内存创建写缓存,此时数据复制从读缓存到写缓存。同时异步的将写缓存中的数据写入到非易失性内存中,在这个过程中会进行数据存放位置的重分配。所述方法运行在一个托管运行时上,托管运行时能够通过操作***提供的接口获取非易失性内存资源,并进行操作和管理。
本发明使用了大量的有效数据集中在少量的内存区域中的特征,即可使用少量的易失性内存缓存大部分有效数据。同时通过统计内存区域中的有效数据信息,为超过某一阈值的内存区域异步的创建易失性内存的缓存。如图2所示,针对创建读缓存中可能带来的一致性问题,本发明使用了一个全局的位图来处理。在为一个内存区域创建读缓存的过程中,每当从非易失性内存中复制数据到易失性内存时,会在全局的位图上记录此次复制的信息。当读缓存创建完成之后,可以从位图中知道易失性内存和非易失性内存之间数据不一致的地方,从而进行一致化处理。
本发明通过监控缓存区状态,动态地将缓存内容写入到非易失性内存中,从而减少易失性内存的总使用量。并通过将写入非易失性内存的过程与正常执行垃圾回收过程重叠,从而隐藏写入易失性内存的耗时。如图3所示,当使用的易失性内存缓存数量达到总缓存池一半的时候,开始对缓存进行异步的写回,这个过程与主要的垃圾回收过程同时进行,所以能很好的利用处理器资源。并且在写回过程中,处于已满缓存上的数据,会按照计算的规则,被重新分配到不同的内存区域中。
综上所述,本发明利用大量的有效数据集中在少量的内存区域中这一特点,动态的确定有效数据密集的内存区域,使用极少的易失性内存,用作非易失内存的缓存,加快了内存数据读请求。并通过异步地将缓存中的数据写入到非易失内存,提高了非易失性内存上垃圾回收的性能。同时本发明在垃圾回收过程中,对可能同时访问的数据进行存放位置的重分配,利用了非易失内存连续局部访问更快的特性,从而提高了程序的性能。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的***、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的***、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (4)
1.一种基于非易失性内存的新型混合内存垃圾回收方法,其特征在于,包括:
步骤1:当托管运行时无可用内存时,触发内存垃圾回收;
步骤2:对内存区域进行划分,初始化内存区域数据;
步骤3:在内存垃圾回收过程中,更新每个内存区域的数据信息;
步骤4:将数据信息写入到非易失性内存中,并清理使用到的易失性内存缓存;
所述步骤3包括:在内存垃圾回收过程中,每当一个区域的数据量达到一个阈值时,创建并切换使用易失性存储器,将易失性存储器作为非易失性内存上的数据的缓存;
在垃圾回收过程中对非易失性内存中的数据进行位置重分配;
在数据存放位置重分配过程中,对应用程序内存的访问行为进行分析,将会同时访问的数据放置在相邻的内存区域中。
2.根据权利要求1所述的基于非易失性内存的新型混合内存垃圾回收方法,其特征在于,所述内存区域数据包括:总的数据量和易失性缓存的位置。
3.根据权利要求1所述的基于非易失性内存的新型混合内存垃圾回收方法,其特征在于,所述步骤4包括:将所有数据先写入到一个易失性存储器的缓存中,再异步地写回到非易失性内存中。
4.一种基于非易失性内存的新型混合内存垃圾回收***,其特征在于,包括:
模块M1:监控托管运行时内存使用状况,在内存不够时触发垃圾回收;
模块M2:将内存划分为多个区域,统计每个区域的垃圾回收信息,为回收数据量超过某一阈值的区域,异步地创建易失性内存读缓存;
模块M3:垃圾回收过程中所有的数据先写入到一个易失性内存缓存中,再异步的写回到非易失性内存中;
模块M4:在垃圾回收过程中对非易失性内存的数据进行位置重分配,在数据存放位置重分配过程中,对应用程序内存的访问行为进行分析,将会同时访问的数据放置在相邻的内存区域中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010171263.4A CN111309645B (zh) | 2020-03-12 | 2020-03-12 | 基于非易失性内存的新型混合内存垃圾回收方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010171263.4A CN111309645B (zh) | 2020-03-12 | 2020-03-12 | 基于非易失性内存的新型混合内存垃圾回收方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309645A CN111309645A (zh) | 2020-06-19 |
CN111309645B true CN111309645B (zh) | 2023-06-27 |
Family
ID=71160782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010171263.4A Active CN111309645B (zh) | 2020-03-12 | 2020-03-12 | 基于非易失性内存的新型混合内存垃圾回收方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309645B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620572A (zh) * | 2008-07-02 | 2010-01-06 | 上海华虹Nec电子有限公司 | 非易失性内存及控制方法 |
CN103440207A (zh) * | 2013-07-31 | 2013-12-11 | 北京智谷睿拓技术服务有限公司 | 缓存方法及装置 |
CN103577335A (zh) * | 2013-10-23 | 2014-02-12 | 中国科学院计算技术研究所 | 一种内存垃圾回收***及方法 |
CN106201916A (zh) * | 2016-07-25 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 一种面向ssd的非易失缓存机制 |
CN107025071A (zh) * | 2016-12-14 | 2017-08-08 | 威盛电子股份有限公司 | 非易失性存储器装置及其垃圾收集方法 |
CN109992451A (zh) * | 2019-03-28 | 2019-07-09 | 联想(北京)有限公司 | 非易失性内存和易失性内存混合管理方法及其*** |
CN110018966A (zh) * | 2018-01-09 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种存储器、存储***、主机及数据操作、垃圾回收方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8261269B2 (en) * | 2009-09-21 | 2012-09-04 | Oracle International Corporation | System and method for synchronizing transient resource usage between virtual machines in a hypervisor environment |
-
2020
- 2020-03-12 CN CN202010171263.4A patent/CN111309645B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101620572A (zh) * | 2008-07-02 | 2010-01-06 | 上海华虹Nec电子有限公司 | 非易失性内存及控制方法 |
CN103440207A (zh) * | 2013-07-31 | 2013-12-11 | 北京智谷睿拓技术服务有限公司 | 缓存方法及装置 |
CN103577335A (zh) * | 2013-10-23 | 2014-02-12 | 中国科学院计算技术研究所 | 一种内存垃圾回收***及方法 |
CN106201916A (zh) * | 2016-07-25 | 2016-12-07 | 中国人民解放军国防科学技术大学 | 一种面向ssd的非易失缓存机制 |
CN107025071A (zh) * | 2016-12-14 | 2017-08-08 | 威盛电子股份有限公司 | 非易失性存储器装置及其垃圾收集方法 |
CN110018966A (zh) * | 2018-01-09 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种存储器、存储***、主机及数据操作、垃圾回收方法 |
CN109992451A (zh) * | 2019-03-28 | 2019-07-09 | 联想(北京)有限公司 | 非易失性内存和易失性内存混合管理方法及其*** |
Also Published As
Publication number | Publication date |
---|---|
CN111309645A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Moraru et al. | Consistent, durable, and safe memory management for byte-addressable non volatile main memory | |
US9244839B2 (en) | Methods and apparatus for supporting persistent memory | |
KR101288408B1 (ko) | 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는 방법과 시스템 | |
JP5255348B2 (ja) | クラッシュダンプ用のメモリアロケーション | |
US20100287217A1 (en) | Host control of background garbage collection in a data storage device | |
US20070300037A1 (en) | Persistent flash memory mapping table | |
US20080235477A1 (en) | Coherent data mover | |
CN102999430A (zh) | 处理具有非易失性存储器的***的未完全关闭 | |
KR20130018742A (ko) | 가비지 콜렉션을 위한 gpu 서포트 | |
US10019331B2 (en) | Memory allocation and recovery strategies for byte-addressable non-volatile RAM (NVRAM) | |
KR101392062B1 (ko) | 고속 컴퓨터 시스템 파워 온 및 파워 오프 방법 | |
US10635614B2 (en) | Cooperative overlay | |
CN108664217B (zh) | 一种降低固态盘存储***写性能抖动的缓存方法及*** | |
CN102880553A (zh) | 一种基于mcu的片外flash文件***的读写方法 | |
US9208080B2 (en) | Persistent memory garbage collection | |
CN111309645B (zh) | 基于非易失性内存的新型混合内存垃圾回收方法及*** | |
CN100520737C (zh) | 高速缓存***、方法及计算机*** | |
Lee et al. | Characterization of Memory Access in Deep Learning and Its Implications in Memory Management. | |
Fareed et al. | Update frequency-directed subpage management for mitigating garbage collection and dram overheads | |
WO2020055715A1 (en) | External paging and swapping for dynamic modules | |
US11977485B2 (en) | Method of cache management based on file attributes, and cache management device operating based on file attributes | |
CN112860381B (zh) | 基于申威处理器的虚拟机内存扩容方法及*** | |
US7107404B2 (en) | Method and system for data processing for controlling a cache memory | |
Douglas | User mode memory page allocation: A silver bullet for memory allocation? | |
Jang et al. | Achieving low write latency through new stealth program operation supporting early write completion in NAND flash memory |
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 |