CN110688062B - 一种缓存空间的管理方法及装置 - Google Patents
一种缓存空间的管理方法及装置 Download PDFInfo
- Publication number
- CN110688062B CN110688062B CN201910790109.2A CN201910790109A CN110688062B CN 110688062 B CN110688062 B CN 110688062B CN 201910790109 A CN201910790109 A CN 201910790109A CN 110688062 B CN110688062 B CN 110688062B
- Authority
- CN
- China
- Prior art keywords
- cache
- read
- data
- size
- hit rate
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F2212/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/16—General purpose computing application
- G06F2212/163—Server or database system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/282—Partitioned cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/461—Sector or disk block
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/463—File
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种缓存空间的管理方法及装置,该方法可以应用于存储系统中,该存储系统包括读缓存和元数据缓存,在该方法中,首先获取该存储系统的读缓存的命中率,然后根据该读缓存的命中率,调整该读缓存的大小以及该元数据缓存的大小。在上述技术方案中,以读缓存的命中率作为决策因素,动态地调整读缓存的大小和元数据缓存的大小,例如,当读缓存命中率较高时,可以增加读缓存的大小,这样大量的数据将从读缓存中获取,可以尽可能地降低数据读取的时延;当读缓存命中率较低时,可以减小读缓存的大小,将缓存空间留给元数据缓存使用,以增加缓存的元数据的数据量,从而可以提高缓存系统的数据读取性能。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种缓存空间的管理方法及装置。
背景技术
在存储系统中,通常会对存储系统中存储的数据进行缓存,这样,当接收到读数据请求后,可以从缓存中获取待读取数据,从而可以减少数据读取的时延,提高数据读取的性能。
对数据进行缓存包括读缓存和元数据缓存两种形式,其中,读缓存中缓存的是数据,而元数据缓存中缓存的是数据的元数据。当读数据请求命中读缓存时,则存储系统直接从读缓存中获取待读取数据;当读数据请求命中元数据缓存时,则存储系统首先从元数据缓存中获取待读取数据的元数据,然后根据元数据从对应的存储设备中获取该待读取数据。
然而,在存储系统中,读数据所占用的缓存空间和元数据所占用的缓存空间的总量有限,而读缓存相较于元数据缓存,读取数据的时延较小,元数据缓存相较于读缓存,在占用相同的缓存空间时,可以缓存更多的数据的元数据,因此,如何合理地设置读缓存和元数据缓存所占用的缓存空间的大小,是影响存储系统的数据读取性能的重要因素。
发明内容
本申请提供一种缓存空间的管理方法及装置,用于合理地设置读缓存所占用的缓存空间的大小和元数据缓存所占用的缓存空间的大小,以提高存储系统的数据读取性能。
第一方面,提供一种缓存空间的管理方法,该方法可以应用于存储系统中,该存储系统包括读缓存和元数据缓存,其中,读缓存用于缓存该存储系统中存储的数据,元数据缓存用于缓存与该存储系统中存储的数据对应的元数据,在该方法执行时,首先获取该存储系统的读缓存的命中率,然后根据该读缓存的命中率,调整该读缓存的大小和该元数据缓存的大小。
在上述技术方案中,以读缓存的命中率作为决策因素,动态地调整读缓存的大小和元数据缓存的大小,例如,当读缓存命中率较高时,可以增加读缓存的大小,这样大量的数据将从读缓存中获取,可以尽可能地降低数据读取的时延;当读缓存命中率较低时,可以减小读缓存的大小,将缓存空间留给元数据缓存使用,以增加缓存的元数据的数据量,从而可以提高缓存系统的数据读取性能。
进一步地,动态调整读缓存和元数据缓存的大小可以提高存储系统的缓存空间的利用率。
在一种可能的设计中,该读缓存的命中率包括预取命中率或重复命中率。其中,预取命中率为预设时长内通过预取操作获取待读取数据的数据量与该预设时长内该预取操作预取的数据的总数据量的比值,该重复命中率为该预设时长内从已缓存的数据中获取待读取数据的数据量与该已缓存的数据的总数据量的比值,该待读取数据为与该存储系统接收的读数据请求对应的数据。
在上述技术方案中,可以通过预取命中率或重复命中率来表征读缓存的命中率,可以增加方案的灵活性。
在一种可能的设计中,根据读缓存的命中率,调整该读缓存的大小以及元数据缓存的大小,可以包括但不限于如下三种方式:
第一种方式,使用预取命中率来表征读缓存的命中率,则在该预取命中率大于或等于第一阈值时,减小该读缓存以及增大该元数据缓存。
在上述技术方案中,由于每次预取操作所能缓存的数据量有限,例如,每次预取操作可以缓存10兆字节(megabytes,MB),因此,读缓存实现较高的命中率只需要较少的缓存空间即可,从而可以减少读缓存的大小,将剩余缓存空间留给元数据缓存使用,通过增加缓存的元数据的数据量来提高存储系统的数据读取性能。
第二种方式,使用重复命中率来表征读缓存的命中率,则在该重复命中率大于或等于第二阈值时,增大该读缓存以及减小该元数据缓存。
在上述技术方案中,若重复命中率较高,则说明从已缓存的数据中获取待读取数据的概率较大,因此,可以增加读缓存所占用的缓存空间,进一步提高重复命中率,可以提存储系统的数据读取性能。
第三种方式,在获取读缓存的命中率后,可以根据该读缓存的命中率,确定在存储系统读取数据的时延小于或等于第三阈值时,该读缓存的最小值,然后,调整该读缓存的大小为该最小值,以及,调整该元数据缓存的大小为存储系统的缓存大小与该最小值的差值。需要说明的是,该缓存大小可以是一个固定值,例如为预设阈值,该存储系统的缓存大小为该读缓存的大小和该元数据缓存的大小之和。
在上述技术方案中,可以根据读缓存的命中率计算出在满足系统读取数据的时延需求的条件下,读缓存所需的最小的缓存空间,然后调整读缓存占用的缓存空间为该最小的缓存空间,从而将剩余的缓存空间留给元数据缓存使用,可以在保证时延需求的情况下,尽可能地多缓存元数据,可以提高存储系统的数据读取性能。
在本申请中,不对该第一阈值、第二阈值、第三阈值以及预设阈值进行限制。
第二方面,提供一种缓存空间的管理装置,该缓存空间的管理装置可以是存储节点或者存储服务端,也可以是存储节点或者存储服务端中的装置。该缓存空间的管理装置包括处理器,用于实现上述第一方面描述的方法。该缓存空间的管理装置还可以包括存储器,用于存储程序指令和数据。该存储器与该处理器耦合,该处理器可以调用并执行该存储器中存储的程序指令,用于实现上述第一方面描述的方法中的任意一种方法。该缓存空间的管理装置还可以包括通信接口,该通信接口用于该缓存空间的管理装置与其它设备进行通信。示例性地,该其它设备为存储系统中的客户端。
在一种可能的设计中,该缓存空间的管理装置包括处理器和通信接口,其中:
所述通信接口,用于获取存储系统的读缓存的命中率;
所述处理器,用于根据所述读缓存的命中率,调整所述读缓存的大小和元数据缓存的大小;其中,所述存储系统包括所述读缓存和所述元数据缓存,所述读缓存用于缓存所述存储系统中存储的数据,所述元数据缓存用于缓存与所述存储系统中存储的数据对应的元数据。
其中,对读缓存的命中率的说明请参照第一方面,在此不再赘述。
在一种可能的设计中,所述处理器具体用于:
在所述预取命中率大于或等于第一阈值时,减小所述读缓存以及增大所述元数据缓存。
在一种可能的设计中,所述处理器具体用于:
在所述重复命中率大于或等于第二阈值时,增大所述读缓存以及减小所述元数据缓存。
在一种可能的设计中,所述处理器具体用于:
根据所述读缓存的命中率,确定在所述存储系统读取数据的时延小于或等于第三阈值时,所述读缓存的最小值;
调整所述读缓存的大小为所述最小值,以及,调整所述元数据缓存的大小为所述存储系统的缓存大小与所述最小值的差值,所述存储系统的缓存大小为所述读缓存的大小和所述元数据缓存的大小之和,所述缓存大小为预设阈值。
第三方面,提供一种缓存空间的管理装置,该缓存空间的管理装置可以是存储节点或者存储服务端,也可以是存储节点或者存储服务端中的装置。该缓存空间的管理装置可以包括处理模块和通信模块,这些模块可以执行上述第一方面任一种设计示例中的所执行的相应功能,具体的:
所述通信模块,用于获取存储系统的读缓存的命中率;
所述处理模块,用于根据所述读缓存的命中率,调整所述读缓存的大小和元数据缓存的大小;其中,所述存储系统包括所述读缓存和所述元数据缓存,所述读缓存用于缓存所述存储系统中存储的数据,所述元数据缓存用于缓存与所述存储系统中存储的数据对应的元数据。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第六方面,本申请提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现第一方面所述的方法。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第七方面,本申请实施例提供了一种存储系统,该存储系统包括存储设备以及第二方面及第二方面任一种设计中所述的缓存空间的管理装置,或者,该存储系统包括存储设备以及第三方面及第三方面任一种设计中所述的缓存空间的管理装置。
上述第二方面至第七方面及其实现方式的有益效果可以参考对第一方面的方法及其实现方式的有益效果的描述。
附图说明
图1为本申请实施例提供的存储系统的一种示例的架构图;
图2为本申请实施例提供的一种缓存空间的管理方法的流程图;
图3为本申请实施例中服务端记录每个数据与来源的映射关系的一种示例的示意图;
图4为本申请实施例中服务端记录每个数据与来源的映射关系的另一种示例的示意图;
图5为本申请实施例中提供的缓存空间的管理装置的一种示例的结构图;
图6为本申请实施例中提供的缓存空间的管理装置的另一种示例的结构图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
本申请实施例中“多个”是指两个或两个以上,鉴于此,本申请实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括A、B和C中的至少一个,那么包括的可以是A、B、C、A和B、A和C、B和C、或A和B和C。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。在本申请实施例中,“节点”和“节点”可以互换使用。
除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
本申请实施例中的方法可以应用于存储系统中。该存储系统可以是分布式存储系统,也可以是集中式存储系统。该存储系统可以是文件存储系统、块存储系统或者对象存储系统,或者上述存储系统的组合,在本申请实施例中不作限制。
下面,以存储系统为分布式存储系统为例对本申请实施例中的方法进行说明。请参考图1,为本申请实施例提供的存储系统的一种示例的架构图。在图1中,存储系统100包括1个服务端110和3个存储节点120(分别为存储节点1~存储节点3),每个存储节点120包括至少一个存储设备,该存储设备,存储设备可以是机械硬盘(hard disk drive,HDD)以及固态硬盘(solid state drive,SSD)等。存储设备的接口可以包括串行高级技术附件(serial advanced technology attachment,SATA)接口、小型计算机系统接口(smallcomputer system interface,SCSI)、串行连接SCSI接口(serial attached SCSI,SAS)、光纤通道接口(fibre channel,FC),或者支持非易失性内存标准(Non-volatile MemoryExpress,NVMe)协议的接口等。
服务端110或者每个存储节点120或者该多个存储节点120中的管理节点,可以预留一部分缓存空间作为读缓存以及元数据缓存,该读缓存用于缓存存储系统100中存储的数据,该元数据缓存用于缓存与存储系统100中存储的数据对应的元数据。为方便说明,在下文中,以在服务端110预留缓存空间作为读缓存和元数据缓存为例。该读缓存用于缓存存储系统100中存储的数据,是指用于缓存读请求相关的存储系统100中存储的数据。具体实现,可以包括读请求所访问的存储系统100中存储的数据,还可以包含根据预取算法预取的和读请求所访问的存储系统100中存储的数据相关的数据。
当服务端110接收到客户端发送的读请求后,则首先确定该读数据缓存中是否包括与该读请求对应的待读取数据,或者,确定该元数据缓存中是否包括与该读请求对应的待读取数据的元数据。若读缓存中已经缓存该待读取数据,则从读缓存中获取该待读取数据,并反馈给客户端;若元数据缓存中包括与该待读取数据对应的元数据,则根据与该待读取数据对应的元数据,确定该待读取数据对应的存储地址,进而从对应的存储地址获取该待读取数据。若读缓存中不包括该待读取数据,且元数据缓存中也不包括与该待读取数据对应的元数据,则服务端110需要在存储系统的多个存储设备中查找该待读取数据。可见,通过设置读缓存和元数据缓存,可以减少客户端从存储系统100中读取数据的时延,提高存储系统的数据读取性能。
一方面,由于读缓存中缓存的是数据,元数据缓存中缓存的是元数据(即数据的索引),因此,缓存某一存储空间中的数据所占用的缓存空间,比缓存该存储空间中的数据的元数据所占用的缓存空间大。另一方面,从读缓存中读取待读取数据的时延,比根据元数据获取待读取数据的时延小。因此,在服务端110的缓存空间有限的情况下,合理地设置读缓存和元数据缓存所占用的缓存空间的大小,是影响存储系统的数据读取性能的重要因素。
下面,将结合附图对本申请实施例中提供的缓存空间的管理方法进行说明。
请参考图2,为本申请实施例提供的缓存空间的管理方法的流程图。在下文中,将以该方法应用在如图1所示的存储系统中为例。需要说明的是,存储系统中的缓存空间不仅可以用于读缓存和元数据缓存,还可以用于写缓存或者缓存存储系统运行所需的程序代码等,在本申请实施例中的缓存空间是指存储系统中仅用于读缓存和元数据缓存的部分缓存空间。如图2所示的流程图的描述如下:
S201、服务端为读缓存和元数据缓存配置初始大小。
在存储系统上电或者启动后,服务端会设置其读缓存和元数据缓存分别占用的缓存空间的大小。
作为一种示例,服务端中可以预先存储元数据缓存所占用的缓存空间的初始值,该初始值可以是一个较小的值,例如,该初始值可以是用于缓存该存储系统的存储池(即存储系统所包括的所有的存储设备)的根信息的所需的缓存空间的大小。然后,服务端将该元数据缓存所占用的缓存空间的大小设置为该初始值,并将读缓存所占用的缓存空间的大小设置为缓存空间的总量与该初始值之差。
当然,服务端也可以预先存储读缓存所占用的缓存空间的初始值,然后根据该读缓存所占用的缓存空间的初始值设置读缓存和元数据缓存分别占用的缓存空间的大小。具体过程与前述示例中相似,在此不再赘述。
S202、服务端通过预取操作,从存储设备中获取第一缓存数据。
为减少从存储系统中读取数据的时延,在本申请实施例中,服务端可以在接收到客户端发送的读数据请求之前,通过预取操作在读缓存中预先存储部分数据。例如,服务端可以随机选择第一缓存数据存储在读缓存中。例如,预取操作每次只能读取4M的数据,每个逻辑单元(logical unit,LUN)中存储的数据量为2M,则服务端可以将LUN0~LUN1中的数据存储在读缓存中。
S203、服务端接收客户端发送的第一读数据请求。
该第一读数据请求中携带有第一待读取数据在存储设备中的存储地址,该存储地址可以为逻辑地址,也可以是物理地址,在此不作限制。为方便说明,在下文中,以该存储地址为逻辑地址为例。例如,该第一读数据请求中携带的存储地址为LUN4。
S204、服务端确定读缓存不包括该第一待读取数据,以及确定该元数据缓存中不存在与该第一待读取数据对应的元数据。
服务端判断读缓存中存储的数据的存储地址为LUN0~LUN1,与待读取数据的存储地址不同,则确定读缓存中不包括该第一待读取数据。在首次接收到客户端发送的读数据请求时,由于元数据缓存中还未存储任何数据,因此,服务端确定该元数据缓存中不存在与该第一待读取数据对应的元数据。在这种情况下,可以称为该第一读数据请求未命中读缓存且未命中元数据缓存。
S205、服务端从存储设备中获取该第一待读取数据。
服务端根据该第一读数据请求中携带的存储地址,从对应的存储设备中获取该第一待读取数据。
S206、服务端将该第一待读取数据发送给客户端,并将该第一待读取数据存储在读缓存中。
服务端可以根据预设策略,确定将该第一待读取数据存储在读缓存中,还是将该第一待读取数据对应的元数据存储在元数据缓存中,在此不作限制。在本申请实施例中,以服务端将该第一待读取数据存储在读缓存中为例。至此,读缓存中存储了LUN0、LUN1以及LUN4对应的数据。
S207、服务端通过预取操作,从存储设备中获取第二缓存数据。
步骤S207与步骤S202相似,在此不再赘述。需要说明的是,步骤S207为可选步骤,即不是必须要执行的,例如,服务端可以根据使用需求,确定是否需要执行步骤S207。
在本申请实施例中,以服务端执行步骤S207为例。服务端执行步骤S207,服务端确定第一待读取数据的存储地址为LUN4,则服务端将LUN4之后的数据,即LUN5~LUN6中的数据,存储在读缓存中。至此,读缓存中存储了LUN0、LUN1、LUN4~LUN6中的数据。
S208、服务端接收客户端发送的第二读数据请求。
该第二读数据请求中携带有第二待读取数据在存储设备中的存储地址。在本申请实施例中,以该第二待读取数据与第一待读取数据相同为例,例如,该第二待读取数据的存储地址为LUN4。
S209、服务端确定读缓存中存储的多个数据的多个存储地址包括该第二读数据请求中携带的存储地址,服务端从读缓存中获取该第二待读取数据。
在这种情况下,可以称为该第二读数据请求命中读缓存。
S210、服务端将该第二待读取数据发送给客户端。
服务端可以重复执行步骤S202~步骤S210。由于服务端中用于读缓存和元数据缓存的缓存空间有限,因此,随着客户端发送的读数据请求越来越多,服务端中的读缓存中存储的数据以及元数据缓存中存储的元数据的数据量都会增多。若读数据请求命中读缓存的次数的较少,也就是说该读缓存中缓存的大部分的数据对提高存储系统的数据读取性能是无用的,则这些无用的数据会浪费缓存空间;若读数据请求命中读缓存的次数较多,则若读缓存所占用的缓存空间越大则会有大量的数据命中读缓存,则可以进一步提高存储系统的数据读取性能,但是,由于服务端为读缓存设置了初始值,当读缓存中缓存的数据量达到该初始值后,则无法再缓存数据。针对上述问题,本申请实施例进一步包括:
S211、服务端获取存储系统的读缓存的命中率。
在本申请实施例中,读缓存的命中率可以通过预取命中率或重复命中率来表示。为了更加清楚地说明预取命中率和重复命中率的区别,下面对读缓存中存储的数据进行说明。
由步骤S202~步骤S210可知,读缓存中存储的数据可以包括两种来源,第一种来源是通过预取操作获取的数据,第二种来源是通过客户端发送的读数据请求获取的数据。因此,在本申请实施例中,服务端还可以记录每个数据的来源。
作为一种示例,服务端可以记录每个数据与来源的映射关系。请参考图3,服务端采用表格的方式记录该映射关系,其中,标记1用来表示该数据是通过预取操作获取的,标记2用来表示该数据是根据读数据请求获取的。在图3中,服务端记录了读缓存中存储的10个数据的来源,其中,数据1、数据2以及数据4对应标记2,该数据3、数据5~数据10对应标记1。
作为另一种示例,服务端可以读缓存分为两个分区,不同的分区中存储不同来源的数据。请参考图4,读缓存所占用的缓存空间的总大小为200M,则服务端将读缓存划分为分区A和分区B,分区A对应0~100M的缓存空间,分区B对应101M~200M的缓存空间,其中,分区A用于存储通过预取操作获取的数据,在分区A中包括数据3、数据5~数据10,分区B用于存储根据读数据请求获取的数据,在分区B中包括数据1、数据2以及数据4。
当然,还可以通过其他方式标记每个数据的来源,在此不一一举例。
若与某一个读数据请求对应的待读取数据存储在读缓存中,且该数据是通过预取操作获取的,则可以称为该读数据请求命中预取数据,或者称为预取命中。若某一个读数据请求对应的待读取数据存储在读缓存中,且该数据是根据为根据读数据请求获取的,也就是说,该待读取数据之前已经被读取过,则可以称为重复命中。若某一个读数据请求对应的待读取数据未存储在读缓存中,则可以称为未命中。服务端可以记录每一个读数据请求的命中情况,该命中情况包括预取命中,或者重复命中,或者未命中。
在上述概念的基础上,得到本申请实施例中预取命中率和重复命中率的定义。该预取命中率为预设时长内通过预取操作获取待读取数据的数据量与该预设时长内该预取操作预取的数据的总数据量的比值。例如,在预设时长内,客户端发送了10个读数据请求,该10个读数据请求对应的待读取数据的总数据量为200M。然后,获取服务端记录的与该10个读数据请求对应的命中情况,确定该10个读数据请求中为预取命中的读数据请求有9个,且该9个读数据请求对应的待读取数据的总数据量为160M,从而得到在该预设时长内预取命中率为160/200=80%。
该重复命中率为该预设时长内从已缓存的数据中获取待读取数据的数据量与该已缓存的数据的总数据量的比值。例如,在预设时长内,读缓存中已经存储的数据的总数据量为200M,且在该预设时长内客户端发送了10个读数据请求。然后,服务端获取记录的与该10个读数据请求对应的命中情况,确定该10个读数据请求中为重复命中的读数据请求有5个,且该5个读数据请求对应的待读取数据的总数据量为100M,从而得到在该预设时长内重复命中率为100/200=50%。
需要说明的是,在本申请实施例中,该预设时长可以根据使用需求设置,例如可以为1分钟或者5分钟等,在此不作限制。
S212、服务端根据读缓存的命中率,调整读缓存的大小以及元数据缓存的大小。
在本申请实施例中,步骤S212可以包括但不限于如下三种实现方式,在具体实施过程中,可以选择其中的一种方式执行。
第一种方式,服务端使用预取命中率来表示读缓存的命中率,则根据读缓存的命中率,调整读缓存的大小以及元数据缓存的大小,包括:
在预取命中率大于或等于第一阈值时,减小读缓存以及增大元数据缓存。
由于每次预取操作所能缓存的数据量有限,例如,每次预取操作可以获取10MB的数据,且,预取操作获取的数据可以覆盖写入缓存空间,在这种情况下,读缓存实现较高的命中率只需要较少的缓存空间即可,从而可以减少读缓存的大小,将剩余缓存空间留给元数据缓存使用,通过增加缓存的元数据的数据量来提高存储系统的数据读取性能。
具体来讲,服务端可以预先存储该第一阈值,例如,该第一阈值为60%,然后在获取读缓存的预取命中率后,将预取命中率与第一阈值进行比较,例如,沿用前述例子,预取命中率为80%>60%,因此,服务端确定减少读缓存以及增大元数据缓存。服务端可以按照预设的步长,例如,该步长可以设置为50MB,当服务端确定需要减少读缓存时,则将读缓存所占用的缓存空间在当前取值的基础上减少该预设的步长对应的取值。相应地,读缓存减少的缓存空间则配置给元数据缓存使用。或者,服务端也可以根据读缓存所占用的缓存空间的当前取值确定需要减少的缓存空间,例如,服务端可以减少当前读缓存的大小的固定比例,该固定比例可以为20%。
需要说明的是,在服务端中用于读缓存和元数据缓存的缓存空间的总量一定的条件下,当其中一个缓存(读缓存或者元数据缓存)减小,则另一个缓存必然增大,因此,在本申请实施例中,减小读缓存以及增大元数据缓存,可以通过如下方式实现:第一种方式,减小读缓存,则元数据缓存自然增大;第二种方式,增大元数据缓存,则读缓存自然减小;第三种方式,同步减小读缓存和增加元数据缓存。
第二种方式,服务端使用重复命中率来表示读缓存的命中率,则根据读缓存的命中率,调整读缓存的大小以及元数据缓存的大小,包括:
在重复命中率大于或等于第二阈值时,增大读缓存以及减小所述元数据缓存。
若读缓存的重复命中率较高,则说明从已缓存的数据中获取待读取数据的概率较大,因此,可以增加读缓存所占用的缓存空间,进一步提高重复命中率,可以提存储系统的数据读取性能。
具体来讲,服务端可以预先存储该第二阈值,例如,该第二阈值为40%,然后在获取读缓存的重复命中率后,将重复命中率与第二阈值进行比较,例如,沿用前述例子,读缓存的重复命中率为50%>40%,因此,服务端确定增大读缓存以及减小元数据缓存。服务端增大读缓存以及减小元数据缓存的方式与第一种方式中的相应内容相似,在此不再赘述。
需要说明的是,第一阈值和第二阈值可以相同,也可以不相同。当第一阈值和第二阈值不相同时,服务端可以存储第一阈值与预取命中率的对应关系,以及,第二阈值与重复命中率的对应关系,从而服务端可以通过该对应关系确定使用的阈值。
第三种方式,服务端可以使用重复命中率或者预取命中率中的任意一个来表示读缓存的命中率,则根据所述读缓存的命中率,调整所述读缓存的大小以及元数据缓存的大小,包括:
首先,根据所述读缓存的命中率,确定在存储系统读取数据的时延小于或等于第三阈值时,该读缓存的最小值;然后,调整读缓存的大小为该最小值,以及,调整该元数据缓存的大小为该存储系统的缓存大小与该最小值的差值,存储系统的缓存大小为存储系统中用于读缓存和元数据缓存的缓存空间的总量。
在这种方式下,可以根据读缓存的命中率计算出在满足系统读取数据的时延需求的条件下,读缓存所需的最小的缓存空间,然后调整读缓存占用的缓存空间为该最小的缓存空间,从而将剩余的缓存空间留给元数据缓存使用,可以在保证时延需求的情况下,尽可能地多缓存元数据,可以提高存储系统的数据读取性能。
具体来讲,服务端还可以获取在预设时长内元数据缓存的命中率和既不命中元数据缓存也不命中读缓存的未命中率,具体获取方式与获取读缓存的命中率的方式相似,在此不再赘述。通过读缓存的命中率、元数据缓存的命中率以及未命中率,获取存储系统读取数据所需的时延的计算公式。
假设存储系统在该预设时长内通过读数据请求获取的数据总量为z,读缓存的命中率为dy,元数据缓存的命中率为my,则未命中率为(1-dy-my)。当读数据请求命中读缓存时获取待读取数据所需的时延为dx,当读数据请求命中元数据缓存时获取待读取数据所需的时延为mx,当读数据请求未命中时从存储设备中获取待读取数据所需的时延为nx,存储系统并发处理读数据请求的数目为c,则存储系统读取数据的总耗时t的计算方法满足如下公式:
t=z*(1/c)*(dx*dy+mx*my+nx*(1-dy-my)) (1)
通常情况下,dx的取值为10微秒(microsecond,us)左右,mx的取值为200us~1毫秒(millisecond,ms)左右,nx的取值通常是mx的2~3倍。
在既定的存储系统中,c、dx、mx、nx都为常量,dy和my由于读缓存和元数据缓存的大小不同,为可变量,也就是说,可以建立dy和my分别与读缓存的大小之间的表达式,例如,可以得到如下公式:
dy=f1(x) (2)
my=f2(x) (3)
其中,参数x表示读缓存的大小,f1(x)为读缓存的大小与dy之间的映射关系,f2(x)为读缓存的大小与my之间的映射关系,在此不具体说明。
在保证t小于等于第三阈值的情况下,得到的读缓存容量的最小值。然后,服务端将该读缓存的大小由初始值调整为该最小值,而剩余的缓存空间则用于元数据缓存。
服务端可以周期性执行步骤S211和步骤S212,从而可以为读缓存和元数据缓配置到合理的缓存空间大小,保障存储系统的数据读取性能。
根据读缓存的命中率,调整读缓存的大小以及元数据缓存的大小,是指在读缓存的大小和元数据缓存的大小之和确定的情况下,根据读缓存的命中率,分配读缓存的大小和元数据缓存的大小。另外一种实现,调整读缓存的大小以及元数据缓存的大小,是指存储系统增加了缓存的大小,根据读缓存的命中率,基于增加的缓存的大小,分配读缓存的大小和元数据缓存的大小。
在上述技术方案中,以读缓存的命中率作为决策因素,动态地调整读缓存的大小和元数据缓存的大小,例如,当读缓存命中率较高时,可以增加读缓存的大小,这样大量的数据将从读缓存中获取,可以尽可能地降低数据读取的时延;当读缓存命中率较低时,可以减小读缓存的大小,将缓存空间留给元数据缓存使用,以增加缓存的元数据的数据量,从而可以提高缓存系统的数据读取性能。
需要说明的是,上述实施例中是以读缓存的命中率作为决策因素为例,对本申请实施例中的缓存空间的管理方法进行说明,在其他实施例中,也可以以元数据缓存的命中率作为决策因素来对缓存空间进行管理,具体过程与上述实施例相似,在此不再赘述。另外,在图2所示的实施例中,在分布式存储系统场景下是由分布式存储系统的服务端执行的;在存储阵列场景下该方法是由存储阵列的阵列控制器执行的。
另外需要说明的是,上述实施例是以应用在管理缓存空间的场景中为例,该方法也可以应用在其他共享资源场景,例如共享存储设备的存储空间的场景等,在此不一一举例。
上述本申请提供的实施例中,为了实现上述本申请实施例提供的方法中的各功能,存储系统可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
图5示出了一种缓存空间的管理装置500的结构示意图。其中,缓存空间的管理装置500可以用于实现分布式存储系统的服务端的功能,也可以用于实现存储阵列中的阵列控制器的功能。缓存空间的管理装置500可以是硬件结构、软件模块、或硬件结构加软件模块。缓存空间的管理装置500可以由芯片系统实现。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
缓存空间的管理装置500可以包括处理模块501和通信模块502。
处理模块501可以用于执行图2所示的实施例中的步骤S201、步骤S204、步骤S206,以及步骤S209~步骤S211,和/或用于支持本文所描述的技术的其它过程。
通信模块502可以用于执行图2所示的实施例中的步骤S202~步骤S203、步骤S205~步骤S208、步骤S210,和/或用于支持本文所描述的技术的其它过程。通信模块502用于缓存空间的管理装置500和其它模块进行通信,其可以是电路、器件、接口、总线、软件模块、收发器或者其它任意可以实现通信的装置。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
图5所示的实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
如图6所示为本申请实施例提供的缓存空间的管理装置600,其中,缓存空间的管理装置600可以用于实现分布式存储系统的服务端的功能,也可以用于实现存储阵列中的阵列控制器的功能。其中,该缓存空间的管理装置600可以为芯片系统。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
缓存空间的管理装置600包括至少一个处理器620,用于实现或用于支持缓存空间的管理装置600实现本申请实施例提供的方法中存储服务端的功能。示例性地,处理器620可以调整读缓存的大小以及元数据缓存的大小,具体参见方法示例中的详细描述,此处不做赘述。
缓存空间的管理装置600还可以包括至少一个存储器630,用于存储程序指令和/或数据。存储器630和处理器620耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器620可能和存储器630协同操作。处理器620可能执行存储器630中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
缓存空间的管理装置600还可以包括通信接口610,用于通过传输介质和其它设备进行通信,从而用于缓存空间的管理装置600可以和其它设备进行通信。示例性地,该其它设备可以是存储客户端或者存储设备。处理器620可以利用通信接口610收发数据。
本申请实施例中不限定上述通信接口610、处理器620以及存储器630之间的具体连接介质。本申请实施例在图6中以存储器630、处理器620以及通信接口610之间通过总线650连接,总线在图6中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器620可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器630可以是非易失性存储器,比如硬盘(hard diskdrive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行图2所示的实施例中服务端执行的方法。
本申请实施例中还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行图2所示的实施例中服务端执行的方法。
本申请实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现前述方法中服务端的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例提供了一种存储系统,该存储系统包括存储设备以及图2所示的实施例中服务端。
本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,简称DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,简称DVD))、或者半导体介质(例如,SSD)等。
Claims (7)
1.一种缓存空间的管理方法,其特征在于,包括:
获取存储系统的读缓存的命中率;
根据所述读缓存的命中率,调整所述读缓存的大小和元数据缓存的大小;其中,所述存储系统包括所述读缓存和所述元数据缓存,所述读缓存用于缓存所述存储系统中存储的数据,所述元数据缓存用于缓存与所述存储系统中存储的数据对应的元数据;
其中,所述读缓存的命中率包括预取命中率或重复命中率;其中,所述预取命中率为预设时长内通过预取操作获取待读取数据的数据量与所述预设时长内所述预取操作预取的数据的总数据量的比值;所述重复命中率为所述预设时长内从已缓存的数据中获取待读取数据的数据量与所述已缓存的数据的总数据量的比值,所述待读取数据为与所述存储系统接收的读数据请求对应的数据;
其中,根据所述读缓存的命中率,调整所述读缓存的大小以及元数据缓存的大小,包括:
在所述预取命中率大于或等于第一阈值时,减小所述读缓存以及增大所述元数据缓存;
在所述重复命中率大于或等于第二阈值时,增大所述读缓存以及减小所述元数据缓存。
2.根据权利要求1所述的方法,其特征在于,根据所述读缓存的命中率,调整所述读缓存的大小以及元数据缓存的大小,包括:
根据所述读缓存的命中率,确定在所述存储系统读取数据的时延小于或等于第三阈值时,所述读缓存的最小值;
调整所述读缓存的大小为所述最小值,以及,调整所述元数据缓存的大小为所述存储系统的缓存大小与所述最小值的差值,所述存储系统的缓存大小为所述读缓存的大小和所述元数据缓存的大小之和,所述缓存大小为预设阈值。
3.一种缓存空间的管理装置,其特征在于,包括通信接口和处理器,其中:
所述通信接口,用于获取存储系统的读缓存的命中率;
所述处理器,用于根据所述读缓存的命中率,调整所述读缓存的大小和元数据缓存的大小;其中,所述存储系统包括所述读缓存和所述元数据缓存,所述读缓存用于缓存所述存储系统中存储的数据,所述元数据缓存用于缓存与所述存储系统中存储的数据对应的元数据;
其中,所述读缓存的命中率包括预取命中率或重复命中率;其中,所述预取命中率为预设时长内通过预取操作获取待读取数据的数据量与所述预设时长内所述预取操作预取的数据的总数据量的比值;所述重复命中率为所述预设时长内从已缓存的数据中获取待读取数据的数据量与所述已缓存的数据的总数据量的比值,所述待读取数据为与所述存储系统接收的读数据请求对应的数据;
其中,所述处理器具体用于:
在所述预取命中率大于或等于第一阈值时,减小所述读缓存以及增大所述元数据缓存;
在所述重复命中率大于或等于第二阈值时,增大所述读缓存以及减小所述元数据缓存。
4.根据权利要求3所述的装置,其特征在于,所述处理器具体用于:
根据所述读缓存的命中率,确定在所述存储系统读取数据的时延小于或等于第三阈值时,所述读缓存的最小值;
调整所述读缓存的大小为所述最小值,以及,调整所述元数据缓存的大小为所述存储系统的缓存大小与所述最小值的差值,所述存储系统的缓存大小为所述读缓存的大小和所述元数据缓存的大小之和,所述缓存大小为预设阈值。
5.一种缓存空间的管理装置,其特征在于,包括:
通信模块,用于获取存储系统的读缓存的命中率;
处理模块,用于根据所述读缓存的命中率,调整所述读缓存的大小和元数据缓存的大小;其中,所述存储系统包括所述读缓存和所述元数据缓存,所述读缓存用于缓存所述存储系统中存储的数据,所述元数据缓存用于缓存与所述存储系统中存储的数据对应的元数据;
其中,所述读缓存的命中率包括预取命中率或重复命中率;其中,所述预取命中率为预设时长内通过预取操作获取待读取数据的数据量与所述预设时长内所述预取操作预取的数据的总数据量的比值;所述重复命中率为所述预设时长内从已缓存的数据中获取待读取数据的数据量与所述已缓存的数据的总数据量的比值,所述待读取数据为与所述存储系统接收的读数据请求对应的数据;
其中,所述处理模块根据所述读缓存的命中率,调整所述读缓存的大小以及元数据缓存的大小,具体用于:
在所述预取命中率大于或等于第一阈值时,减小所述读缓存以及增大所述元数据缓存;
在所述重复命中率大于或等于第二阈值时,增大所述读缓存以及减小所述元数据缓存。
6.根据权利要求5所述的装置,其特征在于,所述处理模块根据所述读缓存的命中率,调整所述读缓存的大小以及元数据缓存的大小,具体用于:
根据所述读缓存的命中率,确定在所述存储系统读取数据的时延小于或等于第三阈值时,所述读缓存的最小值;
调整所述读缓存的大小为所述最小值,以及,调整所述元数据缓存的大小为所述存储系统的缓存大小与所述最小值的差值,所述存储系统的缓存大小为所述读缓存的大小和所述元数据缓存的大小之和,所述缓存大小为预设阈值。
7.一种计算机存储介质,其特征在于,所述计算机存储介质存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1或2所述的方法。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910790109.2A CN110688062B (zh) | 2019-08-26 | 2019-08-26 | 一种缓存空间的管理方法及装置 |
| EP20857014.3A EP4020153A4 (en) | 2019-08-26 | 2020-08-03 | CACHE SPACE MANAGEMENT METHOD AND APPARATUS |
| PCT/CN2020/106503 WO2021036689A1 (zh) | 2019-08-26 | 2020-08-03 | 一种缓存空间的管理方法及装置 |
| US17/680,739 US11899580B2 (en) | 2019-08-26 | 2022-02-25 | Cache space management method and apparatus |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910790109.2A CN110688062B (zh) | 2019-08-26 | 2019-08-26 | 一种缓存空间的管理方法及装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN110688062A CN110688062A (zh) | 2020-01-14 |
| CN110688062B true CN110688062B (zh) | 2021-03-30 |
Family
ID=69108597
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201910790109.2A Active CN110688062B (zh) | 2019-08-26 | 2019-08-26 | 一种缓存空间的管理方法及装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US11899580B2 (zh) |
| EP (1) | EP4020153A4 (zh) |
| CN (1) | CN110688062B (zh) |
| WO (1) | WO2021036689A1 (zh) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11748269B2 (en) * | 2019-07-29 | 2023-09-05 | Nippon Telegraph And Telephone Corporation | Cache tuning device, cache tuning method, and cache tuning program |
| CN110688062B (zh) | 2019-08-26 | 2021-03-30 | 华为技术有限公司 | 一种缓存空间的管理方法及装置 |
| CN111611179B (zh) * | 2020-05-21 | 2023-09-12 | 深圳佰维存储科技股份有限公司 | 元数据命中率提升方法、装置、存储介质及电子设备 |
| US11507516B2 (en) * | 2020-08-19 | 2022-11-22 | Micron Technology, Inc. | Adaptive cache partitioning |
| CN112417350B (zh) | 2020-09-17 | 2023-03-24 | 上海哔哩哔哩科技有限公司 | 数据存储调整方法、装置及计算机设备 |
| CN114691024B (zh) * | 2020-12-31 | 2025-05-16 | 华为技术有限公司 | 数据预取的方法、装置和设备 |
| CN114968073A (zh) * | 2021-02-27 | 2022-08-30 | 华为技术有限公司 | 数据预取的方法、设备及系统 |
| CN115454957A (zh) * | 2022-09-05 | 2022-12-09 | 北京同有飞骥科技股份有限公司 | 分布式文件系统客户端及其缓存优化方法 |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5696932A (en) * | 1995-05-16 | 1997-12-09 | International Business Machines Corporation | Method and system for estimating minumun requirements on a cache in a computer based storage system |
| US20070083711A1 (en) * | 2005-10-07 | 2007-04-12 | International Business Machines Corporation | Reconfiguring caches to support metadata for polymorphism |
| JP2007241927A (ja) * | 2006-03-13 | 2007-09-20 | Toshiba Corp | データ記憶装置及び方法 |
| WO2012116369A2 (en) * | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
| CN102763070B (zh) * | 2011-11-01 | 2015-08-19 | 华为技术有限公司 | 磁盘缓存的管理方法及装置 |
| GB201315435D0 (en) * | 2013-08-30 | 2013-10-16 | Ibm | Cache management in a computerized system |
| CN103902474B (zh) * | 2014-04-11 | 2017-02-08 | 华中科技大学 | 一种支持固态盘缓存动态分配的混合存储系统和方法 |
| CN105868124A (zh) * | 2015-01-19 | 2016-08-17 | 华为技术有限公司 | 重复数据删除系统及其动态缓存的分配方法 |
| US9921963B1 (en) * | 2015-01-30 | 2018-03-20 | EMC IP Holding Company LLC | Method to decrease computation for cache eviction using deferred calculations |
| US10282294B2 (en) * | 2017-02-15 | 2019-05-07 | Samsung Electronics Co., Ltd. | Mitigating DRAM cache metadata access overhead with SRAM metadata cache and bloom filter |
| US10621094B2 (en) * | 2017-06-28 | 2020-04-14 | Intel Corporation | Coarse tag replacement |
| CN109344092B (zh) * | 2018-09-11 | 2023-06-23 | 天津易华录信息技术有限公司 | 一种提高冷存储数据读取速度的方法和系统 |
| CN110688062B (zh) * | 2019-08-26 | 2021-03-30 | 华为技术有限公司 | 一种缓存空间的管理方法及装置 |
-
2019
- 2019-08-26 CN CN201910790109.2A patent/CN110688062B/zh active Active
-
2020
- 2020-08-03 EP EP20857014.3A patent/EP4020153A4/en active Pending
- 2020-08-03 WO PCT/CN2020/106503 patent/WO2021036689A1/zh not_active Ceased
-
2022
- 2022-02-25 US US17/680,739 patent/US11899580B2/en active Active
Also Published As
| Publication number | Publication date |
|---|---|
| WO2021036689A1 (zh) | 2021-03-04 |
| CN110688062A (zh) | 2020-01-14 |
| EP4020153A1 (en) | 2022-06-29 |
| EP4020153A4 (en) | 2022-10-19 |
| US11899580B2 (en) | 2024-02-13 |
| US20220179785A1 (en) | 2022-06-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110688062B (zh) | 一种缓存空间的管理方法及装置 | |
| US10346067B2 (en) | Multi-tier file storage management using file access and cache profile information | |
| US9495294B2 (en) | Enhancing data processing performance by cache management of fingerprint index | |
| CN106547476B (zh) | 用于数据存储系统的方法和装置 | |
| CN108268219B (zh) | 一种处理io请求的方法及装置 | |
| CN103329111B (zh) | 一种基于块存储的数据处理方法、装置及系统 | |
| US20210271650A1 (en) | Method and apparatus for performing deduplication management with aid of command-related filter | |
| US11809330B2 (en) | Information processing apparatus and method | |
| US20140101115A1 (en) | Segment group-based segment cleaning apparatus and methods for storage units | |
| CN105637470B (zh) | 用于脏数据管理的方法和计算设备 | |
| US10296466B2 (en) | Information processing device, method of controlling a cache memory, and storage medium | |
| US11093410B2 (en) | Cache management method, storage system and computer program product | |
| TW201140430A (en) | Allocating storage memory based on future use estimates | |
| CN119292962B (zh) | 共享缓存的管理方法、装置及存储介质 | |
| CN112954244A (zh) | 监控录像的存储实现方法、装置、设备及存储介质 | |
| EP4016276A1 (en) | Data deduplication method and apparatus | |
| CN110908595B (zh) | 存储装置及信息处理系统 | |
| WO2021062982A1 (zh) | 管理hmb内存的方法、装置、计算机设备及存储介质 | |
| US20060143395A1 (en) | Method and apparatus for managing a cache memory in a mass-storage system | |
| CN115080459A (zh) | 缓存管理方法及装置、计算机可读存储介质 | |
| WO2014153931A1 (zh) | 文件存储方法、装置、访问客户端及元数据服务器系统 | |
| US11662932B2 (en) | Tiered storage system with defragmentation based on weighted flash fragmentation factor | |
| WO2023102784A1 (zh) | 数据存取方法、装置、磁盘控制器、磁盘和数据存储系统 | |
| CN104636078A (zh) | 用于对多种类型的存储等级组的非易失性存储(nvs)的有效阈值化的方法和系统 | |
| WO2017031637A1 (zh) | 一种内存访问方法、装置和系统 |
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 |