CN111737168A - 一种缓存系统、缓存处理方法、装置、设备及介质 - Google Patents
一种缓存系统、缓存处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN111737168A CN111737168A CN202010585684.1A CN202010585684A CN111737168A CN 111737168 A CN111737168 A CN 111737168A CN 202010585684 A CN202010585684 A CN 202010585684A CN 111737168 A CN111737168 A CN 111737168A
- Authority
- CN
- China
- Prior art keywords
- cache
- storage node
- target
- access
- reuse
- 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.)
- Pending
Links
Images
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/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
Abstract
本申请实施例公开了一种缓存系统、缓存处理方法、装置、设备及介质,其中方法包括:依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线,在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,并依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。本申请实施例,可依照I/O请求实时分析出各存储节点的缓存命中率曲线,并基于各存储节点的缓存命中率曲线搜索出最佳缓存配置方案,动态调整各缓存实例的缓存空间,有利于实现缓存空间的按需分配,有效提高缓存利用率。
Description
技术领域
本申请涉及互联网技术领域,具体涉及计算机技术领域,尤其涉及一种缓存系统、一种缓存处理方法、一种缓存处理装置、一种缓存处理设备及一种计算机存储介质。
背景技术
在目前的业务系统设计中,往往需要使用缓存加速数据的访问,提高业务系统的处理能力。存放于缓存中的数据(即缓存数据)通常可以为热点数据(如频繁使用的数据)。
实际应用中,缓存数据可通过缓存处理设备(例如缓存服务器)或者缓存系统中的缓存实例进行管理,通常为多个缓存实例争夺同一个缓存资源池。这种情况下,为确保业务系统的服务性能,如何对各个缓存实例的缓存资源进行合理分配成为一个亟待解决的问题。
发明内容
本申请实施例提供了一种缓存系统、缓存处理方法、装置、设备及介质,可依照I/O请求实时分析出各存储节点的缓存命中率曲线,并基于各存储节点的缓存命中率曲线搜索出最佳缓存配置方案,动态调整各缓存实例的缓存空间。
一方面,本申请实施例提供了一种缓存系统,包括缓存控制模块、缓存分析模块和至少一个缓存实例,各缓存实例为各自对应的存储节点提供数据缓存的服务,其中:
缓存分析模块,用于依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线,在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,并将目标缓存配置方案同步至缓存控制模块,该目标缓存配置方案为使得各存储节点达到优化目标时的缓存配置方案,目标缓存配置方案指示了各存储节点的待配缓存空间大小;
缓存控制模块,用于依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。
另一方面,本申请实施例提供了一种缓存处理方法,应用于缓存系统,该缓存系统包括缓存控制模块、缓存分析模块和至少一个缓存实例,各缓存实例为各自对应的存储节点提供数据缓存的服务,该方法包括:
依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线;
在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,该目标缓存配置方案为使得各存储节点达到优化目标的缓存配置方案,目标缓存配置方案指示了各存储节点的待配缓存空间大小;
依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。
再一方面,本申请实施例提供了一种缓存处理装置,该装置包括:
处理单元,用于依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线;
所述处理单元,还用于在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,目标缓存配置方案为使得各存储节点达到优化目标的缓存配置方案,目标缓存配置方案指示了各存储节点的待配缓存空间大小;
调整单元,用于依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。
相应地,本申请实施例还提供了一种缓存处理设备,包括处理器和存储装置;该缓存处理设备包括处理器和存储装置;所述存储装置,用于存储程序指令;所述处理器,调用所述程序指令,用于执行如下步骤:
依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线;
在满足缓存处理条件时,基于最新时刻所述各存储节点的缓存命中率曲线确定目标缓存配置方案,该目标缓存配置方案为使得各存储节点达到优化目标的缓存配置方案,目标缓存配置方案指示了各存储节点的待配缓存空间大小;
依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。
相应地,本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,该程序指令被执行时,用于实现上述的各方法。
本申请实施例中可依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线,在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,并依照该目标缓存配置方案动态调整各缓存实例的缓存空间,有利于实现缓存空间的按需分配,有效提高缓存利用率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的一种云块存储系统的结构示意图;
图2a是本申请实施例提供的一种缓存系统的结构示意图;
图2b是本申请实施例提供的一种云块存储系统的结构示意图;
图3是本申请实施例提供的一种缓存处理方法的流程示意图;
图4a是本申请实施例提供的一种缓存命中率曲线的示意图;
图4b是本申请实施例提供的一种重用距离分布的示意图;
图4c是本申请实施例提供的一种重用率计算的场景示意图;
图4d是本申请实施例提供的一种重用率曲线的示意图;
图5a是本申请实施例提供的一种重用率计算的场景示意图;
图5b是本申请实施例提供的一种缓存命中率曲线计算的场景示意图;
图6是本申请实施例提供的一种缓存处理装置的结构示意图;
图7是本申请实施例提供的一种缓存处理设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,缓存分配的方法可包括平均分配和固定分配方法。其中,平均分配方法为预先分析总缓存空间需求,根据定义的服务级别目标,为每个缓存实例统一分配缓存资源。例如,总缓存空间大小为5GB,缓存实例有5个,那么,为每个缓存实例分配的缓存空间大小可为1GB。固定分配是为每个缓存实例分配相同或者不同的缓存资源。例如,总缓存空间大小为5GB,缓存实例有5个,可配置第一缓存实例的缓存空间大小为2GB,第二缓存实例和第三缓存实例的缓存空间大小均为1GB,第四缓存实例和第五缓存实例的缓存空间大小均为0.5GB。
上述两种分配方法,本质上是一个静态分配策略,如果缓存实例的缓存空间配置过多,则可能导致缓存资源的利用率不足;如果缓存实例的缓存空间配置不足,则可能导致缓存的性能降低,尤其在工作负载高度倾斜且动态变化的场景(例如CBS(Cloud blockstorage,云块存储)系统)下,缓存性能较低。
其中,CBS是一种常用的云存储架构,可为用户提供一种通用的块级云存储服务。云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID,IDentity)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。
示例性地,上述云块存储系统可以如图1所示,云块存储系统包括客户端、云虚拟机、用于提供缓存服务的缓存系统和用于提供存储服务的存储系统等部分。各部分间通过网络进行连接,实现相互通讯以及数据传输。基于云块存储系统提供的云虚拟机,客户端可以像访问本地硬盘一样访问远端的块级存储服务。其中,缓存系统包括多个缓存实例(如图1中的实例1~实例N,该N为大于0的整数),一个缓存实例为一个存储节点提供数据缓存的服务,以提高数据的访问速率。各缓存实例可以理解为各个独立运行于缓存系统的缓存服务进程,用于管理各自对应的存储节点的缓存数据。缓存数据通过多个缓存块存储,这些缓存块被分配给了不同的缓存实例进行管理,每一个缓存实例所管理的数据块用于缓存对应存储节点的数据,也即,每一个缓存实例所管理的数据块存储的缓存数据,可以视为该缓存实例对应存储节点所存储数据的副本。
在云块存储系统中,缓存系统和存储系统可部署于同一台物理设备,相应地,缓存服务和存储服务由同一台物理设备提供,该物理设备可以为存储设备(如存储服务器),通常可从存储设备的物理内存中划分一块空间作为高速缓存(Cache),即从存储资源中复制频繁使用的数据到Cache中,用于提供缓存服务。在接收到读数据请求时,首先访问Cache,检查Cache是否保存了要访问的地址的数据,如果是,则将数据快速返回;如果否,直接访问磁盘,并把从磁盘中读取的数据保存在Cache中,便于下一次访问该地址的数据。在接收到写数据请求时,把数据写入到Cache中,命令直接返回。后续可根据特定的策略在后台自动刷新Cache中的数据到磁盘中,释放Cache的空间。通过Cache技术,可有效利用物理内存高速访问的特性来优化整个云块存储系统的性能。
或者,缓存系统和存储系统也可分别部署于不同的物理设备,例如缓存系统部署于缓存服务器,通过缓存服务器提供缓存服务;存储系统部署于存储服务器,通过存储服务器提供存储服务。该缓存服务器和存储服务器均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
上述客户端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等终端设备,也可以是运行于终端设备的应用(例如游戏应用、车联网应用、视频应用等)或者网络平台,但并不局限于此。
本申请实施例提出了一种缓存系统,可以部署于CBS系统,也可以部署于其它存储系统,请参见图2a,该缓存系统包括缓存控制模块、缓存分析模块和至少一个缓存实例,各缓存实例为各自对应的存储节点提供数据缓存的服务。其中:缓存分析模块,用于依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线,在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,并将目标缓存配置方案同步至缓存控制模块,该目标缓存配置方案为使得各存储节点达到优化目标时的缓存配置方案,目标缓存配置方案指示了各存储节点的待配缓存空间大小。缓存控制模块,用于依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。
在本申请实施例中,当缓存分析模块将目标缓存配置方案同步至缓存控制模块之后,缓存控制模块可以实时依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小,也可以周期性地对各存储节点的待配缓存空间大小进行调整(例如12小时执行一次),本申请对此不作具体限定。
通过本申请实施提出的缓存系统,可依照I/O请求实时分析出各存储节点的缓存命中率曲线,并基于各存储节点的缓存命中率曲线搜索出最佳缓存配置方案,动态调整各缓存实例的缓存空间,有利于实现缓存空间的按需分配,有效提高缓存利用率。
缓存是CBS系统的重要组件,在满足租户的服务目标方面发挥着关键作用。然而,在工作负载高度倾斜且动态变化的CBS场景下,现有的缓存分配方案因性能不佳和无法在线部署等因素,使得这些方案难以在实际系统中的使用。其中,现有的缓存分配方法为了改善上述平均分配和固定分配方法,大致可分为两大类。第一类是启发式的搜索方案,例如TCM,REF等,这些是基于直觉或经验的定性方法。这些方案通常以可接受的计算和空间成本为组合优化问题提供可行的解决方案。例如,根据内存访问特性,TCM将线程归类为对延迟敏感的或对带宽敏感的,当进行缓存分配时,对延迟敏感的线程优先于对带宽敏感的线程。但是,这种粗粒度的定性方法在很大程度上取决于先前的可靠经验或负载规律。因此,对于多样且不断变化的云工作负载,不能保证其效率,此种缓存分配方案的性能不佳。
另一类是基于缓存模型的方案,这些通常是基于命中率曲线的定量分配方案。与启发式的策略相比,基于缓存模型的方案包含有关每个缓存实例的确切的空间需求信息,因此其具有搜索接近最佳解决方案的能力。但这种方法最大的挑战在于如何构造缓存模型准确地确定缓存命中率曲线,由于巨大的计算复杂性和存储成本,大多数缓存模型只能通过离线分析来构建,从而限制了它们在实践中的适用性。
为了解决现有的缓存分配方案在CBS场景下,性能不佳和无法在线部署的问题,请参见图2b,本申请实施例可将缓存系统部署于云块存储系统,该云块存储系统还包括客户端和存储系统,该缓存系统用于提供缓存服务,存储系统用于提供存储服务,图2b所示的云块存储系统相较于图1所示的云块存储系统,主要是在原有的缓存架构中增加了缓存控制模块和分析模块,该缓存架构中原有的缓存索引,缓存数据,以及缓存元数据等部分保持不变。该存储系统包括至少一个存储节点,每个存储节点均包括用于存储数据的数据块(可以参见图1中的数据块),一个存储节点对应一个缓存实例,每个缓存实例用于管理对应存储节点的缓存数据,上述I/O请求为来自云块存储系统中客户端的读写请求,用于读写数据,具体地,I/O请求可以用于读取目标数据块中的目标数据,或者在目标数据块中写入目标数据。
上述缓存分析模块包括I/O请求统计模块、缓存建模模块和搜索模块。其中:
I/O请求统计模块,用于依照当前检测到的I/O请求,更新访问统计信息。具体地,访问统计信息可包括总访问数据块数、重复访问数据块数和各存储节点的访问流量。示例性地,假设一段时间内I/O请求所访问数据块的访问序列为ABCDBDEFBA,重复访问的数据块包括数据块B、D、A,数据块B重复访问了2次,数据块D和A各重复访问了1次,那么这段时间内的总访问块数为10,重复访问数据块数为4。
缓存建模模块,用于依据更新后的访问统计信息更新上一时刻的重用距离分布,得到当前时刻的重用距离分布,并基于预构建的缓存模型和当前时刻的重用距离分布确定当前时刻各存储节点的缓存命中率曲线,该当前时刻的重用距离分布表征了在当前时刻之前,所有I/O请求访问的各数据块的重用距离的分布情况,上一时刻为上一次检测到I/O请求的时刻。其中,该缓存模型是在线部署的,可以实时或者周期性结合重用距离分布,计算系统时间下各存储节点的缓存命中率曲线。
搜索模块,用于在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线,搜索使得各存储节点达到优化目标时的目标缓存配置方案。其中,该优化目标可以为各存储节点的总命中流量达到最大值,还可以为同时满足最小化缓存处理设备的写入量和最大化总命中流量。
上述缓存控制模块,包括实例管理模块和配置下发模块,该实例管理模块用于管理缓存实例(例如增加或者删除缓存实例),配置下发模块用于依照目标缓存配置方案调整各存储节点对应缓存实例的缓存空间大小。
在云块存储系统场景下,如何按需为不同存储节点分配合理的缓存空间,面临着巨大挑战,这需要缓存分配策略依据负载特征确定每个存储节点当前对缓存空间的实际需求。然而,确定缓存空间的需求并非易事,这不仅需要有效的模型进行量化,还需要占用大量的计算资源进行分析。
本申请实施例中,缓存系统可通过缓存分析模块以极低的复杂度搜索到一种接近最优解的目标缓存配置方案,从而提高了缓存系统的缓存效率。其核心思想主要分为三个步骤。第一步,通过缓存建模模块在线部署了一种新型的缓存模型,可以依照I/O请求获取CBS系统中每个存储节点的缓存命中率曲线;第二步,定义优化指标,指出最终的优化目标;第三步,通过搜索模块进行最优策略(即目标缓存配置方案)的搜索,最终依据目标缓存配置方案对各存储节点对应缓存实例的缓存空间实现动态调整,在CBS场景下,可适用于多样且不断变化的云工作负载,使缓存系统达到性能与成本上的最优。
基于上述的描述,本申请实施例提出一种缓存处理方法,应用于上述提到的缓存系统,该缓存系统包括缓存控制模块、缓存分析模块和至少一个缓存实例,各缓存实例为各自对应的存储节点提供数据缓存的服务。请参见图3,该缓存处理方法可包括以下步骤S301-S303:
S301,依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线。其中,上述I/O请求用于访问目标数据块,用于从目标数据块中读取目标数据或者在目标数据块内写入目标数据,该目标数据块为各存储节点包括的任一个数据块。
各存储节点的缓存命中率曲线表征了各存储节点的缓存命中率与缓存空间大小的对应关系,该缓存命中率是决定缓存使用效率最重要指标,缓存命中率越高,则表征缓存所起到的作用才会越大,也即缓存效率越高。示例性地,缓存命中率曲线可如图4a所示,表征了对应存储节点的缓存命中率与缓存空间大小的对应关系。
缓存命中率曲线在指导缓存大小的配置起着至关重要的作用。现有的缓存命中率曲线的获取方法包括模拟法和模型法。模拟法,顾名思义,即通过离线模拟的方法获取不同缓存大小下命中率的分布情况。然而这种方法在大规模云存储系统中难于实现,一方面模拟需要大量的计算资源(多个进程进行模拟),另一方面由于数据量巨大,模拟需要消耗大量的时间。另一种常见是模型法,通过统计重用距离分布,进而转化为命中率曲线。然而现在的重用距离统计方法复杂度极高,很难做到实时在线统计的程度。在本申请实施例中,通过基于重用率的重用距离分布的统计方法可以有效解决上述问题。
其中,重用距离是指同一数据块的两次连续访问间所访问的唯一数据量。例如,假设一个访问序列是A-B-C-C-D-B-D-D-A,数据块A的重用距离是3,因为A的两次连续访问之间的唯一数据量是{B,C,D}。重用距离分布表征了所有数据块重用距离的分布情况。如图4b所示,是一个典型的重用距离分布图,其横坐标是重用距离,纵坐标是对应重用距离所占的比例。
对于典型的LRU缓存算法而言,只有当数据块的重用距离小于缓存大小时,才能被命中。缓存在对应缓存空间下的缓存命中率可以如下式1.1转化为重用距离分布的函数。式1.1中,hr(c)表示缓存空间大小为c时的缓存命中率,r(i)表示重用距离为i所占的比例。
基于此,本申请实施例中依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线的具体实施方式可以:根据当前时刻检测到的I/O请求更新访问统计信息,依据更新后的访问统计信息更新上一时刻的重用距离分布,得到当前时刻的重用距离分布,基于预构建的缓存模型和当前时刻的重用距离分布确定当前时刻各存储节点的缓存命中率曲线,其中,当前时刻的重用距离分布表征了在当前时刻之前,所有I/O请求访问的各数据块的重用距离的分布情况,该上一时刻为上一次检测到I/O请求的时刻。
作为一种可行的实施方式,可依照预构建的缓存模型和当前时刻的重用距离分布,确定当前时刻各存储节点在各缓存空间大小下的缓存命中率,并基于当前时刻各存储节点在各缓存空间大小下的缓存命中率,生成当前时刻各存储节点的缓存命中率曲线。具体实现中,上述预构建的缓存模型可以通过上述式1.1构建,可以预先配置多个不同的缓存空间大小c,当确定出当前时刻的重用距离分布之后,可通过式1.1计算各存储节点在不同c值下的缓存命中率,进而基于各存储节点在不同c值下的缓存命中率绘制当前时刻各存储节点的缓存命中率曲线。该缓存命中率曲线可如图4a所示。
然而,由于目前获取重用距离分布的复杂度为O(N*M),使其无法在实际系统中得到应用,其中,N是访问序列中的引用总数(即总访问数据块数),M是引用的唯一数据块数(即上述提到的唯一数据量)。为了降低获取重用距离分别的复杂度,目前已提出了多种方法可以将计算复杂度降低到O(Nlog(n)),如利用搜索树、比例树、区间树等方法。但这些方法本质上,每次的计算仍是对数级别的,计算量较大。
本申请实施例可通过一种基于重用率的缓存模型(RAR-CM)构建重用距离分布,进而基于该重用距离分布转化为命中率曲线。具体地,可以基于重用率计算重用距离分布,该方法最大的优势在于可以在线部署且获取重用距离分布的复杂度较低,并不需要采集I/O日志进行离线分析。
根据重用距离的定义可知,重用距离可以按照以下公式式1.2转换为重用率。
重用距离=总访问数据块数*(1-重用率)式1.2
其中,重用率指一段时间内重复访问数据块数占总访问数据块数的比例。如图4c所示,给出了重用率的一个示例,图中显示了一个时间间隔τ内的重用率为40%。该时间间隔τ内,重复访问数据块数为4(图4c中黑色加粗的4个数据块),总访问块为10,因此重用率为40%。由重用率的定义可知,某段时间内的重用率可以通过统计这段时间内的总访问数据块数以及重复访问数据块数求得。
依据图4c可知,在一段确定的访问序列中,重用率与两个参数有关,即起始时间t和时间间隔τ,本申请实施例中,可将重用率记作RAR(t,τ),表示从时间t开始,τ时间段内的重用率。当τ为自变量变化(增加或者减少)时,RAR(t,τ)也会随之变化,此时,可以称RAR(t,τ)为t时刻的重用率函数,其构成的曲线图为重用率曲线(如图4d所示)。在实现过程中,可以绘制出所有时刻的重用率曲线RAR(t,τ),但是这种方法复杂度较高。通过实验数据分析发现,重用率曲线的变化相对较少,图4d显示了某一存储节点6天的重用率曲线,可以看到6天内重用率曲线变化相对较小,因此,在申请实施例中,可以在指定周期内只存储一条重用率曲线,例如一天只存储一条重用率曲线。这种情况下,在进行任一个数据块的重用距离计算时,可以直接使用上一个指定周期已经绘制完成的重用率曲线(即本申请实施例提到的指定重用率曲线),计算该数据块的重用距离。相应地,在每次检测到新的I/O请求时,也需要生成新的重用率曲线,当下一个指定周期到达时,基于新的重用率曲线替换上一个指定周期的重用率曲线。
为了降低获取重用距离分布的复杂度,本申请实施例中,当每次检测到新的I/O请求时,均可以根据当前检测到的I/O请求更新访问统计信息,并基于更新后的访问统计信息确定目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数,并从指定重用率曲线中查找目标时间间隔下的目标重用率,该目标时间间隔为t1-lt,该指定重用率曲线表征了各个时间间隔与重用率的对应关系。
其中,该指定重用率曲线指为上述提到的上一个指定周期已经绘制完成的重用率曲线。例如,上一个指定周期为2020年6月9日这一天,当前系统时间为2020年6月10日21:39,这种情况下,可以直接将2020年6月9日这一天绘制完成的重用率曲线确定为上述指定重用率曲线。
进一步地,可以依照重用距离函数对目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数和目标重用率进行计算,得到目标数据块的重用距离,并基于目标数据块的重用距离更新上一时刻的重用距离分布,得到当前时刻的重用距离分布。
可以理解是,由于每一次I/O请求均涉及到一个目标数据块的访问,一个目标数据块的重用距离计算,那么本申请实施例中提到的基于目标数据块的重用距离更新上一时刻的重用距离分布。本质上,随着时间的推移,可以理解为基于当前确定出的目标数据块的重用距离,不断的更新之前构建的重用距离分布,从而得到当前时刻的重用距离分布。
其中,上述重用距离函数如下式1.3所示。其中,rd(x)表示数据块x的重用距离,T(t,τ)表示数据块x从上一次访问的时间t到当前时刻t1之间的总访问数据块数,时间间隔τ=t1-t,RAR(t,τ)为数据块x在时间间隔τ下的重用率。
rd(x)=(1-RAR(t,τ))×T(t,τ)式1.3
示例性地,假设系统时间下I/O请求访问的目标数块为数据块B,B上一次访问的时间lt为08:00,当前时刻t1为09:00,基于更新后的访问统计信息确定数据块B从上一次访问的时间lt到当前时刻t1之间的总访问数据块数100(即T(t,τ)=100),从指定重用率曲线中查找目标时间间隔(t1-lt=1小时)下的目标重用率为0.88(RAR(t,τ)=0.88),那么可以通过式1.3计算得到数据块B的重用距离为12。
在一个实施例中,上述访问统计信息包括总访问数据块数,当每次检测到I/O请求时,可以检测哈希图中是否包括该目标数据块的历史信息,若不包括,则确定该目标数据块为新数据块,那么可以在哈希图中写入该新数据块的相关信息,相关信息包括新数据块包括当前的系统时间(也可以理解为该新数据被访问的时间)和新数据块被访问后的块序列号(也可以理解为截止到目前为止的总访问数据块数,或者相当于此时该新数据块对应的块序列号)。
若检测到哈希图中包括目标数据块的历史信息,相当于目标数据块为重复访问数据块,则可从目标数据块的历史信息中获取上一次访问目标数据块的时间lt和上一次访问目标数据块对应的块序列号,将更新后的总访问数据块数与上一次访问目标数据块对应的块序列号相减,得到目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数。
可以理解是,在当前时刻检测到的I/O请求访问的目标数块块为重复数据块的情况下,同样可以记录此时的系统时间和本次目标数据块被访问后的块序列号,后续依照上述方法得到目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数,可以将该目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数输入上述式1.3计算得到目标数据块的重用距离。并在计算出目标数据块的重用距离之后,将上述记录的系统时间和本次目标数据块被访问后的块序列号写入哈希图,作为下一次目标数据块被访问时,计算重用距离所需的上述历史信息。
S302,在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,该目标缓存配置方案为使得各存储节点达到优化目标的缓存配置方案,目标缓存配置方案指示了各存储节点的待配缓存空间大小。
其中,上述缓存处理条件可以为时间条件,该时间条件可以为当前时刻到达缓存配置方案的更新时间,例如缓存配置方案的更新周期为1天,具体的更新时间为00:00,那么可以在检测到当前时刻到达00:00时,确定满足缓存处理条件;或者,该缓存处理条件为检测到缓存配置方案的更新指令,该更新指令可人为输入。
在一个实施例中,上述访问统计信息包括各存储节点的访问流量,每个存储节点的访问流量可通过使用一个16位的无符号整型变量进行统计,每次有新的访问流量产生,增加该变量值即可。各存储节点的缓存命中率曲线表征了各存储节点的缓存命中率与缓存空间大小的对应关系(可参见图4a)。这种情况下,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案的具体实施方式可以为:依照各存储节点的访问流量搜索使得各存储节点的总命中流量最大时,各存储节点的目标缓存命中率,其中,总命中流量为各存储节点的访问流量与缓存命中率之间乘积的和值。
进一步地,将最新时刻各存储节点的缓存命中率曲线中,与各存储节点的目标缓存命中率对应的缓存空间大小确定为各存储节点的待配缓存空间大小,并基于各存储节点的待配缓存空间大小生成目标缓存配置方案。
其中,在上述场景下,为达到命中率与成本的最优,定义缓存的效率函数E(目标函数,如下式1.4所示)。其中HitRatioi表示i存储节点的缓存命中率,Traffic为i存储节点的访问流量。因此,这个公式代表的是总命中流量,最终的优化目标则是搜索出最佳配置,使得E(即各存储节点的总命中流量)达到最大值。
最佳配置的搜索过程是寻找一组合适的[CacheSize0,CacheSize1,……,CacheSizeN],使得E值最大,其中CacheSizeN表示存储节点N的待配缓存空间大小,这是一个求最优解的过程。作为一种可行的实施方式,可以通过暴力查找,找出所有组合中使得E最大的组合。具体地,可以基于式1.4通过暴力搜索的方式,确定使得E最大时,各存储节点的目标缓存命中率,进一步地,可以从各存储节点的缓存命中率曲线中查找各自的目标缓存命中率对应的缓存空间大小,进而将与各存储节点的目标缓存命中率各自对应的缓存空间大小确定为各存储节点的待配缓存空间大小。
但是暴力查找的复杂度极高,为了优化暴力搜索的求解过程,本申请实施例使用动态规划的思想,使用递推的方式避免重复计算,可以将指数级的运算复杂度降低到线性级别。作为另一种实施方式,可通过目标递推公式和最新时刻各存储节点的缓存命中率曲线搜索使得各存储节点的总命中流量最大时,各存储节点的待配缓存空间大小,并基于各存储节点的待配缓存空间大小生成目标缓存配置方案。
示例性地,上述目标递推公式可以如式1.5所示,
式1.5中,N是所有存储节点的集合,S是总的缓存资源池的空间大小,T是所有存储节点访问流量的集合。E(node,s,t)是存储节点在缓存空间大小设置为s,访问流量为t时获得的命中流量,E(node,s,t)为通过该存储节点在缓存空间大小为s时的命中率与访问流量t相乘获得。通过式1.5这种迭代递推的方式,最终可以获得全局的最优缓存配置方案,也即,确定出使得各存储节点的总命中流量最大时,各存储节点的待配缓存空间大小。
其中,通过上述目标式1.5搜索最优配置方案的具体递推过程为:首先搜索使得第1个存储节点的E(node1,s,t)达到最大值时,该第1个存储节点的缓存空间大小s1,进一步地,在剩余的N-1个存储节点中搜索,使得第2个存储节点的E(node2,s,t)达到最大值时,该第2个存储节点的缓存空间大小s2,依次类推,最终可以获得全局的最优缓存配置方案。
S303,依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。
在一个实施例中,各缓存实例用于管理各自对应的存储节点的缓存数据,缓存数据通过缓存块存储,依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小的具体实施方式可以为:若依照目标缓存配置方案的指示确定目标存储节点的待配缓存空间大小小于目标存储节点的实际缓存空间大小,则对存储目标缓存数据的缓存块进行释放,目标缓存数据为目标存储节点对应缓存实例所管理的缓存数据。若依照目标缓存配置方案的指示确定目标存储节点的待配缓存空间大小大于目标存储节点的实际缓存空间大小,则为目标存储节点对应的缓存实例分配新的缓存块。其中,目标存储节点为各存储节点的任一个存储节点。
具体地,缓存数据通过多个缓存块存储,这些缓存块被分配给了不同的缓存实例进行管理,一个缓存实例对应一个存储节点,每一个缓存实例所管理的数据块用于缓存对应存储节点的数据,也即,每一个缓存实例所管理的数据块存储的缓存数据,可以视为该缓存实例对应存储节点所存储数据的副本。这种情况下,若依照目标缓存配置方案的指示确定目标存储节点的待配缓存空间大小小于目标存储节点的实际缓存空间大小,为了减少配置过程对缓存性能造成影响,本申请实施例可以只重新分配部分缓存块,作为一种可行的实施方式,可从目标存储节点对应缓存实例所管理的数据块中优先选取最近最久未被访问的数据块进行释放,其他数据块不做调整,被释放的缓存块直接按需分配给需要扩大缓存空间的缓存实例。
示例性地,缓存实例可以通过缓存队列的形式管理缓存块,在管理过程中,可以依据每个缓存块被访问的历史频率,依照历史频率排序从高到低的顺序在缓存队列中对各缓存块进行排序。假设一个缓存块为32KB,目标存储节点为存储节点1,该存储节点1的实际缓存空间大小为200GB,目标缓存配置方案指示的存储节点1的待配缓存空间大小为100GB,这种情况下,需要释放的缓存块数为100GB/32K=3276800个,那么可以存储节点1对应缓存实例的缓存队列中选取排在尾部的3276800个缓存块进行释放。
在一个实施例中,上述访问统计信息包括总访问数据块数、重复访问数据块数和各存储节点的访问流量,上述根据当前时刻检测到的I/O请求更新访问统计信息的具体实施方式可为:根据当前时刻检测到的I/O请求对总访问数据块数增加指定数值,若检测到哈希图中包括目标数据块的历史信息,相当于目标数据块为重复访问数据块,则对重复访问数据块数增加指定数值,并获取I/O请求对应的访问流量,并根据访问流量更新目标数据块对应存储节点的访问流量。其中,上述指定数值是预先配置的,例如可以为1。
具体实现中,可以设置一个总访问计数器(TC),对数据块设置一个重复访问计数器(RC),TC的值即为上述总访问数据块数,RC的值即为重复访问数据块数。
进一步地,在一个实施例中,还可以获取不同时间间隔下的总访问数据块数和重复访问数据块数,依照重用率函数对不同时间间隔下的总访问数据块数和重复访问数据块数进行计算,得到不同时间间隔下的重用率,基于不同时间间隔下的重用率,生成重用率曲线,在检测到重用率曲线更新条件满足时,通过重用率曲线替换指定重用率曲线。
具体实现中,每次检测到用于请求目标数据块的I/O请求,均需要更新上述总访问数据块数和目标数据块的重复访问数据块数,后续可以周期(例如每隔1小时),获取一次当前最新的总访问数据块数和目标数据块的重复访问数据块数,依照重用率函数对当前最新的总访问数据块数和重复访问数据块数进行计算,得到当前时刻t1之前这一时间间隔下的重用率,从而基于当前时刻t1之前这一时间间隔下的重用率,更新重用率曲线。随着时间的推移,可以依照相同的方法,得到不同时间间隔下的重用率,以及绘制出表征该不同时间间隔下重用率的重用率曲线。
其中,通过上述对图4d的描述可知,由于重用率曲线的变化相对较少,在申请实施例中,可以在指定周期内只存储一条重用率曲线,例如一天只存储一条重用率曲线,在进行任一个数据块的重用距离计算时,可以直接使用上一个指定周期已经绘制完成的重用率曲线(即本申请实施例提到的指定重用率曲线)。这种情况下,上述重用率曲线更新条件可以为当前时刻到达下一个指定周期。例如指定周期为一天,上一个指定周期为2020年6月9日这一天,下一个指定周期为2020年6月11日这一天,当前时刻处于2020年6月10日,可以依照上述方法得到2020年6月10这一天的重用率曲线,当检测到当前时刻推移到下一个指定周期,则可以通过2020年6月10这一天的重用率曲线替换上一个指定周期2020年6月9日这一天的重用率曲线。后续,2020年6月11日这一天内数据块的重用距离,均结合2020年6月10日这一天的重用率曲线进行计算。
例如,上述指定时间间隔为1小时,上一个指定周期为2020年6月9日这一天,当前系统时间为2020年6月10日,这种情况下,可以直接将2020年6月9日这一天绘制完成的重用率曲线确定为上述指定重用率曲线。但在2020年6月10这一天,假设从00:00开始,每次检测到用于请求目标数据块的I/O请求,均需要更新上述总访问数据块数和目标数据块的重复访问数据块数,每隔一个周期(例如1小时)获取一次当前最新的总访问数据块数和目标数据块的重复访问数据块数,依照重用率函数对当前最新的总访问数据块数和重复访问数据块数进行计算,得到当前系统时间t1之前这一时间间隔(即t1-00:00)下重用率,从而基于当前系统时间t1之前这一时间间隔下的重用率,更新重用率曲线。随着时间的推移,可以依照相同的方法,得到不同时间间隔下的重用率,以及绘制出表征该不同时间间隔下重用率的重用率曲线。假设该t1为4小时,则可以依照上述方法,依次确定出时间间隔4小时,8小时,12小时,16小时、20小时和24小时下的重用率,并在确定出不同时间间隔下的重用率后更新重用率曲线,得到表征时间间隔4小时,8小时,12小时,16小时、20小时和24小时下的重用率的重用率曲线。
进一步地,当绘制完成2020年6月10日这一天的重用率曲线后,可以通过该重用率曲线替换2020年6月9日这一天的重用率曲线。后续,在下一天(即2020年6月11日)则可以直接使用2020年6月10日这一天的重用率曲线,进行数据块重用距离的计算。
示例性地,重用率函数可以为RAR(t,τ)=RC/TC,其中,t为起始时间和τ为时间间隔,RAR(t,τ)表示从时间t开始,τ时间段内的重用率。假设本次I/O请求访问的目标数块为数据块B,对于该数据块B的重用率计算方法可以参见图5a所示,首先可以检测哈希图中是否包括数据块B的历史信息,若检测到哈希图中包括数据块B的历史信息,相当于数据块B为重复访问数据块,则对数据块对应的重复访问计数器(RC)自增1,否则不自增。对于每次I/O请求,总访问计数器(TC)都要自增1。最后,重用率通过RC/TC求得。
请参见图5b,示出了一种缓存命中率曲线的统计流程图,假设S301中当前检测到的I/O请求访问的目标数据块为数据块B,当前时刻为t1,检测到该I/O请求后,可以从哈希地图中获取数据块B的历史信息,该历史信息包括上一次访问数据块B的时间lt(图5b中记为(lt(B)))和上一次访问目标数据块对应的块序列号lc,进一步地,确定数据块B从上一次访问的时间lt到当前时刻t1之间的总访问数据块数T(t,τ),此处T(t,τ)中的τ=t1-lt,t=lt,依照上述式1.3确定数据块B在时间间隔τ=t1-lt下的重用率(图5b中记为(rd(B)))。进一步地,可以实时基于数据块B的重用距离更新上一时刻的重用距离分布,得到当前时刻的重用距离分布,并基于当前时刻的重用距离分布计算缓存命中率曲线。
本申请实施例,可依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线,在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,并依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。采用这样的方式,可依照I/O请求实时分析出各存储节点的缓存命中率曲线,并基于各存储节点的缓存命中率曲线搜索出最佳缓存配置方案,动态调整各缓存实例的缓存空间,有利于实现缓存空间的按需分配,有效提高缓存利用率。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,该程序指令被执行时,用于实现上述实施例中描述的相应方法。
再请参见图6,是本申请实施例的一种缓存处理装置的结构示意图,本申请实施例的缓存处理装置可以设置在部署有缓存系统(可参见图2a和图2b的相关描述)的缓存处理设备中,该装置包括:
处理单元60,用于依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线;
处理单元60,还用于在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,目标缓存配置方案为使得各存储节点达到优化目标的缓存配置方案,目标缓存配置方案指示了各存储节点的待配缓存空间大小;
调整单元61,用于依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。
本申请实施例的所述装置的一个实现方式中,所述装置包括如下结构。
在一个实施例中,处理单元60,具体用于根据当前时刻检测到的I/O请求更新访问统计信息,依据更新后的访问统计信息更新上一时刻的重用距离分布,得到当前时刻的重用距离分布,基于预构建的缓存模型和当前时刻的重用距离分布确定当前时刻各存储节点的缓存命中率曲线,当前时刻的重用距离分布表征了在当前时刻之前,所有I/O请求访问的各数据块的重用距离的分布情况,上一时刻为上一次检测到I/O请求的时刻。
在一个实施例中,I/O请求用于访问目标数据块,目标数据块为各存储节点包括的任一个数据块,处理单元60,还具体用于基于更新后的访问统计信息确定目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数,从指定重用率曲线中查找目标时间间隔下的目标重用率,目标时间间隔为t1-lt,指定重用率曲线表征了各个时间间隔与重用率的对应关系;依照重用距离函数对目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数和目标重用率进行计算,得到目标数据块的重用距离,并基于该目标数据块的重用距离,更新上一时刻的重用距离分布,得到当前时刻的重用距离分布。
在一个实施例中,访问统计信息包括总访问数据块数,处理单元60,还具体用于若检测到哈希图中包括目标数据块的历史信息,则从历史信息中获取上一次访问目标数据块的时间lt和上一次访问目标数据块对应的块序列号,将更新后的总访问数据块数与块序列号相减,得到目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数。
在一个实施例中,处理单元60,还具体用于依照预构建的缓存模型和当前时刻的重用距离分布,确定当前时刻各存储节点在各缓存空间大小下的缓存命中率,基于当前时刻各存储节点在各缓存空间大小下的缓存命中率,生成当前时刻各存储节点的缓存命中率曲线。
在一个实施例中,访问统计信息包括各存储节点的访问流量,各存储节点的缓存命中率曲线表征了各存储节点的缓存命中率与缓存空间大小的对应关系,处理单元60,还具体用于依照各存储节点的访问流量搜索使得各存储节点的总命中流量最大时,各存储节点的目标缓存命中率,总命中流量为各存储节点的访问流量与缓存命中率之间乘积的和值;将最新时刻各存储节点的缓存命中率曲线中,与各存储节点的目标缓存命中率对应的缓存空间大小确定为各存储节点的待配缓存空间大小,基于各存储节点的待配缓存空间大小生成目标缓存配置方案。
在一个实施例中,处理单元60,还具体用于通过目标递推公式和最新时刻各存储节点的缓存命中率曲线搜索使得各存储节点的总命中流量最大时,各存储节点的待配缓存空间大小,基于各存储节点的待配缓存空间大小生成目标缓存配置方案。
在一个实施例中,访问统计信息包括总访问数据块数、重复访问数据块数和所述各存储节点的访问流量,处理单元60,还具体用于根据当前时刻检测到的I/O请求对总访问数据块数增加指定数值,若检测到哈希图中包括目标数据块的历史信息,则对重复访问数据块数增加指定数值,获取I/O请求对应的访问流量,并根据访问流量更新目标数据块对应存储节点的访问流量。
在一个实施例中,处理单元60,还用于获取不同时间间隔下的总访问数据块数和重复访问数据块数,依照重用率函数对不同时间间隔下的总访问数据块数和重复访问数据块数进行计算,得到不同时间间隔下的重用率,基于不同时间间隔下的重用率,生成重用率曲线,在检测到重用率曲线更新条件满足时,通过重用率曲线替换指定重用率曲线。
在一个实施例中,各缓存实例用于管理各自对应的存储节点的缓存数据,缓存数据通过缓存块存储,调整单元61,具体用于若依照目标缓存配置方案的指示确定目标存储节点的待配缓存空间大小小于目标存储节点的实际缓存空间大小,则对存储目标缓存数据的缓存块进行释放,目标缓存数据为目标存储节点对应缓存实例所管理的缓存数据;
若依照目标缓存配置方案的指示确定目标存储节点的待配缓存空间大小大于目标存储节点的实际缓存空间大小,则为目标存储节点对应的缓存实例分配新的缓存块;其中,目标存储节点为所述各存储节点的任一个存储节点。
在本申请实施例中,上述各个单元的具体实现可参考前述各个附图所对应的实施例中相关内容的描述。
本申请实施例中的缓存处理装置可依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线,在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,并依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。采用这样的方式,可依照I/O请求实时地分析出各存储节点的缓存命中率曲线,并基于各存储节点的缓存命中率曲线搜索出最佳缓存配置方案,动态调整各缓存实例的缓存空间,有利于实现缓存空间的按需分配,有效提高缓存利用率。
再请参见图7,是本申请实施例的一种缓存处理设备的结构示意图,该缓存处理设备部署有缓存系统(可参见图2a和图2b的相关描述),该缓存处理设备例如可以为缓存服务器,用于提供缓存服务。本申请实施例的缓存处理包括供电模块等结构,并包括处理器70、存储装置71以及通信接口72。所述处理器70、存储装置71以及通信接口72之间可以交互数据,由处理器70实现相应的缓存处理功能。
所述存储装置71可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储装置71也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),固态硬盘(solid-state drive,SSD)等;所述存储装置71还可以包括上述种类的存储器的组合。
所述处理器70可以是中央处理器70(central processing unit,CPU)。在一个实施例中,所述处理器70还可以是图形处理器70(Graphics Processing Unit,GPU)。所述处理器70也可以是由CPU和GPU的组合。在所述缓存处理设备中,可以根据需要包括多个CPU和GPU进行相应的缓存处理。
在一个实施例中,所述存储装置71用于存储程序指令。所述处理器70可以调用所述程序指令,实现如本申请实施例中上述涉及的各种方法。
在第一个可能的实施方式中,所述缓存处理设备的所述处理器70,调用所述存储装置71中存储的程序指令,用于通过通信接口72检测I/O请求,并依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线;在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,该目标缓存配置方案为使得各存储节点达到优化目标的缓存配置方案,目标缓存配置方案指示了各存储节点的待配缓存空间大小;依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。
在一个实施例中,处理器70,具体用于根据通信接口72当前时刻检测到的I/O请求更新访问统计信息,依据更新后的访问统计信息更新上一时刻的重用距离分布,得到当前时刻的重用距离分布,基于预构建的缓存模型和当前时刻的重用距离分布确定当前时刻各存储节点的缓存命中率曲线,当前时刻的重用距离分布表征了在当前时刻之前,所有I/O请求访问的各数据块的重用距离的分布情况,上一时刻为上一次检测到I/O请求的时刻。
在一个实施例中,I/O请求用于访问目标数据块,目标数据块为各存储节点包括的任一个数据块,处理器70,还具体用于基于更新后的访问统计信息确定目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数,从指定重用率曲线中查找目标时间间隔下的目标重用率,目标时间间隔为t1-lt,指定重用率曲线表征了各个时间间隔与重用率的对应关系;依照重用距离函数对目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数和目标重用率进行计算,得到目标数据块的重用距离,并基于该目标数据块的重用距离,更新上一时刻的重用距离分布,得到当前时刻的重用距离分布。
在一个实施例中,访问统计信息包括总访问数据块数,处理器70,还具体用于若检测到哈希图中包括目标数据块的历史信息,则从历史信息中获取上一次访问目标数据块的时间lt和上一次访问目标数据块对应的块序列号,将更新后的总访问数据块数与块序列号相减,得到目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数。
在一个实施例中,处理器70,还具体用于依照预构建的缓存模型和当前时刻的重用距离分布,确定当前时刻各存储节点在各缓存空间大小下的缓存命中率,基于当前时刻各存储节点在各缓存空间大小下的缓存命中率,生成当前时刻各存储节点的缓存命中率曲线。
在一个实施例中,访问统计信息包括各存储节点的访问流量,各存储节点的缓存命中率曲线表征了各存储节点的缓存命中率与缓存空间大小的对应关系,处理器70,还具体用于依照各存储节点的访问流量搜索使得各存储节点的总命中流量最大时,各存储节点的目标缓存命中率,总命中流量为各存储节点的访问流量与缓存命中率之间乘积的和值;将最新时刻各存储节点的缓存命中率曲线中,与各存储节点的目标缓存命中率对应的缓存空间大小确定为各存储节点的待配缓存空间大小,基于各存储节点的待配缓存空间大小生成目标缓存配置方案。
在一个实施例中,处理器70,还具体用于通过目标递推公式和最新时刻各存储节点的缓存命中率曲线搜索使得各存储节点的总命中流量最大时,各存储节点的待配缓存空间大小,基于各存储节点的待配缓存空间大小生成目标缓存配置方案。
在一个实施例中,访问统计信息包括总访问数据块数、重复访问数据块数和所述各存储节点的访问流量,处理器70,还具体用于根据当前时刻检测到的I/O请求对总访问数据块数增加指定数值,若检测到哈希图中包括目标数据块的历史信息,则对重复访问数据块数增加指定数值,获取I/O请求对应的访问流量,并根据访问流量更新目标数据块对应存储节点的访问流量。
在一个实施例中,处理器70,还用于获取不同时间间隔下的总访问数据块数和重复访问数据块数,依照重用率函数对不同时间间隔下的总访问数据块数和重复访问数据块数进行计算,得到不同时间间隔下的重用率,基于不同时间间隔下的重用率,生成重用率曲线,在检测到重用率曲线更新条件满足时,通过重用率曲线替换指定重用率曲线。
在一个实施例中,各缓存实例用于管理各自对应的存储节点的缓存数据,缓存数据通过缓存块存储,处理器70,还具体用于若依照目标缓存配置方案的指示确定目标存储节点的待配缓存空间大小小于目标存储节点的实际缓存空间大小,则对存储目标缓存数据的缓存块进行释放,目标缓存数据为目标存储节点对应缓存实例所管理的缓存数据;
若依照目标缓存配置方案的指示确定目标存储节点的待配缓存空间大小大于目标存储节点的实际缓存空间大小,则为目标存储节点对应的缓存实例分配新的缓存块;其中,目标存储节点为所述各存储节点的任一个存储节点。
在本申请实施例中,上述处理器70的具体实现可参考前述各个附图所对应的实施例中相关内容的描述。
本申请实施例中的缓存处理设备可依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线,在满足缓存处理条件时,基于最新时刻各存储节点的缓存命中率曲线确定目标缓存配置方案,并依照目标缓存配置方案指示的各存储节点的待配缓存空间大小,调整各存储节点对应缓存实例的缓存空间大小。采用这样的方式,可依照I/O请求实时分析出各存储节点的缓存命中率曲线,并基于各存储节点的缓存命中率曲线搜索出最佳缓存配置方案,动态调整各缓存实例的缓存空间,有利于实现缓存空间的按需分配,有效提高缓存利用率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请的部分实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (15)
1.一种缓存系统,其特征在于,包括缓存控制模块、缓存分析模块和至少一个缓存实例,各缓存实例为各自对应的存储节点提供数据缓存的服务,其中:
所述缓存分析模块,用于依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线,在满足缓存处理条件时,基于最新时刻所述各存储节点的缓存命中率曲线确定目标缓存配置方案,并将所述目标缓存配置方案同步至所述缓存控制模块,所述目标配置方案为使得所述各存储节点达到优化目标的缓存配置方案,所述目标缓存配置方案指示了所述各存储节点的待配缓存空间大小;
所述缓存控制模块,用于依照所述目标缓存配置方案指示的所述各存储节点的待配缓存空间大小,调整所述各存储节点对应缓存实例的缓存空间大小。
2.如权利要求1所述的系统,其特征在于,所述各存储节点包括用于存储数据的数据块,所述缓存分析模块包括I/O请求统计模块、缓存建模模块和搜索模块,其中:
所述I/O请求统计模块,用于依照当前检测到的I/O请求,更新访问统计信息;
所述缓存建模模块,用于依据更新后的访问统计信息更新上一时刻的重用距离分布,得到当前时刻的重用距离分布,并基于预构建的缓存模型和所述当前时刻的重用距离分布确定当前时刻所述各存储节点的缓存命中率曲线,所述当前时刻的重用距离分布表征了在所述当前时刻之前,所有I/O请求访问的各数据块的重用距离的分布情况,所述上一时刻为上一次检测到I/O请求的时刻;
所述搜索模块,用于在满足缓存处理条件时,基于最新时刻所述各存储节点的缓存命中率曲线,搜索使得所述各存储节点达到优化目标时的目标缓存配置方案。
3.如权利要求1或2所述的系统,其特征在于,所述缓存系统部署于云块存储系统,所述云块存储系统还包括客户端和存储系统,所述存储系统包括至少一个存储节点,每个存储节点对应所述至少一个缓存实例中的一个缓存实例,每个缓存实例用于管理对应存储节点的缓存数据,所述I/O请求为来自所述客户端的读写请求。
4.一种缓存处理方法,其特征在于,应用于缓存系统,所述缓存系统包括缓存控制模块、缓存分析模块和至少一个缓存实例,各缓存实例为各自对应的存储节点提供数据缓存的服务,该方法包括:
依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线;
在满足缓存处理条件时,基于最新时刻所述各存储节点的缓存命中率曲线确定目标缓存配置方案,所述目标缓存配置方案为使得所述各存储节点达到优化目标的缓存配置方案,所述目标缓存配置方案指示了所述各存储节点的待配缓存空间大小;
依照所述目标缓存配置方案指示的所述各存储节点的待配缓存空间大小,调整所述各存储节点对应缓存实例的缓存空间大小。
5.如权利要求4所述的方法,其特征在于,所述各存储节点包括用于存储数据的数据块,所述依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线,包括:
根据当前时刻检测到的I/O请求更新访问统计信息;
依据更新后的访问统计信息更新上一时刻的重用距离分布,得到当前时刻的重用距离分布,所述当前时刻的重用距离分布表征了在所述当前时刻之前,所有I/O请求访问的各数据块的重用距离的分布情况,所述上一时刻为上一次检测到I/O请求的时刻;
基于预构建的缓存模型和所述当前时刻的重用距离分布确定当前时刻所述各存储节点的缓存命中率曲线。
6.如权利要求5所述的方法,其特征在于,所述I/O请求用于访问目标数据块,所述目标数据块为所述各存储节点包括的任一个数据块,所述依据更新后的访问统计信息更新上一时刻的重用距离分布,得到当前时刻的重用距离分布,包括:
基于更新后的访问统计信息确定所述目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数;
从指定重用率曲线中查找目标时间间隔下的目标重用率,所述目标时间间隔为t1-lt,所述指定重用率曲线表征了各个时间间隔与重用率的对应关系;
依照重用距离函数对所述目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数和所述目标重用率进行计算,得到所述目标数据块的重用距离;
基于所述目标数据块的重用距离更新上一时刻的重用距离分布,得到当前时刻的重用距离分布。
7.如权利要求6所述的方法,其特征在于,所述访问统计信息包括总访问数据块数,所述基于更新后的访问统计信息确定所述目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数,包括:
若检测到哈希图中包括所述目标数据块的历史信息,则从所述历史信息中获取上一次访问所述目标数据块的时间lt和上一次访问所述目标数据块对应的块序列号;
将更新后的总访问数据块数与所述块序列号相减,得到所述目标数据块从上一次访问的时间lt到当前时刻t1之间的总访问数据块数。
8.如权利要求5所述的方法,其特征在于,所述基于预构建的缓存模型和所述当前时刻的重用距离分布确定当前时刻所述各存储节点的缓存命中率曲线,包括:
依照预构建的缓存模型和所述当前时刻重用距离分布,确定当前时刻各存储节点在各缓存空间大小下的缓存命中率;
基于所述当前时刻各存储节点在各缓存空间大小下的缓存命中率,生成当前时刻所述各存储节点的缓存命中率曲线。
9.如权利要求4或5所述的方法,其特征在于,所述访问统计信息包括所述各存储节点的访问流量,所述各存储节点的缓存命中率曲线表征了所述各存储节点的缓存命中率与缓存空间大小的对应关系,所述基于最新时刻所述各存储节点的缓存命中率曲线确定目标缓存配置方案,包括:
依照所述各存储节点的访问流量搜索使得所述各存储节点的总命中流量最大时,所述各存储节点的目标缓存命中率,所述总命中流量为所述各存储节点的访问流量与缓存命中率之间乘积的和值;
将最新时刻所述各存储节点的缓存命中率曲线中,与所述各存储节点的目标缓存命中率对应的缓存空间大小确定为所述各存储节点的待配缓存空间大小;
基于所述各存储节点的待配缓存空间大小生成目标缓存配置方案。
10.如权利要求4或5所述的方法,其特征在于,所述基于最新时刻所述各存储节点的缓存命中率曲线确定使得所述各存储节点达到优化目标时的目标缓存配置方案,包括:
通过目标递推公式和最新时刻所述各存储节点的缓存命中率曲线搜索使得所述各存储节点的总命中流量最大时,所述各存储节点的待配缓存空间大小;
基于所述各存储节点的待配缓存空间大小生成目标缓存配置方案。
11.如权利要求5所述方法,其特征在于,所述访问统计信息包括总访问数据块数、重复访问数据块数和所述各存储节点的访问流量,所述根据当前时刻检测到的I/O请求更新访问统计信息,包括:
根据当前时刻检测到的I/O请求对所述总访问数据块数增加指定数值;
若检测到哈希图中包括所述目标数据块的历史信息,则对所述重复访问数据块数增加所述指定数值;
获取所述I/O请求对应的访问流量,并根据所述访问流量更新所述目标数据块对应存储节点的访问流量。
12.如权利要求11所述的方法,其特征在于,所述方法还包括:
获取不同时间间隔下的总访问数据块数和重复访问数据块数;
依照重用率函数对所述不同时间间隔下的总访问数据块数和重复访问数据块数进行计算,得到所述不同时间间隔下的重用率;
基于所述不同时间间隔下的重用率,生成重用率曲线;
在检测到重用率曲线更新条件满足时,通过所述重用率曲线替换所述指定重用率曲线。
13.如权利要求4所述的方法,其特征在于,所述各缓存实例用于管理各自对应的存储节点的缓存数据,所述缓存数据通过缓存块存储,所述依照所述目标缓存配置方案指示的所述各存储节点的待配缓存空间大小,调整所述各存储节点对应缓存实例的缓存空间大小,包括:
若依照所述目标缓存配置方案的指示确定目标存储节点的待配缓存空间大小小于所述目标存储节点的实际缓存空间大小,则对存储目标缓存数据的缓存块进行释放,所述目标缓存数据为所述目标存储节点对应缓存实例所管理的缓存数据;
若依照所述目标缓存配置方案的指示确定目标存储节点的待配缓存空间大小大于所述目标存储节点的实际缓存空间大小,则为所述目标存储节点对应的缓存实例分配新的缓存块;
其中,所述目标存储节点为所述各存储节点的任一个存储节点。
14.一种缓存处理装置,其特征在于,该装置包括:
处理单元,用于依照当前时刻检测到的I/O请求,确定当前时刻各存储节点的缓存命中率曲线;
所述处理单元,还用于在满足缓存处理条件时,基于最新时刻所述各存储节点的缓存命中率曲线确定目标缓存配置方案,所述目标缓存配置方案为使得所述各存储节点达到优化目标的缓存配置方案,所述目标缓存配置方案指示了所述各存储节点的待配缓存空间大小;
调整单元,用于依照所述目标缓存配置方案指示的所述各存储节点的待配缓存空间大小,调整所述各存储节点对应缓存实例的缓存空间大小。
15.一种缓存处理设备,其特征在于,缓存处理设备包括处理器和存储装置,所述处理器和存储装置相互连接,其中,所述存储装置用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求4-13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010585684.1A CN111737168A (zh) | 2020-06-24 | 2020-06-24 | 一种缓存系统、缓存处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010585684.1A CN111737168A (zh) | 2020-06-24 | 2020-06-24 | 一种缓存系统、缓存处理方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111737168A true CN111737168A (zh) | 2020-10-02 |
Family
ID=72650893
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010585684.1A Pending CN111737168A (zh) | 2020-06-24 | 2020-06-24 | 一种缓存系统、缓存处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111737168A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930320A (zh) * | 2020-10-14 | 2020-11-13 | 广东睿江云计算股份有限公司 | 一种基于分布式存储数据的内存优化方法及其系统 |
CN112948336A (zh) * | 2021-03-30 | 2021-06-11 | 联想凌拓科技有限公司 | 数据加速方法及缓存单元、电子设备及存储介质 |
CN113158105A (zh) * | 2021-04-07 | 2021-07-23 | 广州市网星信息技术有限公司 | 缓存配置管理方法、装置、设备、系统和存储介质 |
CN113177031A (zh) * | 2021-04-21 | 2021-07-27 | 北京人大金仓信息技术股份有限公司 | 数据库共享缓存的处理方法、装置、电子设备和介质 |
CN113852645A (zh) * | 2021-12-02 | 2021-12-28 | 北京邮电大学 | 抗客户端dns缓存中毒攻击的方法、装置及电子设备 |
WO2023000696A1 (zh) * | 2021-07-23 | 2023-01-26 | 华为技术有限公司 | 一种资源分配方法及装置 |
-
2020
- 2020-06-24 CN CN202010585684.1A patent/CN111737168A/zh active Pending
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930320A (zh) * | 2020-10-14 | 2020-11-13 | 广东睿江云计算股份有限公司 | 一种基于分布式存储数据的内存优化方法及其系统 |
CN111930320B (zh) * | 2020-10-14 | 2021-02-02 | 广东睿江云计算股份有限公司 | 一种基于分布式存储数据的内存优化方法及其系统 |
CN112948336A (zh) * | 2021-03-30 | 2021-06-11 | 联想凌拓科技有限公司 | 数据加速方法及缓存单元、电子设备及存储介质 |
CN113158105A (zh) * | 2021-04-07 | 2021-07-23 | 广州市网星信息技术有限公司 | 缓存配置管理方法、装置、设备、系统和存储介质 |
CN113158105B (zh) * | 2021-04-07 | 2024-02-13 | 广州市网星信息技术有限公司 | 缓存配置管理方法、装置、设备、系统和存储介质 |
CN113177031A (zh) * | 2021-04-21 | 2021-07-27 | 北京人大金仓信息技术股份有限公司 | 数据库共享缓存的处理方法、装置、电子设备和介质 |
CN113177031B (zh) * | 2021-04-21 | 2023-08-01 | 北京人大金仓信息技术股份有限公司 | 数据库共享缓存的处理方法、装置、电子设备和介质 |
WO2023000696A1 (zh) * | 2021-07-23 | 2023-01-26 | 华为技术有限公司 | 一种资源分配方法及装置 |
CN113852645A (zh) * | 2021-12-02 | 2021-12-28 | 北京邮电大学 | 抗客户端dns缓存中毒攻击的方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111737168A (zh) | 一种缓存系统、缓存处理方法、装置、设备及介质 | |
CN105205014B (zh) | 一种数据存储方法和装置 | |
US10275489B1 (en) | Binary encoding-based optimizations at datastore accelerators | |
JP5744707B2 (ja) | メモリ使用量照会ガバナのためのコンピュータ実装方法、コンピュータ・プログラム、およびシステム(メモリ使用量照会ガバナ) | |
CN109240946A (zh) | 数据的多级缓存方法及终端设备 | |
US10901619B2 (en) | Selecting pages implementing leaf nodes and internal nodes of a data set index for reuse | |
US8429096B1 (en) | Resource isolation through reinforcement learning | |
CN107526546B (zh) | 一种Spark分布式计算数据处理方法及系统 | |
US10922316B2 (en) | Using computing resources to perform database queries according to a dynamically determined query size | |
US10191663B1 (en) | Using data store accelerator intermediary nodes and write control settings to identify write propagation nodes | |
CN104270412A (zh) | 一种基于Hadoop分布式文件系统的三级缓存方法 | |
CN109871181A (zh) | 一种对象存取方法及装置 | |
CN114090580A (zh) | 数据处理方法、装置、设备、存储介质及产品 | |
CN113806300A (zh) | 数据存储方法、系统、装置、设备及存储介质 | |
CN106973091B (zh) | 分布式内存数据重分布方法及系统、主控服务器 | |
US11609910B1 (en) | Automatically refreshing materialized views according to performance benefit | |
US20200364211A1 (en) | Predictive database index modification | |
US10223256B1 (en) | Off-heap memory management | |
US10594620B1 (en) | Bit vector analysis for resource placement in a distributed system | |
US11762860B1 (en) | Dynamic concurrency level management for database queries | |
US11537616B1 (en) | Predicting query performance for prioritizing query execution | |
Wang et al. | An optimized replica distribution method in cloud storage system | |
US11940923B1 (en) | Cost based cache eviction | |
US10721181B1 (en) | Network locality-based throttling for automated resource migration | |
Song et al. | Memory management optimization strategy in Spark framework based on less contention |
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 |