CN109324981B - 高速缓存管理系统和方法 - Google Patents
高速缓存管理系统和方法 Download PDFInfo
- Publication number
- CN109324981B CN109324981B CN201710638037.0A CN201710638037A CN109324981B CN 109324981 B CN109324981 B CN 109324981B CN 201710638037 A CN201710638037 A CN 201710638037A CN 109324981 B CN109324981 B CN 109324981B
- Authority
- CN
- China
- Prior art keywords
- cache
- pages
- requests
- parallel
- bitmaps
- 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
- 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/0884—Parallel mode, e.g. in parallel with main memory or CPU
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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
- 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
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- 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/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于在计算设备处标识高速缓存系统中的一个或多个高速缓存页面的方法、计算机程序产品和计算系统。一个或多个高速缓存页面可以被重构为一个或多个高速缓存页面内的一个或多个高速缓存单元。多个并行IO请求可以在一个或多个高速缓存页面内的一个或多个高速缓存单元上被执行。
Description
背景技术
在现代商业和其他地方中,存储和保护电子内容可以带来益处。因此,大型数据存储系统可以被用于保护这样的电子内容,其中这样的大型数据存储系统可以被配置为数据存储阵列以提供高水平的数据可用性。这样的大型数据存储系统可以利用高速缓存存储器系统来加速以下操作:由多个主机通过各种IO请求来对这些存储阵列内的数据进行存储/从这些存储阵列取回数据。
发明内容
在一个示例实施方式中,在计算设备上所执行的计算机实施的方法可以包括但不限于:在计算设备处标识高速缓存系统中的一个或多个高速缓存页面。一个或多个高速缓存页面可以被重构为该一个或多个高速缓存页面内的一个或多个高速缓存单元。多个并行IO请求可以在该一个或多个高速缓存页面内的该一个或多个高速缓存单元上被执行。
该示例实施方式可以包括以下示例特征中的一个或多个。重构一个或多个高速缓存页面可以至少部分基于多个并行IO请求的对准模式和一个或多个高速缓存页面的长度。执行多个并行IO请求可以包括在多个并行IO请求在至少一个高速缓存单元上的执行期间,锁定一个或多个高速缓存页面内的一个或多个高速缓存单元中的至少一个高速缓存单元。重构一个或多个高速缓存页面可以包括生成针对一个或多个高速缓存页面的一个或多个位图。一个或多个位图中的一个或多个比特可以表示一个或多个高速缓存页面内的一个或多个高速缓存单元。一个或多个位图中的一个或多个比特可以指示一个或多个高速缓存页面内的哪些高速缓存单元是有效的。一个或多个位图中的一个或多个比特可以指示一个或多个高速缓存页面内的哪些高速缓存单元是脏的。至少部分基于指示一个或多个高速缓存页面内的哪些高速缓存单元脏的的一个或多个位图中的一个或多个比特,一个或多个高速缓存页面内的一个或多个高速缓存单元中的一个或多个脏的高速缓存单元可以被冲刷。
在另一示例实施方式中,计算机程序产品驻留在具有被存储于其上的多个指令的计算机可读介质上。当由处理器执行时,指令使得处理器执行操作,操作可以包括但不限于在计算设备处标识高速缓存系统中的一个或多个高速缓存页面。一个或多个高速缓存页面可以被重构为一个或多个高速缓存页面内的一个或多个高速缓存单元。多个并行IO请求可以在一个或多个高速缓存页面内的一个或多个高速缓存单元上被执行。
该示例实施方式可以包括以下示例特征中的一个或多个。重构一个或多个高速缓存页面可以至少部分基于多个并行IO请求的对准模式和一个或多个高速缓存页面的长度。执行多个并行IO请求可以包括在多个并行IO请求在至少一个高速缓存单元上的执行期间,锁定一个或多个高速缓存页面内的一个或多个高速缓存单元中的至少一个高速缓存单元。重构一个或多个高速缓存页面可以包括生成针对一个或多个高速缓存页面的一个或多个位图。一个或多个位图中的一个或多个比特可以表示一个或多个高速缓存页面内的一个或多个高速缓存单元。一个或多个位图中的一个或多个比特可以指示一个或多个高速缓存页面内的哪些高速缓存单元是有效的。一个或多个位图中的一个或多个比特可以指示一个或多个高速缓存页面内的哪些高速缓存单元是脏的。至少部分基于指示一个或多个高速缓存页面内的哪些高速缓存单元脏的的一个或多个位图中的一个或多个比特,一个或多个高速缓存页面内的一个或多个高速缓存单元中的一个或多个脏的高速缓存单元可以被冲刷。
在另一示例实施方式中,计算系统包括至少一个处理器和与至少一个处理器耦合的至少一个存储器架构,其中计算系统被配置为执行操作,操作可以包括但不限于在计算设备处标识高速缓存系统中的一个或多个高速缓存页面。一个或多个高速缓存页面可以被重构为一个或多个高速缓存页面内的一个或多个高速缓存单元。可以在一个或多个高速缓存页面内的一个或多个高速缓存单元上执行多个并行IO请求。
该示例实施方式可以包括以下示例特征中的一个或多个。重构一个或多个高速缓存页面可以至少部分基于多个并行IO请求的对准模式和一个或多个高速缓存页面的长度。执行多个并行IO请求可以包括在多个并行IO请求在至少一个高速缓存单元上的执行期间,锁定一个或多个高速缓存页面内的一个或多个高速缓存单元中的至少一个高速缓存单元。重构一个或多个高速缓存页面可以包括生成针对一个或多个高速缓存页面的一个或多个位图。一个或多个位图中的一个或多个比特可以表示一个或多个高速缓存页面内的一个或多个高速缓存单元。一个或多个位图中的一个或多个比特可以指示一个或多个高速缓存页面内的哪些高速缓存单元是有效的。一个或多个位图中的一个或多个比特可以指示一个或多个高速缓存页面内的哪些高速缓存单元是脏的。至少部分基于指示一个或多个高速缓存页面内的哪些高速缓存单元脏的的一个或多个位图中的一个或多个比特,一个或多个高速缓存页面内的一个或多个高速缓存单元中的一个或多个脏的高速缓存单元可以被冲刷。
在附图和以下描述中阐述了一个或多个示例实施方式的细节。通过该描述、附图和权利要求,其他可能示例特征和/或可能示例优点将变得明显。一些实施方式可能不具有那些可能示例特征和/或可能示例优点,并且一些实施方式可以不必须要求这样的可能示例特征和/或可能示例优点。
附图说明
图1是根据本公开的一个或多个示例实施方式的耦合到分布式计算网络的存储系统和高速缓存管理过程的示例图解视图;
图2根据本公开的一个或多个示例实施方式的图1的存储系统的示例图解视图;
图3根据本公开的一个或多个示例实施方式的图1的存储系统的示例图解视图;
图4至图5是根据本公开的一个或多个示例实施方式的图1的高速缓存管理过程的各种实施方式的示例工作流;以及
图6是根据本公开的一个或多个示例实施方式的图1的高速缓存管理过程的示例流程图。
各附图中相同的附图标记指示相同的元素。
具体实施方式
系统概述:
参考图1,其中示出了高速缓存管理过程10,其可以驻留在存储系统12上并且可以由存储系统12执行,存储系统12可以被连接到网络14(例如,因特网或局域网)。存储系统12的示例可以包括但不限于:网络附加存储(NAS)系统、存储区域网络(SAN)、具有存储器系统的个人计算机、具有存储器系统的服务器计算机以及具有存储器系统的基于云的设备。
如本领域已知的,SAN可以包括以下各项中的一项或多项:个人计算机、服务器计算机、一系列服务器计算机、小型计算机、大型计算机、RAID设备以及NAS系统。存储系统12的各种组件可以执行一个或多个操作系统,操作系统的示例可以包括但不限于 OS/>Ret/>Mobile、Chrome OS、Blackberry OS、Fire OS或自定义操作系统。(Microsoft和Windows是微软公司(Microsoft Corporation)在美国、其他国家或在美国和其他国家同时拥有的注册商标;Mac和OS X是苹果公司(Apple Inc.)在美国、其他国家或在美国和其他国家同时拥有的注册商标;Red Hat是红帽公司(Red Hat Corporation)在美国、其他国家或在美国和其他国家同时拥有的注册商标;并且Linux是Linus Torvalds在美国、其他国家或在美国和其他国家同时拥有的注册商标)。
可以由被包括在存储系统12内的一个或多个处理器和一个或多个存储器架构来执行高速缓存过程10的指令集和子例程,该高速缓存过程的指令集和子例程可以被存储在被包括在存储系统12内的存储设备16上。存储设备16可以包括但不限于:硬盘驱动器;磁带驱动器;光学驱动器;RAID设备;随机存取存储器(RAM);只读存储器(ROM);以及所有形式的闪速存储器存储设备。附加地/备选地,高速缓存管理过程10的指令集和子例程的一些部分可以被存储在存储系统12外部的存储设备上(和/或由存储系统12外部的处理器和存储器架构执行)。
网络14可以被连接到一个或多个二次网络(例如,网络18),其示例可以包括但不限于:例如,局域网;广域网;或内联网。
各种IO请求(例如,IO请求20)可以从客户端应用22、24、26、28被发送到存储系统12。IO请求20的示例可以包括但不限于数据写入请求(例如,向存储系统12写入内容的请求)和数据读取请求(例如,从存储系统12读取内容的请求)。
可以(分别)由被并入到客户端电子设备38、40、42、44中的一个或多个处理器和一个或多个存储器架构执行客户端应用22、24、26、28的指令集和子例程,该客户端应用22、24、26、28的指令集和子例程可以(分别)被存储在(分别)被耦合到客户端电子设备38、40、42、44的存储设备30、32、34、36上。存储设备30、32、34、36可以包括但不限于:硬盘驱动器;磁带驱动器;光学驱动器;RAID设备;随机存取存储器(RAM);只读存储器(ROM);以及所有形式的闪速存储器存储设备。客户端电子设备38、40、42、44的示例可以包括但不限于:个人计算机38、膝上型计算机40、智能电话42、笔记本计算机44、服务器、启用数据的蜂窝电话以及专用网络设备。
用户46、48、50、52可以直接地通过网络14或通过二次网络18来访问存储系统12。而且,如利用连接线54所图示的,存储系统12可以通过二次网络18来被连接到网络14。
各种客户端电子设备可以被直接或间接地耦合到网络14(或网络18)。例如,个人计算机38被示出经由硬连线网络连接而被直接地耦合到网络14。此外,笔记本计算机44被示出经由硬连线网络连接而被直接地耦合到网络18。膝上型计算机40被示出经由无线通信信道56而被无线地耦合到网络14,该无线通信信道被建立在膝上型计算机40与无线接入点(例如,WAP)58之间,该无线接入点58被示出被直接地耦合到网络14。WAP 58例如可以是能够在膝上型计算机40与WAP 58之间建立无线通信信道56的IEEE 802.11a、802.11b、802.11g、802.11n、Wi-Fi和/或蓝牙设备。智能电话42被示出经由无线通信信道60而被无线地耦合到网络14,该无线通信信道60被建立在智能电话42与蜂窝网络/网桥62之间,该蜂窝网络/网桥62被示出被直接地耦合到网络14。
客户端电子设备38、40、42、44可以各自执行操作系统,该操作系统的示例可以包括但不限于Mac OS/>Red/>Mobile、Chrome OS、Blackberry OS、Fire OS或自定义操作系统。(Microsoft和Windows是微软公司(Microsoft Corporation)在美国、其他国家或在美国和其他国家同时拥有的注册商标;Mac和OS X是苹果公司(Apple Inc.)在美国、其他国家或在美国和其他国家同时拥有的注册商标;Red Hat是红帽公司(Red Hat Corporation)在美国、其他国家或在美国和其他国家同时拥有的注册商标;并且Linux是Linus Torvalds在美国、其他国家或在美国和其他国家同时拥有的注册商标)。
在一些实施方式中,如下文将更详细讨论的,高速缓存管理过程(诸如图1的高速缓存管理过程10)可以包括但不限于标识高速缓存系统中的一个或多个高速缓存页面。一个或多个高速缓存页面可以被重构为一个或多个高速缓存页面内的一个或多个高速缓存单元。多个并行IO请求可以在一个或多个高速缓存页面内的一个或多个高速缓存单元上被执行。
仅出于示例目的,存储系统12将被描述为包括多个电子机械后端存储设备的基于网络的存储系统。然而,这仅出于示例目的并且不旨在作为对本公开的限制,因为其他配置是可能的并且被认为是在本公开的范围内。
存储系统:
还参考图2,存储系统12可以包括存储处理器100和多个存储目标T 1-n(例如,存储目标102、104、106、108)。存储目标102、104、106、108可以被配置为各种水平的性能和/或高可用性。例如,存储目标102、104、106、108中的一个或多个可以被配置为RAID 0阵列,其中数据跨越存储目标而被条带化(striped)。通过使数据跨越多个存储目标条带化,可以实现性能的改进。然而,RAID 0阵列未提供高可用性的水平。因此,存储目标102、104、106、108中的一个或多个可以被配置为RAID 1阵列,其中数据在存储目标之间被镜像。通过对存储目标之间的数据进行镜像,由于数据的多个副本被存储在存储系统12内,从而实现了高可用性的水平。
虽然存储目标102、104、106、108在上文被讨论为被配置在RAID0或RAID 1阵列中,但是这仅出于说明性目的并且不旨在作为对本公开的限制,因为其他配置是可能的。例如,存储目标102、104、106、108可以被配置为RAID 3、RAID 4、RAID 6或RAID 6阵列。
虽然在该特定示例中,存储系统12被示出为包括四个存储目标(例如,存储目标102、104、106、108),但是这仅出于说明性目的并且不旨在作为对本公开的限制。特别地,存储目标的实际数目例如可以取决于所要求的冗余/性能/容量的水平而被增加或减小。
存储系统12还可以包括一个或多个编码目标110。如本领域已知的,编码目标可以被用于存储编码数据,其可以允许在存储目标102,104,106,108中的一个或多个上丢失/损坏的数据的重建。这样的编码目标的示例可以包括但不限于被用于将校验数据存储在RAID阵列内的硬盘驱动器。
虽然在该特定示例中,存储系统12被示出为包括一个编码目标(例如,编码目标110),但是这仅出于示例目的并且不旨在作为对本公开的限制。特别地,编码目标的实际数目可以取决于例如所要求的冗余/性能/容量的水平而被增加或减小。
存储目标102、104、106、108和编码目标110的示例可以包括一个或多个电子机械硬盘驱动器和/或固态/闪存设备,其中存储目标102,104,106,108和编码目标110和处理/控制系统的组合可以形成数据阵列112。
实施存储系统12的方式例如可以取决于所要求的冗余/性能/容量的水平而变化。例如,存储系统12可以是RAID设备,在RAID设备中,存储处理器110是RAID控制器卡和存储目标102、104、106、108,和/或编码目标110是独立“热插拔”硬盘驱动器。这样的RAID设备的另一示例可以包括但不限于NAS设备。备选地,存储系统12可以被配置为SAN,在SAN中,存储处理器100可以是例如服务器计算机并且存储目标102、104、106、108中的每一个,和/或编码目标110可以是RAID设备和/或基于计算机的硬盘驱动器。另外,存储目标102、104、106、108中的一个或多个和/或编码目标110可以是SAN。
在存储系统12被配置为SAN的情况下,存储系统的各种组件(例如,存储处理器100、存储目标102,104,106,108和编码目标110)可以使用网络基础设施114而被耦合,网络基础设备114的示例可以包括但不限于以太网(例如,第2层或第3层)网络、光纤通信网络、无线带宽网络或任何其他电路交换/分组交换网络。
存储系统12可以执行存储管理过程10的全部或部分。可以由被包括在存储处理器100内的一个或多个处理器和一个或多个存储器架构来执行高速缓存管理过程10的指令集和子例程,该高速缓存管理过程10的指令集和子例程可以被存储在被耦合到存储处理器100的存储设备(例如,存储设备16)上。存储设备16可以包括但不限于:硬盘驱动器;磁带驱动器;光学驱动器;RAID设备;随机存取存储器(RAM);只读存储器(ROM);以及所有形式的闪速存储器存储设备。如上文所讨论的,高速缓存管理过程10的指令集和子例程的一些部分可以被存储在存储系统12外部的存储设备上(和/或由在存储系统12外部的处理器和存储器架构执行)。
如上文所讨论的,可以生成各种IO请求(例如,IO请求20)。例如,这些IO请求可以从客户端应用22、24、26、28被发送到存储系统12。附加地/备选地,当存储处理器100被配置为应用服务器时,这些IO请求可以在存储处理器100内被内部地生成。IO请求20的示例可以包括但不限于数据写入请求116(例如,向存储系统12写入内容118的请求)和数据读取请求120(即,从存储系统12读取内容118的请求)。
在存储处理器100的操作期间,可以由存储处理器100处理待写入到存储系统12的内容118。附加地/备选地,当存储处理器100被配置为应用服务器时,可以由存储处理器100内部地生成待写入到存储系统12的内容118。
存储处理器100可以包括前端高速缓存存储器系统122。前端高速缓存存储器系统122的示例可以包括但不限于易失性、固态、高速缓存存储器系统(例如,动态RAM高速缓存存储器系统)和/或非易失性、固态、高速缓存存储器系统(例如,基于闪存的高速缓存存储器系统)。
存储处理器100最初可以将内容118存储在前端高速缓存存储器系统122内。取决于前端高速缓存存储器系统122被配置的方式,存储处理器100和存储管理过程10可以立即将内容118写入到数据阵列112(如果前端高速缓存存储器系统122被配置为直写式高速缓存)或者可以随后地将内容118写入到数据阵列112(如果前端高速缓存存储器系统122被配置为回写式高速缓存)。
数据阵列112可以包括后端高速缓存存储器系统124。后端高速缓存存储器系统124的示例可以包括但不限于易失性、固态、高速缓存存储器系统(例如,动态RAM高速缓存存储器系统)和/或非易失性、固态、高速缓存存储器系统(例如,基于闪存的高速缓存存储器系统)。在数据阵列112的操作期间,可以从存储处理器100接收待写入到数据阵列112的内容118。在内容118被存储在例如存储目标102、104、106、108中的一个或多个和编码目标110上之前,数据阵列112最初可以将内容118存储在后端高速缓存存储器系统124内。
如上文所讨论的,可以由被包括在存储系统12内的一个或多个处理器和一个或多个存储器架构来执行高速缓存过程10的指令集和子例程,该高速缓存过程10的指令集和子例程可以被存储在被包括在存储系统12内的存储设备16上。因此,除了在存储处理器100上被执行外,高速缓存管理过程10的指令集和子例程的一些或全部还可以由被包括在数据阵列112内的一个或多个处理器和一个或多个存储器架构来执行。
此外,如上文所讨论的,在数据阵列112的操作期间,待写入到数据阵列112的内容(例如,内容118)可以从存储处理器100接收,并且在被存储在例如存储目标102、104、106、108、110中的一个或多个上之前最初被存储在后端高速缓存存储器系统124内。因此,在数据阵列112的使用期间,后端高速缓存存储器系统124可以被填充(例如,被加热),并且因此,后续的读请求可以由后端高速缓存存储器系统124满足(例如,如果读请求中所请求的内容存在于后端高速缓存存储器系统124内),因此避免从存储目标102、104、106、108、110(其通常将是更慢的)获得内容的需要。
高速缓存页面:
还参考图3,其中示出了存储系统12的另一示例实施方式,其包括存储处理器100、后端高速缓存存储器系统124和数据阵列112。仅出于示例目的,后端高速缓存存储器系统124被示出为包括两个高速缓存页面(例如,高速缓存页面126、128),并且数据阵列112被示出为包括两个文件系统块(例如,文件系统块130、132)。在一些实施方式中,高速缓存页面或缓冲页面可以表示用于暂时存储数据的后端高速缓存存储器系统(例如,后端高速缓存存储器系统124)内的存储单元。在图3的示例中,高速缓存页面可以具有预定长度(例如,8KB)。在一些实施方式中,该长度可以被预定义或可以由存储管理过程10和/或存储管理员来设定。文件系统块(例如,文件系统块130、132)可以表示用于存储数据的数据阵列的存储目标中的存储单元。然而,文件系统块可以表示数据阵列的存储目标中的任何存储单元。在一些实施方式中,高速缓存页面的大小或长度可以基于文件系统块的大小或长度。
如下文将更详细讨论的,后端高速缓存存储器系统(例如,后端高速缓存存储器系统124)中的一个或多个高速缓存页面(例如,高速缓存页面126、128)可以与数据阵列(例如,数据阵列112)中的存储器位置和/或文件系统块(例如,文件系统块130、132)相关联。因此,当高速缓存页面包括已经被同步到数据阵列中的存储器位置和/或文件系统块的数据的副本时,高速缓存页面可以是“干净的”。当高速缓存页面是有效的(如下面将讨论的)并且包括数据的最新副本但是尚未与数据阵列中的一个或多个存储器位置和/或文件系统块同步时,高速缓存页面可以是“脏的”。当高速缓存页面包括驻留在数据阵列中的一个或多个存储器位置和/或文件系统块中的数据的表示时,高速缓存页面可以是“有效的”。当高速缓存页面不包括任何可用数据和/或包含不表示数据阵列的存储器位置或文件系统块中的数据的数据时,高速缓存页面可以是“无效的”。如下文将更详细讨论的,高速缓存管理过程10的实施方式可以将高速缓存页面的以上描述应用到整个高速缓存页面和/或高速缓存页面的各部分。
还参考图4,其中示出了用于由存储系统12接收和/或处理的读请求的工作流400。在一些实施方式中,可以在协议层(例如,协议层236)处接收(234)读请求。如本文所使用的,协议层可以包括但不限于网络文件系统(NFS)、公用因特网文件系统(CIFS)或多个计算设备之间的任何其他分布式文件系统。在一些实施方式中,可以在公用文件系统层(例如,公用文件系统层238)处对读请求进行处理。在公用文件系统层中,高速缓存管理过程10可以获得(240)针对高速缓存存储器系统(例如,后端高速缓存存储器系统124)中的一个或多个高速缓存页面(例如,高速缓存页面126、128)的文件范围锁。在一些实施方式中,锁可以防止一个或多个锁定的高速缓存页面中的数据在数据可以被共享以用于读取时被重写。在一些实施方式中,每文件范围锁的长度、大小或粒度可以基于高速缓存页面的长度、大小或粒度。在一个示例中,如果高速缓存页面大小是8KB,则获得文件范围锁可以锁定8KB每文件范围锁。虽然已经讨论8KB的示例,但是应当理解,在本公开的范围内可以使用其他高速缓存页面大小。
在一些实施方式中,高速缓存管理过程10可以确定(242)读请求中所请求的数据是否在高速缓存中。如果高速缓存管理过程10确定由读请求所请求的数据在高速缓存中(即,高速缓存命中),则高速缓存管理过程10可以返回(244)所请求的数据。如果高速缓存管理过程10确定由读请求所请求的数据不在高速缓存中(即,高速缓存未命中),则高速缓存管理过程10可以将读请求发送(246)到物理文件系统层(例如,物理文件系统层248)。物理文件系统层通常可以包括但不限于通用扩展文件系统(UxFS)或可以被配置为管理数据阵列的物理操作的其他文件系统。在一些实施方式中,物理文件系统层可以处理正被读取或写入的物理块。在一些实施方式中,物理文件系统层可以处理缓冲和存储器管理,并且可以负责数据阵列中的特定位置的块的物理放置。在一些实施方式中,存储管理过程10可以返回(250)从物理文件系统层所请求的数据,并且可以将由读请求所请求的数据复制(252)到高速缓存中。
还参考图5,其中示出了用于由存储系统12接收和/或处理的写请求的工作流500。在一些实施方式中,可以在协议层(例如,协议层236)处接收(254)写请求。在一些实施方式中,可以在公用文件系统层(例如,公用文件系统层238)处对写请求进行处理。在公用文件系统层中,高速缓存过程10可以获得(256)针对一个或多个高速缓存页面的文件范围锁。在一些实施方式中,文件范围锁可以是排他性的,从而一个或多个锁定的高速缓存页面可以被锁定而不允许读取或写入数据。如上文所讨论的,每文件范围锁的粒度可以基于高速缓存页面的大小或粒度。在一些实施方式中,高速缓存管理过程10可以存储(258)待写入一个或多个锁定的高速缓存页面的数据并且返回。在一些实施方式中,高速缓存管理过程10可以将所存储的数据(例如,“脏的”数据)从一个或多个锁定的高速缓存页面冲刷(260)到物理文件系统层(例如,物理文件系统层248)。在一些实施方式中,冲刷所存储的数据可以在一个或多个重叠的提交列表上等待。在一些实施方式中,待冲刷的数据可以被包括在脏的数据列表中。在一些实施方式中,后台冲刷重叠检查的粒度可以基于高速缓存页面的大小或粒度。因此,高速缓存管理过程10可以根据高速缓存页面冲刷数据。在一些实施方式中,物理文件系统层可以将脏的数据/待写入的数据存储262在存储阵列中。
在一些实施方式中,IO请求可以与特定长度或大小对准。例如,“2KB对准”可以通常意味着IO请求的开始偏移和长度都是2KB对准的,例如,2KB偏移处的4KB的读请求、8KB偏移处的2KB的写请求、0KB偏移处的100KB的写请求等全部可以是2KB对准的,其中偏移和长度是2KB的倍数。将理解到,在不脱离本公开范围的情况下,可以使用各种其他长度。如下文将更详细讨论的,当IO请求的偏移和长度都是512字节或512B的倍数时(诸如1KB偏移处的512字节的读请求、1536字节偏移处的4KB的写请求等),IO请求可以是“扇区对准的”。
在一些实施方式中,多个IO请求和/或并行IO请求可以未被对准或可以不与一个或多个高速缓存页面对准。“并行IO请求”通常可以包括但不限于同时、并发地和/或几乎并发地多个IO请求的性能。出于讨论目的,可以可交换地使用术语“并行IO请求”和“IO请求”。
在图3的示例中,高速缓存管理过程10可以接收被并行发送到相同文件(例如,文件系统块130、132的0KB到16KB)的读请求(例如,rr 266)和两个写请求(例如,wr1 268、wr2270)。读请求可以包括读取文件的第一4KB的请求(例如,文件系统块130的0KB到4KB)。第一写请求(例如,wr1 268)可以包括从相同文件的4KB偏移处修改8KB的请求,而第二写请求(例如,wr2 270)可以包括从文件的12KB偏移处修改4KB的请求。在一些实施方式中,并且如上文所讨论的,在读请求和写请求的处理中,假设读请求(例如,rr266)获得文件范围锁,然后是第一读请求(例如,wr1 268)并且随后第二写请求(例如,wr2 270)。在该示例中,可以存在其中I/O性能可能被影响的若干示例区域。
例如,多个并行IO请求可能遭遇范围锁竞争。通常,“范围锁竞争”可以包括与多个并行IO请求相关联的一个或多个高速缓存页面的锁定。在该范围锁竞争期间,针对每个请求的一个或多个高速缓存页面(例如,高速缓存页面126、128)的文件范围锁可以迫使这些请求被顺序地或串行地执行。
此外,多个并行IO请求可能遭遇归因于部分块写入的“高速缓存之前读取&返回(read-before-cache&return)”。在图3的示例中,不管是第一写请求(例如,wr1 268)还是第二写请求(例如,wr2 270)首先运行或执行,当由用于修改的写请求靶向的高速缓存页面尚未在高速缓存存储器系统中时,可以首先读取高速缓存页面的未命中部分。例如,当wr2270首先运行或执行时,第二8KB块的前4KB或全部8KB块可以从物理文件系统或数据阵列读取,并且该8KB块的第二4KB的新内容可以放置到高速缓存存储器系统中。随后,全部8KB可以被冲刷(通常在后台中)到物理文件系统或数据阵列。至少由于额外读操作,因而写入的性能可能被影响。
另外,多个并行IO请求可能遭遇后台冲刷竞争。例如,假设第二写请求(例如,wr2270)修改文件高速缓存中的第二8KB并且返回,并且然后后台冲刷可以在第一写请求(例如,wr1 268)去修改相同的8KB高速缓存页面之前被触发。在这种情况下,第一写请求(例如,wr1 268)可以克隆针对第二8KB fs块的新8KB高速缓存页面。当第一写请求(例如,wr1268)冲刷(通常在新后台冲刷线程中)相同8KB块时,冲刷可能必须等待之前的提交列表(与第二写请求(例如,wr2 270)相对应的)首先完成。
高速缓存管理过程:
如上文所讨论的,并且还参考图3至图6的示例实施方式,高速缓存管理过程10可以标识(264)高速缓存系统中的一个或多个高速缓存页面。高速缓存管理过程10可以将一个或多个高速缓存页面重构(272)为一个或多个高速缓存页面内的一个或多个高速缓存单元。高速缓存管理过程10可以在一个或多个高速缓存页面内的一个或多个高速缓存单元上执行(288)多个并行IO请求。
如上文所讨论的,高速缓存管理过程10可以接收多个并行IO请求。如上文所讨论的,并且在图3的示例中,高速缓存管理过程10可以接收被并行发送到相同文件(例如,文件系统块130、132的0KB到16KB)的读请求(例如,rr 266)和两个写请求(例如,wr1 268、wr2270)。读请求可以包括读取文件的前4KB的请求(例如,文件系统块130的0KB到4KB)。第一写请求(例如,wr1 268)可以包括从相同文件的4KB偏移处修改8KB的请求,而第二写请求(例如,wr2 270)可以包括从文件的12KB偏移处修改4KB的请求。读请求(例如,rr 266)和写请求(例如,wr1 268、wr2 270)可以包括指向一个或多个文件系统块(例如,文件系统块130、132)的地址、指针或其他标识符。在一些实施方式中,读请求(例如,rr 266)和写请求(例如,wr1 268、wr2 270)可以包括指向与后端高速缓存存储器系统(例如,后端高速缓存存储器系统124)中的一个或多个文件系统块(例如,文件系统块130、132)相关联的一个或多个高速缓存页面(例如,高速缓存页面126、128)的地址、指针或其他标识符。
例如,高速缓存管理过程10可以标识(264)数据阵列(例如,数据阵列112)中的一个或多个文件系统块(例如,文件系统块130、132)。此外,高速缓存管理过程10可以标识与后端高速缓存存储器系统(例如,后端高速缓存存储器系统124)中的一个或多个文件系统块(例如,文件系统块130、132)相关联的一个或多个高速缓存页面(例如,高速缓存页面126、128),其中多个并行IO请求(例如,rr 266、wr1 268和wr2 270)靶向该一个或多个高速缓存页面。
在一些实施方式中,高速缓存管理过程10可以将一个或多个高速缓存页面重构(272)为一个或多个高速缓存页面内的一个或多个高速缓存单元。“重构”通常可以包括但不限于:在不重建预定义的高速缓存页面长度或大小的情况下,修改一个或多个高速缓存页面以包括可配置的长度、大小或粒度。例如,并且如上文所讨论的,一个或多个高速缓存页面和多个并行IO请求可以是未对准的。在一个示例中,一个或多个高速缓存页面(例如,高速缓存页面126、128)可以是8KB对准的。如在图3的示例中所示,可以接收不是8KB对准的多个IO请求(例如,wr1 268不是8KB对准的)。高速缓存管理过程10可以将一个或多个高速缓存页面(例如,高速缓存页面126、128)重构(272)为一个或多个高速缓存单元(例如,高速缓存单元274、276、278、280)。高速缓存单元可以表示高速缓存页面的至少一部分。如下文将更详细讨论的,高速缓存管理过程10可以利用一个或多个高速缓存页面内的一个或多个高速缓存单元来执行多个对准和未对准的并行IO请求。
在一些实施方式中,重构(272)一个或多个高速缓存页面可以至少部分基于多个并行IO请求的对准模式和一个或多个高速缓存页面的长度。继续以上示例,高速缓存管理过程10可以确定针对多个IO请求的对准模式。在一些实施方式中,对准模式可以特定于特定客户端应用。在一些实施方式中,高速缓存管理过程10可以是扇区对准的,其中一个扇区是512字节。例如,许多网络附加存储(NAS)应用、云计算环境中的虚拟磁盘、数据库原始文件等可以是扇区对准的。在一些实施方式中,高速缓存单元可以匹配数据阵列(例如,数据阵列112)内的存储目标(例如,存储目标102)的底层磁盘I/O的对准大小。
在一些实施方式中,高速缓存管理过程10可以将一个或多个高速缓存页面重构为2N个扇区的一个或多个高速缓存单元,其中“N”可以是整数。在一个实施例中,每个高速缓存单元可以包括512字节,并且N可以是从0到4的整数(例如,0、1、2、3或4)。当N是0时,一个或多个高速缓存页面的长度、大小和/或粒度可以是512字节(例如,512B),并且当N是4时,高速缓存长度、大小和/或粒度可以是八千字节(例如,8KB)。在一些实施方式中,N可以在每个启动周期期间被配置为固定值(例如,N的改变可以要求系统重新启动)。在一些实施方式中,N可以是服务器全局参数,其可以至少部分基于与被发送到存储系统12的多个IO请求相关联的典型的工作负载或对准模式。例如,如果大多数IO请求是2KB对准的,则高速缓存管理过程10可以设定N=2或更小,其中N=2可以是理想的。然而,将理解到,其他高速缓存单元大小和N的值在本公开的范围内。
返回图3的示例实施方式,至少部分基于多个并行IO请求(例如,rr 266、wr1 268和wr2 270)的对准模式(例如,4KB)和一个或多个高速缓存页面(例如,126、128)的长度或大小(例如,8KB),高速缓存管理过程10可以将一个或多个高速缓存页面重构(272)为一个或多个高速缓存单元。在该示例中,高速缓存管理过程10可以针对4KB的高速缓存单元大小而设定N=3。
在一些实施方式中,重构一个或多个高速缓存页面可以包括生成(282)针对一个或多个高速缓存页面的一个或多个位图。在一些实施方式中,一个或多个位图中的一个或多个比特可以表示一个或多个高速缓存页面内的一个或多个高速缓存单元。在一些实施方式中,出于示例目的,假定高速缓存页面大小是8KB。在一些实施方式中,一个或多个位图可以包括16比特值,其中每个比特可以表示高速缓存页面(例如,8KB)的高速缓存单元(例如,512B)。例如,当N=0时,高速缓存单元可以是扇区(例如,512B),并且所有16比特可以被使用。在另一示例中,当N=4并且高速缓存页面为8KB时,由于多个并行IO请求与一个或多个高速缓存页面对准,因此可以不使用位图。虽然已经提供比特数的特定示例,但是将理解到,其他比特数可以被用于表示一个或多个高速缓存页面中的一个或多个高速缓存单元中的一个或多个。
在一些实施方式中,一个或多个位图中的比特数可以至少部分基于高速缓存单元的长度或大小(例如,N的值)。出于示例目的,仅假定高速缓存页面大小是8KB,当N>0和/或N<4时,可以使用位图的一个或多个比特的子集。在一个示例中,当N=3(例如,4KB的高速缓存单元大小)时,可以使用两个比特(例如,比特0和比特1)。在另一示例中,当N=2(例如,2KB的高速缓存单元大小)时,可以使用四个比特(例如,比特0、比特1、比特2和比特3)。在另一示例中,当N=2(例如,1KB的高速缓存单元大小)时,可以使用八个比特(例如,比特0、比特1、比特2、比特3、比特4、比特5、比特6或比特7)。在一些实施方式中,当N=0时,可以使用所有16比特。当N=4时,高速缓存单元可以是全部8KB高速缓存页面,并且可能根本不使用位图。虽然比特的特定示例已经被提供用于各种高速缓存单元大小,但是在本公开的范围内,比特的其他数目和/或组合可以被使用。
在一些实施方式中,一个或多个位图中的一个或多个比特可以指示一个或多个高速缓存页面内的哪些高速缓存单元是有效的。在一些实施方式中,一个或多个位图的第一位图284可以被生成以指示高速缓存页面内的哪些高速缓存单元是有效的。在一些实施方式中,生成第一位图(例如,第一位图284)可以包括将下面所提供的“ushort bitmap”构件添加到新文件高速缓存条目对象定义中,诸如例如:
返回图3的示例实施方式,仅出于示例目的,假定在执行多个并行IO请求之前,一个或多个高速缓存页面(例如,高速缓存页面126、128)中的一个或多个高速缓存单元(例如,高速缓存单元274、276、278、280)的有效性的状态如下:
高速缓存单元1 274(0KB-4KB):有效的
高速缓存单元2 276(4KB-8KB):无效的
高速缓存单元3 278(8KB-12KB):有效的
高速缓存单元4 280(12KB-16KB):有效的
在一些实施方式中,高速缓存管理过程10可以生成(282)第一位图(例如,第一位图284),其具有一个或多个比特以指示一个或多个高速缓存单元(例如,高速缓存单元274、276、278、280)中的哪些是有效。在其中N=3的一些实施方式中,两个比特可以被用于指示一个或多个高速缓存页面中的哪些高速缓存单元是有效的。例如,可以针对高速缓存页面126生成第一位图,其具有比特0=1和比特1=0以表示高速缓存单元274是有效的并且高速缓存单元276是无效的。可以针对高速缓存页面128生成第一位图,其具有比特0=1和比特1=1以表示高速缓存单元278、280二者是有效的。
在一些实施方式中,一个或多个位图中的一个或多个比特可以指示一个或多个高速缓存页面内的哪些高速缓存单元是脏的。在一些实施方式中,可以针对一个或多个高速缓存页面生成一个或多个位图的第二位图286以指示高速缓存页面内的哪些高速缓存单元是脏的。此外,高速缓存管理过程10可以使物理文件系统层(例如,物理文件系统层236)知道用于冲刷一个或多个高速缓存页面内的一个或多个高速缓存单元的高速缓存单元。在一些实施方式中,高速缓存管理过程10可以重构从公用文件系统层(例如,公用文件系统层238)向下发送的一个或多个提交列表条目。在一些实施方式中,提交列表的一个或多个条目可以表示将数据冲刷到存储阵列(例如,数据阵列112)内的一个或多个文件系统块(例如,文件系统块130、132)。在一些实施方式中,提交列表中的一个或多个条目可以包括指向从其将数据冲刷到一个或多个文件系统块(例如,文件系统块130、132)中的一个或多个高速缓存页面(例如,高速缓存页面126、128)的引用或指针。高速缓存管理过程10可以重构一个或多个提交列表条目以表示与用于冲刷的文件系统块(例如,文件系统块130、132)相关联的高速缓存页面(例如,高速缓存页面126、128)内的一个或多个高速缓存单元(例如,高速缓存单元274、276、278、280)。例如,第二位图(例如,第二位图286)可以被包括以指示高速缓存页面内的哪些高速缓存单元是脏的并且需要通过将下面所提供的“ushort bitmap”构件添加到公用列表条目中来被冲刷,例如:
返回图3的示例实施方式,仅出于示例目的,假定一个或多个高速缓存页面(例如,高速缓存页面126、128)中的一个或多个高速缓存单元(例如,高速缓存单元274、276、278、280)的哪些高速缓存单元脏的的确定如下,例如:
高速缓存单元1 274(0KB-4KB):脏的
高速缓存单元2 276(4KB-8KB):N/A(例如,无效的)
高速缓存单元3 278(8KB-12KB):干净的
高速缓存单元4 280(12KB-16KB):脏的
在该示例中,高速缓存管理过程10可以生成第二位图(例如,第二位图286),其具有一个或多个比特以指示一个或多个高速缓存单元(例如,高速缓存单元274、276、278、280)中的哪些是脏的。在其中N=3的该示例中,两个比特可以被用于指示一个或多个高速缓存页面中的哪些高速缓存单元是脏的。例如,可以针对高速缓存页面126生成第二位图,其具有比特0=1和比特1=0以表示高速缓存单元274是脏的并且高速缓存单元276是干净的(例如,因为高速缓存单元276是无效的)。可以针对高速缓存页面128生成第二位图,其具有比特0=0和比特1=1的以表示高速缓存单元278是干净的并且高速缓存280是脏的。
在一些实施方式中,高速缓存管理过程10可以在一个或多个高速缓存页面内的一个或多个高速缓存单元上执行多个并行IO请求。返回图3的示例,其中存储系统12已经接收多个并行IO请求(例如,rr 286、wr1 268和wr2 270)。替代串行地执行多个并行IO请求中的一个或多个,高速缓存管理过程10可以并行执行多个并行IO请求。例如,通过将一个或多个高速缓存页面重构(272)为一个或多个高速缓存单元,高速缓存管理过程10可以执行多个并行IO请求,因为高速管理过程10可以锁定和冲刷一个或多个高速缓存页面内的独立的高速缓存单元而不是锁定和冲刷整个高速缓存页面。
例如,执行多个并行IO请求可以包括:在至少一个高速缓存单元上的多个并行IO请求的执行期间,锁定(290)一个或多个高速缓存页面内的一个或多个高速缓存单元的至少一个高速缓存单元。如上文所讨论的,由于高速缓存存储器系统(例如,高速缓存存储器系统124)可以采用比高速缓存页面的粒度更小的粒度(例如,经由一个或多个高速缓存页面的重构),因而高速缓存管理过程10可以使用一个或多个高速缓存单元的粒度以用于块范围锁的粒度。返回图3的示例,高速缓存管理过程10可以并行执行读请求(例如,rr 266)和写请求(例如,wr1 268、wr2 270),因为高速缓存管理过程10可以锁定每个高速缓存单元而不是锁定整个缓存页面。因此,执行读请求可以包括在读请求的执行期间锁定高速缓存单元274。此外,执行第一写请求(例如,wr1 268)可以包括锁定高速缓存页面126的高速缓存单元276以及高速缓存页面128的高速缓存单元278。而且,执行第二写请求可以包括锁定高速缓存页面128的高速缓存单元280。
此外,高速缓存管理过程10可以使用一个或多个位图以指示高速缓存页面的哪些高速缓存单元是有效的。例如,替代锁定整个高速缓存页面以确定高速缓存单元是否是有效的,高速缓存管理过程10可以使用第一位图(例如,第一位图284)来确定高速缓存页面内的哪些高速缓存单元是有效的。
在一些实施方式中,至少部分基于可以指示高速缓存页面内的哪些高速缓存单元是脏的的一个或多个位图中的一个或多个比特,高速缓存管理过程10可以冲刷(292)一个或多个高速缓存页面内的一个或多个高速缓存单元的一个或多个脏的高速缓存单元。替代冲刷整个高速缓存页面,高速缓存管理过程10可以使用第二位图(例如,第二位图286)确定一个或多个高速缓存页面(例如,高速缓存页面126、128)内的哪些高速缓存单元冲刷到数据阵列(例如,数据阵列122)。因此,物理文件系统层可以使用第二位图(例如,第二位图286)并且冲刷那些被标记为脏的的高速缓存单元而不是整个高速缓存页面。
返回图3的示例实施方式,在读请求和两个写请求的执行完成时,高速缓存管理过程10可以将高速缓存页面126、128内的一个或多个脏的高速缓存单元冲刷到数据阵列(例如,数据阵列112)的一个或多个文件系统块(例如,文件系统块130、132)。仅出于示例目的,假定在执行读请求和两个写请求之后,高速缓存的状态如下(例如,基于第一位图和第二位图(例如,第一位图284和第二位图286)):
高速缓存单元1 274(0KB-4KB):脏的&有效的
高速缓存单元2 276(4KB-8KB):脏的&有效的
高速缓存单元3 278(8KB-12KB)脏的&有效的
高速缓存单元4 280(12KB-16KB):脏的&有效的
高速缓存管理过程10可以将一个或多个脏的高速缓存单元(例如,高速缓存单元274、276、278、280)中的每一个高速缓存单元都冲刷到文件系统块(例如,文件系统块130、132)。
在一些实施方式中,可以观察到存储系统12内的底层闪存设备的寿命可以被延长。在一些实施方式中,高速缓存写入可以不总是最后成为全文件系统块大小的写入(例如,比8KB文件系统块更小的高速缓存写入)。高速缓存管理过程10可以将一个或多个高速缓存页面(例如,高速缓存页面126、128)重构为一个或多个更小的高速缓存单元(例如,高速缓存单元274、276、278、280),并且可以生成一个或多个位图(例如,第二位图286)以指示一个或多个高速缓存单元的哪些高速缓存单元是脏的并且需要被冲刷。高速缓存管理过程10可以重构提交列表中的一个或多个条目,并且可以至少部分基于位图(例如,第二位图286)来冲刷脏的高速缓存单元而不是冲刷整个高速缓存页面。因此,由于数据的更少的冲刷和/或更小的冲刷,底层的闪存设备的寿命被延长。
综述:
如本领域的技术人员将理解到,本公开可以被实现为方法、系统或计算机程序产品。因此,本公开可以采取以下形式:完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或者在本文中可以通常全部被称为“电路”、“模块”或“系统”的组合软件和硬件方面的实施例。而且,本公开可以采取具有实现在介质中的计算机可用程序代码的计算机可用存储介质上的计算机程序产品的形式。
可以利用任何适当的计算机可用或计算机可读介质。计算机可用或计算机可读介质可以是,例如但不限于,电子、磁性、光学、电磁、红外或半导体系统、装置、设备或传播介质。计算机可读介质的更多特定示例(非穷尽列表)可以包括以下各项:具有一个或多个接线的电气连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩光盘只读存储器(CD-ROM)、光学存储设备、传输介质(诸如支持因特网或内联网的那些传输介质)或磁性存储设备。计算机可用或计算机可读介质还可以是在其上印刷程序的纸或另一适合的介质,因为程序可以经由例如纸或其他介质的光学扫描电子地采集、然后编译、解译或以其他适当的方式处理(如果必要的话)并且然后被存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读介质可以是可以包含、存储、传递、传播或传输用于由指令执行系统、装置或设备或结合其使用的程序的任何介质。计算机可用介质可以包括具有通过其具化的计算机可用程序代码的传播数据信号,计算机可用程序代码在基带内或者作为载波的一部分。计算机可用程序代码可以使用任何合适的介质传送,介质包括但不限于因特网、有线、光纤电缆、RF等。
可以以面向对象编程语言(诸如Java、Smalltalk、C++等)编写用于执行本公开的操作的计算机程序代码。然而,还可以以常规程序编程语言(诸如“C”编程语言或类似编程语言)编写用于执行本公开的操作的计算机程序代码。计算机可执行代码可以作为独立的软件包全部地在用户的计算机上、部分地在用户的计算机上、部分地在用户的计算机上和部分地在远程计算机或全部地在远程计算机或服务器上执行。在后者场景中,远程计算机可以通过局域网/广域网/因特网(例如,网络14)被连接到用户的计算机。
本公开参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图而被描述。将理解到,可以由计算机程序指令实施流程图说明和/或框图的每个框以及流程图说明和/或框图中的框的组合。这些计算机程序指令可以被提供到通用计算机、专用计算机或者其他可编程数据处理装置的处理器,使得经由计算机或其他可编程数据处理装置的处理器运行的指令创建用于实施所述流程图和/或框图中的一个或多个框中指定的功能/动作的装置。
这些计算机程序指令还可以被存储在计算机可读存储器中,其可以引导计算机或其他可编程数据处理装置以特定的方式运行,使得被存储在计算机可读存储器中的指令产生包括实施所述流程图和/或框图中的一个或多个框中指定的功能/动作的指令装置的制造品。
计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,以使得一系列操作步骤在计算机或其他可编程装置上被执行以产生计算机实施的过程,使得在计算机或其他可编程装置上运行的指令提供用于实施所述流程图和/或框图中的一个或多个框中指定的功能/动作的步骤。
附图中的流程图和框图图示了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在该方面,流程图或框图中的每个框可以表示代码的模块、分段或一部分,其包括用于实现指定(多个)逻辑功能的一个或多个可执行指令。还应当注意,在一些备选实施方式中,框中所表明的功能可以脱离附图中所表明的顺序发生。例如,被连续示出的两个框可以实际上基本上并发地执行,或者框可以有时以相反的顺序执行,这取决于所涉及的功能。还将注意到,可以通过执行指定功能或动作或专用硬件和计算机指令的组合来实施框图和/或流程图图示中的每个框和框图和/或流程图图示中的框的组合。
本文所使用的术语仅出于描述特定实施方式的目的,并且不旨在作为对本公开的限制。如本文所使用的,除非上下文另外清楚地指明,否则单数形式“一”、“一个”和“该”旨在也包括复数形式。应当进一步理解,当在本说明书中使用时,术语“包括(comprises和/或comprising)”指定所陈述的特征、整体、步骤、操作、元件和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元件、组件和/或其分组的存在或添加。
以下权利要求中的所有装置或步骤加上功能元件的对应的结构、材料、动作和等同形式旨在包括用于组合如特别地要求保护的其他要求保护的元件而执行功能的任何结构、材料或动作。本公开的描述已经出于说明和描述的目的而被呈现,并且不旨在是详尽的或限于所公开的形式中的公开。在不脱离本公开的范围和精神的情况下,许多修改和变型将对于本领域的技术人员是显而易见的。选择和描述实施例以便最好地解释本公开的原理和实际应用,并且使得本领域的其他普通技术人员能够理解本发明的具有如适于所预期的特定使用的各种修改的各种实施例。
若干实施方式已经被描述。因此,已经详细地并且通过参考其实施方式描述了本申请的公开内容,将显而易见的是,在不脱离随附的权利要求中定义的本公开的范围的情况下,修改和变型是可能的。
Claims (14)
1.一种在计算设备上执行的计算机实施的方法,包括:
在所述计算设备处标识高速缓存系统中的一个或多个高速缓存页面;
至少部分基于相对于所述一个或多个高速缓存页面的长度的多个并行IO请求的对准模式,将所述一个或多个高速缓存页面重构为所述一个或多个高速缓存页面中的每个高速缓存页面内的一个或多个高速缓存单元,其中所述多个并行IO请求的所述对准模式由所述多个并行IO请求限定,所述多个并行IO请求具有偏移和长度,所述偏移和所述长度都是对准长度的倍数,其中将所述一个或多个高速缓存页面重构为所述一个或多个高速缓存页面中的每个高速缓存页面内的所述一个或多个高速缓存单元包括将所述一个或多个高速缓存单元限定为具有所述对准长度的所述一个或多个高速缓存页面中的每个高速缓存页面内的一部分,其中重构所述一个或多个缓存页面包括生成针对所述一个或多个高速缓存页面的一个或多个位图,其中所述一个或多个位图中的一个或多个比特表示所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元,并且其中所述一个或多个位图中的比特的数目至少部分地基于所述一个或多个高速缓存单元的所述长度;以及
在所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元上执行所述多个并行IO请求。
2.根据权利要求1所述的计算机实施的方法,其中执行所述多个并行IO请求包括:
在所述多个并行IO请求在所述至少一个高速缓存单元上的执行期间,锁定所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元中的至少一个高速缓存单元。
3.根据权利要求1所述的计算机实施的方法,其中所述一个或多个位图中的所述一个或多个比特指示所述一个或多个高速缓存页面内的哪些高速缓存单元是有效的。
4.根据权利要求1所述的计算机实施的方法,其中所述一个或多个位图中的所述一个或多个比特指示所述一个或多个高速缓存页面内的哪些高速缓存单元是脏的。
5.根据权利要求4所述的计算机实施的方法,还包括:
至少部分基于指示所述一个或多个高速缓存页面内的哪些高速缓存单元是脏的的所述一个或多个位图中的所述一个或多个比特,冲刷所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元中的一个或多个脏的高速缓存单元。
6.一种非暂态计算机可读介质,其上存储有多个指令,所述多个指令当由处理器执行时使得所述处理器执行操作,所述操作包括:
标识高速缓存系统中的一个或多个高速缓存页面;
至少部分基于相对于所述一个或多个高速缓存页面的长度的多个并行IO请求的对准模式,将所述一个或多个高速缓存页面重构为所述一个或多个高速缓存页面中的每个高速缓存页面内的一个或多个高速缓存单元,其中所述多个并行IO请求的所述对准模式由所述多个并行IO请求限定,所述多个并行IO请求具有偏移和长度,所述偏移和所述长度都是对准长度的倍数,其中将所述一个或多个高速缓存页面重构为所述一个或多个高速缓存页面中的每个高速缓存页面内的所述一个或多个高速缓存单元包括将所述一个或多个高速缓存单元限定为具有所述对准长度的所述一个或多个高速缓存页面中的每个高速缓存页面内的一部分,其中重构所述一个或多个缓存页面包括生成针对所述一个或多个高速缓存页面的一个或多个位图,其中所述一个或多个位图中的一个或多个比特表示所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元,并且其中所述一个或多个位图中的比特的数目至少部分地基于所述一个或多个高速缓存单元的所述长度;以及
在所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元上执行所述多个并行IO请求。
7.根据权利要求6所述的非暂态计算机可读介质,其中执行所述多个并行IO请求包括:
在所述多个并行IO请求在所述至少一个高速缓存单元上的执行期间,锁定所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元中的至少一个高速缓存单元。
8.根据权利要求6所述的非暂态计算机可读介质,其中所述一个或多个位图中的所述一个或多个比特指示所述一个或多个高速缓存页面内的哪些高速缓存单元是有效的。
9.根据权利要求6所述的非暂态计算机可读介质,其中所述一个或多个位图中的所述一个或多个比特指示所述一个或多个高速缓存页面内的哪些高速缓存单元是脏的。
10.根据权利要求9所述的非暂态计算机可读介质,还包括用于以下的指令:
至少部分基于指示所述一个或多个高速缓存页面内的哪些高速缓存单元是脏的的所述一个或多个位图中的所述一个或多个比特,冲刷所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元中的一个或多个脏的高速缓存单元。
11.一种计算系统,所述计算系统包括处理器和存储器,被配置为执行操作,所述操作包括:
标识高速缓存系统中的一个或多个高速缓存页面;
至少部分基于相对于所述一个或多个高速缓存页面的长度的多个并行IO请求的对准模式,将所述一个或多个高速缓存页面重构为所述一个或多个高速缓存页面中的每个高速缓存页面内的一个或多个高速缓存单元,其中所述多个并行IO请求的所述对准模式由所述多个并行IO请求限定,所述多个并行IO请求具有偏移和长度,所述偏移和所述长度都是对准长度的倍数,其中将所述一个或多个高速缓存页面重构为所述一个或多个高速缓存页面中的每个高速缓存页面内的所述一个或多个高速缓存单元包括将所述一个或多个高速缓存单元限定为具有所述对准长度的所述一个或多个高速缓存页面中的每个高速缓存页面内的一部分,其中重构所述一个或多个缓存页面包括生成针对所述一个或多个高速缓存页面的一个或多个位图,其中所述一个或多个位图中的一个或多个比特表示所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元,并且其中所述一个或多个位图中的比特的数目至少部分地基于所述一个或多个高速缓存单元的所述长度;以及
在所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元上执行所述多个并行IO请求。
12.根据权利要求11所述的计算系统,其中执行所述多个并行IO请求包括:
在所述多个并行IO请求在所述至少一个高速缓存单元上的执行期间,锁定所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元中的至少一个高速缓存单元。
13.根据权利要求11所述的计算系统,其中所述一个或多个位图中的所述一个或多个比特指示所述一个或多个高速缓存页面内的哪些高速缓存单元是脏的。
14.根据权利要求13所述的计算系统,还被配置为执行包括以下的操作:
至少部分基于指示所述一个或多个高速缓存页面内的哪些高速缓存单元是脏的的所述一个或多个位图中的所述一个或多个比特,冲刷所述一个或多个高速缓存页面内的所述一个或多个高速缓存单元中的一个或多个脏的高速缓存单元。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710638037.0A CN109324981B (zh) | 2017-07-31 | 2017-07-31 | 高速缓存管理系统和方法 |
US16/034,657 US10747674B2 (en) | 2017-07-31 | 2018-07-13 | Cache management system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710638037.0A CN109324981B (zh) | 2017-07-31 | 2017-07-31 | 高速缓存管理系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109324981A CN109324981A (zh) | 2019-02-12 |
CN109324981B true CN109324981B (zh) | 2023-08-15 |
Family
ID=65037933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710638037.0A Active CN109324981B (zh) | 2017-07-31 | 2017-07-31 | 高速缓存管理系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10747674B2 (zh) |
CN (1) | CN109324981B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10649906B2 (en) * | 2018-04-30 | 2020-05-12 | Avago Technologies International Sales Pte. Limited | Method and system for hardware accelerated row lock for a write back volume |
US11436151B2 (en) * | 2018-08-29 | 2022-09-06 | Seagate Technology Llc | Semi-sequential drive I/O performance |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9645932B1 (en) * | 2014-12-19 | 2017-05-09 | EMC IP Holding Company LLC | Persistent metadata cache |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3573744A (en) * | 1968-11-01 | 1971-04-06 | Bell Telephone Labor Inc | Data buffer system for transferring information from a first to a second storage medium |
US5721954A (en) * | 1992-04-13 | 1998-02-24 | At&T Global Information Solutions Company | Intelligent SCSI-2/DMA processor |
US5448719A (en) * | 1992-06-05 | 1995-09-05 | Compaq Computer Corp. | Method and apparatus for maintaining and retrieving live data in a posted write cache in case of power failure |
US5819117A (en) * | 1995-10-10 | 1998-10-06 | Microunity Systems Engineering, Inc. | Method and system for facilitating byte ordering interfacing of a computer system |
US6130759A (en) * | 1997-08-26 | 2000-10-10 | Hewlett-Packard Company | Reducing memory fragmentation by coalescing and redistributing previously distributed page strips |
JP3730455B2 (ja) * | 1999-10-01 | 2006-01-05 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
US20040054877A1 (en) * | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
CA2388790A1 (en) * | 2002-06-03 | 2003-12-03 | Catena Networks Canada Inc. | Direct memory access circuit with atm support |
US7469266B2 (en) * | 2003-09-29 | 2008-12-23 | International Business Machines Corporation | Method and structure for producing high performance linear algebra routines using register block data format routines |
US8788755B2 (en) * | 2010-07-01 | 2014-07-22 | Infinidat Ltd. | Mass data storage system and method of operating thereof |
US9201804B1 (en) * | 2012-02-06 | 2015-12-01 | Google Inc. | Dynamically adapting the configuration of a multi-queue cache based on access patterns |
US9244840B2 (en) * | 2012-12-12 | 2016-01-26 | International Business Machines Corporation | Cache swizzle with inline transposition |
US9817757B2 (en) * | 2015-11-17 | 2017-11-14 | International Business Machines Corporation | Scalable metadata management in a multi-grained caching framework |
-
2017
- 2017-07-31 CN CN201710638037.0A patent/CN109324981B/zh active Active
-
2018
- 2018-07-13 US US16/034,657 patent/US10747674B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9645932B1 (en) * | 2014-12-19 | 2017-05-09 | EMC IP Holding Company LLC | Persistent metadata cache |
Also Published As
Publication number | Publication date |
---|---|
US20190034345A1 (en) | 2019-01-31 |
CN109324981A (zh) | 2019-02-12 |
US10747674B2 (en) | 2020-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9405684B1 (en) | System and method for cache management | |
US9378096B1 (en) | System and method for cache management | |
US9507732B1 (en) | System and method for cache management | |
US9547591B1 (en) | System and method for cache management | |
US8738857B1 (en) | System and method for improving cache performance | |
US9134914B1 (en) | Deduplication | |
US9135119B1 (en) | System and method for data management | |
US8725939B1 (en) | System and method for improving cache performance | |
US9268696B1 (en) | System and method for improving cache performance | |
US20200210068A1 (en) | Cache management system and method | |
CN109324981B (zh) | 高速缓存管理系统和方法 | |
US11615028B2 (en) | System and method for lockless destaging of metadata pages | |
US11599460B2 (en) | System and method for lockless reading of metadata pages | |
US11467963B2 (en) | System and method for reducing reference count update contention in metadata blocks | |
US8990615B1 (en) | System and method for cache management | |
US9286219B1 (en) | System and method for cache management | |
US9563363B2 (en) | Flexible storage block for a solid state drive (SSD)-based file system | |
US10152424B1 (en) | Write reduction system and method | |
US11256439B2 (en) | System and method for parallel journaling in a storage cluster | |
US9128854B1 (en) | System and method for data prediction | |
US11366795B2 (en) | System and method for generating bitmaps of metadata changes | |
US10528529B1 (en) | Multi-core journal system and method | |
US9208098B1 (en) | System and method for improving cache performance | |
US8886883B1 (en) | System and method for improving cache performance | |
US11269516B1 (en) | Pattern detection system and method |
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 |