CN110688062B - 一种缓存空间的管理方法及装置 - Google Patents

一种缓存空间的管理方法及装置 Download PDF

Info

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
Application number
CN201910790109.2A
Other languages
English (en)
Other versions
CN110688062A (zh
Inventor
谭春华
夏锋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201910790109.2A priority Critical patent/CN110688062B/zh
Publication of CN110688062A publication Critical patent/CN110688062A/zh
Priority to PCT/CN2020/106503 priority patent/WO2021036689A1/zh
Priority to EP20857014.3A priority patent/EP4020153A4/en
Application granted granted Critical
Publication of CN110688062B publication Critical patent/CN110688062B/zh
Priority to US17/680,739 priority patent/US11899580B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/463File
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory

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所述的方法。
CN201910790109.2A 2019-08-26 2019-08-26 一种缓存空间的管理方法及装置 Active CN110688062B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201910790109.2A CN110688062B (zh) 2019-08-26 2019-08-26 一种缓存空间的管理方法及装置
PCT/CN2020/106503 WO2021036689A1 (zh) 2019-08-26 2020-08-03 一种缓存空间的管理方法及装置
EP20857014.3A EP4020153A4 (en) 2019-08-26 2020-08-03 METHOD AND DEVICE FOR MANAGING CACHE MEMORY SPACE
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7259967B2 (ja) * 2019-07-29 2023-04-18 日本電信電話株式会社 キャッシュチューニング装置、キャッシュチューニング方法、および、キャッシュチューニングプログラム
CN110688062B (zh) * 2019-08-26 2021-03-30 华为技术有限公司 一种缓存空间的管理方法及装置
CN111611179B (zh) * 2020-05-21 2023-09-12 深圳佰维存储科技股份有限公司 元数据命中率提升方法、装置、存储介质及电子设备
CN112417350B (zh) * 2020-09-17 2023-03-24 上海哔哩哔哩科技有限公司 数据存储调整方法、装置及计算机设备
CN114968073A (zh) * 2021-02-27 2022-08-30 华为技术有限公司 数据预取的方法、设备及系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
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 データ記憶装置及び方法
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
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 华为技术有限公司 一种缓存空间的管理方法及装置

Also Published As

Publication number Publication date
CN110688062A (zh) 2020-01-14
US20220179785A1 (en) 2022-06-09
WO2021036689A1 (zh) 2021-03-04
EP4020153A4 (en) 2022-10-19
EP4020153A1 (en) 2022-06-29
US11899580B2 (en) 2024-02-13

Similar Documents

Publication Publication Date Title
CN110688062B (zh) 一种缓存空间的管理方法及装置
US9495294B2 (en) Enhancing data processing performance by cache management of fingerprint index
EP3229142B1 (en) Read cache management method and device based on solid state drive
CN106547476B (zh) 用于数据存储系统的方法和装置
CN108268219B (zh) 一种处理io请求的方法及装置
CN110502452B (zh) 访问电子设备中的混合缓存的方法及装置
US7818505B2 (en) Method and apparatus for managing a cache memory in a mass-storage system
US11809330B2 (en) Information processing apparatus and method
US20140101115A1 (en) Segment group-based segment cleaning apparatus and methods for storage units
US10296466B2 (en) Information processing device, method of controlling a cache memory, and storage medium
US9591096B2 (en) Computer system, cache control method, and server
US11314689B2 (en) Method, apparatus, and computer program product for indexing a file
US11093410B2 (en) Cache management method, storage system and computer program product
US8856439B2 (en) Method and device for utilizing application-level prior knowledge for selectively storing data in higher performance media
CN112954244A (zh) 监控录像的存储实现方法、装置、设备及存储介质
CN110555001A (zh) 数据处理方法、装置、终端及介质
CN112527492A (zh) 一种分布式存储系统中的数据存储方法及装置
US20220164316A1 (en) Deduplication method and apparatus
WO2021062982A1 (zh) 管理hmb内存的方法、装置、计算机设备及存储介质
WO2014153931A1 (zh) 文件存储方法、装置、访问客户端及元数据服务器系统
CN113094392A (zh) 数据缓存的方法和装置
CN110750211A (zh) 一种存储空间的管理方法及装置
WO2017031637A1 (zh) 一种内存访问方法、装置和系统
CN116027982A (zh) 数据处理方法、设备及可读存储介质
US9244693B2 (en) System and method for booting multiple servers from snapshots of an operating system installation image while reducing access to unmodified portions of the installation image and reducing latencies between server ports

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