CN107209720A - 持久存储器上的页面高速缓存 - Google Patents
持久存储器上的页面高速缓存 Download PDFInfo
- Publication number
- CN107209720A CN107209720A CN201580074818.0A CN201580074818A CN107209720A CN 107209720 A CN107209720 A CN 107209720A CN 201580074818 A CN201580074818 A CN 201580074818A CN 107209720 A CN107209720 A CN 107209720A
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- long
- cache
- file
- 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/0893—Caches characterised by their organisation or structure
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本文所描述的各种示例提供用于在持久存储器上高速缓存页面,以用于来自非持久存储器文件系统或具有非持久存储器页面高速缓存的远程文件系统的文件的存储器映射访问。特别地,一些示例检测来自非持久存储器文件系统或具有非持久存储器页面高速缓存的远程文件系统的文件的存储器映射访问,并且基于持久存储器的可用性,在持久存储器上高速缓存与存储器映射访问相关联的页面。
Description
背景技术
利用各种基于存储器的技术来改善可以从文件系统访问文件的速度。例如,使用存储器映射来提供对文件的访问允许一个应用访问文件的映射部分,就像它们是在主存储器中一样,这可以在访问文件时——特别是当该文件大小很大时——改善输入/输出(I/O)性能。
附图说明
在以下参考附图的详细描述中描述了某些示例。
图1和图2图示出了用于在文件的存储器映射访问期间使用持久存储器进行页面高速缓存的示例页面高速缓存系统。
图3图示出了包括示例页面高速缓存系统的示例计算机系统。
图4图示出了包括示例页面高速缓存系统的示例计算环境中的示例数据流。
图5图示出了用于在文件的存储器映射访问期间使用持久存储器进行页面高速缓存的示例计算机系统。
图6和图7图示出了由示例计算机系统执行的示例方法,以在文件的存储器映射访问期间使用持久存储器来促进页面高速缓存。
具体实施方式
虽然传统的基于存储器的技术的使用可以改善对文件系统上的文件的访问,但它们也有其缺点。例如,利用非易失性存储器(NVM)来改善文件的存储器映射访问的应用通常需要修改应用以同步或清空(flush)对NVM的写入,或者需要应用使用库来这样做。关于使用存储器映射来访问文件,各种数据储存设备不允许直接存储器映射,并且通过分配易失性存储器(例如,动态随机存取存储器[DRAM])并将数据同步到非易失性数据存储器(例如,硬盘驱动器或固态驱动器)来实现存储器映射。使用易失性存储器进行页面高速缓存通常导致页面数据从易失性存储器重复写入到非易失性数据存储器,这部分地是由于在易失性存储器上缺少持久的数据(例如,当不再对易失性存储器供电时,在其上页面数据丢失)。
本文所描述的各种示例提供了在存储在非持久存储器文件系统或远程文件系统上并从其访问的文件的存储器映射访问期间使用持久存储器用于进行页面高速缓存。根据一些示例,当确定在从非持久存储器文件系统或远程文件系统访问文件时文件已被存储器映射时,利用持久存储器用于高速缓存在文件的存储器映射访问中所涉及的页面。以这种方式,各种示例使用文件的存储器映射作为触发器,用于当文件存储在诸如基于硬盘驱动器的文件系统之类的非持久存储器文件系统或诸如通过通信网络访问的文件系统(例如,持久或非持久存储器文件系统)之类的远程文件系统上并且从其访问时选择持久存储器来对文件的一部分进行页面高速缓存。
在一些示例中,检测来自非持久存储器文件系统或具有非持久存储器页面高速缓存的远程文件系统的文件的存储器映射访问,确定用于对与存储器映射访问相关联的页面进行高速缓存的持久存储器的可用性,并且基于该可用性,将页面高速缓存在该持久存储器上。取决于示例,在其中页面是新页面,并且存储器映射访问包括高速缓存与存储器映射访问相关联的新页面的请求的情况下,可以响应于该请求将该页面高速缓存在持久存储器上。因此,可以响应于用于高速缓存与文件的存储器映射访问相关联的新页面的请求来确定持久存储器的可用性。在页面可以是高速缓存在非持久存储器页面高速缓存上的现有页面并且存储器映射访问包括访问与存储器映射访问相关联的现有页面的请求的情况下,可以响应于页面的访问(例如,由应用读取或写入)而将该页面高速缓存在持久存储器上。在页面是现有页面的情况下,对页面进行高速缓存可以涉及将页面从非持久存储器页面高速缓存迁移到持久存储器。因此,可以响应于非持久性页面高速缓存上的现有页面被访问(例如,由应用读取或写入)来确定持久存储器的可用性。
对于一些示例,高速缓存在持久存储器上的页面从持久存储器清空到非持久存储器文件系统或从其访问文件的远程文件系统。另外,对于一些示例,当持久存储器经历资源压力(例如,缺少数据储存空间)时,当文件的存储器映射访问被解除(例如,未映射)时,当文件关闭时,或者当(例如,由包括持久存储器的计算机系统)确定持久存储器的其他使用将提供优于将其用于页面高速缓存的操作优势时,可以清空持久存储器上高速缓存的与文件的存储器映射访问相关联的页面。另外,对于一些示例,替代可基于易失性存储器(例如,DRAM)的非持久存储器页面高速缓存或者除了其之外,可以利用持久存储器用于页面高速缓存。
与由传统存储器映射使用的基于易失性存储器(例如,动态随机存取存储器[DRAM])的页面高速缓存不同,持久存储器是非易失性的,并且因此,高速缓存在持久存储器上的页面固有地获得持久性,而避免、减少或至少延迟将高速缓存的页面(例如,通过msync系统调用)写入(例如,清空)回到非持久存储器储存设备(例如,硬盘驱动器或固态驱动器)或远程文件系统的需要。通过避免、减少或延迟将高速缓存的页面写入非持久存储器储存设备的需要,可以加速对文件的存储器映射访问并可以减少非持久存储器设备或远程文件系统底层的储存设备(例如,固态驱动器[SSD]))上的磨损。
如本文所使用的,持久存储器可以包括持久存储器设备,诸如相变存储器(PCM)设备。如本文所使用的,非持久存储器文件系统可以包括这样的文件系统:其使用诸如硬盘驱动器(HDD)、固态驱动器(SSD)或一些其他非易失性存储器设备之类的非持久存储器设备来实现并且能够使用非持久存储器页面高速缓存来提供对存储在其上的文件的存储器映射访问。如本文所使用的,文件的访问可以包括从文件的一部分读取数据或向文件的一部分写入数据。
还如本文所使用的,远程文件系统可以是在通信网络上并且通过维护远程文件系统的第二计算机系统而可由第一计算机系统访问的文件系统。远程文件系统可以与可以是第二计算机系统本地的持久存储器设备或非持久存储器设备相关联(例如,使用其来实现)。对于各种示例,当使用存储器映射来访问存储在远程文件系统上的文件时,第一计算机系统利用本文所描述的页面高速缓存技术。
以下描述了在特定文件的示例生命周期的上下文中的示例页面高速缓存系统。示例生命周期可以从存储在非持久存储器文件系统或远程文件系统上的特定文件开始,并且(例如,由应用)从非持久存储器文件系统或远程文件系统访问(例如,打开)特定文件。非持久存储器文件系统或远程文件系统可以包括能够使用非持久存储器页面高速缓存来提供对文件的存储器映射访问的文件系统。对于示例页面高速缓存系统,当检测到特定文件的存储器映射访问时,页面高速缓存系统确定用于对与存储器映射访问相关联的页面进行高速缓存的持久存储器的可用性(例如,在持久存储器上用于页面高速缓存的数据储存空间的可用性),并且基于可用性,将页面高速缓存在持久存储器上。确定持久存储器的可用性和页面的高速缓存可以响应于高速缓存与存储器映射访问相关联地生成的新页面的请求,或者响应于在非持久存储器页面高速缓存上的现有页面被访问。
因此,在打开特定文件并且在与特定文件的存储器映射访问(例如,使用mmap系统调用)相关联的新页面需要高速缓存的时候,持久存储器可用,则示例页面高速缓存系统可以将新页面高速缓存在持久存储器上。在持久存储器在那时不可用的情况下,示例页面高速缓存系统可以将新页面高速缓存在非持久存储器页面高速缓存上。在已经将与特定文件的存储器映射访问相关联的现有页面高速缓存在非持久存储器页面高速缓存上之后持久存储器变得可用的情况下,示例页面高速缓存系统可以将现有页面从非持久存储器页面高速缓存迁移到持久存储器。可以在现有页面的后续访问(例如,由涉及非持久存储器页面高速缓存的先前的mmap请求所要求的访问虚拟存储区域)之后或之时将该现有页面迁移到持久存储器。将现有页面从非持久存储器页面高速缓存迁移到持久存储器可以涉及将页面从非持久存储器页面高速缓存复制到持久存储器,并且然后从非持久存储器页面高速缓存中移除该页面。
在已经将页面高速缓存在持久存储器上之后,可以通过与持久存储器的直接存储器映射来从持久存储器访问该页面,其中存储器地址可以直接映射到持久存储器设备上的其中存储该页面的位置。这样的直接映射可以允许(例如,应用)使用处理器(例如,中央处理单元[CPU])的负载(例如,ld)和存储(例如,st)机器码指令来访问页面,并且也可以允许在不需要非持久存储器页面高速缓存(从而避免与其相关的缺点)的情况下访问页面。
以下提供由图1-图7所图示的示例的详细描述。
图1图示出了用于在文件的存储器映射访问期间使用持久存储器进行页面高速缓存的示例页面高速缓存系统100。如所示,页面高速缓存系统100包括存储器映射访问检测模块102、持久存储器可用性模块104和持久存储器页面高速缓存模块106。取决于示例,页面高速缓存系统100可以是诸如台式机、笔记本电脑、手持计算设备(例如,个人数字助理、智能手机、平板电脑等)、工作站、服务器或包括处理器的其他设备之类的计算机系统的一部分。在各种示例中,页面高速缓存系统100中的组件或组件的布置可以不同于图1中所描绘的。
如本文所使用的,各种示例的模块和其他组件可以全部或部分地包括机器可读指令或电子电路。例如,模块可以包括可由处理器执行以根据本文所描述的各种示例执行一个或多个功能的计算机可读指令。类似地,在另一种实例中,模块可以包括根据本文所描述的各种示例执行一个或多个功能的电子电路。模块的元件可以组合在单个封装中、保持在多个封装中、或分开保持。
存储器映射访问检测模块102可以促进由计算机系统检测来自具有非持久存储器页面高速缓存的非持久存储器文件系统或远程文件系统的文件的存储器映射访问。对于各种示例,非持久存储器页面高速缓存有助于非持久存储器文件系统提供对存储在其上的文件的存储器映射访问。计算机系统可以通过打开文件并建立该文件的存储器映射访问来启动文件的存储器映射访问,这可以导致与存储器映射访问相关联地分配新页面。由存储器映射访问检测模块102检测到的存储器映射访问可以包括:计算机系统建立文件的新的存储器映射,或者计算机系统请求访问存储在非持久存储器页面高速缓存上并与现有(例如,先前建立的)存储器映射相关联的页面的存储器地址(例如,虚拟存储器地址)。
持久存储器可用性模块104可以促进确定在计算机系统上用于页面高速缓存的持久存储器的可用性。对于一些示例,在将与文件的存储器映射访问相关联的页面高速缓存在持久存储器上之前,持久存储器可用性模块104确定持久存储器的可用性。取决于该示例,持久存储器可用性模块104可以响应于高速缓存与存储器映射访问相关联的新页面的请求或者响应于访问非持久存储器页面高速缓存上的与存储器映射访问相关联的现有页面来确定持久存储器的可用性。
取决于该示例,用于高速缓存与存储器映射访问相关联的页面的持久存储器的可用性可以基于计算机系统上是否存在持久存储器。用于高速缓存与存储器映射访问相关联的页面的持久存储器的可用性可以基于持久存储器是否被启用用于页面高速缓存(例如,持久存储器对于页面高速缓存而言可以被禁用,但是对于长期文件储存而言可以被启用)。此外,用于高速缓存与存储器映射访问相关联的页面的持久存储器的可用性可以基于持久存储器是否具有可用数据储存空间来高速缓存与文件的存储器映射访问相关联的页面。
持久存储器页面高速缓存模块106可以促进将与文件的存储器映射访问相关联的页面高速缓存在计算机系统的持久存储器上。在页面是新页面并且存储器映射访问包括高速缓存与存储器映射访问相关联的新页面的请求的情况下,持久存储器页面高速缓存模块106可以响应于该请求而将页面高速缓存在持久存储器上。在页面是现有页面并且存储器映射访问包括访问与存储器映射访问相关联的现有页面的情况下,持久存储器页面高速缓存模块106可以响应于现有页面被(例如,被应用)访问而将页面高速缓存在持久存储器上。
对于一些示例,页面可以构成经由存储器映射访问进行访问的文件的至少一部分——如果不是全部。在由计算机系统打开该文件的情况下,文件由计算机系统进行存储器映射,并且当需要(例如,作为使用mmap系统调用的结果)与存储器映射关联地高速缓存新页面时,(例如,由持久存储器可用性模块104)确定持久存储器为可用,持久存储器页面高速缓存模块106可以使新页面被高速缓存在持久存储器上。在当需要高速缓存新页面时确定持久存储器为不可用的情况下,持久存储器页面高速缓存模块106可以使新页面被高速缓存在计算机系统的非持久存储器页面高速缓存上。在已经将现有页面高速缓存在计算机系统的非持久存储器页面高速缓存上之后确定持久存储器为可用的情况下,持久存储器页面高速缓存模块106可以使现有页面从非持久存储器页面高速缓存迁移到持久存储器。持久存储器页面高速缓存模块106可以在现有页面(例如,由涉及非持久存储器页面高速缓存的先前的mmap请求所要求的访问虚拟存储器区域)的后续访问之后或之时引起该迁移。如本文所描述的,将现有页面从非持久存储器页面高速缓存迁移到持久存储器可以涉及将页面从非持久存储器页面高速缓存复制到持久存储器,并且然后从非持久存储器页面高速缓存移除页面。
图2图示出了用于在文件的存储器映射访问期间使用持久存储器进行页面高速缓存的示例页面高速缓存系统200。如所示,页面高速缓存系统200包括存储器映射访问检测模块202、持久存储器可用性模块204、持久存储器页面高速缓存模块206和持久存储器页面清空模块208。取决于示例,页面高速缓存系统200可以是诸如台式机、笔记本电脑、手持计算设备(例如,个人数字助理、智能手机、平板电脑等)、工作站、服务器或包括处理器的其他设备之类的计算机系统的一部分。在各种示例中,页面高速缓存系统200中的组件或组件的布置可以不同于图2中所描绘的。
存储器映射访问检测模块202、持久存储器可用性模块204和持久存储器页面高速缓存模块206可以分别类似于上面关于图1的页面高速缓存系统100所描述的存储器映射访问检测模块102、持久存储器可用性模块104和持久存储器页面高速缓存模块106。
持久存储器页面清空模块208可以促进将页面从持久存储器清空到非持久存储器文件系统,其中清空可以基于一组准则。页面可以是由持久性存储器页面高速缓存模块206先前高速缓存在持久存储器上的页面。如本文所描述的,持久存储器页面高速缓存模块206可以响应于存储器映射访问检测模块202检测到文件的存储器映射访问而已将页面高速缓存在持久存储器上,其中页面与存储器映射访问相关联。还如本文所描述的,持久存储器页面高速缓存模块206可以基于由持久存储器可用性模块204确定的持久存储器的可用性而已将页面高速缓存在持久存储器上。
取决于示例,用于清空页面的该组准则可以包括与存储器映射访问的条件有关的准则,诸如存储器映射访问是否已经被解除(例如,解映射)、存储器映射访问的使用频率、或用于存储器映射访问的持久存储器的数据储存空间。例如,当文件的存储器映射访问被解除时,持久存储器页面清空模块208可以使页面从持久存储器清空到非持久存储器文件系统,这可能在计算机系统显式地执行解映射系统调用时发生。该组准则可以包括与计算机系统是否关闭与存储器映射访问相关联的文件相关的准则。例如,持久存储器页面清空模块208可以在计算机系统关闭文件之时使页面从持久存储器清空到非持久存储器文件系统,其中可以由持久存储器页面清空模块208来检测此类关闭。另外,该组准则可以包括与持久存储器的条件相关的准则。例如,当(例如由持久存储器可用性模块204)确定持久存储器的可用性受限或用尽时,持久存储器页面清空模块208可以使页面从持久存储器清空到非持久存储器文件系统。在另一实例中,当(例如由持久存储器页面清空模块208)确定被页面在持久存储器上占用的数据储存空间可以更好地用于计算机系统上的另一个用途时,持久存储器页面清空模块208可以使页面从持久存储器清空到非持久存储器文件系统。持久存储器的更好的利用可以包括持久存储器的任何替代使用,其将提供超过使用它来专门高速缓存被清空的页面——或者通常超过将其用于页面高速缓存——的操作优势。替代利用的示例可以包括:文件(例如,与存储器映射访问相关联的文件)的长期储存、(例如,与存储器映射访问相关联的)新页面的高速缓存、当前在非持久存储器页面高速缓存上的现有页面的高速缓存、或与较高优先级存储器映射访问相关联的页面的高速缓存。
图3图示出了包括页面高速缓存系统100的示例计算机系统300。计算机系统300可以是具有处理器和存储器的任何计算设备,诸如台式机、笔记本电脑、手持计算设备(例如,个人数字助理、智能手机、平板电脑等)、工作站、服务器或包括处理器的其他设备。如所示,计算机系统300包括应用模块302、持久存储器模块304、页面高速缓存系统200、文件系统模块306和通信模块308。在各种示例中,在计算机系统300中的组件或组件的布置可以不同于图3中所描绘的。
应用模块302表示在计算机系统300上可操作并且能够访问(例如,读取、写入或修改)存储在文件系统上的文件的任何固件或软件(例如,软件应用或操作系统)。对于一些示例,当应用模块302希望访问文件时,应用模块302打开来自文件系统的文件,并且一旦应用模块302已经完成其对该文件的访问,则最终可以关闭该文件。当应用模块302访问来自非持久存储器文件系统或远程文件系统的文件时,可以使用由计算机系统300(未示出)所包括的非持久存储器页面高速缓存(例如,基于易失性存储器)来对文件进行存储器映射。
持久存储器模块304可以包括用于存储页面的持久存储器。页面可以是由页面高速缓存系统200高速缓存在持久存储器上的新页面,或者可以是由页面高速缓存系统200从由计算机系统300所包括的非持久存储器页面高速缓存迁移到持久存储器的新页面。
文件系统模块306可以向应用模块302提供对计算机系统300的本地非持久存储器文件系统的访问,或者提供对相对于计算机系统300远离的远程文件系统的访问。计算机系统300的本地非持久存储器文件系统可以包括这样的文件系统:其使用计算机系统300本地的非持久存储器设备(例如,硬盘驱动器[HDD]或固态驱动器[SSD])来实现,并且能够使用计算机系统300的非持久存储器页面高速缓存来提供对存储在其上的文件的存储器映射访问。远程文件系统可以是这样的文件系统:其由计算机系统300可以(例如,通过通信网络)与之通信的另一个计算机系统维护,并且能够使用计算机系统300的非持久存储器页面高速缓存来提供对存储在其上的文件的存储器映射访问。远程文件系统的文件系统可以与由另一个计算机系统可访问的非持久存储器设备或持久存储器设备相关联。
页面高速缓存系统200促进了在计算机系统300上在本文所描述的各种操作。例如,页面高速缓存系统200可以由应用模块302通过文件系统模块306检测来自计算机系统300的本地非持久存储器文件系统或远程文件系统的文件的存储器映射访问。作为响应,页面高速缓存系统200可以确定可通过持久存储器模块304访问的计算机系统300的持久存储器的可用性。基于该确定,页面高速缓存系统200可以将与存储器映射访问相关联的页面高速缓存在计算机系统300的持久存储器上。如本文所描述的,对页面进行高速缓存可以涉及在计算机系统300的持久存储器上高速缓存与存储器映射访问相关联的新页面,或将存在于计算机系统300的非持久存储器页面高速缓存上的页面迁移到持久存储器。最终,基于一组准则,页面高速缓存系统200可以将页面从计算机系统300的持久存储器清空到非持久存储器文件系统或远程文件系统,从其中可由计算机系统300访问该文件。
对于一些示例,文件系统模块306可以包括促进页面高速缓存系统200将页面高速缓存在计算机系统300的持久存储器上的虚拟文件系统模块。虚拟文件系统可以向应用模块302提供具有单个文件命名空间但是(例如,基于)与相似类型(例如,两个或多个非持久存储器文件系统)或不同类型(例如,非持久存储器文件系统和持久存储器文件系统)的多个单独文件系统相关联的虚拟文件系统。
通信模块308可以促进计算机系统300通过允许数据通信的通信网络与另一计算机系统的通信。通信网络可以包括一个或多个本地或广域通信网络,诸如互联网、WiFi网络、蜂窝网络、专用网络、公共网络等。如本文所描述的,计算机系统300可以访问由另一计算机系统维护的远程文件系统,并且通信模块308可以促进计算机系统300与促进访问的另一计算机系统之间的网络数据分组的交换。
图4图示出了包括页面高速缓存系统200的示例计算环境400中的示例数据流。如所示,计算环境400包括应用402、虚拟文件系统模块404、页面高速缓存系统200、非持久存储器页面高速缓存406、文件系统408、非易失性存储器设备410和持久存储器412。根据一些示例,虚拟文件系统模块404至少基于与非易失性存储器设备410相关联的文件系统408而向应用402提供具有单个文件命名空间的虚拟文件系统。非持久存储器页面高速缓存406可以支持应用402对存储在文件系统408上的文件的存储器映射访问。
在计算环境400中的操作期间,应用402可以打开并访问作为单个命名空间的一部分由虚拟文件系统模块404提供并存储在文件系统408上的给定文件。当由应用402通过虚拟文件系统模块404访问给定文件时,给定文件可以是存储器映射的。页面高速缓存系统200可以检测给定文件的存储器映射访问,并且作为响应,确定用于高速缓存与给定文件的存储器映射访问相关联的页面的持久存储器412的可用性。在页面高速缓存系统200确定持久存储器412可用的情况下,页面高速缓存系统200可以将页面高速缓存在持久存储器412上。在页面高速缓存系统200确定持久存储器412可用的情况下,页面高速缓存系统200可以将页面高速缓存在非持久存储器页面高速缓存406上。
如本文所描述的,在由页面高速缓存系统200检测到的存储器映射访问包括高速缓存与存储器映射访问相关联的新页面的请求的情况下,可以将新页面高速缓存到持久存储器412并且应用402可以经由到持久存储器412的直接存储器映射(如图4中所图示)从持久存储器412访问新页面。在由页面高速缓存系统200检测到的存储器映射访问包括(例如,由应用402)访问非持久存储器页面高速缓存406上的现有页面的请求的情况下,页面高速缓存系统200可以将现有页面高速缓存在持久存储器412上,并且可以通过将现有页面从非持久存储器页面高速缓存406迁移到持久存储器412来这样做(如图4中所图示)。在将现有页面迁移到持久存储器412之后,可以(例如,由应用402)经由到持久存储器412的直接存储器映射来访问现有页面。最终,基于本文所描述的一组准则,页面高速缓存系统200可以将持久存储器412上高速缓存的页面从持久存储器412清空到文件系统408,从而使页面被存储在非易失性存储器设备410上。
关于计算机系统,非持久存储器页面高速缓存406和持久存储器412可以是计算机系统本地的。对于一些示例,文件系统408是计算机系统的本地非持久存储器文件系统,并且与文件系统408相关联的非易失性存储器设备410也是计算机系统本地的。对于各种示例,文件系统408是由另一计算机系统维护的远程文件系统,并且与文件系统408相关联的非易失性存储器设备410相对于计算机系统是远程的。
图5图示出了用于在文件的存储器映射访问期间使用持久存储器进行页面高速缓存的示例计算机系统500。如所示,计算机系统500包括计算机可读介质502、处理器504、持久存储器506和非持久存储器508。在各种示例中,计算机系统500的组件或组件的布置可以不同于图5中所描绘的。例如,计算机系统500可以包括与图5中所描绘的那些相比更多或更少的组件。
计算机可读介质502可以是存储可执行指令的任何电、磁、光或其他物理储存设备。例如,计算机可读介质502可以是随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、储存驱动器、光盘等。计算机可读介质502可以被编码以存储使处理器504根据本文所描述的各种示例执行操作的可执行指令。在各种示例中,计算机可读介质502是非暂时的。如图5中所示,计算机可读介质502包括存储器映射访问检测指令510和持久存储器页面高速缓存指令512。
处理器504可以是一个或多个中央处理单元(CPU)、微处理器或适于检索和执行存储在计算机可读介质502中的一个或多个指令的其他硬件设备。处理器504可以取得、解码并且执行指令510和512以使得计算机系统500能够根据本文所描述的各种示例来执行操作。对于一些示例,处理器504包括一个或多个电子电路,其包括用于执行一个或多个指令510和512的功能性的多个电子组件。
持久存储器506可以包括诸如相变存储器(PCM)设备之类的持久存储器设备。在一些示例中,持久存储器506可以支持计算机系统500处的本地持久存储器文件系统,可以将其作为虚拟文件系统的一部分提供给计算机系统500上的应用。
非持久存储器508可以包括诸如动态随机存取存储器(DRAM)之类的随机存取存储器设备,其可以用作计算机系统500上的非持久存储器页面高速缓存的基础。如本文所描述的,基于非持久存储器508,非持久存储器页面高速缓存可以支持来自由计算机系统500可访问的文件系统(例如,非持久存储器文件系统或远程文件系统)的文件的存储器映射访问。
存储器映射访问检测指令510可以使处理器504检测来自具有非持久存储器页面高速缓存的远程文件系统的文件的存储器映射访问。如本文所描述的,远程文件系统可以是由与计算机系统500远离的计算机系统来维护的文件系统,并且远程文件系统上的文件的存储器映射访问可以由非持久存储器页面高速缓存基于非持久存储器508来支持。持久存储器页面高速缓存指令512可以使处理器504基于用于高速缓存与文件的存储器映射访问相关联的页面的持久存储器506的可用性来将页面高速缓存在持久存储器506上。
图6图示出了由示例计算机系统执行的示例方法600,以在文件的存储器映射访问期间使用持久存储器来促进页面高速缓存。尽管下面参照图1的页面高速缓存系统100和计算机系统来描述方法600的执行,但是由其他合适的系统或设备执行方法600可以是可能的。方法600可以以电子电路形式和/或以存储在机器可读存储介质上的可执行指令的形式来实现。
在图6中,方法600开始于框602,存储器映射访问检测模块102由计算机系统检测来自具有非持久存储器页面高速缓存的远程文件系统的文件的存储器映射访问。在框604处,方法600继续,持久存储器页面高速缓存模块106基于用于页面高速缓存的持久存储器的可用性,在计算机系统的持久存储器上高速缓存与文件的存储器映射访问相关联的页面。如本文所描述的,对于一些示例,计算机系统上的持久存储器的可用性由持久存储器可用性模块104确定。
图7图示出了由示例计算机系统执行的示例方法700,以在文件的存储器映射访问期间使用持久存储器来促进页面高速缓存。尽管下面参照图2的页面高速缓存系统200和计算机系统来描述方法700的执行,但是由其他合适的系统或设备执行方法700可以是可能的。方法700可以以电子电路形式和/或以存储在机器可读存储介质上的可执行指令的形式来实现。
在图7中,方法700开始于框702,存储器映射访问检测模块202由计算机系统检测来自具有非持久存储器页面高速缓存的远程文件系统的文件的存储器映射访问。在框704处,方法700继续,持久存储器可用性模块204确定用于页面高速缓存的计算机系统的持久存储器的可用性。在框706处,方法700继续,基于在框704处确定的可用性,持久存储器页面高速缓存模块206在持久存储器上高速缓存与文件的存储器映射访问相关联的页面。在框708处,方法700继续,持久存储器页面清空模块208将与文件的存储器映射访问相关联的页面从持久存储器清空到远程文件系统。
在前面的描述中,阐述了许多细节以提供对本文所公开的主题的理解。然而,可以在没有这些细节中的一些或全部的情况下实践各种示例。一些示例可以包括从上面讨论的细节的修改和变型。旨在所附权利要求覆盖这些修改和变型。
Claims (15)
1.一种页面高速缓存系统,包括:
存储器映射访问检测模块,用于检测来自具有非持久存储器页面高速缓存的非持久存储器文件系统的文件的存储器映射访问;
持久存储器可用性模块,用于确定用于高速缓存与所述文件的所述存储器映射访问相关联的页面的持久存储器的可用性;和
持久存储器页面高速缓存模块,用于基于所述持久存储器的可用性来将所述页面高速缓存在所述持久存储器上。
2.根据权利要求1所述的页面高速缓存系统,其中,所述页面是新页面,并且所述存储器映射访问包括用于高速缓存与所述文件的所述存储器映射访问相关联的所述新页面的请求。
3.根据权利要求1所述的页面高速缓存系统,其中,所述页面是高速缓存在所述非持久存储器页面高速缓存上的现有页面,并且所述存储器映射访问包括用于访问与所述文件的所述存储器映射访问相关联的所述现有页面的请求。
4.根据权利要求3所述的页面高速缓存系统,其中,将所述现有页面高速缓存在所述持久存储器上包括将所述现有页面从所述非持久存储器页面高速缓存迁移到所述持久存储器。
5.根据权利要求1所述的页面高速缓存系统,包括持久存储器页面清空模块,用于基于一组准则将所述页面从所述持久存储器清空到所述非持久存储器文件系统,所述一组准则包括与所述存储器映射访问的条件相关的准则。
6.根据权利要求1所述的页面高速缓存系统,包括持久存储器页面清空模块,用于基于一组准则将所述页面从所述持久存储器清空到所述非持久存储器文件系统,所述一组准则包括与所述文件是否被关闭相关的准则。
7.根据权利要求1所述的页面高速缓存系统,包括持久性存储器页面清空模块,用于基于一组准则将所述页面从所述持久存储器清空到所述非持久存储器文件系统,所述一组准则包括与所述持久存储器的条件相关的准则。
8.一种具有存储在其上的指令的非暂时计算机可读介质,所述指令可由计算机系统的处理器执行,所述指令使处理器:
在计算机系统上检测来自具有非持久存储器页面高速缓存的非持久存储器文件系统的文件的存储器映射访问;和
基于用于高速缓存与所述文件的所述存储器映射访问相关联的页面的持久存储器的可用性来在所述持久存储器上高速缓存页面。
9.根据权利要求8所述的非暂时计算机可读介质,其中,所述页面是新页面,并且所述存储器映射访问包括用于高速缓存与所述文件的所述存储器映射访问相关联的所述新页面的请求。
10.根据权利要求8所述的非暂时计算机可读介质,其中,所述页面是高速缓存在所述非持久存储器页面高速缓存上的现有页面,并且所述存储器映射访问包括用于访问与所述文件的所述存储器映射访问相关联的所述现有页面的请求。
11.一种方法,包括:
由计算机系统检测来自具有非持久存储器页面高速缓存的远程文件系统的文件的存储器映射访问;和
由所述计算机系统基于用于高速缓存与所述文件的所述存储器映射访问相关联的页面的持久存储器的可用性来将页面高速缓存在所述持久存储器上。
12.根据权利要求11所述的方法,包括由所述计算机系统确定所述持久存储器的可用性。
13.根据权利要求11所述的方法,包括由所述计算机系统基于一组准则将所述页面从所述持久存储器清空到所述远程文件系统,所述一组准则包括与所述文件的所述存储器映射访问的条件相关的准则。
14.根据权利要求11所述的方法,包括由所述计算机系统基于一组准则将所述页面从所述持久存储器清空到所述远程文件系统,所述一组准则包括与所述文件是否被关闭相关的准则。
15.根据权利要求11所述的方法,包括由所述计算机系统基于一组准则将所述页面从所述持久存储器清空到所述远程文件系统,所述一组准则包括与所述持久存储器的条件相关的准则。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2015/024159 WO2016160027A1 (en) | 2015-04-02 | 2015-04-02 | Page cache on persistent memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107209720A true CN107209720A (zh) | 2017-09-26 |
CN107209720B CN107209720B (zh) | 2020-10-13 |
Family
ID=57007393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580074818.0A Active CN107209720B (zh) | 2015-04-02 | 2015-04-02 | 用于页面高速缓存的系统及方法以及存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10684954B2 (zh) |
CN (1) | CN107209720B (zh) |
WO (1) | WO2016160027A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113655949A (zh) * | 2020-06-15 | 2021-11-16 | 中兴通讯股份有限公司 | 一种基于pm的数据库页缓存方法及系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015130314A1 (en) | 2014-02-28 | 2015-09-03 | Hewlett-Packard Development Company, L.P. | Mapping mode shift |
WO2016159930A1 (en) | 2015-03-27 | 2016-10-06 | Hewlett Packard Enterprise Development Lp | File migration to persistent memory |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101490651A (zh) * | 2006-07-01 | 2009-07-22 | 国际商业机器公司 | 管理持久性的方法、装置和计算机程序 |
CN102483714A (zh) * | 2009-07-24 | 2012-05-30 | 苹果公司 | 恢复索引页 |
CN102804152A (zh) * | 2009-05-15 | 2012-11-28 | 甲骨文美国公司 | 对存储器层次结构中的闪存的高速缓存一致性支持 |
US20120303686A1 (en) * | 2009-12-16 | 2012-11-29 | International Business Machines Corporation | Scalable caching of remote file data in a cluster file system |
WO2014100546A1 (en) * | 2012-12-22 | 2014-06-26 | Qualcomm Incorporated | Reducing power consumption of volatile memory via use of non-volatile memory |
US20140297935A1 (en) * | 2011-12-12 | 2014-10-02 | Apple Inc. | Mount-time reconciliation of data availability |
US20150012690A1 (en) * | 2013-03-15 | 2015-01-08 | Rolando H. Bruce | Multi-Leveled Cache Management in a Hybrid Storage System |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06188937A (ja) | 1992-12-16 | 1994-07-08 | Canon Inc | データ処理装置 |
US6202124B1 (en) | 1998-05-05 | 2001-03-13 | International Business Machines Corporation | Data storage system with outboard physical data transfer operation utilizing data path distinct from host |
US6321233B1 (en) | 1998-12-15 | 2001-11-20 | Micron Technology, Inc. | Apparatus for controlling pipelined memory access requests |
US6901481B2 (en) | 2000-04-14 | 2005-05-31 | Stratus Technologies Bermuda Ltd. | Method and apparatus for storing transactional information in persistent memory |
US6473845B1 (en) | 2000-09-28 | 2002-10-29 | Hewlett-Packard Company | System and method for dynamically updating memory address mappings |
US6691245B1 (en) | 2000-10-10 | 2004-02-10 | Lsi Logic Corporation | Data storage with host-initiated synchronization and fail-over of remote mirror |
US7032228B1 (en) | 2001-03-01 | 2006-04-18 | Emc Corporation | Common device interface |
US20020194558A1 (en) | 2001-04-10 | 2002-12-19 | Laung-Terng Wang | Method and system to optimize test cost and disable defects for scan and BIST memories |
US7222348B1 (en) | 2002-12-16 | 2007-05-22 | Unisys Corporation | Universal multi-path driver for storage systems |
JP2005018193A (ja) | 2003-06-24 | 2005-01-20 | Hitachi Ltd | ディスク装置のインタフェースコマンド制御方法ならびに計算機システム |
US20050125456A1 (en) | 2003-12-09 | 2005-06-09 | Junichi Hara | File migration method based on access history |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7330938B2 (en) | 2004-05-18 | 2008-02-12 | Sap Ag | Hybrid-cache having static and dynamic portions |
US8407396B2 (en) | 2004-07-30 | 2013-03-26 | Hewlett-Packard Development Company, L.P. | Providing block data access for an operating system using solid-state memory |
US7281104B1 (en) | 2005-03-21 | 2007-10-09 | Acronis Inc. | System and method for online data migration |
US7574621B2 (en) | 2006-03-14 | 2009-08-11 | Lenovo (Singapore) Pte Ltd. | Method and system for identifying and recovering a file damaged by a hard drive failure |
US8135936B2 (en) | 2009-12-23 | 2012-03-13 | Intel Corporation | Adaptive address mapping with dynamic runtime memory mapping selection |
US7774556B2 (en) | 2006-11-04 | 2010-08-10 | Virident Systems Inc. | Asymmetric memory migration in hybrid main memory |
US8260841B1 (en) | 2007-12-18 | 2012-09-04 | American Megatrends, Inc. | Executing an out-of-band agent in an in-band process of a host system |
US7953919B2 (en) | 2007-12-21 | 2011-05-31 | Spansion Llc | Physical block addressing of electronic memory devices |
US8352671B2 (en) * | 2008-02-05 | 2013-01-08 | Spansion Llc | Partial allocate paging mechanism using a controller and a buffer |
US8275945B2 (en) * | 2008-02-05 | 2012-09-25 | Spansion Llc | Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer |
EP2246786A1 (en) | 2009-04-27 | 2010-11-03 | Sim-Industries B.V. | Managing a shared memory region |
US8219758B2 (en) | 2009-07-10 | 2012-07-10 | Apple Inc. | Block-based non-transparent cache |
US8174520B2 (en) | 2009-08-28 | 2012-05-08 | Himax Technologies Limited | Driving circuit of an LCD panel and data transmission method thereof |
US8898417B1 (en) | 2009-10-20 | 2014-11-25 | Micron Technology, Inc. | Block-based storage device with a memory-mapped interface |
US9411517B2 (en) | 2010-08-30 | 2016-08-09 | Vmware, Inc. | System software interfaces for space-optimized block devices |
TWI434175B (zh) | 2010-09-27 | 2014-04-11 | Silicon Motion Inc | 用來進行區塊管理之方法以及記憶裝置及控制器 |
US8527693B2 (en) | 2010-12-13 | 2013-09-03 | Fusion IO, Inc. | Apparatus, system, and method for auto-commit memory |
US20120297147A1 (en) | 2011-05-20 | 2012-11-22 | Nokia Corporation | Caching Operations for a Non-Volatile Memory Array |
US9021226B2 (en) | 2011-06-10 | 2015-04-28 | International Business Machines Corporation | Moving blocks of data between main memory and storage class memory |
US8856191B2 (en) | 2011-08-01 | 2014-10-07 | Infinidat Ltd. | Method of migrating stored data and system thereof |
WO2013048483A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Platform storage hierarchy with non-volatile random access memory having configurable partitions |
CN104040515B (zh) | 2011-09-30 | 2018-05-11 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
EP2761469B1 (en) | 2011-09-30 | 2019-11-13 | Intel Corporation | Non-volatile random access memory (nvram) as a replacement for traditional mass storage |
US9244848B2 (en) | 2011-10-10 | 2016-01-26 | Intel Corporation | Host controlled hybrid storage device |
US20130111103A1 (en) | 2011-10-28 | 2013-05-02 | International Business Corporation | High-speed synchronous writes to persistent storage |
US20130185503A1 (en) | 2012-01-12 | 2013-07-18 | Vigneshwara Bhatta | Method for metadata persistence |
US9223686B1 (en) * | 2012-02-01 | 2015-12-29 | Amazon Technologies, Inc. | Cache memory data storage control system and method |
US20150081644A1 (en) | 2013-07-16 | 2015-03-19 | Openpeak Inc. | Method and system for backing up and restoring a virtual file system |
US10002077B2 (en) * | 2014-01-31 | 2018-06-19 | Hewlett Packard Enterprise Development Lp | Persistent memory controller based atomicity assurance |
WO2015130314A1 (en) | 2014-02-28 | 2015-09-03 | Hewlett-Packard Development Company, L.P. | Mapping mode shift |
JP2015170160A (ja) | 2014-03-07 | 2015-09-28 | 富士通株式会社 | 情報処理システム,情報処理装置,情報処理プログラム及び情報処理方法 |
JP6265041B2 (ja) | 2014-05-15 | 2018-01-24 | 富士通株式会社 | コンパイルプログラム、コンパイル方法およびコンパイル装置 |
US9383926B2 (en) * | 2014-05-27 | 2016-07-05 | Kabushiki Kaisha Toshiba | Host-controlled garbage collection |
US9652391B2 (en) * | 2014-12-30 | 2017-05-16 | Arteris, Inc. | Compression of hardware cache coherent addresses |
US9690716B2 (en) * | 2015-02-13 | 2017-06-27 | Intel Corporation | High performance persistent memory for region-centric consistent and atomic updates |
WO2016159930A1 (en) * | 2015-03-27 | 2016-10-06 | Hewlett Packard Enterprise Development Lp | File migration to persistent memory |
US9886210B2 (en) * | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US9836232B1 (en) * | 2015-09-30 | 2017-12-05 | Western Digital Technologies, Inc. | Data storage device and method for using secondary non-volatile memory for temporary metadata storage |
US9977758B1 (en) * | 2015-10-19 | 2018-05-22 | Xilinx, Inc. | Device profiling for tuning OpenCL applications on programmable integrated circuits |
US10705972B2 (en) | 2016-09-13 | 2020-07-07 | Advanced Micro Devices, Inc. | Dynamic adaptation of memory page management policy |
-
2015
- 2015-04-02 CN CN201580074818.0A patent/CN107209720B/zh active Active
- 2015-04-02 US US15/507,204 patent/US10684954B2/en active Active
- 2015-04-02 WO PCT/US2015/024159 patent/WO2016160027A1/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101490651A (zh) * | 2006-07-01 | 2009-07-22 | 国际商业机器公司 | 管理持久性的方法、装置和计算机程序 |
CN102804152A (zh) * | 2009-05-15 | 2012-11-28 | 甲骨文美国公司 | 对存储器层次结构中的闪存的高速缓存一致性支持 |
CN102483714A (zh) * | 2009-07-24 | 2012-05-30 | 苹果公司 | 恢复索引页 |
US20120303686A1 (en) * | 2009-12-16 | 2012-11-29 | International Business Machines Corporation | Scalable caching of remote file data in a cluster file system |
US20140297935A1 (en) * | 2011-12-12 | 2014-10-02 | Apple Inc. | Mount-time reconciliation of data availability |
WO2014100546A1 (en) * | 2012-12-22 | 2014-06-26 | Qualcomm Incorporated | Reducing power consumption of volatile memory via use of non-volatile memory |
US20150012690A1 (en) * | 2013-03-15 | 2015-01-08 | Rolando H. Bruce | Multi-Leveled Cache Management in a Hybrid Storage System |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113655949A (zh) * | 2020-06-15 | 2021-11-16 | 中兴通讯股份有限公司 | 一种基于pm的数据库页缓存方法及系统 |
WO2021254332A1 (zh) * | 2020-06-15 | 2021-12-23 | 中兴通讯股份有限公司 | 一种基于pm的数据库页缓存方法及系统 |
CN113655949B (zh) * | 2020-06-15 | 2023-12-01 | 中兴通讯股份有限公司 | 一种基于pm的数据库页缓存方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US10684954B2 (en) | 2020-06-16 |
US20170308479A1 (en) | 2017-10-26 |
CN107209720B (zh) | 2020-10-13 |
WO2016160027A1 (en) | 2016-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10657101B2 (en) | Techniques for implementing hybrid flash/HDD-based virtual disk files | |
US11977484B2 (en) | Adapting in-memory database in hybrid memory systems and operating system interface | |
CN105830059B (zh) | 文件访问方法、装置及存储设备 | |
US9182927B2 (en) | Techniques for implementing hybrid flash/HDD-based virtual disk files | |
US10824362B2 (en) | File migration to persistent memory | |
US10019352B2 (en) | Systems and methods for adaptive reserve storage | |
JP2021128582A (ja) | メモリシステムおよび制御方法 | |
US9280300B2 (en) | Techniques for dynamically relocating virtual disk file blocks between flash storage and HDD-based storage | |
CN108959119B (zh) | 存储系统中垃圾收集的方法和系统 | |
US20130124794A1 (en) | Logical to physical address mapping in storage systems comprising solid state memory devices | |
US11675709B2 (en) | Reading sequential data from memory using a pivot table | |
KR102443600B1 (ko) | 하이브리드 메모리 시스템 | |
US11074189B2 (en) | FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy | |
US9141536B2 (en) | Nonvolatile memory wear management | |
CN107209720A (zh) | 持久存储器上的页面高速缓存 | |
CN108139983A (zh) | 用于在多级系统存储器中固定存储器页面的方法和设备 | |
US20210191887A1 (en) | Hybrid memory system interface | |
KR101026634B1 (ko) | 하이브리드 플래시 메모리의 데이터 저장 방법 | |
US8838902B2 (en) | Cache layer optimizations for virtualized environments | |
US11861175B2 (en) | Latency in data storage systems | |
US20110035557A1 (en) | Fragmentation reduction using virtual sectors for static data | |
KR100900189B1 (ko) | 비휘발성 메모리 기반의 데이터베이스 관리 시스템 및 방법 | |
US10809937B2 (en) | Increasing the speed of data migration | |
US11188238B2 (en) | Information processing apparatus, memory control method, and computer program product | |
Xu et al. | Trace Analysis |
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 |