CN114115711B - 基于非易失内存文件***的快速缓存*** - Google Patents
基于非易失内存文件***的快速缓存*** Download PDFInfo
- Publication number
- CN114115711B CN114115711B CN202110977140.4A CN202110977140A CN114115711B CN 114115711 B CN114115711 B CN 114115711B CN 202110977140 A CN202110977140 A CN 202110977140A CN 114115711 B CN114115711 B CN 114115711B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- cache
- metadata
- temperature
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种基于非易失内存文件***的快速缓存***,包括:混合内存管理模块:对缓存中的数据和元数据进行管理;数据操作模块:进行重构底层文件***的数据操作,向应用提供数据存取;缓存替换模块:通过动态的缓存替换策略,对冷热数据进行迁移和回收。本发明的***减少了发生在关键路径上的非易失内存高延迟的写入操作,细粒度的数据块分配策略避免了静态分配数据块造成的写放大问题,动态的缓存替换策略提高了缓存的利用率,从而提升了***的整体性能。
Description
技术领域
本发明涉及文件缓存技术领域,具体地,涉及一种基于非易失内存文件***的快速缓存***。
背景技术
非易失性内存(Non-Volatile Main Memory,NVMM)在近年来得到了快速地发展,并得到了学术界和工业界的广泛关注。它主要包括PCM(相变存储器)、STT-MRAM(自旋存储器)以及英特尔与美光公司研制的3DX-Point技术。持久性内存具有DRAM内存不具备的非易失性和大容量,同时相比传统的磁盘设备拥有更接近DRAM内存的访问延迟和带宽。当持久性内存作为外存使用,数据无需在DRAM内存和持久性内存之间进行频繁地迁移。这种访问模式能有效地提升***的整体性能。相比固态硬盘和机械硬盘,持久性内存还提供了可字节寻址的能力。与DRAM内存类似,持久内存可以直接连接于***的内存总线,CPU可以使用Load/Store直接访问存储在持久内存上的数据。持久性内存的性能特点改变了传统的由DRAM内存和慢速磁盘设备构成的存储结构。近十年来,学术界和工业界根据持久性内存的性能特点设计和实现了基于持久内存的编程模型,文件***和应用。
持久性内存具体的高性能,大容量以及可字节寻址的特点对文件***设计提出了新的要求。传统的文件***都是基于DRAM内存和磁盘设备进行设计的。它们具有较长的数据通路,对磁盘上数据的一次访问往往要通过页缓存(Page Cache)等多层路径。由于持久内存的性能接近于DRAM同时具有字节寻址的特点,页缓存在基于持久内存的文件***的设计中是冗余的。现有的基于持久内存的文件***的研究主要分为内核态文件***和用户态文件***。
在过去十年的研究中,没有真实的持久内存供研究人员使用。研究人员设计的基于持久内存文件***或者其他应用都是使用模拟环境来完成的。直到在2019年4月上市的第一款商用持久内存—英特尔傲腾持久内存(Intel Optane DC persistent memory)的到来,研究人员才发现在过去的研究中对于持久内存的性能过于乐观,尤其是其并发性和写入性能。在加州大学圣地亚哥分校的一篇对英特尔傲腾持久内存的报告中可以发现,持久内存的写入带宽和可扩展性远远低于DRAM内存。由于大多数研究者对于并发性和写入性能过于乐观,他们所设计的持久内存文件***的性能在真实的持久内存环境下可能会大幅下降。
专利文献CN110659315A(申请号:CN201910723095.2)公开了一种通过非易失性存储***对非结构化数据库(NoSQLDB)进行性能加速的技术。针对目前各类数据采集、分析***中广泛应用的NoSQL数据库***对性能提升的要求,引入非易失存储***,通过对NoSQLDB的文件缓存***进行加速(通过非易失存储),从而提升数据读写效率速度并保障数据安全。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于非易失内存文件***的快速缓存***。
根据本发明提供的基于非易失内存文件***的快速缓存***,包括:
混合内存管理模块:对缓存中的数据和元数据进行管理;
数据操作模块:进行重构底层文件***的数据操作,向应用提供数据存取;
缓存替换模块:通过动态的缓存替换策略,对冷热数据进行迁移和回收。
优选的,所述混合内存管理模块包括:数据块存储区、元数据存储区和LRU队列;
所述数据块存储区的大小根据缓存***的配置确定,所述数据块存储区由空闲的数据块组成,采用无锁循环队列对数据块进行管理,所述数据块的数量由数据块存储区的大小确定,所述数据块的大小分为256B、512B、1KB、2KB、4KB,每种大小的数据块所占用的存储空间相同;
所述元数据存储区的大小根据缓存***的配置确定,所述元数据存储区由空闲的元数据结构组成,采用无锁循环队列对空闲的元数据结构进行管理,所述元数据结构的数量根据元数据存储区的大小确定,所述元数据结构记录文件的inode号、文件大小、文件映射区域,以及已分配给文件的数据块;
所述LRU队列采用双向链表结构,存储非空闲的元数据结构,根据元数据结构对应的文件的最近访问情况进行排序。
优选的,所述数据操作模块提供常用文件数据操作接口,包括:读操作和写操作。
优选的,所述读操作的过程包括如下步骤:
步骤1.1:根据文件inode号获得该文件的元数据结构;
步骤1.2:更新LRU队列,将该元数据结构置为队首;
步骤1.3:获取该元数据结构的读写锁控制权;
步骤1.4:检测本次读取的数据是否在缓存中,若不在,则直接从该文件对应的映射区域读取该数据;若该数据已被缓存,则直接从缓存中读取;
步骤1.5:根据当前缓存***设定的读数据的温度权重,增加该数据的温度;
步骤1.6:返回本次读取数据的长度。
优选的,所述写操作的过程包括如下步骤:
步骤2.1:根据文件inode号获得该文件的元数据结构;
步骤2.2:更新LRU队列,将该元数据结构置为队首;
步骤2.3:获取该元数据结构的读写锁控制权;
步骤2.4:根据写入数据的长度和文件的长度判断此次写操作的类型是否为追加写;
步骤2.5:根据该元数据结构的同步标志位决定如何写入数据;
步骤2.6:数据写入完成后,根据当前缓存***设定的写数据的温度权重,增加该数据的温度;
步骤2.7:温度更新完成后,根据本次写操作写入字节长度,更新文件元数据结构中的已写入字节数;
步骤2.8:返回本次写入数据的长度。
优选的,所述步骤2.4包括:
当本次写操作的数据长度和偏移超出当前文件长度,缓存***认定此次写为追加写;
调用ftruncate函数,根据对文件追加写的长度,增加文件的长度;
调用mmap函数,根据当前文件最后一个映射区域的偏移和新的文件长度,将新增加的文件区域映射到用户空间中,并在该文件的元数据结构中记录本次映射的起始地址,映射长度以及映射偏移。
优选的,所述步骤2.5包括:
当文件的元数据结构标志位为同步标志时,本次写操作的数据将直接写回该文件的映射区域;
当文件的元数据结构标志位为异步标志时,缓存***为数据分配新的数据块,并将数据写入数据块中,并回收旧的数据块。
优选的,所述缓存替换模块包括:回收线程和迁移线程;
所述回收线程对缓存***中存储在DRAM上冷的数据块进行回收;
所述迁移线程对缓存***中将存储在非易失内存上热的数据块进行迁移;
所述缓存替换模块根据当前缓存中已分配数据块的总温度和当前缓存剩余空间来设定温度阈值;
缓存***初始化时,设定所有数据块温度为0;当数据块被访问时,相应数据块的温度加1;
当前缓存空间使用率低于50%时,设定已分配数据块的总温度的50%为热数据块温度阈值;
当前缓存空间使用率高于50%低于80%时,设定已分配数据块的总温度乘以当前缓存空间使用率为热数据块温度阈值;
当前缓存空间使用率高于80%时,设定无穷大为热数据块温度阈值;
设定已分配数据块的总温度的50%为冷温度阈值。
优选的,当前缓存空间使用率达到95%时,回收线程对缓存***中存储在DRAM上冷的数据块进行回收,包括如下步骤:
步骤3.1:回收线程从后往前遍历LRU队列;
步骤3.2:回收线程对遍历到的元数据结构中,对温度值低于设定的冷温度阈值的数据块进行回收,将回收的数据块加入到对应的无锁循环队列中;对温度值高于冷温度阈值的数据块,将其温度减去冷温度阈值;
步骤3.3:当缓存空间使用率降低至50%时,回收线程停止回收。
优选的,当数据块的温度达到设定的热温度阈值,且该数据块存储在非易失内存上时,迁移线程为该数据分配对应大小的数据块,并将该数据从非易失内存中迁移到DRAM。
与现有技术相比,本发明具有如下的有益效果:
(1)本发明通过用户态接口库优化了文件***的数据操作通路,减少了上下文切换的开销,提高了***的整体性能;
(2)本发明通过混合内存管理模块高效地管理缓存空间,提供缓存的空间利用率,从而提升***整体性能。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明提供的总体框架示意图;
图2是本发明混合内存管理模块的示意图;
图3是本发明元数据结构的示意图;
图4是本发明实施例中读文件数据流程的示意图;
图5是本发明实施例中写文件数据流程的示意图;
图6是本发明实施例中回收冷数据流程的示意图;
图7是本发明实施例中迁移数据流程的示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1:
根据本发明提供的面向非易失内存文件***的快速缓存***,包括:混合内存管理模块,数据操作模块以及缓存替换模块;混合内存管理模块负责对缓存中的数据和元数据进行高效管理;数据操作模块重构了底层文件***的数据操作,向应用提供低延迟、高并发的数据存取;缓存替换模块通过动态的缓存替换策略,对冷热数据进行迁移和回收;混合内存管理模块包括:数据块存储区,元数据存储区,元数据结构以及LRU队列,数据块存储区由空闲的数据块组成,采用无锁循环队列对数据块进行管理;数据块存储区的大小根据缓存***的配置确定;数据块的大小分为256B、512B、1KB、2KB、4KB,每种大小的数据块所占用的存储空间相同,具体的数量由数据块存储区的大小确定;元数据存储区由空闲的元数据结构组成,采用无锁循环队列对空闲的元数据结构进行管理;元数据结构记录了文件的inode号、文件大小、文件映射区域以及已分配给文件的数据块;元数据存储区的大小根据缓存***的配置确定;元数据结构的数量根据元数据存储区的大小确定;LRU队列采用了双向链表结构,存储了非空闲的元数据结构,根据元数据结构对应的文件的最近访问情况进行排序;
数据操作模块提供了常用的文件数据操作接口,包括:读操作和写操作。读操作包括:步骤1.1:根据文件inode号获得该文件的元数据结构;步骤1.2:更新LRU队列,将该元数据结构置为队首;步骤1.3:获取该元数据结构的读写锁控制权;步骤1.4:检测本次读取的数据是否在缓存中;若不在,则直接从该文件对应的映射区域读取该数据;若该数据已被缓存,则直接从缓存中读取;步骤1.5:根据当前缓存***设定的读数据的温度权重,增加该数据的温度;步骤1.6:返回本次读取数据的长度。写操作包括:步骤2.1:根据文件inode号获得该文件的元数据结构;步骤2.2:更新LRU队列,将该元数据结构置为队首;步骤2.3:获取该元数据结构的读写锁控制权;步骤2.4:根据写入数据的长度和文件的长度判断此次写操作的类型是否为追加写;步骤2.5:根据该元数据结构的同步标志位决定如何写入数据;步骤2.6:数据写入完成后,根据当前缓存***设定的读数据的温度权重,增加该数据的温度;步骤2.7:温度更新完成后,根据本次写操作写入字节长度,更新文件元数据结构中的已写入字节数;步骤2.8:返回本次写入数据的长度。步骤2.4包括:当本次写操作的数据长度和偏移超出了当前文件长度,缓存***认定此次写为追加写;调用ftruncate函数,根据对文件追加写的长度,增加文件的长度;调用mmap函数,根据当前文件最后一个映射区域的偏移和新的文件长度,将新增加的文件区域映射到用户空间中,并在该文件的元数据结构中记录本次映射的起始地址,映射长度以及映射偏移。步骤2.5包括:当文件的元数据结构标志位为同步标志时,本次写操作的数据将会直接写回该文件的映射区域;当文件的元数据结构标志位为异步标志时,缓存***会为数据分配新的数据块,并将数据写入数据块中,并回收旧的数据块;
缓存替换模块包括:回收线程以及迁移线程;回收线程对缓存***中存储在DRAM上冷的数据块进行回收;迁移线程对缓存***中将存储在非易失内存上热的数据块进行迁移;缓存替换模块根据当前缓存中已分配数据块的总温度和当前缓存剩余空间来设定温度阈值;缓存***初始化时,设定所有数据块温度为0;当数据块被访问时,相应数据块的温度加1;当前缓存空间使用率低于50%时,缓存替换模块设定已分配数据块的总温度的50%为热数据块温度阈值;当前缓存空间使用率高于50%低于80%时,缓存替换模块设定已分配数据块的总温度乘以当前缓存空间使用率为热数据块温度阈值;当前缓存空间使用率高于80%时,缓存替换模块设定无穷大为热数据块温度阈值;缓存替换模块设定已分配数据块的总温度的50%为冷温度阈值;当前缓存空间使用率达到95%时,回收线程对缓存***中存储在DRAM上冷的数据块进行回收,包括:步骤3.1:回收线程从后往前遍历LRU队列;步骤3.2:回收线程对遍历到的元数据结构中,对温度值低于缓存替换模块设定的冷温度阈值的数据块进行回收,将回收的数据块加入到对应的无锁循环队列中;对温度值高于冷温度阈值的数据块,将其温度减去冷温度阈值;步骤3.3:当缓存空间使用率降低至50%时,回收线程停止回收;当数据块的温度达到缓存替换模块设定的热温度阈值,且该数据块存储在非易失内存上时,迁移线程为该数据分配对应大小的数据块,并将该数据从非易失内存中迁移到DRAM。
实施例2:
实施例2为实施例1的优选例。
根据本发明提供的基于非易失内存文件***的快速缓存***,由混合内存管理模块,数据操作模块以及缓存替换模块组成。所述的混合内存管理模块负责对缓存中的数据和元数据进行高效管理。所述的数据操作模块重构了底层文件***的数据操作,向应用提供低延迟、高并发的数据存取。所述的缓存替换模块通过动态的缓存替换策略,对冷热数据进行迁移和回收。图1是本发明实施例的一种基于非易失内存文件***的快速缓存***基本架构图。
混合内存管理模块如图2所示。混合内存管理模块由数据块存储区,元数据结构存储区以及LRU队列组成。
数据块存储区由空闲的数据块组成,采用无锁循环队列对数据块进行管理。无锁循环队列可以支持多个线程同时为文件分配数据块。数据块的大小分为256B,512B,1KB,2KB,4KB。
快速缓存***的文件元数据结构如图3所示。元数据存储区由空闲的元数据结构组成,采用无锁循环队列对空闲的元数据结构进行管理。文件元数据结构主要记录了文件的inode号,文件的长度,文件映射区域以及管理文件数据块的B+树。已分配的元数据结构通过红黑树进行管理,通过文件的inode号查找红黑树对应的元数据结构。
采用最近最少使用(Least Recently Used)算法选择待进行迁移或者回收的文件。每个文件在被访问后加入混合内存管理模块中的LRU队列,并成为队列的第一个元素。
数据操作模块对底层非易失内存文件***的数据操作进行重构。对一个文件进行读操作的步骤如图4所示,文字描述如下:
步骤S1:查找红黑树,根据文件的inode号获得文件的元数据结构;
步骤S2:将该元数据结构置为LRU队列的队首;
步骤S3:获得该元数据结构的读写锁;
步骤S4:调用lseek函数,获得文件当前的偏移量cur_pos;若当前cur_pos等于文件长度,则返回0;否则,执行步骤S5;
步骤S5:计算读取后的文件偏移量new_pos;若new_pos大于文件长度,则设置待读取的字节数nbytes=文件长度–cur_pos,并设置new_pos=文件长度;
步骤S6:从当前偏移量cur_pos对应的数据块开始读取数据;
若该数据存在于DRAM上,则从DRAM上读取;否则,从非易失内存上读取;
对访问的数据块的温度加1;
步骤S7:读取完nbytes字节后,调用lseek函数,更新文件的偏移量为new_pos;
步骤S8:返回读取的字节数nbytes。
具体地,对一个文件进行写操作的步骤如图5所示,文字描述如下:
步骤S1:查找红黑树,根据文件的inode号获得文件的元数据结构;
步骤S2:将该元数据结构置为LRU队列的队首;
步骤S3:获得该元数据结构的读写锁;
步骤S4:获得文件当前的偏移量cur_pos;若当前cur_pos等于文件长度,则返回0;否则,执行步骤S5;
步骤S5:计算写入后的文件的偏移量new_pos=cur_pos+nbytes;若new_pos大于文件长度,则执行步骤S5.1;否则,执行S6;
步骤S5.1:文件的新长度=cur_pos+nbytes–当前文件长度;调用ftruncate函数,更新文件的长度;
步骤S5.2:调用mmap函数,将新增加的文件区域映射到用户空间中,并在该文件的元数据结构中记录本次映射的起始地址,映射长度以及映射偏移;执行S6;
步骤S6:检测文件的同步属性;若文件的元数据结构中的同步标志位为同步标志,采用非时态指令将数据直接写入到非易失内存相应的位置;否则,执行S6.1;
步骤S6.1:检查文件元数据结构的B+树,检测写入的数据块是否已经分配;若未分配,则先分配对应大小的数据块,再写入数据;否则,直接写入数据;
步骤S7:对访问的数据块的温度加1;
步骤S7:写完nbytes字节后,调用lseek函数,更新文件的偏移量为new_pos;
步骤S8:返回写入的字节数nbytes。
缓存替换模块缓动态地调整冷热温度阈值,根据当前缓存中已分配数据块的总温度和当前缓存剩余空间来设定温度阈值。缓存替换模块由回收线程和迁移线程组成。回收线程对缓存***中存储在DRAM上冷的数据块进行回收。当缓存空间使用率达到95%时,唤醒回收线程。回收线程对冷数据回收的步骤如图6所示,文字描述如下:
步骤S1:从后往前遍历LRU队列;
步骤S2:检测当前文件的元数据结构的所有已分配数据块的温度;
步骤S3:当已是分配数据块的温度低于当前缓存替换模块设定的冷温度阈值,则将该数据块回收至数据块存储区的无锁循环队列;若该数据为脏数据,则将该数据写回至非易失内存;
当已分配数据块的温度高于当前缓存替换模块设定的冷温度阈值,将该数据块的温度减去冷温度阈值;
步骤S4:当缓存空间使用率降至50%时,回收线程停止工作,并进入睡眠状态。
迁移线程对缓存***中将存储在非易失内存上热的数据块进行迁移。当未分配数据块的数据的温度超过缓存替换模块设定的热温度阈值,唤醒迁移线程。迁移线程对热数据的迁移如图7所示,文字描述如下:
步骤S1:迁移线程为该数据分配新的数据块;
步骤S2:迁移线程将该数据从非易失内存迁移到新分配的数据块中。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的***、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的***、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (7)
1.一种基于非易失内存文件***的快速缓存***,其特征在于,包括:
混合内存管理模块:对缓存中的数据和元数据进行管理;
数据操作模块:进行重构底层文件***的数据操作,向应用提供数据存取;
缓存替换模块:通过动态的缓存替换策略,对冷热数据进行迁移和回收;
所述缓存替换模块包括:回收线程和迁移线程;
所述回收线程对缓存***中存储在DRAM上冷的数据块进行回收;
所述迁移线程对缓存***中将存储在非易失内存上热的数据块进行迁移;
所述缓存替换模块根据当前缓存中已分配数据块的总温度和当前缓存剩余空间来设定温度阈值;
缓存***初始化时,设定所有数据块温度为0;当数据块被访问时,相应数据块的温度加1;
当前缓存空间使用率低于50%时,设定已分配数据块的总温度的50%为热数据块温度阈值;
当前缓存空间使用率高于50%低于80%时,设定已分配数据块的总温度乘以当前缓存空间使用率为热数据块温度阈值;
当前缓存空间使用率高于80%时,设定无穷大为热数据块温度阈值;
设定已分配数据块的总温度的50%为冷温度阈值;
当前缓存空间使用率达到95%时,回收线程对缓存***中存储在DRAM上冷的数据块进行回收,包括如下步骤:
步骤3.1:回收线程从后往前遍历LRU队列;
步骤3.2:回收线程对遍历到的元数据结构中,对温度值低于设定的冷温度阈值的数据块进行回收,将回收的数据块加入到对应的无锁循环队列中;对温度值高于冷温度阈值的数据块,将其温度减去冷温度阈值;
步骤3.3:当缓存空间使用率降低至50%时,回收线程停止回收;
当数据块的温度达到设定的热温度阈值,且该数据块存储在非易失内存上时,迁移线程为该数据分配对应大小的数据块,并将该数据从非易失内存中迁移到DRAM。
2.根据权利要求1所述的基于非易失内存文件***的快速缓存***,其特征在于,所述混合内存管理模块包括:数据块存储区、元数据存储区和LRU队列;
所述数据块存储区的大小根据缓存***的配置确定,所述数据块存储区由空闲的数据块组成,采用无锁循环队列对数据块进行管理,所述数据块的数量由数据块存储区的大小确定,所述数据块的大小分为256B、512B、1KB、2KB、4KB,每种大小的数据块所占用的存储空间相同;
所述元数据存储区的大小根据缓存***的配置确定,所述元数据存储区由空闲的元数据结构组成,采用无锁循环队列对空闲的元数据结构进行管理,所述元数据结构的数量根据元数据存储区的大小确定,所述元数据结构记录文件的inode号、文件大小、文件映射区域,以及已分配给文件的数据块;
所述LRU队列采用双向链表结构,存储非空闲的元数据结构,根据元数据结构对应的文件的最近访问情况进行排序。
3.根据权利要求1所述的基于非易失内存文件***的快速缓存***,其特征在于,所述数据操作模块提供常用文件数据操作接口,包括:读操作和写操作。
4.根据权利要求3所述的基于非易失内存文件***的快速缓存***,其特征在于,所述读操作的过程包括如下步骤:
步骤1.1:根据文件inode号获得该文件的元数据结构;
步骤1.2:更新LRU队列,将该元数据结构置为队首;
步骤1.3:获取该元数据结构的读写锁控制权;
步骤1.4:检测本次读取的数据是否在缓存中,若不在,则直接从该文件对应的映射区域读取该数据;若该数据已被缓存,则直接从缓存中读取;
步骤1.5:根据当前缓存***设定的读数据的温度权重,增加该数据的温度;
步骤1.6:返回本次读取数据的长度。
5.根据权利要求3所述的基于非易失内存文件***的快速缓存***,其特征在于,所述写操作的过程包括如下步骤:
步骤2.1:根据文件inode号获得该文件的元数据结构;
步骤2.2:更新LRU队列,将该元数据结构置为队首;
步骤2.3:获取该元数据结构的读写锁控制权;
步骤2.4:根据写入数据的长度和文件的长度判断此次写操作的类型是否为追加写;
步骤2.5:根据该元数据结构的同步标志位决定如何写入数据;
步骤2.6:数据写入完成后,根据当前缓存***设定的写数据的温度权重,增加该数据的温度;
步骤2.7:温度更新完成后,根据本次写操作写入字节长度,更新文件元数据结构中的已写入字节数;
步骤2.8:返回本次写入数据的长度。
6.根据权利要求5所述的基于非易失内存文件***的快速缓存***,其特征在于,所述步骤2.4包括:
当本次写操作的数据长度和偏移超出当前文件长度,缓存***认定此次写为追加写;
调用ftruncate函数,根据对文件追加写的长度,增加文件的长度;
调用mmap函数,根据当前文件最后一个映射区域的偏移和新的文件长度,将新增加的文件区域映射到用户空间中,并在该文件的元数据结构中记录本次映射的起始地址,映射长度以及映射偏移。
7.根据权利要求5所述的基于非易失内存文件***的快速缓存***,其特征在于,所述步骤2.5包括:
当文件的元数据结构标志位为同步标志时,本次写操作的数据将直接写回该文件的映射区域;
当文件的元数据结构标志位为异步标志时,缓存***为数据分配新的数据块,并将数据写入数据块中,并回收旧的数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110977140.4A CN114115711B (zh) | 2021-08-24 | 2021-08-24 | 基于非易失内存文件***的快速缓存*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110977140.4A CN114115711B (zh) | 2021-08-24 | 2021-08-24 | 基于非易失内存文件***的快速缓存*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114115711A CN114115711A (zh) | 2022-03-01 |
CN114115711B true CN114115711B (zh) | 2023-10-17 |
Family
ID=80440994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110977140.4A Active CN114115711B (zh) | 2021-08-24 | 2021-08-24 | 基于非易失内存文件***的快速缓存*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114115711B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114442963B (zh) * | 2022-04-07 | 2022-06-07 | 中国信息通信研究院 | 固态硬盘的控制方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775476A (zh) * | 2016-12-19 | 2017-05-31 | 中国人民解放军理工大学 | 混合内存***及其管理方法 |
CN106951376A (zh) * | 2017-02-27 | 2017-07-14 | 清华大学 | 面向闪存的细粒度非易失缓存***以及缓存管理方法 |
CN110543433A (zh) * | 2019-08-30 | 2019-12-06 | 中国科学院微电子研究所 | 一种混合内存的数据迁移方法及装置 |
CN111221776A (zh) * | 2019-12-30 | 2020-06-02 | 上海交通大学 | 面向非易失性内存的文件***的实现方法、***及介质 |
-
2021
- 2021-08-24 CN CN202110977140.4A patent/CN114115711B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775476A (zh) * | 2016-12-19 | 2017-05-31 | 中国人民解放军理工大学 | 混合内存***及其管理方法 |
CN106951376A (zh) * | 2017-02-27 | 2017-07-14 | 清华大学 | 面向闪存的细粒度非易失缓存***以及缓存管理方法 |
CN110543433A (zh) * | 2019-08-30 | 2019-12-06 | 中国科学院微电子研究所 | 一种混合内存的数据迁移方法及装置 |
CN111221776A (zh) * | 2019-12-30 | 2020-06-02 | 上海交通大学 | 面向非易失性内存的文件***的实现方法、***及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114115711A (zh) | 2022-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9223719B2 (en) | Integrating data from symmetric and asymmetric memory | |
CN103049397B (zh) | 一种基于相变存储器的固态硬盘内部缓存管理方法及*** | |
US9690694B2 (en) | Apparatus, system, and method for an address translation layer | |
Zhou et al. | Spitfire: A three-tier buffer manager for volatile and non-volatile memory | |
US7949839B2 (en) | Managing memory pages | |
US20070094445A1 (en) | Method to enable fast disk caching and efficient operations on solid state disks | |
US10740251B2 (en) | Hybrid drive translation layer | |
US20130091331A1 (en) | Methods, apparatus, and articles of manufacture to manage memory | |
KR20170038853A (ko) | 호스트-관리 비휘발성 메모리 | |
CN105718530A (zh) | 文件存储***及其文件存储控制方法 | |
US20150324281A1 (en) | System and method of implementing an object storage device on a computer main memory system | |
CN115427941A (zh) | 数据管理***和控制的方法 | |
WO2021208239A1 (zh) | 一种低延迟的文件***地址空间管理方法、***及介质 | |
CN110968269A (zh) | 基于scm与ssd的键值存储***及读写请求处理方法 | |
CN112130749A (zh) | 数据储存装置以及非挥发式存储器控制方法 | |
CN114115711B (zh) | 基于非易失内存文件***的快速缓存*** | |
US10073851B2 (en) | Fast new file creation cache | |
CN108664217B (zh) | 一种降低固态盘存储***写性能抖动的缓存方法及*** | |
CN106775684A (zh) | 一种基于新型非易失性存储器的磁盘缓存掉电恢复方法 | |
Chen et al. | A unified framework for designing high performance in-memory and hybrid memory file systems | |
JP4792065B2 (ja) | データ記憶方法 | |
US11782854B2 (en) | Cache architecture for a storage device | |
Xiao et al. | Tnvmalloc: A thread-level-based wear-aware allocator for nonvolatile main memory | |
Liu et al. | Nvmtfs: A non-volatile memory adaptive file system for tiered storage system | |
Hsieh et al. | VAST: virtually associative sector translation for MLC storage 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 |