CN107562806B - 混合内存文件系统的自适应感知加速方法及系统 - Google Patents
混合内存文件系统的自适应感知加速方法及系统 Download PDFInfo
- Publication number
- CN107562806B CN107562806B CN201710673369.2A CN201710673369A CN107562806B CN 107562806 B CN107562806 B CN 107562806B CN 201710673369 A CN201710673369 A CN 201710673369A CN 107562806 B CN107562806 B CN 107562806B
- Authority
- CN
- China
- Prior art keywords
- access
- read
- file
- write
- nvm
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提出一种混合内存文件系统的自适应感知加速方法及系统,该方法包括以下步骤:S1:收集在运行时记录的文件访问信息至NVM内,得到文件访问模式和历史记录,所述文件访问信息包括访问类型、访问次数、访问大小;S2:通过预取链查找下一被访问文件数据段,作为预取对象,其中,所述预取链根据文件间预取及文件内预取关系生成;S3:根据记录在所述NVM内的元数据对所述预取对象的读写特性进行判断;S4:根据判定的读写特性通过读写优化程序对所述预取对象进行预取的操作;S5:在每次访问结束后将本次访问的读写访问次数和总访问大小的元数据写回至所述NVM,更新所述文件访问模式和历史记录。可对后续访问的文件数据有效进行预取。
Description
技术领域
本发明涉及计算机内存管理技术领域,尤其涉及的是一种混合内存文件系统的自适应感知加速方法及系统。
背景技术
PCM和3D-Xpoint等的非易失内存技术的出现对个人电脑、移动设备、云和高性能平台的存储架构产生了巨大的改变。于是像SCMFS,BPFS,PMFS和NOVA这样的各类基于NVM(Non-Volatile Memory,非易失性存储器)的文件系统被提出,且成功地利用NVM的以字节寻址和非易失特性取得极大的性能优势。虽然DRAM(Dynamic Random Access Memory,动态随机存取存储器)和NVM有相似的读性能,但是现有的NVM技术的写操作相比DRAM具有了更久的延迟和更低的带宽。一方面,因为NVM的读延迟与DRAM接近,因此每次进行文件读操作时,通过文件内部结构的方式间接地定位文件数据块的方式就成了性能瓶颈。而大部分基于NVM的文件系统采用和传统文件系统相同的文件内部层次结构,从而对通过访问软件路径来查找每个数据块物理地址的方式产生了相当大的开销。另一方面,NVM的写开销比DRAM要高得多,同时来自直接写的访问方式的开销降低了文件写操作的性能。很不幸地是,对NVM中所有文件数据采用直接写的方式几乎被应用到所有现有的基于NVM的文件系统中,从而产生了次优的系统性能。因此为了实现基于NVM的文件系统的高性能,加速读写操作已经变得至关重要。
在NVM中,可以通过把数据页映射到内核虚拟地址空间来加速文件的读操作,也可以通过建立DRAM缓存来吸收对相同NVM块的多次写来加速文件的写操作。然而,要同时将以上两种优化方法用到一个文件系统是一件不容易的任务。首先,在任何时候,内核虚拟地址空间的页表项应该和NVM或者DRAM的文件数据保持一致。特别地,每一次不在相同位置的文件写操作,比如BPFS的影式分页,HMFS利用日志结构写,PMFS和NOVA的先复制再写,都将会导致在相应的页表项中的更新。因为在NVM中有效的数据块的地址被改变了。进一步地,分配和回收DRAM缓存将会对读密集的文件带来不必要的时间开销,因为在NVM中的读延时和带宽都接近于DRAM。很不幸地,现有的基于NVM的文件系统都不关心文件的访问模式。如果文件可以通过不同的优化方法基于各自的访问模式被预取的话,这样两种优化方法都能在一个文件系统中被更有效地利用了。
然而,要开发一种有效的预取机制是很有挑战性的。原因在于三个方面。首先,应该谨慎地选择被预取的目标文件数据,为了以最小的预取开销和有限的DRAM空间实现最大的性能优势。第二,加速类型应该在考虑到尽可能多地提升预测精确性的前提下根据先前文件数据的访问模式来决定。简单地用当前的访问模式来预取文件数据可能会导致在不同的加速访问方法中频繁的切换,从而甚至造成更糟糕的性能。第三,预取阶段应该从关键路径中移除。比如说,如果预取操作在每一次实际的文件读写操作开始前执行的话,那么由此产生的开销将会极大地影响到前端文件输入输出的性能。
发明内容
本发明所要解决的技术问题是提供一种混合内存文件系统的自适应感知加速方法及系统,可对后续访问的文件数据有效进行预取。
进一步,可对即将被访问的数据段进行最有效的预取,从而提升文件系统的整体性能。
为解决上述问题,本发明提出一种混合内存文件系统的自适应感知加速方法,包括以下步骤:
S1:收集在运行时记录的文件访问信息至NVM内,得到文件访问模式和历史记录,所述文件访问信息包括访问类型、访问次数、访问大小;
S2:通过预取链查找下一被访问文件数据段,作为预取对象,其中,所述预取链根据文件间预取及文件内预取关系生成;
S3:根据记录在所述NVM内的元数据对所述预取对象的读写特性进行判断;
S4:根据判定的读写特性通过读加速程序或写加速程序对所述预取对象进行预取的操作;
S5:在每次访问结束后将本次访问的读写访问次数和总访问大小的元数据写回至所述NVM,更新所述文件访问模式和历史记录。
根据本发明的一个实施例,所述内存文件系统为基于DRAM和NVM的混合异构内存文件系统,在运行时的文件访问信息记录在DRAM中,在进行一致性写回时被写回至NVM而被记录下来。
根据本发明的一个实施例,读写优化程序包括读加速程序,所述读加速程序包括以下步骤:
A1:接收文件系统对一个待读优化的数据段的前置节点发出的读写请求;
A2:将所述待读优化的数据段中的每一个数据块或数据节点被映射到内核虚拟地址空间;
A3:映射至内核虚拟地址空间的起始地址被返回到该数据段所属文件本身在DRAM的缓存中;
A4:后继对文件的读操作根据DRAM的缓存中的起始地址直接寻址内核虚拟地址空间进行访问。
根据本发明的一个实施例,读写优化程序包括写加速程序,所述写加速程序包括以下步骤:
B1:接收文件系统对一个待写优化的数据段的前置节点发出的读写请求;
B2:将该待写优化的数据段所属文件加入到DRAM的基数树中,以便后续查找;
B3:对该文件本身建立一棵红黑树;
B4:将该待写优化的数据段中的每一个数据块或数据节点分别放置到DRAM的缓冲中,并将已被缓存的数据块或数据节点连接到文件所对应的红黑树上;
B5:后继对文件的写操作根据文件所对应的红黑树直接对DRAM的缓冲进行写操作。
根据本发明的一个实施例,所述文件间预取及文件内预取关系根据之前的运行信息得出的历史文件数据访问先后顺序而确定,从而建立所述预取链;根据所述预取链及访问的局部性,在预取链上当前节点被访问时其下一节点作为预取对象。
根据本发明的一个实施例,所述读写特性根据预取对象访问的数据段的历史读写量对比确定;或,所述读写特性根据预取对象访问的数据段在两次连续的检查点执行期间中的开销最小化为目标而确定;或,所述读写特性根据预取对象访问的数据段为只读或只写标志而确定。
根据本发明的一个实施例,在一定时期判断开销是否超出阈值范围而确定是否改变当前的读写特性。
根据本发明的一个实施例,所述开销的计算公式如下:
其中,T为总开销大小,NRead为读访问次数,NWrite为写访问次数,LReadLatency为NVM读访问的延迟,LWriteLatency为NVM写访问的延迟,SRead为读访问大小,SWrite为写访问大小,为NVM读的速度,为NVM写的速度。
根据本发明的一个实施例,在所述读加速程序或写加速程序整个完成之后该加速类型才被判定为有效,执行后续步骤。
本发明还提供一种混合内存文件系统的自适应感知加速系统,包括:
文件访问模式和历史记录收集模块,收集在运行时记录的文件访问信息至NVM内,得到文件访问模式和历史记录,所述文件访问信息包括访问类型、访问次数、访问大小;
预取对象查找模块,通过预取链查找下一被访问文件数据段,作为预取对象,其中,所述预取链根据文件间预取及文件内预取关系生成;
读写特性判断模块,根据记录在所述NVM内的元数据对所述预取对象的读写特性进行判断;
预取操作模块,根据判定的读写特性通过读加速程序或写加速程序对所述预取对象进行预取的操作;
写回模块,在每次访问结束后将本次访问的读写访问次数和总访问大小的元数据写回至所述NVM,更新所述文件访问模式和历史记录。
采用上述技术方案后,本发明相比现有技术具有以下有益效果:
通过后继访问预测,进行对后续访问的文件数据的预测、文件的访问模式和历史信息被记录并计算,基于历史文件访问轨迹来预测未来对数据的访问方式,可更有效地进行预取;
对读频繁的文件数据,将其数据块映射到连续的内核虚拟地址空间,绕开通过内部结构访问文件数据的间接的方式;对写频繁的文件数据,分配DRAM缓存来吸收频繁地向相同数据块写的操作;对即将被访问的数据段进行最有效的预取,从而提升文件系统的整体性能,解决了基于NVM的文件系统的读写性能瓶颈。
附图说明
图1为本发明一实施例的混合内存文件系统的自适应感知加速方法的流程示意图;
图2为本发明一实施例的含WARP的内存文件系统的架构图;
图3为本发明一实施例的含WARP的内存文件系统的原理示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
参看图1,在一个实施例中,混合内存文件系统的自适应感知加速方法,包括以下步骤:
S1:收集在运行时记录的文件访问信息至NVM内,得到文件访问模式和历史记录,所述文件访问信息包括访问类型、访问次数、访问大小;
S2:通过预取链查找下一被访问文件数据段,作为预取对象,其中,所述预取链根据文件间预取及文件内预取关系生成;
S3:根据记录在所述NVM内的元数据对所述预取对象的读写特性进行判断;
S4:根据判定的读写特性通过读写优化程序对所述预取对象进行预取的操作;
S5:在每次访问结束后将本次访问的读写访问次数和总访问大小的元数据写回至所述NVM,更新所述文件访问模式和历史记录。
下面对混合内存文件系统的自适应感知加速方法进行更详细的描述,但不应以此为限。
本发明的内存文件系统是基于NVM的内存文件系统,在下面的本实施例中,内存文件系统优选的为混合异构内存文件系统(HMFS),当然不限于此,也可以是其他文件系统例如PMFS等。
文件系统的自适应感知加速方法不能脱离文件系统而单独存在,HMFS是基于动态随机存取存储器(Dynamic Random Access Memory,DRAM)和非易失性存储器(Non-Volatile Memory,NVM)的一种新型文件系统。HMFS将数据存储在NVM里,能够实现字节大小的存储数据修改和CPU的快速访问。HMFS使用写时复制技术进行数据修改更新,层次引用计数技术进行数据共享。
为了加速基于NVM的文件系统的读写优化,在架构中引入了自适应的预取模块,称之为WARP。本发明实施例的WARP可以预测文件的访问模式和文件数据访问规律,进一步利用读写加速访问来提供很高的总输入输出性能。配备有WARP的基于NVM的文件系统架构展示在图1,而WARP的设计细节阐述在图2。在高层次的结构中,WARP将数据块映射到内核虚拟地址空间,同时分别为读密集和写密集的文件数据分配DRAM缓存空间,用于存储地址或写数据等。当一个节点或数据段在运行阶段被访问时,WARP会记录该节点或数据段的访问记录和访问模式。在执行检查点时,WARP会根据读写特性判断这个节点最优的加速类型。如果这个节点有一个稳定的访问模式,那么它对应的加速类型将会激活,同时它会被存储在DRAM缓存空间和NVM中。下一次对这个节点访问时或者对这个节点的前任节点的访问将会激活后台预取进程warp_prefetch,从而调用相应的读加速或写加速程序进行预取操作。在此之后,该节点可以以同一加速方式被访问。
对WARP的设计主要包括几个主要的部分:WARP收益模型,用来预测访问模式(也就是最有效的加速方法)访问模式预测模型,用来预测未来的访问轨迹(也就是最有可能的后继节点);同时集成了WARP预取算法。
在步骤S1中,收集在运行时记录的文件访问信息至NVM内,得到文件访问模式和历史记录,所述文件访问信息包括访问类型、访问次数、访问大小。参看图2,在NVM中,可以分为主区域和辅助信息区域两个存储区,主区域可以从来存储文件及文件访问信息等,辅助信息区域则可以存储其他需要的信息。
基于NVM的文件系统必须在运行时确保一致性。因此,检查点的功能在几乎所有现在的文件系统中都是存在的,通过建立一个严格保证一致性的文件系统镜像或者用写日志的方式记录每一次文件系统的更新。检查点通常在文件系统层或文件层次得到实现。HMFS的检查点是在文件系统层次实现,因此文件系统需要通过搜索树来记录所有访问过的文件状态,以及在检查点期间执行优化方法。然而,其他的文件系统例如NOVA,就没有必要在WARP中存储元数据信息,同时在文件系统层执行加速。相反地,访问信息在文件层次搜集,处理,存储以及用于加速。当识别了某种模式,文件系统仍然可以调用warp_prefetch来预取数据块,从DRAM缓存写回数据,在文件层次存储WARP的元数据信息。
在HMFS中,在运行时的文件访问信息记录在DRAM中,在进行一致性写回时被写回至NVM而被记录下来。例如在内存文件系统的运行过程中,将文件访问频度的数据写入DRAM,并定期写回NVM。每个节点WARP的访问信息在运行时期间,在DRAM中存储及更新,在做检查点期间,每个访问节点稳定的访问类型和后继节点号会被写回到NVM的元数据中。因此,当写回WARP的访问信息(非数据本身或者文件系统元数据)的时候,没有必要实现严格的一致性保证,因为WARP不正确的访问信息并不会损坏数据本身或者文件系统元数据的一致性,只会在重新计算节点的访问模式时导致花费更长的周期。
得到的文件访问模式和历史记录,可以作为后续确定读写特性的参考。
在本发明实施例中,可以使用节点作为文件预取的粒度,大小占HMFS中任意文件中2兆比特的数据。在其他的文件系统中,粒度的大小可以根据特定的文件结构和使用模式相应修改。此时,例如,PMFS可以用更大的页大小(达到1GB)实现,在这种情形下,数据块本身被用作WARP的粒度而不是节点。与此同时,粒度也可以根据文件的访问模式被相应调整。对随机访问文件而言,更小的粒度是更有好处的,然而大粒度对顺序访问的文件更好。
在步骤S2,通过预取链查找下一被访问文件数据段,作为预取对象,其中,预取链根据文件间预取及文件内预取关系生成。数据段可以为一个或若干节点或数据块或一文件。此处的节点为数据节点。
优选的,文件间预取及文件内预取关系根据之前的运行信息得出的历史文件数据访问先后顺序而确定,从而建立所述预取链;根据所述预取链及访问的局部性,在预取链上当前节点被访问时其下一节点作为预取对象。当预取链上的一个节点被访问到时,它的下一个节点就会有很高的概率在接下来被访问到。此处的节点为预取链上的数据结构。
在WARP中,有两种类型的下一个节点的预测,也就是文件内和文件间的访问预测,分别对应着下一个节点的访问预测和下一个文件的访问预测。后继预测模型,用很少的空间和时间开销来预测未来下一个访问的节点和文件。对每一个最近访问的文件都维护了记录,也就是形成了文件访问次序的一条链式记录。
同时以节点和文件的粒度对文件访问轨迹进行了记录,因为文件内部和文件间的访问轨迹很有可能是保持稳定的。对每个被访问的节点,将文件内部的访问记录预测结果存储在这个节点的元数据中,这个预测结果就是这个节点最新的预测后下一个访问的后继节点的ID。也会在inode索引块中存储文件间的访问预测结果,包括用以下格式存储的多个元组对:{process_path_hash_value,next_ino,hint_node_id},其中process_path_hash_value是某进程当前工作目录路径的哈希值,next_ino是后继文件的inode号,同时hint_node_id是在后继文件中第一次被访问的节点的node号。通过后继节点的ID及后继文件的inode号来确定预取对象。
每个元组意味着一个最近已访问过该文件的进程的访问记录。当文件的某个节点被相同的进程以已存在于元组中的哈希值匹配而再次访问时,warp_prefetch可以对文件内部的后继节点、文件间的提示节点,基于各自之前确定的加速类型而自动调用对应加速程序。
在步骤S3中,根据记录在NVM内的元数据对所述预取对象的读写特性进行判断。为了用恰当的加速类型来预取数据,WARP收益模型基于每个节点自己的访问模式来确定它最有效的加速类型(也就是究竟是读加速,还是写加速或者两者都不是),因而需要确定其读写特性,根据读写特性来确定其通常的访问模式。
优选的,读写特性根据预取对象访问的数据段的历史读写量对比确定。在判断预取对象的读写特性时,之前的访问模式收集已经将数据段的历史访问类型(读或写)及访问次数记录了下来,可以获得相应的统计结果。如果这个数据段是即将被访问的,那就可以计算它本身的读访问和写访问的量的对比,根据这个对比的结果就能明确哪种访问优化方式是最有效的,这样就能判断对象的读写访问特性了。
或,所述读写特性根据预取对象访问的数据段为只读或只写标志而确定。在只读或只写的访问类型中,数据段只可能被读或者只可能被写,那么可以直接以其只读或只写标志来确定读写特性。
或,所述读写特性根据预取对象访问的数据段在两次连续的检查点执行期间中的开销最小化为目标而确定。下面具体来说。
内存文件系统传统的访问方式中,访问的延时和输入输出带宽占据了总输入输出中绝大部分的时间开销。而本发明实施例的WARP收益模型为了最小化节点在两次连续的检查点执行期间总的输入输出时间,动态地选择对每个节点执行读加速还是写加速方法。
任何节点的总输入输出时间开销由定位数据块物理地址、访问延时和数据传输三部分组成。与传统的数据访问情况相比,本发明读优化方法在读节点物理地址时有更小的定位成本,因为数据已经被映射到了虚拟地址空间。因此,对于经常读而很少写的节点而言,读加速方法有更好的读的性能。
在另一方面,写优化方法有更少的定位数据块物理地址和数据传输的开销,因为所有的数据缓存都维护在DRAM中。脏的数据块必须被写回到NVM中以防止造成数据损失,这使得写优化方法不得不频繁地将保持一致性的文件写回到NVM。但是多亏了DRAM缓存,对于频繁写的节点,写优化方法可以提供近似于DRAM的写的速度。
本发明的WARP收益模型为了提供最好的整体输入输出性能,同时将读操作和写操作考虑在内。采用如下的计算公式,来计算在两次连续的检查点之间采用读优化或者写优化方法带来的时间开销:
其中,T为总开销大小,NRead为读访问次数,NWrite为写访问次数,LReadLatency为NVM读访问的延迟,LWriteLatency为NVM写访问的延迟,SRead为读访问大小,SWrite为写访问大小,为NVM读的速度,为NVM写的速度。
值得注意的是,这包括了访问每个数据块物理地址在内定位开销,以及T包括在写优化方法中包含的写回开销,即在检查点时会将缓存数据写回到NVM中。N和S分别是访问次数和总的输入输出的访问大小的数量。在运行时期间每次访问节点T、N和S会相应增加。在检查点期间,对每次传统写、读优化和写优化的模式计算T。同时有着最小的T的模式被选作当前访问该节点最好的模式。如果访问模式在几个检查点中都保持稳定,那么会在NVM中存储这个节点的加速类型,同时调用相应的预取算法来执行优化操作。
在步骤S4中,根据判定的读写特性通过读写优化程序对所述预取对象进行预取的操作。根据读写特性来确定它最有效的加速类型(也就是究竟是读加速,还是写加速,或者两者都不是(传统写))。例如,可以将对读频繁、读开销大或只读标识的数据段访问判定为待读优化的数据段,可以将对写频繁、写开销大或只写标识的数据段访问判定为待写优化,其他则可以选择传统读写方式。读写请求可以由应用程序发出。
优选的,在所述读加速程序或写加速程序整个完成之后该加速类型才被判定为有效,执行后续步骤。这样就避免了系统发生不一致的情况。
优选的,读写优化程序包括读加速程序,所述读加速程序包括以下步骤:
A1:接收文件系统对一个待读优化的数据段的前置节点发出的读写请求;也就是该待读优化的数据段为根据前置节点确定的预取对象;
A2:将所述待读优化的数据段中的每一个数据块或数据节点被映射到内核虚拟地址空间;
A3:映射至内核虚拟地址空间的起始地址被返回到该数据段所属文件本身在DRAM的缓存中;
A4:后继对文件的读操作根据DRAM的缓存中的起始地址直接寻址内核虚拟地址空间进行访问。
对于频繁读的节点或者用只读标志打开等的文件,WARP会将以只读权限将数据映射到内核虚拟地址空间,如图3所示,文件A中的数据段A3和A4及文件B中的数据段B2-B5映射到内核虚拟地址空间中,对于映射到内核虚拟地址空间中的数据,只能进行读访问。传统来说,为了读取文件数据,对每个在一定范围内的数据块,文件系统必须遍历文件的内部结构才能定位它的物理地址。根据本发明的读优化方法,一旦节点通过后台的预取进程映射(即warp_prefetch)到了虚拟地址空间,每次对该节点的读操作将被直接定位到内核虚拟地址空间,无需再访问NVM。具体的操作是访问该节点时变成直接访问虚拟地址空间,同时通过调用MMU继续访问页表项来实现。
具体的,当准备预取文件时,预取进程warp_prefetch将会分配一个大小为整个文件当前大小的连续的内核虚拟地址空间,同时在DRAM的inode缓存中的开始地址存储。在此之后,预取进程warp_prefetch将会把NVM的这个预取对象的每个有效数据块映射到内核虚拟地址空间。当完成预取操作后,以后对该节点的读访问都将直接被定位到内核虚拟地址空间,同时确保了一致性。如果在预取以后出现了错位写,那么WARP将会相应地更新映射地址。
与传统的访问方法相比,即与重复地对每个数据块执行从inode块到数据块的遍历内部文件索引结构的方式相比,本发明实施例的WARP只需要简单地调用一个从内核地址空间拷贝数据到用户地址空间的函数。因为只需要调用一个函数拷贝连续的数据,而非离散地循环调用拷贝函数,WARP能快速地执行从文件地址空间到用户地址空间的复制。
优选的,读写优化程序包括写加速程序,所述写加速程序包括以下步骤:
B1:接收文件系统对一个待写优化的数据段的前置节点发出的读写请求;也就是该待写优化的数据段为根据前置节点确定的预取对象;
B2:将该待写优化的数据段所属文件加入到DRAM的基数树中,以便后续查找;
B3:对该文件本身建立一棵红黑树;
B4:将该待写优化的数据段中的每一个数据块或数据节点分别放置到DRAM的缓冲中,并将已被缓存的数据块或数据节点连接到文件所对应的红黑树上;
B5:后继对文件的写操作根据文件所对应的红黑树直接对DRAM的缓冲进行写操作。
对于频繁写的节点和以只写标志打开等的文件,WARP分配DRAM缓存来接收多次向NVM的相同数据块写的操作。一旦写缓存可用,对节点或者文件的写请求将会被在DRAM中的写缓存所截取。WARP只有在执行检查点函数的时候才会执行从写缓存写回到NVM的操作。
写优化程序将会为所有频繁写的文件建立一个基数树同时为每个文件的数据块建立一个红黑树。从图3中所示,文件A的红黑树的根节点与DRAM缓存中的数据段A1和A2对应,文件B的红黑树的根节点与DRAM缓存中的数据段B1对应,文件C的红黑树的根节点与DRAM缓存中的数据段C2-C4对应,A1和A2、B1、C2-C4分别NVM的文件A、B、C中预取得到,可以用基数树来组织文件,因为基数树对从所有干净的文件中找到脏的文件时很有效的。同时脏的文件的inode号是离散的,这使得当执行写回操作的时候,基数树是一个最好的选择用于将脏的文件一个一个地取出。文件中脏的块是处于不同的情形,由于文件访问的局部性,脏的数据块倾向于会连续存在。而红黑树包括指向相邻数据块的指针,这使得WARP可以通过一次函数调用将多个连续的数据块全部写回。
要从DRAM缓存将数据写回到NVM,可以通过函数fsync和sync来执行对NVM的实际写回操作。函数fsync将一个文件脏的节点写回到NVM,而函数sync则将文件系统中所有脏的节点写回到NVM。写回的时间间隔可以由用户自己设置或者周期性地在后台执行。
在步骤S5中,在每次访问结束后将本次访问的读写访问次数和总访问大小的元数据写回至所述NVM,更新所述文件访问模式和历史记录。以便后续的访问使用。
在WARP中的预取方法本质上是对节点或数据块调用读或者写加速程序。预取类型是通过WARP收益模型计算的该节点的最有益加速类型。预取的下一个节点是通过后继预测模型计算的基于这个节点的历史访问记录得到的最有可能下一次会被访问到的节点。一旦被选节点及对应的加速类型被确定了,warp_prefetch将会调用对应的优化函数在后台进程中来预取这些节点。当完成了预取,对这个节点的下一个读写访问将通过对应的加速方法被加速。
访问记录的信息会在做检查点的时候被写回到NVM中,多亏了NVM的可字节访问特性,这样的写回操作只会花费很少的开销。这些信息可以使得在重启之后只用很少的时间开销来重新计算访问模式和记录就可以使得输入输出立即得到加速。一旦文件系统被装载,就开始部署加速方法使得应用程序可以很快的执行输入输出操作。
用最有效的加速类型来预取节点很显著地加速了节点的输入输出访问。然而,不精确的预取操作,会造成文件系统遭受次优的性能或者撤销已经执行的加速操作,也就是把之前映射的数据块回收或者重新分配DRAM缓存。访问模式不稳定的文件可能造成在不同的加速方法间频繁地切换。即使对于在某个时间段访问模式很稳定的文件而言,它们的访问模式长期来看也可能会发生改变。
为了尽可能地避免不精确的预取操作,可以在一定时期判断开销是否超出阈值范围而确定是否改变当前的读写特性。引入一个阈值和时期确认(即多个检查点)来决定是否要改变当前的节点访问模式。特别地,当新模式下时间开销T(也就是最小的T)在某个确认时期内比当前模式的开销阈值小,那么新模式变成该节点的稳定的访问类型。WARP会存储稳定的加速类型在DRAM中这个节点的缓存里,之后存储在NVM中的元数据中。默认来说,可以设置阈值为20%T,把确认期设置为三个检查点。
本发明实施例中,基于混合异构内存文件系统中,当一个节点在运行阶段被访问时,WARP会记录该节点的访问记录和访问模式。在做检查点时,会根据收益模型来判断这个节点最优的加速类型。如果这个节点有一个稳定的访问模式,那么它对应的加速类型将会激活,同时它会被存储在DRAM缓存空间和NVM中。下一次对这个节点访问时或者对这个节点的前任节点的访问将会激活后台预取进程,从而调用相应的读加速或写加速函数。对读频繁的文件数据,将其数据块映射到内核虚拟地址空间以绕开通过内部结构访问文件数据的间接的方式;对写频繁的文件数据,分配DRAM缓存来吸收频繁地向同一数据块写的操作。在此之后,该节点可以以一种加速的方式被访问。利用一个收益模型来判别当访问数据时读密集和写密集的访问模式,同时采用一个后继预测模型基于历史文件访问轨迹来预测未来对数据的访问方式,可以在一致性保障的基础上实现基于两种文件访问模式和历史记录的预取文件数据的功能,以提高文件系统的性能。
本发明还提供一种混合内存文件系统的自适应感知加速系统,包括:
文件访问模式和历史记录收集模块,收集在运行时记录的文件访问信息至NVM内,得到文件访问模式和历史记录,所述文件访问信息包括访问类型、访问次数、访问大小;
预取对象查找模块,通过预取链查找下一被访问文件数据段,作为预取对象,其中,所述预取链根据文件间预取及文件内预取关系生成;
读写特性判断模块,根据记录在所述NVM内的元数据对所述预取对象的读写特性进行判断;
预取操作模块,根据判定的读写特性通过读加速程序或写加速程序对所述预取对象进行预取的操作;
写回模块,在每次访问结束后将本次访问的读写访问次数和总访问大小的元数据写回至所述NVM,更新所述文件访问模式和历史记录。
关于本发明的混合内存文件系统的自适应感知加速系统的具体内容可以参看前述实施例的混合内存文件系统的自适应感知加速方法部分的描述,在此不再赘述。
本发明虽然以较佳实施例公开如上,但其并不是用来限定权利要求,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。
Claims (9)
1.一种混合内存文件系统的自适应感知加速方法,所述混合内存文件系统为基于DRAM和NVM的混合内存文件系统,其特征在于,自适应感知加速方法包括以下步骤:
S1:收集在运行时记录的文件访问信息至NVM内,得到文件访问模式和历史记录,所述文件访问信息包括访问类型、访问次数、访问大小;
S2:通过预取链查找下一被访问文件数据段,作为预取对象,其中,所述预取链根据文件间预取及文件内预取关系生成;
S3:根据记录在所述NVM内的元数据对所述预取对象的读写特性进行判断;
S4:根据判定的读写特性通过读写优化程序对所述预取对象进行预取的操作;所述读写优化程序包括读加速程序,所述读加速程序包括:接收文件系统对一个待读优化的数据段的前置节点发出的读写请求;将所述待读优化的数据段中的每一个数据块或数据节点被映射到内核虚拟地址空间;映射至内核虚拟地址空间的起始地址被返回到该数据段所属文件本身在DRAM的缓存中;后继对文件的读操作根据DRAM的缓存中的起始地址直接寻址内核虚拟地址空间进行访问;
S5:在每次访问结束后将本次访问的读写访问次数和总访问大小的元数据写回至所述NVM,更新所述文件访问模式和历史记录。
2.如权利要求1所述的混合内存文件系统的自适应感知加速方法,其特征在于,所述内存文件系统为基于DRAM和NVM的混合异构内存文件系统,在运行时的文件访问信息记录在DRAM中,在进行一致性写回时被写回至NVM而被记录下来。
3.如权利要求2所述的混合内存文件系统的自适应感知加速方法,其特征在于,读写优化程序包括写加速程序,所述写加速程序包括以下步骤:
B1:接收文件系统对一个待写优化的数据段的前置节点发出的读写请求;
B2:将该待写优化的数据段所属文件加入到DRAM的基数树中,以便后续查找;
B3:对该文件本身建立一棵红黑树;
B4:将该待写优化的数据段中的每一个数据块或数据节点分别放置到DRAM的缓冲中,并将已被缓存的数据块或数据节点连接到文件所对应的红黑树上;
B5:后继对文件的写操作根据文件所对应的红黑树直接对DRAM的缓冲进行写操作。
4.如权利要求1-3中任意一项所述的混合内存文件系统的自适应感知加速方法,其特征在于,所述文件间预取及文件内预取关系根据之前的运行信息得出的历史文件数据访问先后顺序而确定,从而建立所述预取链;根据所述预取链及访问的局部性,在预取链上当前节点被访问时其下一节点作为预取对象。
5.如权利要求1-3中任意一项所述的混合内存文件系统的自适应感知加速方法,其特征在于,所述读写特性根据预取对象访问的数据段的历史读写量对比确定;或,所述读写特性根据预取对象访问的数据段在两次连续的检查点执行期间中的开销最小化为目标而确定;或,所述读写特性根据预取对象访问的数据段为只读或只写标志而确定。
6.如权利要求5所述的混合内存文件系统的自适应感知加速方法,其特征在于,在一定时期判断开销是否超出阈值范围而确定是否改变当前的读写特性。
8.如权利要求1-3中任意一项所述的混合内存文件系统的自适应感知加速方法,其特征在于,在所述读加速程序或写加速程序整个完成之后,读加速或写加速才被判定为有效,执行后续步骤。
9.一种混合内存文件系统的自适应感知加速系统,所述混合内存文件系统为基于DRAM和NVM的混合内存文件系统,其特征在于,自适应感知加速系统包括:
文件访问模式和历史记录收集模块,收集在运行时记录的文件访问信息至NVM内,得到文件访问模式和历史记录,所述文件访问信息包括访问类型、访问次数、访问大小;
预取对象查找模块,通过预取链查找下一被访问文件数据段,作为预取对象,其中,所述预取链根据文件间预取及文件内预取关系生成;
读写特性判断模块,根据记录在所述NVM内的元数据对所述预取对象的读写特性进行判断;
预取操作模块,根据判定的读写特性通过读写优化程序对所述预取对象进行预取的操作;所述读写优化程序包括读加速程序,所述读加速程序包括:接收文件系统对一个待读优化的数据段的前置节点发出的读写请求;将所述待读优化的数据段中的每一个数据块或数据节点被映射到内核虚拟地址空间;映射至内核虚拟地址空间的起始地址被返回到该数据段所属文件本身在DRAM的缓存中;后继对文件的读操作根据DRAM的缓存中的起始地址直接寻址内核虚拟地址空间进行访问;
写回模块,在每次访问结束后将本次访问的读写访问次数和总访问大小的元数据写回至所述NVM,更新所述文件访问模式和历史记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710673369.2A CN107562806B (zh) | 2017-08-08 | 2017-08-08 | 混合内存文件系统的自适应感知加速方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710673369.2A CN107562806B (zh) | 2017-08-08 | 2017-08-08 | 混合内存文件系统的自适应感知加速方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107562806A CN107562806A (zh) | 2018-01-09 |
CN107562806B true CN107562806B (zh) | 2020-07-28 |
Family
ID=60974339
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710673369.2A Active CN107562806B (zh) | 2017-08-08 | 2017-08-08 | 混合内存文件系统的自适应感知加速方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107562806B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110058923B (zh) * | 2019-03-29 | 2021-03-26 | 华中科技大学 | 一种基于动态预取策略的Docker容器COW机制优化方法及系统 |
CN110134514B (zh) * | 2019-04-18 | 2021-04-13 | 华中科技大学 | 基于异构内存的可扩展内存对象存储系统 |
CN111399784B (zh) * | 2020-06-03 | 2020-10-16 | 广东睿江云计算股份有限公司 | 一种分布式存储的预读写方法及装置 |
CN111694765A (zh) * | 2020-06-05 | 2020-09-22 | 重庆大学 | 一种面向移动应用特征的非易失性内存文件系统多粒度空间管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810113A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失存储器和动态随机存取存储器的融合内存系统 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN105786717A (zh) * | 2016-03-22 | 2016-07-20 | 华中科技大学 | 软硬件协同管理的dram-nvm层次化异构内存访问方法及系统 |
CN106250064A (zh) * | 2016-08-19 | 2016-12-21 | 深圳大普微电子科技有限公司 | 固态硬盘控制装置和基于学习的固态硬盘数据存取方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170206033A1 (en) * | 2016-01-19 | 2017-07-20 | SK Hynix Inc. | Mechanism enabling the use of slow memory to achieve byte addressability and near-dram performance with page remapping scheme |
-
2017
- 2017-08-08 CN CN201710673369.2A patent/CN107562806B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810113A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失存储器和动态随机存取存储器的融合内存系统 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN105786717A (zh) * | 2016-03-22 | 2016-07-20 | 华中科技大学 | 软硬件协同管理的dram-nvm层次化异构内存访问方法及系统 |
CN106250064A (zh) * | 2016-08-19 | 2016-12-21 | 深圳大普微电子科技有限公司 | 固态硬盘控制装置和基于学习的固态硬盘数据存取方法 |
Non-Patent Citations (1)
Title |
---|
一种识别I/O Feature的文件预测模型;杨晓芬等;《小型微型计算机系统》;20121130(第11期);第2493-2497页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107562806A (zh) | 2018-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10176057B2 (en) | Multi-lock caches | |
US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
US5606688A (en) | Method and apparatus for dynamic cache memory allocation via single-reference residency times | |
US8738859B2 (en) | Hybrid caching techniques and garbage collection using hybrid caching techniques | |
CN105740164B (zh) | 支持缓存一致性的多核处理器、读写方法、装置及设备 | |
US7284096B2 (en) | Systems and methods for data caching | |
CN107562806B (zh) | 混合内存文件系统的自适应感知加速方法及系统 | |
US9229869B1 (en) | Multi-lock caches | |
US6782453B2 (en) | Storing data in memory | |
US11756618B1 (en) | System and method for atomic persistence in storage class memory | |
US20180300258A1 (en) | Access rank aware cache replacement policy | |
US9501419B2 (en) | Apparatus, systems, and methods for providing a memory efficient cache | |
JP7340326B2 (ja) | メンテナンス動作の実行 | |
US11226904B2 (en) | Cache data location system | |
US20100217937A1 (en) | Data processing apparatus and method | |
CN110888600B (zh) | 一种面向nand闪存的缓冲区管理方法 | |
US20130290636A1 (en) | Managing memory | |
US20040030839A1 (en) | Cache memory operation | |
US8219751B2 (en) | Methods for optimizing performance of transient data calculations | |
CN113138851B (zh) | 一种数据管理方法、相关装置及系统 | |
Liu et al. | FLAP: Flash-aware prefetching for improving SSD-based disk cache | |
CN112148639A (zh) | 一种高效小容量高速缓冲存储器替换方法及系统 | |
US8214601B2 (en) | Purging without write-back of cache lines containing spent data | |
US9454488B2 (en) | Systems and methods to manage cache data storage | |
EP0058846B1 (en) | Multiprocessing system with variably shared paging storage |
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 |