CN105446899A - 基于存储级内存的内存数据快速持久化的方法 - Google Patents
基于存储级内存的内存数据快速持久化的方法 Download PDFInfo
- Publication number
- CN105446899A CN105446899A CN201510759531.3A CN201510759531A CN105446899A CN 105446899 A CN105446899 A CN 105446899A CN 201510759531 A CN201510759531 A CN 201510759531A CN 105446899 A CN105446899 A CN 105446899A
- Authority
- CN
- China
- Prior art keywords
- persistent region
- persistent
- memory
- lasting
- scm
- 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.)
- Granted
Links
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于存储级内存的内存数据快速持久化的方法。该方法基于平坦的混合内存架构,通过用户层和内核层的协同设计实现。包括:将一定容量的SCM以及存储于此SCM上的数据抽象为一块持久区域;在用户层设计应用程序编程接口(API),响应应用程序对持久区域的访存;扩展内核的Buddy?system,实现异构混合内存管理;在设计持久区域管理器,实现包括持久区域的持久映射、持久区域元数据管理等功能。本发明可以避免在传统存储架构下,数据持久化所需的数据线性化过程,同时可实现持久数据的直接访问和原地更新,简化了传统架构下软件栈的层级调用,可有效缓解I/O瓶颈,提高持久数据的访存性能。
Description
技术领域
本发明属于持久化内存领域的基于混合内存架构的系统软件技术,具体地,涉及一种利用非易失内存的内存管理、进程地址空间管理、地址映射技术的基于存储级内存的内存数据快速持久化的方法。
背景技术
随着大数据的到来,数据量的不断增加和数据类型的日趋复杂为内存数据持久化提出了更高的要求。在数据处理和计算过程中,系统软件的元数据、应用程序数据以及高性能计算的计算状态等各种类型的数据都可能需要被高效的持久化。目前,内存数据的持久化一般是依赖于操作系统提供的一些持久原语(文件或者块I/O)或者数据库系统这两种技术。当运用系统原语实现持久化时,应用程序需要自行关注程序代码的原子性以确保持久更新的完整性,同时还要涉及内存数据的序列化/反序列化操作。而数据库系统并不能够很好地应对系统软件元数据的持久化问题,且面临数据阻抗不匹配问题的处理。综上所述,当前的内存数据持久化的方法都会引入应用程序的附加处理,这无疑增加了应用程序设计的复杂度,层级的软件栈和频繁的I/O操作也大大降低了数据持久化的效率。
非易失内存技术的发展,为内存数据持久化提供了更为有效的解决方案。非易失内存由于其非易失性、可字节寻址、较低的访存延迟以及高存储密度等优良特性,成为学术界和商界的关注热点。M.K.Qureshi等人在M.K.Qureshi,V.Srinivasan,andJ.A.Rivers.基于相变存储器的高性能可扩展的主存系统.ACMSIGARCHComputerArchitectureNews,vol.37,no.3,pp.24-33中提出用非易失内存构建主存系统的设计,并给出了一定的性能测试指标。J.Y.Jung等人在J.Y.JungandS.Cho.Memorage:基于新兴持久性存储器的的适应性主内存和存储架构.Proceedingsofthe27thinternationalACMconferenceonInternationalconferenceonsupercomputing.ACM,2013,pp.115-126中探讨了异构混合内存个构建以及对系统软件设计的影响等。其研究表明通过内存总线接入计算机系统,与DRAM一起构建混合内存系统,可以最大程度得利用非易失存储器件的优良特性,同时可以为系统软件和应用软件的研发提供更广阔的设计空间。
经检索,H.Volos等在H.Veles,A.J.Tack,andM.M.Swift.Mnemosyne:轻型的持久内存系统.ACMSIGARCHComputerArchitectureNews,vol.39,no.1.ACM,2011,pp.91-104中提出了一种基于非易失内存技术的持久内存系统,该持久内存系统存在如下缺陷:
1)H.Veles的持久内存系统的映射机制完全依赖于传统的文件系统的映射机制;
2)其持久化内存数据需要映射到固定的虚拟地址才可保证其地址映射的持久化。
目前没有发现同本发明类似技术的说明或报道,也尚未收集到国内外类似的资料。
发明内容
针对现有技术中存在的上述缺陷,本发明的目的是利用存储级内存天然的非易失性以及、高密度、低延迟等优良特性,设计并实现一种基于存储级内存的内存数据快速持久化的方法。本发明通过提供API(ApplicationProgrammingInterface,应用程序编程接口),为应用程序提供可以直接访存SCM(StorageClassMemory,存储级内存)的接口;在内核层,设计持久区域管理器,实现持久区域逻辑和物理属性的映射以及持久区域元数据的管理等,使得持久区域可以持久于应用程序或系统的重运行过程。
为实现上述目的,本发明是通过以下技术方案实现的。
一种基于存储级内存的内存数据快速持久化的方法,包括如下步骤:
步骤1:将一定容量的存储级内存(SCM)与存储于此SCM的持久数据抽象为一块持久区域;
步骤2:设计供应用程序调用的API接口,响应应用程序对持久区域访问的访存请求;
步骤3:对持久区域映射的用户程序进程地址空间进行动态分配和管理;
步骤4:扩展内核伙伴系统(Buddysystem),实现内核对SCM的管理和分配;
步骤5:设计持久区域管理器,包括持久映射表以及持久对持久映射表的处理函数,实现持久区域元数据的管理以及对持久区域的逻辑和物理属性的映射;
步骤6:设计针对持久区域访存的缺页处理函数。
优选地,在所述步骤1中,每一块持久区域均通过应用程序定义一个唯一的ID来标识,记为P_ID。
优选地,在所述步骤2中,在用户层设计API接口,应用程序对持久区域的访问,均通过API接口触发请求;所述API接口能够为用户程序提供动态地申请和回收持久区域的访问功能,同时,申请持久区域访问时,将持久区域的唯一ID作为API调用参数。
优选地,在所述步骤3中,在动态分配进程地址空间时,首先在用户程序进程地址空间的地址映射段标识4k整数倍的内存空间,然后在该标识的内存空间调用内存分配算法,进行动态进程地址空间分配。
优选地,在所述步骤4中,包括如下步骤:
在内核层对Linux内核进行扩展,增加一个SCM_ZONE内存域,用来描述SCM,并通过这一扩展,实现Buddysystem对DRAM和SCM的统一管理;
为了提高存储内存的耐用性,在扩展Buddysystem的同时,改进Buddysystem对于SCM的分配和回收算法;即有效利用Buddysystem的双向链表,在页面回收时,将被释放的页面链入到相应链表的表尾,从而均匀化页面的访存频度,减少热点页面的形成,延长SCM的写寿命;
增加一个写频度临界链表,将超过写频度阈值的页面加入到写频度临界链表,避免由于SCM的物理故障造成的物理数据访存错误。
优选地,在所述步骤5中,所述持久区域管理器用于对SCM中所有持久区域进行管理,通过持久区域管理器实现持久区域的逻辑和物理属性的映射以及持久区域元数据的管理,具体为:
逻辑和物理属性的映射通过一个三元组<P_ID,P_addr,P_size>形成持久映射记录,其中P_ID为持久区域的唯一标识,P_addr为存储持久区域的物理起始地址,P_size为持久区域所占空间的大小;持久映射表即为多条持久映射记录形成的散列表,该散列表不仅存储了每个持久区域的逻辑和物理属性的映射关系,同时记录了每个持久区域的大小以及起始地址等物理布局信息,因此当创建、删除或更新一个持久区域时,都将触发对持久映射表的插入、删除或更新一条持久映射记录的操作。此外在系统初始化时,Buddysystmem也需要对持久映射表进行扫描来构建持久区域的空闲链表;
通过P_ID对持久映射表进行检索来获取持久区域的P_addr,,该检索通过哈希算法来提高检索速度,具体为:
1)将P_ID的字符序列表示转换成二进制表示形式;
2)通过混合哈希算法,对128位的二进制P_ID进行处理,最终得到24位的存储序列号;
3)由此存储序列号再计算得到P_ID所对应的持久映射记录的存储地址;
将P_ID二进制表示形式的最高位作为该持久映射记录是否有效的标志:其中,0表示持久映射记录无效;1表示持久映射记录准确、完整且有效。
优选地,在所述步骤6中,针对持久区域访存的缺页处理函数,具体为,以P_ID为搜索关键字,检索持久映射表,获取相应持久区域的物理地址,然后再更新用户程序进程的页表,实现虚拟地址和物理地址的映射。
与传统数据持久化技术相比,本发明具有如下优势:
1、本发明有效利用非易失存储器件天然的非易失性以及低延迟、高密度等优良特性,支持应用程序数据和系统数据的持久化,在保持原有编程思想的同时,避免数据的序列化/反序列化操作,同时可实现持久数据的原地更新,简化了传统架构下持久数据访存过程中的层级调用,可有效缓解I/O瓶颈,提高持久数据的访存性能。
2、本发明采用持久映射管理器,通过持久映射表,利用持久区域ID,巧妙的实现了持久区域逻辑与物理属性的映射,这种方法这使得程序可以将持久区域当做主存进行处理,不仅解除了对传统文件系统映射机制的依赖,同时克服了虚拟地址必须固定的缺陷。
3、本发明可以有效避免传统存储架构下内存数据持久化所需的数据线性化过程,提高数据持久化的性能;
4、本发明可实现持久数据的直接访问和原地更新,简化了传统架构下软件栈的层级调用,可有效缓解I/O瓶颈,提高持久数据的访存性能;
5、本发明可以摆脱数据地址映射对传统文件系统的依赖,并且可以按照实际需求,将持久区域映射到适当的进程地址空间,使得内存数据的持久化具有相对的独立性和灵活性。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明基于SCM的内存数据快速持久化的方法的实施流程图。
图2为应用程序对持久区域访存的程序示例。
图3为访问持久区域触发的缺页处理流程图。
图4为删除持久区域流程图。
具体实施方式
下面对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
实施例
本实施例提供了一种基于存储级内存的内存数据快速持久化的方法,包括如下步骤:
步骤1、将一定容量的存储级内存(SCM)与存储于此SCM的持久数据抽象为一块持久区域;
进一步地,每一个持久区域由一个ID唯一标识,记为P_ID。
步骤2、在用户层设计可供应用程序调用的API接口,响应应用程序对持久区域访问的访存请求;
进一步地,所述访问请求或者包括如下任一项或任多项:申请持久区域内存空间、实现持久区域到进程地址空间的映射、释放持久区域内存空间、解除持久区域到进程地址空间的映射、删除持久区域;
进一步地,申请持久区域访问的访问请求时,须将持久区域ID作为API调用参数。
步骤3、对持久区域映射的用户程序进程地址空间进行动态分配和管理;
进一步地,持久区域的内存空间不可以跨页存储,针对此,在动态分配进程地址空间时,首先在进程地址空间的地址映射段标识4k整数倍的内存空间,设计分配算法,在该标识的进程地址空间进行动态内存分配。
步骤4、在内核层扩展内核Buddysystem,实现内核对SCM的管理和分配;
传统的内存管理是这对DRAM设计的,因此需要对内存管理,尤其是对伙伴系统(Buddysystem)进行扩展和改进,实现对DRAM和SCM的统一管理;
进一步地,具体包括如下步骤:首先,对Linux内核进行扩展,增加一个SCM_ZONE内存域,用来描述SCM,并通过这一扩展,实现Buddysystem对异构混合内存的统一管理;
其次,考虑到SCM写次数受限的物理特性,在扩展Buddysystem的同时,改进其对于SCM的分配和回收算法;主要的思想是,有效利用Buddysystem的双向链表,在页面回收时,将被释放的页面链入到相应链表的表尾;这种改进的目的是均匀化页面的访存频度,减少热点页面的形成,从而延长SCM的写寿命;
此外,增加一个写频度临界链表,将超过一定写频度阈值的页面加入到该写频度临界链表,避免由于SCM的物理故障造成的物理数据访存错误。
步骤5、设计持久区域管理器;包括持久映射表以及持久对持久映射表的处理函数;
进一步地,持久区域管理器是对SCM中所有持久区域的管理,实现持久区域的逻辑和物理属性的映射,以及持久区域元数据的管理等;
进一步地,具体包括如下步骤:
首先,逻辑和物理属性的映射通过一个三元组<P_ID,P_addr,P_size>实现,其中P_ID为持久区域的唯一标识,P_addr为存储持久区域的物理起始地址,而P_size则为该持久区域所占空间的大小;持久映射表即为多条三元组记录形成的散列表,该散列表不仅存储了每个持久区域的逻辑和物理属性的映射关系,同时记录了每个持久区域的大小以及起始地址等物理布局信息,因此当创建、删除、更新一个持久区域时,都将触发对持久映射表的插入、删除、更新一条持久映射记录的操作。此外在系统初始化时,Buddysystmem也需要对持久映射表进行扫描来构建持久区域的空闲链表;
其次,通过P_ID进行物理地址检索,该检索是一种高频操作,本步骤中通过哈希算法来提高检索速度,具体方案为:
1)将P_ID的字符序列表示转换成其二进制表示形式;
2)通过混合哈希算法,对128位的二进制ID进行处理,最终得到24位的存储序列号;
3)由此序列号再计算得到该持久映射记录的存储地址;
最后,将P_ID二进制表示的最高位用来作为该记录是否有效的标志:其中,0表示持久映射记录无效;1表示持久映射记录准确、完整且有效。
步骤6、设计针对持久区域访存的缺页处理函数;
进一步地,与传统的持久化于磁盘的处理方式不同,持久区域一旦建立,其数据就是被持久化到了存储级内存上,不需要再为其分配物理页面了,只是没有在页表中建立虚拟地址和物理地址的映射;针对这种情况,本步骤设计了基于持久区域的缺页处理函数,其功能是,以P_ID为搜索关键字,检索持久映射表,获取相应持久区域的物理地址,然后再更新进程的页表,实现虚拟地址和物理地址的映射。
下面结合附图对本实施例进一步描述。
本实施例提供的基于存储级内存的内存数据快速持久化的方法,首先将一定容量的SCM和存储于此SCM的持久数据抽象为一块持久区域,每一块持久区域都需要应用程序定义一个唯一的ID来标识。应用程序在访存持久区域时,须提供一个持久区域ID,该ID是持久区域的唯一标识,也是其逻辑属性的体现。该ID支持最大16位的字符序列。
本发明通过用户层和内核层的协同设计来实现。
用户层提供的API为应用程序对持久区域访存的入口,表1为暴露给应用程序的API接口,列出了本发明设计并实现的API。应用程序通过P_alloc(P_ID,size)和P_mmap(P_ID)申请对持久区域的访存;P_unmmap(addr)和P_free(addr)为释放持久区域在进程地址空间中的内存区域;P_delete(P_ID)为完全删除一个持久区域。参数P_ID为持久区域的唯一标识。
表1
API | 功能描述 |
P_alloc(P_ID,size) | 为持久区域动态分配内存空间 |
P_mmap(P_ID) | 将持久区域映射到进程地址空间 |
P_unmmap(addr) | 解除持久区域到进程地址空间的映射 |
P_free(addr) | 释放动态分配的内存空间 |
P_delere(P_ID) | 完全删除一个持久区域 |
由于持久区域的内存空间不可以跨页存储,因此本发明在动态分配地址空间时,首先在进程地址空间的地址映射段先标识4k整数倍的内存空间,设计分配算法,在该标识空间进行动态内存分配,底层调用改进的mmap()系统函数实现。
内核层主要实现Buddysystem的扩展和持久区域管理器。
Buddysystem的扩展首先增加一个SCM_ZONE内存域,用来描述SCM,并通过这一扩展,实现Buddysystem对异构混合内存的统一管理。考虑到SCM与DRAM的物理特性存在差异,在扩展Buddysystem的同时,改进其对于SCM的分配和回收算法。主要的思想是在有效利用Buddysystem的双向链表,并禁用其cpu冷热缓存功能。每次分配的时候,Buddysystem按需从相应链表的头结点选取页面完成分配,而页面回收的时候,将被释放的页面链入到相应链表的表尾,能够与伙伴进行合并的情况下,先与伙伴进行合并,然后再将合并后的页块链入到相应链表的表尾。这种改进的目的是均匀化页面的访存频度,减少热点页面的形成,从而延长SCM的写寿命。此外增加一个写频度临界链表,将超过一定写频度阈值的页面加入到该链表,以维持数据访存的正确性。
持久区域管理器是对SCM中所有持久区域的管理,实现持久区域的逻辑和物理属性的映射,以及持久区域元数据的管理等。
首先,逻辑和物理属性的映射通过一个三元组实现<P_ID,P_addr,P_size>,其中P_ID,如上文所述为持久区域的唯一标识,P_addr为存储持久区域的物理起始地址,而P_size则为该持久区域所占空间的大小;持久映射表即为多条三元组记录形成的散列表,该散列表不仅存储了每个持久区域的逻辑和物理属性的映射关系,同时记录了每个持久区域的大小以及起始地址等物理布局信息,因此当创建、删除、更新一个持久区域时,都将触发对持久映射表的插入、删除、更新一条持久映射记录的操作。此外在系统初始化时,Buddysystmem也需要对持久映射表进行扫描来构建持久区域的空闲链表;
其次,由于通过P_ID进行P_addr的检索是一个高频操作,而且对其效率要求也比较高,因此本发明通过哈希算法来提高检索速度,首先将P_ID的字符序列表示转换成其二进制表示形式,然后通过sha一256算法与除法哈希,对128位的二进制ID进行处理,最终得到24位的存储序列号,由此序列号再计算得到该持久映射记录的存储地址;冲突处理采用线性探测法,并通过位图来标识记录存储单元是否空闲。
最后本发明将P_ID二进制表示的最高位用来作为该记录是否有效的标志:0:持久映射记录无效,可能的状态为数据不完整、数据不准确或者映射信息失效等;1:持久映射记录准确、完整且有效。
图1为内存数据持久化方法的实现流程。
图2为应用程序对持久区域进行访存的代码示例,程序设计完全兼容现有编程思想和代码书写规范。
应用程序通过API访问持久区域时,持久区域管理器响应其访问请求。
首先调用转换函数将P_ID的字符序列表示转换成其二进制表示形式。然后调用哈希函数,计算持久映射记录在持久映射表中的存储地址,然后判断该持久映射是否有效。
如果无效,说明是第一次访问该持久区域,那么就需要调用内存分配算法,为该持久区域在进程地址空间分配内存区域,然后通过Buddysystem为其分配所需的物理页面,之后更新进程页表,建立虚拟地址和物理地址的映射,之后更新持久映射表,建立该持久区域的持久映射记录。
如果有效,说明持久区域己经创建成功,此时需要检查是否己经为该区域建立了虚拟地址和物理地址的映射。如果己经建立,则可以直接进行数据访存。如果没有建立,则触发缺页处理,其处理流程如图3所示。
持久区域访存的缺页处与传统的持久化与磁盘的处理方式不同,持久区域一旦建立,其数据就是被持久化到了存储级内存上,不需要再为其分配物理页面了,只是没有在页表中建立虚拟地址和物理地址的映射。针对这种情况,本发明设计了基于持久区域的缺页处理函数,其功能是以P_ID为搜索关键字,检索持久映射表,获取相应持久区域的物理地址,然后再更新进程的页表,实现虚拟地址和物理地址的映射。
一旦建立了虚拟地址和物理地址的映射,就可以对持久区域进行访存了。
应用程序通过API删除一个持久区域时,持久区域管理器同样以P_ID为关键字,按照上述方法,检索持久映射表,获取该持久区域的持久映射记录,判断该持久映射是否有效,如果无效,则抛出异常,如果有效,则将该映射记录的标识设置为无效,流程图如图4所示。
本实施例提供的基于存储级内存(SCM)的内存数据快速持久化的方法,基于平坦的混合内存架构,通过用户层和内核层的协同设计实现。将一定容量的SCM以及存储于此SCM上的数据抽象为一块持久区域;在用户层设计应用程序编程接口(API),响应应用程序对持久区域的访存;扩展内核的Buddysystem,实现异构混合内存管理;在设计持久区域管理器,实现包括持久区域的持久映射、持久区域元数据管理等功能。本实施例可以避免在传统存储架构下,数据持久化所需的数据线性化过程,同时可实现持久数据的直接访问和原地更新,简化了传统架构下软件栈的层级调用,可有效缓解I/O瓶颈,提高持久数据的访存性能。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。
Claims (8)
1.一种基于存储级内存的内存数据快速持久化的方法,其特征在于,包括如下步骤:
步骤1:将一定容量的SCM与存储于此SCM的持久数据抽象为一块持久区域;
步骤2:设计供应用程序调用的API接口,响应应用程序对持久区域访问的访存请求;
步骤3:对持久区域映射的用户程序进程地址空间进行动态分配和管理;
步骤4:扩展内核Buddysystem,实现内核对SCM的管理和分配;
步骤5:设计持久区域管理器,包括持久映射表以及持久对持久映射表的处理函数,实现持久区域元数据的管理以及对持久区域的逻辑和物理属性的映射;
步骤6:设计针对持久区域访存的缺页处理函数。
2.根据权利要求1所述的基于存储级内存的内存数据快速持久化的方法,其特征在于,在所述步骤1中,每一块持久区域均通过应用程序定义一个唯一的ID来标识,记为P_ID。
3.根据权利要求2所述的基于存储级内存的内存数据快速持久化的方法,其特征在于,在所述步骤2中,在用户层设计API接口,应用程序对持久区域的访问,均通过API接口触发请求;所述API接口能够为用户程序提供动态地申请和回收持久区域的访问功能,同时,申请持久区域访问时,将持久区域的唯一ID作为API调用参数。
4.根据权利要求1所述的基于存储级内存的内存数据快速持久化的方法,其特征在于,在所述步骤3中,在动态分配进程地址空间时,首先在用户程序进程地址空间的地址映射段标识4k整数倍的内存空间,然后在该标识的内存空间调用内存分配算法,进行动态进程地址空间分配。
5.根据权利要求1所述的基于存储级内存的内存数据快速持久化的方法,其特征在于,在所述步骤4中,包括如下步骤:
在内核层对Linux内核进行扩展,增加一个SCM_ZONE内存域,用来描述SCM,并通过这一扩展,实现Buddysystem对DRAM和SCM的统一管理;
在扩展Buddysystem的同时,改进Buddysystem对于SCM的分配和回收算法;即有效利用Buddysystem的双向链表,在页面回收时,将被释放的页面链入到相应链表的表尾,从而均匀化页面的访存频度,减少热点页面的形成,延长SCM的写寿命;
增加一个写频度临界链表,将超过写频度阈值的页面加入到写频度临界链表,避免由于SCM的物理故障造成的物理数据访存错误。
6.根据权利要求1所述的基于存储级内存的内存数据快速持久化的方法,其特征在于,在所述步骤5中,所述持久区域管理器用于对SCM中所有持久区域进行管理,通过持久区域管理器实现持久区域的逻辑和物理属性的映射以及持久区域元数据的管理,具体为:
逻辑和物理属性的映射通过一个三元组<P_ID,P_addr,P_size>形成持久映射记录,其中P_ID为持久区域的唯一标识,P_addr为存储持久区域的物理起始地址,P_size为持久区域所占空间的大小;持久映射表即为多条持久映射记录形成的散列表,该散列表不仅存储了每个持久区域的逻辑和物理属性的映射关系,同时记录了每个持久区域的物理布局信息,因此当创建、删除或更新一个持久区域时,都将触发对持久映射表的插入、删除或更新一条持久映射记录的操作;此外在系统初始化时,Buddysystmem也需要对持久映射表进行扫描来构建持久区域的空闲链表;
通过P_ID对持久映射表进行检索来获取持久区域的P_addr,该检索通过哈希算法来提高检索速度,具体为:
1)将P_ID的字符序列表示转换成二进制表示形式;
2)通过混合哈希算法,对128位的二进制P_ID进行处理,最终得到24位的存储序列号;
3)由此存储序列号再计算得到P_ID所对应的持久映射记录的存储地址;
将P_ID二进制表示形式的最高位作为该持久映射记录是否有效的标志:其中,0表示持久映射记录无效;1表示持久映射记录准确、完整且有效。
7.根据权利要求1所述的基于存储级内存的内存数据快速持久化的方法,其特征在于,所述持久区域的物理布局信息包括如下任一项或任多项:
-持久区域的大小;
-持久区域的起始地址。
8.根据权利要求1所述的基于存储级内存的内存数据快速持久化的方法,其特征在于,在所述步骤6中,设计针对持久区域访存的缺页处理函数,具体为,以P_ID为搜索关键字,检索持久映射表,获取相应持久区域的物理地址,然后再更新用户程序进程的页表,实现虚拟地址和物理地址的映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510759531.3A CN105446899B (zh) | 2015-11-09 | 基于存储级内存的内存数据快速持久化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510759531.3A CN105446899B (zh) | 2015-11-09 | 基于存储级内存的内存数据快速持久化的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105446899A true CN105446899A (zh) | 2016-03-30 |
CN105446899B CN105446899B (zh) | 2018-08-31 |
Family
ID=
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105938458A (zh) * | 2016-04-13 | 2016-09-14 | 上海交通大学 | 软件定义的异构混合内存管理方法 |
CN106168928A (zh) * | 2016-07-06 | 2016-11-30 | 上海新储集成电路有限公司 | 一种解决混合内存读延迟不确定性的方法 |
CN107885671A (zh) * | 2016-09-30 | 2018-04-06 | 华为技术有限公司 | 一种非易失性内存的持久化方法和计算设备 |
CN108920110A (zh) * | 2018-07-25 | 2018-11-30 | 湖南机电职业技术学院 | 一种基于内存计算模式的并行处理大数据存储系统及方法 |
CN109032566A (zh) * | 2018-06-22 | 2018-12-18 | 深圳探科技术有限公司 | 一种软件逻辑层与通讯层的去耦合方法及装置 |
CN109597831A (zh) * | 2018-12-11 | 2019-04-09 | 北京达佳互联信息技术有限公司 | 检索文件的方法、装置、设备及可读存储介质 |
CN110678836A (zh) * | 2017-04-20 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 用于键值存储的持久性存储器 |
CN111049729A (zh) * | 2019-11-29 | 2020-04-21 | 苏州浪潮智能科技有限公司 | 一种持久化消息传输方法与装置 |
CN111131291A (zh) * | 2019-12-30 | 2020-05-08 | 广东中鹏热能科技有限公司 | 一种上位机软件作为下位机设备的协议实现方法 |
CN111367919A (zh) * | 2020-03-08 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种数据库一体机的存储方法、装置、设备和介质 |
CN111444113A (zh) * | 2019-01-16 | 2020-07-24 | 阿里巴巴集团控股有限公司 | 非易失性存储介质共享方法、装置、电子设备及存储设备 |
CN112835873A (zh) * | 2021-02-26 | 2021-05-25 | 中国电力科学研究院有限公司 | 电网调控异构系统服务化访问方法、系统、设备及介质 |
WO2021169635A1 (zh) * | 2020-02-27 | 2021-09-02 | 华为技术有限公司 | 内存设备的数据处理方法、装置和系统 |
CN113779089A (zh) * | 2021-09-14 | 2021-12-10 | 杭州沃趣科技股份有限公司 | 一种保持数据库热点数据方法、装置、设备及介质 |
CN113868124A (zh) * | 2021-09-15 | 2021-12-31 | 华中科技大学 | 针对持久内存并发程序的崩溃一致性故障检测方法及系统 |
CN113961754A (zh) * | 2021-09-08 | 2022-01-21 | 南湖实验室 | 一种基于持久内存的图数据库系统 |
CN115729849A (zh) * | 2022-11-04 | 2023-03-03 | 超聚变数字技术有限公司 | 内存管理方法及计算设备 |
CN115951841A (zh) * | 2023-02-27 | 2023-04-11 | 浪潮电子信息产业股份有限公司 | 存储系统及创建方法、数据处理方法、装置、设备和介质 |
CN113868124B (zh) * | 2021-09-15 | 2024-10-22 | 华中科技大学 | 针对持久内存并发程序的崩溃一致性故障检测方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120239871A1 (en) * | 2011-03-15 | 2012-09-20 | The Trustees Of Princeton University | Virtual address pager and method for use with a bulk erase memory |
CN102750202A (zh) * | 2012-06-06 | 2012-10-24 | 宇龙计算机通信科技(深圳)有限公司 | 数据保护方法和装置 |
CN104239225A (zh) * | 2014-09-04 | 2014-12-24 | 浪潮(北京)电子信息产业有限公司 | 一种管理异构混合内存的方法及装置 |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120239871A1 (en) * | 2011-03-15 | 2012-09-20 | The Trustees Of Princeton University | Virtual address pager and method for use with a bulk erase memory |
CN102750202A (zh) * | 2012-06-06 | 2012-10-24 | 宇龙计算机通信科技(深圳)有限公司 | 数据保护方法和装置 |
CN104239225A (zh) * | 2014-09-04 | 2014-12-24 | 浪潮(北京)电子信息产业有限公司 | 一种管理异构混合内存的方法及装置 |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105938458A (zh) * | 2016-04-13 | 2016-09-14 | 上海交通大学 | 软件定义的异构混合内存管理方法 |
CN105938458B (zh) * | 2016-04-13 | 2019-02-22 | 上海交通大学 | 软件定义的异构混合内存管理方法 |
CN106168928A (zh) * | 2016-07-06 | 2016-11-30 | 上海新储集成电路有限公司 | 一种解决混合内存读延迟不确定性的方法 |
CN106168928B (zh) * | 2016-07-06 | 2020-01-07 | 上海新储集成电路有限公司 | 一种解决混合内存读延迟不确定性的方法 |
CN107885671A (zh) * | 2016-09-30 | 2018-04-06 | 华为技术有限公司 | 一种非易失性内存的持久化方法和计算设备 |
CN107885671B (zh) * | 2016-09-30 | 2021-09-14 | 华为技术有限公司 | 一种非易失性内存的持久化方法和计算设备 |
CN110088740B (zh) * | 2016-09-30 | 2021-10-19 | 华为技术有限公司 | 一种非易失性内存的持久化方法和计算设备 |
US10976956B2 (en) | 2016-09-30 | 2021-04-13 | Huawei Technologies Co., Ltd. | Non-volatile memory persistence method and computing device |
CN110088740A (zh) * | 2016-09-30 | 2019-08-02 | 华为技术有限公司 | 一种非易失性内存的持久化方法和计算设备 |
CN110678836A (zh) * | 2017-04-20 | 2020-01-10 | 阿里巴巴集团控股有限公司 | 用于键值存储的持久性存储器 |
CN110678836B (zh) * | 2017-04-20 | 2024-02-09 | 阿里巴巴集团控股有限公司 | 用于键值存储的持久性存储器 |
CN109032566A (zh) * | 2018-06-22 | 2018-12-18 | 深圳探科技术有限公司 | 一种软件逻辑层与通讯层的去耦合方法及装置 |
CN109032566B (zh) * | 2018-06-22 | 2022-04-26 | 深圳探科技术有限公司 | 一种软件逻辑层与通讯层的去耦合方法及装置 |
CN108920110A (zh) * | 2018-07-25 | 2018-11-30 | 湖南机电职业技术学院 | 一种基于内存计算模式的并行处理大数据存储系统及方法 |
CN109597831A (zh) * | 2018-12-11 | 2019-04-09 | 北京达佳互联信息技术有限公司 | 检索文件的方法、装置、设备及可读存储介质 |
CN111444113B (zh) * | 2019-01-16 | 2023-06-13 | 阿里巴巴集团控股有限公司 | 非易失性存储介质共享方法、装置、电子设备及存储设备 |
CN111444113A (zh) * | 2019-01-16 | 2020-07-24 | 阿里巴巴集团控股有限公司 | 非易失性存储介质共享方法、装置、电子设备及存储设备 |
CN111049729A (zh) * | 2019-11-29 | 2020-04-21 | 苏州浪潮智能科技有限公司 | 一种持久化消息传输方法与装置 |
CN111131291A (zh) * | 2019-12-30 | 2020-05-08 | 广东中鹏热能科技有限公司 | 一种上位机软件作为下位机设备的协议实现方法 |
CN111131291B (zh) * | 2019-12-30 | 2023-05-26 | 广东中鹏热能科技有限公司 | 一种上位机软件作为下位机设备的协议实现方法 |
WO2021169635A1 (zh) * | 2020-02-27 | 2021-09-02 | 华为技术有限公司 | 内存设备的数据处理方法、装置和系统 |
CN111367919A (zh) * | 2020-03-08 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种数据库一体机的存储方法、装置、设备和介质 |
CN112835873A (zh) * | 2021-02-26 | 2021-05-25 | 中国电力科学研究院有限公司 | 电网调控异构系统服务化访问方法、系统、设备及介质 |
CN113961754A (zh) * | 2021-09-08 | 2022-01-21 | 南湖实验室 | 一种基于持久内存的图数据库系统 |
CN113961754B (zh) * | 2021-09-08 | 2023-02-10 | 南湖实验室 | 一种基于持久内存的图数据库系统 |
CN113779089A (zh) * | 2021-09-14 | 2021-12-10 | 杭州沃趣科技股份有限公司 | 一种保持数据库热点数据方法、装置、设备及介质 |
CN113868124A (zh) * | 2021-09-15 | 2021-12-31 | 华中科技大学 | 针对持久内存并发程序的崩溃一致性故障检测方法及系统 |
CN113868124B (zh) * | 2021-09-15 | 2024-10-22 | 华中科技大学 | 针对持久内存并发程序的崩溃一致性故障检测方法及系统 |
CN115729849A (zh) * | 2022-11-04 | 2023-03-03 | 超聚变数字技术有限公司 | 内存管理方法及计算设备 |
CN115729849B (zh) * | 2022-11-04 | 2024-02-20 | 超聚变数字技术有限公司 | 内存管理方法及计算设备 |
CN115951841A (zh) * | 2023-02-27 | 2023-04-11 | 浪潮电子信息产业股份有限公司 | 存储系统及创建方法、数据处理方法、装置、设备和介质 |
CN115951841B (zh) * | 2023-02-27 | 2023-06-20 | 浪潮电子信息产业股份有限公司 | 存储系统及创建方法、数据处理方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552336B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN100478959C (zh) | 嵌入式数据库的存储管理方法 | |
CN110018998B (zh) | 一种文件管理方法、系统及电子设备和存储介质 | |
CN103577121B (zh) | 一种基于Nand Flash的高可靠线性文件存取方法 | |
CN103577574B (zh) | 一种基于nand flash的高可靠线性文件系统 | |
CN102331993B (zh) | 分布式数据库的数据迁移方法和分布式数据库迁移系统 | |
US9384201B2 (en) | Method of managing data of file system using database management system | |
CN109521959A (zh) | 一种基于ssd-smr磁盘混合键值存储系统数据组织方法 | |
CN100456264C (zh) | 一种磁盘空间管理方法及系统 | |
US11347711B2 (en) | Sparse infrastructure for tracking ad-hoc operation timestamps | |
CN109815165A (zh) | 用于存储和处理高效压缩高速缓存行的系统和方法 | |
CN102314506B (zh) | 基于动态索引的分布式缓冲区管理方法 | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
CN102073739A (zh) | 带有快照功能的分布式文件系统中的数据读与数据写方法 | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN105469001B (zh) | 磁盘数据保护方法及装置 | |
CN106406748A (zh) | 存储器中心数据库架构 | |
Xu et al. | Building a fast and efficient LSM-tree store by integrating local storage with cloud storage | |
CN105930520A (zh) | 一种基于集群文件系统的缓存保护方法 | |
CN113742253B (zh) | 存储介质管理方法、装置、设备以及计算机可读存储介质 | |
CN105446899A (zh) | 基于存储级内存的内存数据快速持久化的方法 | |
CN115033531A (zh) | 用于实现对数据信息进行映射存储的方法、装置及应用 | |
KR101465426B1 (ko) | 익스텐트 매핑 플래시 디바이스 | |
US20210132801A1 (en) | Optimized access to high-speed storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |