CN116974955A - 持久性内存文件数据缓存方法、系统、设备及存储介质 - Google Patents
持久性内存文件数据缓存方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN116974955A CN116974955A CN202210429476.1A CN202210429476A CN116974955A CN 116974955 A CN116974955 A CN 116974955A CN 202210429476 A CN202210429476 A CN 202210429476A CN 116974955 A CN116974955 A CN 116974955A
- Authority
- CN
- China
- Prior art keywords
- cache
- lock
- free
- data
- data block
- 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.)
- Pending
Links
- 230000002085 persistent effect Effects 0.000 title claims abstract description 122
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000003860 storage Methods 0.000 title claims abstract description 40
- 230000008569 process Effects 0.000 claims abstract description 22
- 238000003780 insertion Methods 0.000 claims description 24
- 230000037431 insertion Effects 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000008602 contraction Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 5
- 230000009467 reduction Effects 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 49
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 7
- 238000012423 maintenance Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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
-
- 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
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种持久性内存文件数据缓存方法、系统、设备及存储介质,属于数据缓存领域。该方法包括:获取无锁缓存结构的缓存管理操作;在确定缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行缓存管理操作;在确定缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行缓存管理操作。该持久性内存文件数据缓存方法提高了文件系统的数据读写性能。
Description
技术领域
本发明涉及数据缓存的技术领域,尤其涉及一种持久性内存文件数据缓存方法、系统、设备及存储介质。
背景技术
文件系统是一种重要的数据存储方式,广泛部署在单机场景和分布式集群中,文件系统的存储性能直接影响到系统的整体性能,而持久性内存(Persistent Memory,PM)是一种具有字节寻址能力的内存级存储器件,支持按照字节粒度的直接访问,不需要通过DMA(Direct Memory Access,直接存储器访问)传输数据,且还具有持久化存储数据的能力。因此,越来越多的文件系统使用持久性内存进行数据存储。
现有的使用持久性内存的文件系统通常采用page cache缓存机制来提升文件系统的存储性能,然而,由于持久性内存的延迟和带宽已经和内存处于同一数量级,pagecache缓存机制并不能很好的提高文件系统的存储性能,还会因为需要维护page cache缓存机制给文件系统带来额外的开销,导致文件系统持久化写入操作时出现二次数据拷贝,增大了数据写入延迟,影响文件系统的数据读写性能。
发明内容
本发明实施例提供了一种持久性内存文件数据缓存方法、系统、设备及存储介质,旨在提高文件系统的数据读写性能。
第一方面,本发明实施例提供一种持久性内存文件数据缓存方法,所述持久性内存中的文件数据能够被一个或多个可扩展的无锁缓存结构缓存在动态随机存取存储器中,所述无锁缓存结构用于管理所述动态随机存取存储器中缓存的文件数据,所述方法包括:
获取所述无锁缓存结构的缓存管理操作;
在确定所述缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行所述缓存管理操作;
在确定所述缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行所述缓存管理操作。
第二方面,本发明实施例还提供一种文件系统,所述文件系统包括持久性内存、动态随机存取存储器和处理器;
所述持久性内存被配置为,存储文件数据,所述持久性内存中的文件数据能够被一个或多个可扩展的无锁缓存结构缓存在所述动态随机存取存储器中;
所述动态随机存取存储器被配置为,存储一个或多个可扩展的所述无锁缓存结构和缓存所述文件数据,所述无锁缓存结构用于管理所述动态随机存取存储器中缓存的文件数据;
所述处理器被配置为,获取所述无锁缓存结构的缓存管理操作;
所述处理器还被配置为,在确定所述缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行所述缓存管理操作;
所述处理器还被配置为,在确定所述缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行所述缓存管理操作。
第三方面,本发明实施例还提供一种计算机设备,所述计算机设备包括处理器、存储器、存储在所述存储器上并可被所述处理器执行的计算机程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,其中所述计算机程序被所述处理器执行时,实现如上所述的持久性内存文件数据缓存方法。
第三方面,本发明实施例还提供一种存储介质,用于计算机可读存储,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上所述的持久性内存文件数据缓存方法。
本发明实施例提供一种持久性内存文件数据缓存方法、系统、设备及存储介质,该数据缓存方法通过使用一个或多个可扩展的无锁缓存结构将持久性内存中的文件数据缓存在动态随机存储器中,以及在确定无锁缓存结构的缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行缓存管理操作,而在确定无锁缓存结构的缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行缓存管理操作,以实现将缓存管理操作解耦为耗时操作与非耗时操作这两个部分,且在文件系统的读写路径上完成非耗时操作,而耗时操作由文件系统的后台线程完成,这样可以极大地减少缓存维护开销,提高文件系统的数据读写性能,同时通过一个或多个可扩展的无锁缓存结构管理动态随机存取存储器中缓存的文件数据,可以保证缓存的一致性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种持久性内存文件数据缓存方法的流程示意图;
图2为本发明实施例中的无锁缓存结构的一示意图;
图3为本发明实施例中的缓存项的一数据结构示意图;
图4为本发明实施例中的不同文件的无锁缓存结构的对比示意图;
图5为本发明实施例中的缓存标志的转换示意图;
图6为本发明实施例提供的另一种持久性内存文件数据缓存方法的流程示意图;
图7为本发明实施例提供的一种文件系统的结构示意框图;
图8为本发明实施例提供的一种计算机设备的结构示意框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
文件系统是一种重要的数据存储方式,广泛部署在单机场景和分布式集群中,文件系统的存储性能直接影响到系统的整体性能,而持久性内存(Persistent Memory,PM)是一种具有字节寻址能力的内存级存储器件,支持按照字节粒度的直接访问,不需要通过DMA(Direct Memory Access,直接存储器访问)传输数据,且还具有持久化存储数据的能力。因此,越来越多的文件系统使用持久性内存进行数据存储。
现有的使用持久性内存的文件系统通常采用page cache缓存机制来提升文件系统的存储性能,然而,由于持久性内存的延迟和带宽已经和内存处于同一数量级,pagecache缓存机制并不能很好的提高文件系统的存储性能,还会因为需要维护page cache缓存机制给文件系统带来额外的开销,导致文件系统持久化写入操作时出现二次数据拷贝,增大了数据写入延迟,影响文件系统的数据读写性能。
为解决上述问题,本发明实施例提供了一种持久性内存文件数据缓存方法通过使用一个或多个可扩展的无锁缓存结构将持久性内存中的文件数据缓存在动态随机存储器中,以及在确定无锁缓存结构的缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行缓存管理操作,而在确定无锁缓存结构的缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行缓存管理操作,以实现将缓存管理操作解耦为耗时操作与非耗时操作这两个部分,且在文件系统的读写路径上完成非耗时操作,而耗时操作由文件系统的后台线程完成,这样可以极大地减少缓存维护开销,也可以解决缓存带来的二次数据拷贝问题,有效地降低了文件系统的读写延迟,进而提高了文件系统的数据读写性能,同时通过一个或多个可扩展的无锁缓存结构管理动态随机存取存储器中缓存的文件数据,可以保证缓存的一致性。此外,由于非耗时操作对文件系统的读取性能的干扰较小,而耗时操作对文件系统的读取性能干扰较大,通过在文件系统的读写路径上完成非耗时操作,而耗时操作由文件系统的后台线程完成,可以减少维护缓存时对文件系统的数据读写性能的干扰,提高文件系统的数据读写性能。
现有的使用持久性内存的文件系统也有采用直接访问(Direct Access,DAX)技术来提升文件系统的存储性能,即在文件系统调用中绕过缓存(page cache),直接访问持久性内存。在文件系统写入文件数据时,不将文件数据写入到内存中的缓存,而是直接将文件数据写入到持久性内存,以完成持久化存储;在读取文件数据时,也不通过内存中的缓存读取,而是直接从持久性内存中读取。然而,这样的方法并没能充分利用内存的相对低延迟和高带宽的特点,也使得局部性比较好的应用,无法利用内存中的缓存进一步提高性能。
为解决上述问题,本发明实施例提供的数据缓存方法,通过使用动态随机存取存储器(Dynamic Random Access Memory,DRAM)来缓存文件数据和文件数据对应的无锁缓存结构,再基于无锁缓存结构来管理缓存的文件数据,在文件系统读取文件数据时,可以先从DRAM中读取缓存的文件数据,若读取不到再访问持久性内存读取文件数据。在文件系统写入文件数据时,可以先将文件数据缓存到DRAM中,然后再将DRAM中缓存的文件数据写入到写入到持久性内存,以完成持久化存储。这样可以利用DRAM来缓存文件数据,进而提高文件系统的读写操作的访问性能,而通过将缓存管理操作解耦为耗时操作与非耗时操作这两个部分,且在文件系统的读写路径上完成非耗时操作,而耗时操作由文件系统的后台线程完成,这样可以极大地减少缓存维护开销,也可以解决使用DRAM来缓存文件数据带来的二次数据拷贝问题,有效地降低了文件系统的读写延迟。因此,本发明实施例提供的数据缓存方法可以解决现有技术中使用直接访问(Direct Access,DAX)技术或page cache缓存机制的文件系统的缺点,降低了文件系统的读写延迟和提高了文件系统的读写操作的访问性能,也可以保证缓存的一致性。
本发明实施例提供的持久性内存文件数据缓存方法可以应用于计算机设备,该计算机设备可以包括服务器、手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等,该服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。本发明实施例提供的数据缓存方法也可以应用于文件系统、操作系统、数据库、大数据系统、5G基站、存储服务器、CDN节点等。
下面结合附图,对本发明的一些实施例作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图1,图1为本发明实施例提供的一种持久性内存文件数据缓存方法的流程示意图。该持久性内存文件数据缓存方法可以应用于计算机设备,以提高计算机设备中的文件系统的数据读写性能。
如图1所示,该数据缓存方法包括步骤S101至步骤S103。
步骤S101、获取无锁缓存结构的缓存管理操作。
其中,本实施例提供的文件系统包括持久性内存和动态随机存取存储器,持久性内存用于对计算机设备中的文件数据进行持久化存储,动态随机存取存储器用于缓存文件数据和存储一个或多个可扩展的无锁缓存结构,持久性内存中的文件数据能够被一个或多个可扩展的无锁缓存结构缓存在动态随机存取存储器中,无锁缓存结构用于管理动态随机存取存储器中缓存的文件数据,无锁缓存结构为基于内存的组相连缓存结构,在计算机设备中的文件创建时,在动态随机存取存储器中创建该文件的无锁缓存结构。
示例性的,所述无锁缓存结构通过组相连的方式管理缓存在动态随机存取存储器中的文件数据,所述无锁缓存结构包括多个缓存空间组,所述缓存空间组包括一个或多个缓存空间,所述缓存空间用于存储缓存项,所述缓存空间组的组编号是对缓存空间存储的缓存项对应缓存数据的数据块号进行哈希计算得到的,所述缓存项用于记录动态随机存取存储器中的缓存数据对应的缓存描述信息,所述缓存项包括缓存标志、缓存版本、缓存块号、持久性内存地址和内存页地址,缓存项可以通过存储该缓存项的缓存空间的组内编号和该缓存空间所处缓存空间组的组编号唯一标识。
示例性的,每个缓存空间组内的缓存空间的个数相同或不同,不同文件的无锁缓存结构中的缓存空间组的个数可以相同,也可以不同。如图2所示,一个文件对应的无锁缓存结构10包括11个缓存空间组,每个缓存空间组均包括5个缓存空间,也即一个缓存空间组可以存储5个缓存项。
示例性的,如图3所示,缓存项20记录的缓存描述信息可以包括缓存标志、缓存版本、缓存块号、内存页地址和持久性内存地址,缓存标志用于标识缓存项的状态,缓存项的状态可以包括缓存无效、缓存占用、缓存准备、缓存拷贝、缓存有效,这些状态用于区分缓存项所处的不同状态,以保证缓存数据的一致性。缓存版本用于标识缓存项的更新,通过缓存版本可以检测出缓存项的版本,保证缓存数据的版本一致性。缓存块号为缓存项对应缓存数据在文件中的数据块号,用于缓存查找和缓存无效时进行标识。内存页地址为缓存项对应的缓存数据在动态随机存取存储器中的地址,持久性内存地址为缓存项对应的数据在持久性内存中的地址。
示例性的,缓存项中的缓存标志和缓存版本被存储在8字节整数中,且缓存项中的缓存标志和缓存版本被配置在相邻的位置。因此,这样通过原子操作可以一次写全缓存标志和缓存版本,从而可以保证缓存数据的一致性。而现有技术不使用原子操作,会分别写缓存标志和缓存版本,当出现缓存标志写成功、缓存版本写失败,或者缓存版本写成功、缓存标志写失败的情况时,就会导致数据不一致。
示例性的,一个文件对应一个无锁缓存结构,不同的无锁缓存结构用于管理动态随机存取存储器中缓存的不同文件的数据块。例如,如图4所示,文件A与无锁缓存结构31对应,文件B与无锁缓存结构32对应,无锁缓存结构31包括11个缓存空间组,一共包括55个缓存空间,也即无锁缓存结构31可以最多存储55个缓存项,而无锁缓存结构32包括10个缓存空间组,一共包括50个缓存空间,也即无锁缓存结构32可以最多存储50个缓存项,并且无锁缓存结构31仅存储文件A的数据块对应的缓存项,不存储文件B的数据块对应的缓存项,同样的,无锁缓存结构32仅存储文件B的数据块对应的缓存项,不存储文件A的数据块对应的缓存项。
其中,若缓存项的状态为缓存无效,则表示缓存数据已被写入持久性内存。若缓存项的状态为缓存占用,则表示该缓存项对应的缓存数据被读取。若该缓存项的状态为缓存准备,则表示该缓存项对应的缓存数据还没有从持久性内存中拷贝到动态随机存储器内存内。若该缓存项的状态为缓存拷贝,则表示该缓存项对应的缓存数据正在被拷贝到动态随机存储器内存内。若缓存项的状态为缓存有效,则表示该缓存项对应的缓存数据可以被读取。
可以理解的是,缓存项的状态可以在缓存无效、缓存占用、缓存准备、缓存拷贝和缓存有效这五个状态进行相互转换。例如,如图5所示,缓存项的状态可以由缓存有效切换为缓存无效或缓存占用,也可以由缓存占用切换为缓存有效或缓存准备,也可以由缓存准备切换为缓存拷贝,也可以由缓存拷贝切换为缓存有效。
具体地,在对无锁缓存结构进行缓存插入后,插入的缓存项的状态被标记为缓存准备,表示插入的缓存项对应的缓存数据还没有从持久性内存中拷贝到动态随机存储器内存内。后台进程在对进行缓存填充时,被填充的缓存数据对应的缓存项的状态被标记为缓存拷贝。在缓存填充完成后,将填充完成的缓存数据对应的缓存项的状态标记为缓存有效。当缓存项对应的缓存数据进行读操作时,该缓存数据对应的缓存项的状态被标记为缓存占用,然后在读操作完成后,将缓存项的状态切换为缓存有效。在将缓存项对应的缓存数据写入持久性内存后,已完成数据写入的缓存数据对应的缓存项的状态被标记为无效。
其中,无锁缓存结构的缓存管理操作可以包括操作耗时小于第一耗时阈值的轻量操作或操作耗时大于第二耗时阈值的耗时操作。例如,无锁缓存结构的缓存管理操作可以包括缓存查找、缓存插入、缓存替换、缓存注销、缓存填充、缓存扩展或缓存收缩。
步骤S102、在确定缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行缓存管理操作。
其中,操作耗时小于第一耗时阈值的轻量操作可以包括缓存查找、缓存插入、缓存替换或缓存注销,可以在文件系统的读操作路径上执行缓存查找、缓存插入或缓存替换,可以在文件系统的写操作路径下执行缓存注销。第一耗时阈值可以基于实际情况进行设置,本实施例对此不做具体限定。例如,第一耗时阈值为100毫秒。
在一实施例中,所述缓存查找包括在无锁缓存结构内查找读取的缓存数据页的内存页地址;所述缓存插入包括在无锁缓存结构内插入缓存项;所述缓存替换包括在无锁缓存结构内替换缓存项;所述缓存注销包括删除无锁缓存结构内的缓存项。
示例性的,通过原子操作对无锁缓存结构进行无锁地缓存查找、缓存插入或缓存替换。例如,通过原子操作修改无锁缓存结构中的缓存项内的缓存标志和缓存版本,以无锁地方式进行缓存查找、缓存插入或缓存替换。通过原子操作对对无锁缓存结构进行无锁地缓存查找、缓存插入或缓存替换,可以提高缓存查找、缓存插入或缓存替换的速度,也可以保证缓存数据的一致性。
其中,原子操作是指是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可能只执行所有步骤的一个子集。现代操作系统中,一般都提供了原子操作来实现一些同步操作,所谓原子操作,也就是一个独立而不可分割的操作。在单核环境中,一般的意义下原子操作中线程不会被切换,线程切换要么在原子操作之前,要么在原子操作完成之后。更广泛的意义下原子操作是指一系列必须整体完成的操作步骤,如果任何一步操作没有完成,那么所有完成的步骤都必须回滚,这样就可以保证要么所有操作步骤都未完成,要么所有操作步骤都被完成。
例如,在单核系统里,单个的机器指令可以看成是原子操作(如果有编译器优化、乱序执行等情况除外);在多核系统中,单个的机器指令就不是原子操作,因为多核系统里是多指令流并行运行的,一个核在执行一个指令时,其他核同时执行的指令有可能操作同一块内存区域,从而出现数据竞争现象。多核系统中的原子操作通常使用内存栅障(memorybarrier)来实现,即一个CPU核在执行原子操作时,其他CPU核必须停止对内存操作或者不对指定的内存进行操作,这样才能避免数据竞争问题。
示例性的,缓存查找包括:根据待查找的数据块的数据块号计算得到组编号,根据计算得到组编号查找无锁缓存结构中的缓存空间组,若能够查找到缓存空间组,则对查找到的缓存空间组内的每个缓存空间中的缓存项进行遍历,以确定缓存项中的缓存标志是否为缓存有效以及确定缓存项中的缓存块号是否与待查找的数据块的数据块号相同,在确定有一个缓存项中的缓存块号与待查找的数据块的数据块号相同,且缓存项的缓存标志为缓存有效时,通过原子操作将缓存标志修改为缓存占用,并将查询到的缓存项中的内存页地址返回给用户。
示例性的,缓存插入包括:根据待查找的数据块的数据块号计算得到组编号,根据计算得到组编号查找无锁缓存结构中的缓存空间组,若查找不到缓存空间组,即缓存查找失败,则访问持久性内存读取数据块号对应的数据块返回给用户,然后获取该数据块号对应的数据块的缓存描述信息,并基于该缓存描述信息,将该数据块号对应的数据块的缓存项插入无锁缓存结构。其中,在缓存插入时,采用原子操作将缓存项无锁化地插入无锁缓存结构,不会对无锁缓存结构上锁。
示例性的,缓存替换可以包括:根据待查找的数据块的数据块号,计算组编号,根据计算得到组编号在无锁缓存结构中查找对应的缓存空间组,若查找不到对应的缓存空间组,即缓存查找失败,则访问持久性内存读取数据块号对应的数据块返回给用户;然后根据返回给用户的数据块号,获取待缓存的数据块的缓存描述信息,并基于该缓存描述信息,将待缓存的数据块的缓存项插入无锁缓存结构;获取该无锁缓存结构中的每个缓存项对应的缓存数据的访问热度值,将该访问热度值最小的缓存数据对应的缓存项注销,以实现缓存项的替换。其中,在缓存替换时,也可以采用原子操作完成无锁化地缓存替换,不会对无锁缓存结构上锁。
示例性的,缓存替换也可以包括:根据待查找的数据块的数据块号,计算组编号,根据计算得到组编号在无锁缓存结构中查找对应的缓存空间组,若查找不到对应的缓存空间组,即缓存查找失败,则访问持久性内存读取数据块号对应的数据块返回给用户,并根据返回给用户的数据块号,获取待缓存的数据块的缓存描述信息;获取该无锁缓存结构中的每个缓存项对应的缓存数据的访问热度值,将该访问热度值最小的缓存数据对应的缓存项注销,释放该缓存项对应的缓存空间;基于该缓存描述信息,将待缓存的数据块的缓存项插入无锁缓存结构中。其中,插入的缓存项在无锁缓存结构中的缓存空间可以是释放访问热度值最小的缓存数据对应的缓存项得到的缓存空间,也可以是无锁缓存结构中的其余空闲的缓存空间。
示例性的,缓存注销包括:在数据块写入持久化内存后,获取写入持久化内存后的数据块的数据块号,并根据该数据块号计算得到组编号;根据计算得到组编号查找无锁缓存结构中的对应缓存空间组,并对查找到的缓存空间组内的每个缓存空间中的缓存项进行遍历,找到缓存块号与该数据块号相同的缓存项;若动态随机存取存储器中存在该缓存项对应的缓存数据,则通过原子操作将该缓存项的缓存标志改为缓存无效,并注销该缓存项,以释放缓存空间。
步骤S103、在确定缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行缓存管理操作。
其中,操作耗时大于第二耗时阈值的耗时操作包括缓存填充、缓存扩展或缓存收缩,缓存填充、缓存扩展或缓存收缩可以由计算机设备的后台进程异步执行。第二耗时阈值可以基于实际情况进行设置,本实施例对此不做具体限定。例如,第二耗时阈值为1000毫秒。
在一实施例中,所述缓存填充包括根据无锁缓存结构中的缓存项,将持久性内存中的对应文件数据缓存到动态随机存取存储器中;所述缓存扩展包括对无锁缓存结构的缓存容量进行扩展,所述缓存收缩包括对无锁缓存结构的缓存容量进行缩小。
示例性的,调用后台线程,以轮询的方式处理每个处理器核的发起的缓存填充请求、缓存扩展请求或缓存收缩请求,以对无锁缓存结构执行缓存填充、缓存扩展或缓存收缩。其中,缓存扩展请求是在无锁缓存结构的缓存容量不满足文件的缓存需要时所自动触发的,例如,无锁缓存结构中的空闲缓存空间的数量占总缓存空间的数量的百分比小于第一百分比阈值,或者无锁缓存结构中的空闲缓存空间的数量小于预设数量。缓存收缩请求是在无锁缓存结构中的空闲缓存空间的数量占总缓存空间的数量的百分比大于第二百分比阈值时所自动触发的,空闲缓存空间是指没有存储缓存项的缓存空间。第一百分比阈值、预设数量第二百分比阈值可以基于实际情况进行设置,例如,第一百分比阈值为5%,预设数量为5,第二百分比阈值为50%。
示例性的,当接收到缓存填充请求时,调用后台线程,基于该缓存填充请求确定待填充的无锁缓存结构;基于待填充的无锁缓存结构中的缓存项,将持久性内存中的对应数据拷贝至动态随机存取存储器中的缓存页内,并将对应缓存项的缓存标志置为缓存有效。
示例性的,当接收到缓存扩展请求时,调用后台线程,基于该缓存扩展请求确定待扩展的无锁缓存结构;将待扩展的无锁缓存结构整体置为无效,并创建新的无锁缓存结构,新的无锁缓存结构的缓存容量大于待扩展的无锁缓存结构的缓存容量;将待扩展的无锁缓存结构中的数据拷贝到新的无锁缓存结构中,并将新的无锁缓存结构提交给文件作为新的缓存。其中,新的无锁缓存结构的缓存容量大于待扩展的无锁缓存结构的缓存容量包括新的无锁缓存结构的缓存容量为待扩展的无锁缓存结构的缓存容量的两倍。
示例性的,待扩展的无锁缓存结构所包含的缓存空间组的数量与新的无锁缓存结构所包含的缓存空间组的数量相同。新的无锁缓存结构中的缓存空间组内的缓存空间的个数为待扩展的无锁缓存结构中的缓存空间组内的缓存空间的个数的两倍。例如,待扩展的无锁缓存结构包括11个缓存空间组,每个缓存空间组均包括5个缓存空间,也即待扩展的无锁缓存结构包括55个缓存空间,而新的无锁缓存结构也包括11个缓存空间组,但每个缓存空间组均包括10个缓存空间,也即新的无锁缓存结构包括110个缓存空间,这样就将原来的无锁缓存结构的缓存容量扩展了两倍。
示例性的,当接收到缓存收缩请求时,调用后台线程,基于该缓存收缩请求确定待收缩的无锁缓存结构;将待收缩的无锁缓存结构整体置为无效,并创建新的无锁缓存结构,新的无锁缓存结构的缓存容量小于待收缩的无锁缓存结构的缓存容量;将待收缩的无锁缓存结构中的数据拷贝到新的无锁缓存结构中,并将新的无锁缓存结构提交给文件作为新的缓存。其中,新的无锁缓存结构的缓存容量小于待收缩的无锁缓存结构的缓存容量包括新的无锁缓存结构的缓存容量为待收缩的无锁缓存结构的缓存容量的二分之一。
示例性的,待收缩的无锁缓存结构所包含的缓存空间组的数量与新的无锁缓存结构所包含的缓存空间组的数量相同。新的无锁缓存结构中的缓存空间组内的缓存空间的个数为待收缩的无锁缓存结构中的缓存空间组内的缓存空间的个数的二分之一。例如,待收缩的无锁缓存结构包括10个缓存空间组,每个缓存空间组均包括10个缓存空间,也即待收缩的无锁缓存结构包括100个缓存空间,而新的无锁缓存结构也包括10个缓存空间组,但每个缓存空间组均包括5个缓存空间,也即新的无锁缓存结构包括50个缓存空间,这样就将原来的无锁缓存结构的缓存容量收缩了两倍。
上述实施例提供的数据缓存方法,通过在确定无锁缓存结构的缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行缓存管理操作,而在确定无锁缓存结构的缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行缓存管理操作,以实现将缓存管理操作解耦为耗时操作与非耗时操作这两个部分,且在文件系统的读写路径上完成非耗时操作,而耗时操作由文件系统的后台线程完成,这样可以极大地减少缓存维护开销,提高文件系统的数据读写性能。
请参阅图6,图6为本发明实施例提供的另一种持久性内存文件数据缓存方法的流程示意图。该持久性内存文件数据缓存方法可以应用于计算机设备,以提高计算机设备中的文件系统的数据读写性能。
如图6所示,该数据缓存方法包括步骤S201至203。
步骤S201、确定持久性内存中的每个数据块的访问热度值。
其中,数据块的访问热度值用于描述计算机设备访问数据块的频繁程度,访问热度值越高的数据块,则计算机设备访问该数据块的频繁程度就越高,访问热度值越低的数据块,则计算机设备访问该数据块的频繁程度就越低。数据块的访问热度值可以为计算机访问数据块的频率。
在一实施例中,获取持久性内存中的每个数据块的访问次数、初始创建时间和前次访问时间;根据持久性内存中的每个数据块的访问次数、初始创建时间和前次访问时间,确定持久性内存中的每个数据块的访问热度值。其中,数据块的访问次数为计算机设备访问该数据块的次数,数据块的初始创建时间为创建该数据块时所记录的时间,数据块的前次访问时间为计算机设备最近访问该数据块时所记录的时间。例如,计算机设备访问数据块A时所记录的时间包括2022年3月31日的08:00、2022年3月31日的08:30、2022年3月31日的10:00、2022年3月31日的12:00,而计算机设备的当前时间为2022年3月31日的20:00,则可以确定计算机设备最近访问数据块A时所记录的时间为2022年3月31日的12:00,则将2022年3月31日的12:00确定为数据块A的前次访问时间。
示例性的,根据数据块的访问次数、初始创建时间和前次访问时间,确定数据块的访问热度值的方式可以为:基于预设访问热度计算公式,根据数据块的访问次数、初始创建时间和前次访问时间,确定数据块的访问热度值。其中,预设访问热度计算公式可以基于实际情况进行设置,本实施例对此不做具体限定。例如,访问热度值为N,数据块的访问次数为n、前次访问时间为t1,初始创建时间为t0,则预设访问热度计算公式可以表示为:N=n/(t1-t0)。
步骤S202、根据持久性内存中的每个数据块的访问热度值,确定每个数据块的热度标签。
其中,热度标签包括第一标签和第二标签,第一标签用于标识数据块为访问频繁的数据块,第二标签用于标识数据块为访问不频繁的数据块。第一标签与第二标签不同。
在一实施例中,将访问热度值大于或等于访问热度阈值的数据块的热度标签设置为第一标签;将访问热度值小于访问热度阈值的数据块的热度标签设置为第二标签。其中,该访问热度阈值可以根据持久性内存中的每个数据块的访问热度值确定,也可以是在文件系统创建时进行配置的,本实施例对此不做具体限定;
示例性的,根据持久性内存中的每个数据块的访问热度值,确定访问热度阈值可以包括:根据持久性内存中的每个数据块的访问热度值,计算访问热度值的平均值,并将访问热度值的平均值确定为访问热度阈值。或者,按照持久性内存中的每个数据块的访问热度值的高低顺序,对每个数据块的访问热度值进行排序,得到访问热度值队列;获取访问热度值队列中靠前的第一百分比的访问热度值,并根据访问热度值队列中靠前的预设百分比的访问热度值,计算访问热度值的平均值,并将访问热度值的平均值确定为访问热度阈值。
其中,第一百分比可以基于实际情况进行设置,本实施例对此不做具体限定。例如,第一百分比为20%或30%,即可以取访问热度值队列中靠前的20%或30%的访问热度值来计算访问热度值的平均值。
在一实施例中,按照持久性内存中的每个数据块的访问热度值的高低顺序,对每个数据块进行排序,得到数据块队列;将数据块队列中靠前的第二百分比的数据块的热度标签设置为第一标签,并将数据块队列中剩下的数据块的热度标签设置为第二标签。其中,第二百分比可以基于实际情况进行设置,本实施例对此不做具体限定。例如,第二百分比为20%或30%,即可以将数据块队列中靠前的20%或30%的数据块的热度标签设置为第一标签,将剩下的80%或70%的数据块的热度标签设置为第二标签。
步骤S203、将持久性内存中热度标签为第一标签的数据块缓存到动态随机存取存储器中,并更新动态随机存取存储器中的无锁缓存结构。
其中,在将持久性内存中访问热度值高的数据块缓存到动态随机存取存储器中后,可以更新动态随机存取存储器中的无锁缓存结构。
示例性的,确定缓存的数据块所属的文件,并确定该文件所对应的无锁缓存结构;通过缓存插入或缓存替换将缓存的数据块对应的缓存项插入该文件所对应的无锁缓存结构内,以更新该文件所对应的无锁缓存结构。
可以理解的是,本实施例中的步骤S201、步骤S202和步骤S203可以单独执行,也可以在步骤S101之前或之后执行,也可以在步骤S102之前或之后执行,还可以在步骤S103之前或之后执行,本实施例对此不做具体限定。
例如,在步骤S101之前执行步骤S201、步骤S202和步骤S203可以得到如下方案:确定持久性内存中的每个数据块的访问热度值;根据持久性内存中的每个数据块的访问热度值,确定每个数据块的热度标签;将热度标签为第一标签的数据块缓存到动态随机存取存储器中,并更新动态随机存取存储器中的无锁缓存结构;获取无锁缓存结构的缓存管理操作;在确定缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行缓存管理操作;在确定缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行缓存管理操作。
上述实施例提供的数据缓存方法,通过将访问频繁的数据块缓存到动态随机存取存储器中,且不缓存访问不频繁的数据块,可以减少不必要的数据拷贝开销,进而减少缓存维护开销,提高文件系统的数据读写性能。
请参阅图7,图7为本发明实施例提供的一种文件系统的结构示意性框图。
如图7所示,文件系统300包括持久性内存310、动态随机存取存储器320和处理器330;
所述持久性内存310被配置为,存储文件数据,所述持久性内存310中的文件数据能够被一个或多个可扩展的无锁缓存结构缓存在所述动态随机存取存储器320中;
所述动态随机存取存储器320被配置为,存储一个或多个可扩展的所述无锁缓存结构和缓存所述文件数据,所述无锁缓存结构用于管理所述动态随机存取存储器中缓存的文件数据;
所述处理器330被配置为,获取所述无锁缓存结构的缓存管理操作;
所述处理器330还被配置为,在确定所述缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行所述缓存管理操作;
所述处理器330还被配置为,在确定所述缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行所述缓存管理操作。
在一实施例中,所述处理器330还被配置为:
确定所述持久性内存中的每个数据块的访问热度值;
根据所述持久性内存中的每个数据块的访问热度值,确定每个所述数据块的热度标签,所述热度标签包括第一标签,所述第一标签用于标识数据块为访问频繁的数据块;
将所述持久性内存中所述热度标签为所述第一标签的数据块缓存到所述动态随机存取存储器中,并更新所述动态随机存取存储器中的无锁缓存结构。
在一实施例中,所述处理器330还被配置为:
获取所述持久性内存中的每个数据块的访问次数、初始创建时间和前次访问时间;
根据所述持久性内存中的每个数据块的访问次数、初始创建时间和前次访问时间,确定所述持久性内存中的每个数据块的访问热度值。
在一实施例中,所述无锁缓存结构通过组相连的方式管理缓存在所述动态随机存取存储器中的文件数据;
所述无锁缓存结构包括多个缓存空间组,所述缓存空间组包括一个或多个缓存空间,所述缓存空间用于存储缓存项;
所述缓存空间组的组编号是对所述缓存空间存储的缓存项对应数据块的数据块号进行哈希计算得到的;
所述缓存项包括缓存标志、缓存版本、缓存块号、持久性内存地址和内存页地址,所述缓存项通过存储所述缓存项的缓存空间的组内编号和所述缓存空间所处缓存空间组的组编号唯一标识;
一个文件对应一个所述无锁缓存结构,不同的所述无锁缓存结构用于管理所述动态随机存取存储器中缓存的不同文件的数据块。
在一实施例中,所述轻量操作包括缓存查找、缓存插入、缓存替换或缓存注销,所述耗时操作包括缓存填充、缓存扩展或缓存收缩;
所述缓存查找包括在所述无锁缓存结构内查找读取的缓存数据页的内存页地址;
所述缓存插入包括在所述无锁缓存结构内插入缓存项;
所述缓存替换包括在所述无锁缓存结构内替换缓存项;
所述缓存注销包括删除所述无锁缓存结构内的缓存项;
所述缓存填充包括根据所述无锁缓存结构中的缓存项,将所述持久性内存中的对应文件数据缓存到所述动态随机存取存储器中;
所述缓存扩展包括对所述无锁缓存结构的缓存容量进行扩展,所述缓存收缩包括对所述无锁缓存结构的缓存容量进行缩小。
在一实施例中,所述处理器330还被配置为:
通过原子操作对所述无锁缓存结构执行缓存查找、缓存插入或缓存替换。
在一实施例中,所述处理器330还被配置为:
通过原子操作修改所述无锁缓存结构中的缓存项内的缓存标志和缓存版本,以无锁地方式执行缓存查找、缓存插入或缓存替换。
在一实施例中,所述处理器330还被配置为:
根据待查找的数据块的数据块号,计算组编号,并根据计算得到的组编号在所述无锁缓存结构中查找对应的缓存空间组;
若查找不到对应的缓存空间组,则访问所述持久性内存读取所述数据块号对应的数据块返回给用户;
根据返回给用户的数据块号,获取待缓存的数据块的缓存描述信息,并根据所述缓存描述信息,将所述待缓存的数据块的缓存项插入所述无锁缓存结构;
获取所述无锁缓存结构中的每个缓存项对应的数据块的访问热度值,将所述访问热度值最小的数据块对应的缓存项注销。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的文件系统的具体工作过程,可以参考前述持久性内存文件数据缓存方法实施例中的对应过程,在此不再赘述。
请参阅图8,图8为本发明实施例提供的一种计算机设备的结构示意性框图。
如图8所示,计算机设备400包括处理器410、存储器420和文件系统430,处理器410、存储器420和文件系统430通过总线440连接,该总线比如为I2C(Inter-integratedCircuit)总线。
具体地,处理器410用于提供计算和控制能力,支撑整个计算机设备的运行。处理器410可以是中央处理单元(Central Processing Unit,CPU),该处理器410还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
具体地,存储器420可以是Flash芯片、只读存储器(ROM,Read-Only Memory)磁盘、光盘、U盘或移动硬盘等。
具体地,文件系统430包括持久性内存和动态随机存取存储器,持久性内存被配置为,存储文件数据,持久性内存中的文件数据能够被一个或多个可扩展的无锁缓存结构缓存在动态随机存取存储器中,动态随机存取存储器被配置为,存储一个或多个可扩展的无锁缓存结构和缓存文件数据,无锁缓存结构用于管理动态随机存取存储器中缓存的文件数据。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本发明实施例方案相关的部分结构的框图,并不构成对本发明实施例方案所应用于其上的计算机设备的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器用于运行存储在存储器中的计算机程序,并在执行所述计算机程序时实现本发明实施例提供的任意一种所述的持久性内存文件数据缓存方法。
在一实施例中,所述处理器用于运行存储在存储器中的计算机程序,并在执行所述计算机程序时实现以下步骤:
获取所述无锁缓存结构的缓存管理操作;
在确定所述缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行所述缓存管理操作;
在确定所述缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行所述缓存管理操作。
在一实施例中,所述处理器还用于实现以下步骤:
确定所述持久性内存中的每个数据块的访问热度值;
根据所述持久性内存中的每个数据块的访问热度值,确定每个所述数据块的热度标签,所述热度标签包括第一标签,所述第一标签用于标识数据块为访问频繁的数据块;
将所述持久性内存中所述热度标签为所述第一标签的数据块缓存到所述动态随机存取存储器中,并更新所述动态随机存取存储器中的无锁缓存结构。
在一实施例中,所述处理器在实现确定所述持久性内存中的每个数据块的访问热度值时,用于实现:
获取所述持久性内存中的每个数据块的访问次数、初始创建时间和前次访问时间;
根据所述持久性内存中的每个数据块的访问次数、初始创建时间和前次访问时间,确定所述持久性内存中的每个数据块的访问热度值。
在一实施例中,所述无锁缓存结构通过组相连的方式管理缓存在所述动态随机存取存储器中的文件数据;
所述无锁缓存结构包括多个缓存空间组,所述缓存空间组包括一个或多个缓存空间,所述缓存空间用于存储缓存项;
所述缓存空间组的组编号是对所述缓存空间存储的缓存项对应数据块的数据块号进行哈希计算得到的;
所述缓存项包括缓存标志、缓存版本、缓存块号、持久性内存地址和内存页地址,所述缓存项通过存储所述缓存项的缓存空间的组内编号和所述缓存空间所处缓存空间组的组编号唯一标识;
一个文件对应一个所述无锁缓存结构,不同的所述无锁缓存结构用于管理所述动态随机存取存储器中缓存的不同文件的数据块。
在一实施例中,所述轻量操作包括缓存查找、缓存插入、缓存替换或缓存注销,所述耗时操作包括缓存填充、缓存扩展或缓存收缩;
所述缓存查找包括在所述无锁缓存结构内查找读取的缓存数据页的内存页地址;
所述缓存插入包括在所述无锁缓存结构内插入缓存项;
所述缓存替换包括在所述无锁缓存结构内替换缓存项;
所述缓存注销包括删除所述无锁缓存结构内的缓存项;
所述缓存填充包括根据所述无锁缓存结构中的缓存项,将所述持久性内存中的对应文件数据缓存到所述动态随机存取存储器中;
所述缓存扩展包括对所述无锁缓存结构的缓存容量进行扩展,所述缓存收缩包括对所述无锁缓存结构的缓存容量进行缩小。
在一实施例中,所述处理器在实现执行所述缓存管理操作时,用于实现:
通过原子操作对所述无锁缓存结构执行缓存查找、缓存插入或缓存替换。
在一实施例中,所述处理器在实现通过原子操作对所述无锁缓存结构执行缓存查找、缓存插入或缓存替换时,用于实现:
通过原子操作修改所述无锁缓存结构中的缓存项内的缓存标志和缓存版本,以无锁地方式执行缓存查找、缓存插入或缓存替换。
在一实施例中,所述处理器在实现执行缓存替换时,用于实现:
根据待查找的数据块的数据块号,计算组编号,并根据计算得到的组编号在所述无锁缓存结构中查找对应的缓存空间组;
若查找不到对应的缓存空间组,则访问所述持久性内存读取所述数据块号对应的数据块返回给用户;
根据返回给用户的数据块号,获取待缓存的数据块的缓存描述信息,并根据所述缓存描述信息,将所述待缓存的数据块的缓存项插入所述无锁缓存结构;
获取所述无锁缓存结构中的每个缓存项对应的数据块的访问热度值,将所述访问热度值最小的数据块对应的缓存项注销。
需要说明的是,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的计算机设备的具体工作过程,可以参考前述持久性内存文件数据缓存方法实施例中的对应过程,在此不再赘述。
本发明实施例还提供一种存储介质,用于计算机可读存储,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如本发明实施例说明书提供的任一项持久性内存文件数据缓存的方法的步骤。
其中,所述存储介质可以是前述实施例所述的计算机设备的内部存储单元,例如所述计算机设备的硬盘或内存。所述存储介质也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施例中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
应当理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。以上所述,仅为本发明的具体实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种持久性内存文件数据缓存方法,其特征在于,所述持久性内存中的文件数据能够被一个或多个可扩展的无锁缓存结构缓存在动态随机存取存储器中,所述无锁缓存结构用于管理所述动态随机存取存储器中缓存的文件数据,所述方法包括:
获取所述无锁缓存结构的缓存管理操作;
在确定所述缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行所述缓存管理操作;
在确定所述缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行所述缓存管理操作。
2.根据权利要求1所述的持久性内存文件数据缓存方法,其特征在于,所述方法还包括:
确定所述持久性内存中的每个数据块的访问热度值;
根据所述持久性内存中的每个数据块的访问热度值,确定每个所述数据块的热度标签,所述热度标签包括第一标签,所述第一标签用于标识数据块为访问频繁的数据块;
将所述持久性内存中所述热度标签为所述第一标签的数据块缓存到所述动态随机存取存储器中,并更新所述动态随机存取存储器中的所述无锁缓存结构。
3.根据权利要求2所述的持久性内存文件数据缓存方法,其特征在于,所述确定所述持久性内存中的每个数据块的访问热度值,包括:
获取所述持久性内存中的每个数据块的访问次数、初始创建时间和前次访问时间;
根据所述持久性内存中的每个数据块的访问次数、初始创建时间和前次访问时间,确定所述持久性内存中的每个数据块的访问热度值。
4.根据权利要求1所述的持久性内存文件数据缓存方法,其特征在于,所述无锁缓存结构通过组相连的方式管理缓存在所述动态随机存取存储器中的文件数据;
所述无锁缓存结构包括多个缓存空间组,所述缓存空间组包括一个或多个缓存空间,所述缓存空间用于存储缓存项;
所述缓存空间组的组编号是对所述缓存空间存储的缓存项对应数据块的数据块号进行哈希计算得到的;
所述缓存项包括缓存标志、缓存版本、缓存块号、持久性内存地址和内存页地址,所述缓存项通过存储所述缓存项的缓存空间的组内编号和所述缓存空间所处缓存空间组的组编号唯一标识;
一个文件对应一个所述无锁缓存结构,不同的所述无锁缓存结构用于管理所述动态随机存取存储器中缓存的不同文件的数据块。
5.根据权利要求1-4中任一项所述的持久性内存文件数据缓存方法,其特征在于,所述轻量操作包括缓存查找、缓存插入、缓存替换或缓存注销,所述耗时操作包括缓存填充、缓存扩展或缓存收缩;
所述缓存查找包括在所述无锁缓存结构内查找读取的缓存数据页的内存页地址;
所述缓存插入包括在所述无锁缓存结构内插入缓存项;
所述缓存替换包括在所述无锁缓存结构内替换缓存项;
所述缓存注销包括删除所述无锁缓存结构内的缓存项;
所述缓存填充包括根据所述无锁缓存结构中的缓存项,将所述持久性内存中的对应文件数据缓存到所述动态随机存取存储器中;
所述缓存扩展包括对所述无锁缓存结构的缓存容量进行扩展,所述缓存收缩包括对所述无锁缓存结构的缓存容量进行缩小。
6.根据权利要求5所述的持久性内存文件数据缓存方法,其特征在于,所述执行所述缓存管理操作,包括:
通过原子操作对所述无锁缓存结构执行缓存查找、缓存插入或缓存替换。
7.根据权利要求6所述的持久性内存文件数据缓存方法,其特征在于,所述通过原子操作对所述无锁缓存结构进行无锁地缓存查找、缓存插入或缓存替换,包括:
通过原子操作修改所述无锁缓存结构中的缓存项内的缓存标志和缓存版本,以无锁地方式执行缓存查找、缓存插入或缓存替换。
8.根据权利要求5所述的持久性内存文件数据缓存方法,其特征在于,所述执行缓存替换,包括:
根据待查找的数据块的数据块号,计算组编号,并根据计算得到的组编号在所述无锁缓存结构中查找对应的缓存空间组;
若查找不到对应的缓存空间组,则访问所述持久性内存读取所述数据块号对应的数据块返回给用户;
根据返回给用户的数据块号,获取待缓存的数据块的缓存描述信息,并根据所述缓存描述信息,将所述待缓存的数据块的缓存项插入所述无锁缓存结构;
获取所述无锁缓存结构中的每个缓存项对应的数据块的访问热度值,将所述访问热度值最小的数据块对应的缓存项注销。
9.一种文件系统,其特征在于,所述文件系统包括持久性内存、动态随机存取存储器和处理器;
所述持久性内存被配置为,存储文件数据,所述持久性内存中的文件数据能够被一个或多个可扩展的无锁缓存结构缓存在所述动态随机存取存储器中;
所述动态随机存取存储器被配置为,存储一个或多个可扩展的所述无锁缓存结构和缓存所述文件数据,所述无锁缓存结构用于管理所述动态随机存取存储器中缓存的文件数据;
所述处理器被配置为,获取所述无锁缓存结构的缓存管理操作;
所述处理器还被配置为,在确定所述缓存管理操作为操作耗时小于第一耗时阈值的轻量操作时,在文件系统的读操作或写操作路径上执行所述缓存管理操作;
所述处理器还被配置为,在确定所述缓存管理操作为操作耗时大于第二耗时阈值的耗时操作时,调用后台进程异步执行所述缓存管理操作。
10.一种计算机设备,其特征在于,所述计算机设备包括处理器、存储器、存储在所述存储器上并可被所述处理器执行的计算机程序以及用于实现所述处理器和所述存储器之间的连接通信的数据总线,其中所述计算机程序被所述处理器执行时,实现如权利要求1至8中任一项所述的持久性内存文件数据缓存方法的步骤。
11.一种存储介质,用于计算机可读存储,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1至8中任一项所述的数据缓存的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210429476.1A CN116974955A (zh) | 2022-04-22 | 2022-04-22 | 持久性内存文件数据缓存方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210429476.1A CN116974955A (zh) | 2022-04-22 | 2022-04-22 | 持久性内存文件数据缓存方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116974955A true CN116974955A (zh) | 2023-10-31 |
Family
ID=88481894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210429476.1A Pending CN116974955A (zh) | 2022-04-22 | 2022-04-22 | 持久性内存文件数据缓存方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116974955A (zh) |
-
2022
- 2022-04-22 CN CN202210429476.1A patent/CN116974955A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983955B2 (en) | Data unit cloning in memory-based file systems | |
US9880909B2 (en) | Cached data replication for cache recovery | |
US11269772B2 (en) | Persistent memory storage engine device based on log structure and control method thereof | |
CN102541983B (zh) | 一种分布式文件系统中多客户端缓存同步的方法 | |
JP6764359B2 (ja) | 重複除去dramメモリモジュール及びそのメモリ重複除去方法 | |
AU2006262111B2 (en) | Managing memory pages | |
WO2019085769A1 (zh) | 一种数据分层存储、分层查询方法及装置 | |
US9229869B1 (en) | Multi-lock caches | |
US20130290636A1 (en) | Managing memory | |
US10733101B2 (en) | Processing node, computer system, and transaction conflict detection method | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
US7925857B2 (en) | Method for increasing cache directory associativity classes via efficient tag bit reclaimation | |
CN106164874B (zh) | 多核系统中数据访问者目录的访问方法及设备 | |
CN107562806B (zh) | 混合内存文件系统的自适应感知加速方法及系统 | |
US11886728B2 (en) | Undo capability for memory devices | |
US11237925B2 (en) | Systems and methods for implementing persistent data structures on an asymmetric non-volatile memory architecture | |
US20240211136A1 (en) | Service system and memory management method and apparatus | |
US11093169B1 (en) | Lockless metadata binary tree access | |
CN107832121B (zh) | 一种应用于分布式串行长事务的并发控制方法 | |
CN116974955A (zh) | 持久性内存文件数据缓存方法、系统、设备及存储介质 | |
CN112148639A (zh) | 一种高效小容量高速缓冲存储器替换方法及系统 | |
US11586353B2 (en) | Optimized access to high-speed storage device | |
CN116225693A (zh) | 元数据管理方法、装置、计算机设备及存储介质 | |
CN112069091B (zh) | 一种应用于分子动力学模拟软件的访存优化方法及装置 | |
CN110045921B (zh) | 用于数据处理的装置和访问存储电路的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |