CN106569728B - 多磁盘阵列raid共享写缓存的处理方法及装置 - Google Patents
多磁盘阵列raid共享写缓存的处理方法及装置 Download PDFInfo
- Publication number
- CN106569728B CN106569728B CN201510648757.6A CN201510648757A CN106569728B CN 106569728 B CN106569728 B CN 106569728B CN 201510648757 A CN201510648757 A CN 201510648757A CN 106569728 B CN106569728 B CN 106569728B
- Authority
- CN
- China
- Prior art keywords
- write cache
- raid group
- raid
- quota
- investment return
- 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; 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种多磁盘阵列RAID共享写缓存的处理方法及装置,其中,该方法包括:获取预设时间段内多RAID组内每个RAID组的即将淘汰区被命中的次数,其中,该即将淘汰区是该每个RAID组写缓存的一部分,获取该每个RAID组的该写缓存的配额,依据该被命中的次数和该写缓存的配额确定该每个RAID组的写缓存投入回报率,其中,该写缓存投入回报率是该每个RAID组该写缓存的大小与该被命中的次数的计算值,根据该写缓存投入回报率,对该每个RAID组的该写缓存的配额进行动态迁移,解决了多RAID组共享写缓存资源的利用率不高的问题,提高了写缓存资源的利用率。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种多磁盘阵列RAID共享写缓存的处理方法及装置。
背景技术
在存储设备的设计中,各厂家或研究单位都会使用非易失性内存(包括利用镜像技术实现的非易失能力)作为写缓存,以此来提高某些场景下***的写性能(高吞吐量、低时延)。目前公开的专利和文献多是对读缓存的研究,有关写缓存的文章寥寥无几,而这些相关技术在面对“多磁盘阵列组(Redundant Arrays of Independent,简称为RAID)共享写缓存”问题上都没有做到自适应,对各种场景下的写性能最大化的考虑也不够全面。下面首先介绍一下关于写缓存工作原理的背景知识,在此基础上阐述现有技术中几种做法分别存在的问题和不足。
图1是根据相关技术中单RAID组模型下写缓存工作原理的示意图,如图1所示,
在写穿(Write Through)模式下(11线条),用户数据直接下发到RAID组,RAID组将数据固化到磁盘后反馈用户写入成功;在写回模式下,用户数据先写入缓存(形成脏页面,21线条),立即给用户反馈成功,同时以异步的方式将脏数据不断刷盘(22线条),将脏页面转换成干净页面,以形成动态平衡。为了方便讨论,我们假设:
P:用户业务流入速率,单位IO每秒,该指标表示假设存储设备的处理速度为无限快,业务每秒可写入存储设备的数据量;
F:RAID组的处理能力,单位IO每秒,该指标表示当向RAID组持续写入离散随机数据时的吞吐量。
C:该RAID组当前占有的写缓存块(页面)容量单位KByte
G(C):是以C为自变量的函数,该函数的值表示以C为缓存容量时RAID组上用户实际感受到的性能吞吐量,单位IO每秒
M(C):是以C为自变量的函数,该函数的值表示以C为缓存容量时RAID组中通过缓存能力每秒节省IO个数(比如对同一LBA的两次写入,写穿模式需要操作两次磁盘,写回方式由于写命中的存在只需要操作一次),数学上M(C)=G(C)-F
在实际业务中可能含有顺序写入和随机写入两种成份,对于顺序写入如果RAID栈层面做的比较好,只需要很少的写缓存,即可将顺序写性能提升到理论极限。因此对于业务中顺序写入成份的性能优化,可直接按RAID组物理磁盘个数n直接以预留定量的方式分配即可,根据经验要想使顺序写入性能达到RAID组理论极限,只需要分配4MB*n的缓存即可,而存储产品在规划时都会照顾到缓存和支持磁盘最大个数之间的比例,做到缓存容量远远大于4MB*Nmax,其中Nmax为存储产品最大支持的硬盘数量。所以本文重点阐述业务流中的随机部分,当这部分随机成份的时间和空间局部性很好时,写缓存就有机会利用这种特性来提升存储设备对外的写性能。为了简化问题的阐述,后文假定以上提出的P、F、C、G(C)、M(C)都是剔除了业务中的顺序成份后剩下的随机部分的统计值,比如一个用户以10000IOps速率写入,随机成份占10%,那么我们上面的参数P就等于10000*10%=1000IOps。利用好随机成份的时间、空间局部性是提高存储设备整体性能的关键。这一点以业界的存储产品来看,在磁盘成本相同的情况下,各厂家产品的顺序写性能基本持平,都可以达到所有物理盘同时旋转时的理论最大性能,而且不需要为此投入更多的缓存。但对于随机业务(均匀分布、R1分布等)有一定时间局部性的模型,不同厂商的写性能差距较大,因此,后面假设P、F、C、G(C)、M(C)均为随机成份,或者将业务想象成100%随机流,都是不失一般性的,可以将此理论应用于顺序、随机混合业务流下的写性能提升。
图2是根据相关技术中理想状态下性能单RAID组性能最大化时模型的示意图,如图2所示,理想的性能最大模型下,存储设备达到稳态时,会形成磁盘持续刷盘,G(C)=F(C)+M(C)的状态。流入的IO通过两种途径被消化掉:一种是和刷盘保持平衡,刷盘产生多少干净页面就由等量的新写入的脏页面消耗掉;另一种是新写入的IO命中了已有的脏数据,或者与已有脏数据相邻,这时候会出现IO合并,就好比用户向存储设备写入了2笔IO,但存储设备只需要向RAID组提交一次IO即可。M(C)正是写回模式比写穿模式可以提高写性能的原因。
下面引入多RAID组共存的场景,为了简化问题,假设环境中存在2个RAID组,图3是根据相关技术中2个RAID组场景下写缓存配额模型的示意图,如图3所示,各自对应的5个参数分别设为
RAID组1:P1,F1,C1,G1(C),M1(C)
RAID组2:P2,F2,C2,G2(C),M2(C)
其中C1+C2小于等于***的总写缓存大小,G1(C1)+G2(C2)是存储设备对外提供的实际输出性能。
结合以上相关技术,目前存在的一些弊端包括:
方法一:将写缓存资源不区分RAID组的方式管理,以全局LRU(Least RecentlyUsed)链表决定优先将哪个脏页面进行刷盘。该方法总是保证最近最常访问到的数据长期驻留在缓存中,可以使M1+M2实现最大化。但该方法没有考虑到充分让每个盘组都工作起来,因为全局LRU的存在,若LRU端页面集中的都是某个RAID组对应的页面,会出现某个RAID组很忙,而其他RAID组很闲。以这个例子来看,可能出现某一段时间内(1s内)只有RAID组1的盘在转,而RAID组2的盘不转,这种情况G=G1+G2=M1+F1+M2+F2其中F2=0,是无法达到性能最大化的。业界其他厂家也意识到这个问题了,会考虑到将缓存以对象为单位进行配额划分。
方法二:在意识到要对写缓存资源按对象进行划分的基础上,一些专利和商用产品在界面上设计可配置的“虚拟机/镜像”设置,然后以这些虚拟对象为单位对内存进行平均分配,比如用总内存容量C除以对象个数N,再分别乘以膨胀系数或紧缩系数作为高低水位。该方法的弊端主要有:1.需要用户干预,用户每次调整业务模型都要显式再修改配置,不能做到动态控制;2.平均分配配额时,需要假设不同RAID组上的用户业务模型是相同的,但往往用户未必会以完全对等的方式使用存储产品映射出来的每个RAID组上的资源。当用户业务出现RAID组间不对称时,平均分配是无法使存储产品的对外性能最大化的,简单的说没有将资源分给投资回报率更高的RAID组。
针对相关技术中,多RAID组共享写缓存资源的利用率不高的问题,目前还没有有效的技术方案。
发明内容
本发明提供了一种多磁盘阵列RAID共享写缓存的处理方法及装置,以至少解决相关技术中多RAID组共享写缓存资源的利用率不高的问题。
根据本发明的一个方面,提供了一种多磁盘阵列RAID共享写缓存的处理方法,包括:
获取预设时间段内多RAID组内每个RAID组的即将淘汰区被命中的次数,其中,所述即将淘汰区是所述每个RAID组写缓存的一部分;
获取所述每个RAID组的所述写缓存的配额;
依据所述被命中的次数和所述写缓存的配额确定所述每个RAID组的写缓存投入回报率,其中,所述写缓存投入回报率是所述每个RAID组所述写缓存的大小与所述被命中的次数的计算值;
根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移。
进一步地,获取预设时间段内多RAID组内每个RAID组的即将淘汰区中被命中的次数之前,包括:
获取所述即将淘汰区的配置比例,在所述每个RAID组上最近一次页面写入时刻为t1,当前被刷盘的所述页面的上一次被访问时间为t2,所述页面的被访问时间为t时,在(t–t2)/(t1–t2)小于所述配置比例的情况下,所述页面属于所述即将淘汰区。
进一步地,所述写缓存投入回报率是所述每个RAID组所述写缓存的大小与所述被命中的次数的计算值包括:
所述写缓存投入回报率是所述被命中的次数除以所述每个RAID组所述写缓存大小的值。
进一步地,所述根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移之前,包括:
选取所述多个RAID组中所述写缓存的配额大于预设下限配额的RAID组,其中,所述RAID组用于进行所述动态迁移。
进一步地,根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移包括:
对所述多个RAID组的所述写缓存投入回报率进行排序,选出所述写缓存投入回报率最大的RAID组和所述写缓存投入回报率最小的RAID组;
将所述写缓存投入回报率最小的RAID组中预设数量的配额迁移到所述写缓存投入回报率最大的RAID组。
根据本发明的另一个方面,还提供了一种多磁盘阵列RAID共享写缓存的处理装置,包括:
第一获取模块,用于获取预设时间段内多RAID组内每个RAID组的即将淘汰区被命中的次数,其中,所述即将淘汰区是所述每个RAID组写缓存的一部分;
第二获取模块,用于获取所述每个RAID组的所述写缓存的配额;
计算模块,用于依据所述被命中的次数和所述写缓存的配额确定所述每个RAID组的写缓存投入回报率,其中,所述写缓存投入回报率是所述每个RAID组所述写缓存的大小与所述被命中的次数的计算值;
迁移模块,用于根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移。
进一步地,包括:第三获取模块,用于获取预设时间段内多RAID组内每个RAID组的即将淘汰区中被命中的次数之前,获取所述即将淘汰区的配置比例,在所述每个RAID组上最近一次页面写入时刻为t1,当前被刷盘的所述页面的上一次被访问时间为t2,所述页面的被访问时间为t时,在(t–t2)/(t1–t2)小于所述配置比例的情况下,所述页面属于所述即将淘汰区。
进一步地,所述计算模块包括:
除法计算单元,用于所述写缓存投入回报率是所述被命中的次数除以所述每个RAID组所述写缓存大小的值。
进一步地,包括:
选取模块,用于所述根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移之前,选取所述多个RAID组中所述写缓存的配额大于预设下限配额的RAID组,其中,所述RAID组用于进行所述动态迁移。
进一步地,所述迁移模块包括:
排序单元,用于对所述多个RAID组的所述写缓存投入回报率进行排序,选出所述写缓存投入回报率最大的RAID组和所述写缓存投入回报率最小的RAID组;
迁移单元,用于将所述写缓存投入回报率最小的RAID组中预设数量的配额迁移到所述写缓存投入回报率最大的RAID组。
通过本发明,获取预设时间段内多RAID组内每个RAID组的即将淘汰区被命中的次数,其中,该即将淘汰区是该每个RAID组写缓存的一部分,获取该每个RAID组的该写缓存的配额,依据该被命中的次数和该写缓存的配额确定该每个RAID组的写缓存投入回报率,其中,该写缓存投入回报率是该每个RAID组该写缓存的大小与该被命中的次数的计算值,根据该写缓存投入回报率,对该每个RAID组的该写缓存的配额进行动态迁移,解决了多RAID组共享写缓存资源的利用率不高的问题,提高了写缓存资源的利用率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据相关技术中单RAID组模型下写缓存工作原理的示意图;
图2是根据相关技术中理想状态下性能单RAID组性能最大化时模型的示意图;
图3是根据相关技术中2个RAID组场景下写缓存配额模型的示意图;
图4是根据本发明实施例的一种多磁盘阵列RAID共享写缓存的处理方法的流程图;
图5是根据本发明实施例的一种多磁盘阵列RAID共享写缓存的处理装置的结构框图一;
图6是根据本发明实施例的一种多磁盘阵列RAID共享写缓存的处理装置的结构框图二;
图7是根据本发明实施例的一种多磁盘阵列RAID共享写缓存的处理装置的结构框图三;
图8是根据本发明优选实施例的写缓存配额动态控制模块在存储***中位置的示意图;
图9是根据本发明优选实施例的写缓存配额动态控制模块工作流程的示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在本实施例中提供了一种多磁盘阵列RAID共享写缓存的处理方法,图4是根据本发明实施例的一种多磁盘阵列RAID共享写缓存的处理方法的流程图,如图4所示,该流程包括如下步骤:
步骤S402,获取预设时间段内多RAID组内每个RAID组的即将淘汰区被命中的次数,其中,该即将淘汰区是该每个RAID组写缓存的一部分;
步骤S404,获取该每个RAID组的该写缓存的配额;
步骤S406,依据该被命中的次数和该写缓存的配额确定该每个RAID组的写缓存投入回报率,其中,该写缓存投入回报率是该每个RAID组该写缓存的大小与该被命中的次数的计算值;
步骤S408,根据该写缓存投入回报率,对该每个RAID组的该写缓存的配额进行动态迁移。
通过上述步骤,计算写缓存投入回报率,将RAID组的写缓存配额从“最不值得的”RAID组移动到“最值得的”RAID组,解决了多RAID组共享写缓存资源的利用率不高的问题,提高了写缓存资源的利用率。
在本实施例中,获取预设时间段内多RAID组内每个RAID组的即将淘汰区中被命中的次数之前,获取该即将淘汰区的配置比例,在该每个RAID组上最近一次页面写入时刻为t1,当前被刷盘的该页面的上一次被访问时间为t2,该页面的被访问时间为t时,在(t–t2)/(t1–t2)小于该配置比例的情况下,该页面属于该即将淘汰区。该配置比例可以是用户配置的,也可以根据经验值获取。
在本实施例中,该写缓存投入回报率是该被命中的次数除以该每个RAID组该写缓存大小的值。
在本实施例中,该根据该写缓存投入回报率,对该每个RAID组的该写缓存的配额进行动态迁移之前,包括:
选取该多个RAID组中该写缓存的配额大于预设下限配额的RAID组,其中,该RAID组用于进行该动态迁移。
在本实施例中,可以对该多个RAID组的该写缓存投入回报率进行排序,选出该写缓存投入回报率最大的RAID组和该写缓存投入回报率最小的RAID组;
将该写缓存投入回报率最小的RAID组中预设数量的配额迁移到该写缓存投入回报率最大的RAID组。
在本实施例中还提供了一种多磁盘阵列RAID共享写缓存的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是根据本发明实施例的一种多磁盘阵列RAID共享写缓存的处理装置的结构框图一,如图5所示,该装置包括:
第一获取模块52,用于获取预设时间段内多RAID组内每个RAID组的即将淘汰区被命中的次数,其中,该即将淘汰区是该每个RAID组写缓存的一部分;
第二获取模块54,用于获取该每个RAID组的该写缓存的配额;
计算模块56,用于依据该被命中的次数和该写缓存的配额确定该每个RAID组的写缓存投入回报率,其中,该写缓存投入回报率是该每个RAID组该写缓存的大小与该被命中的次数的计算值;
迁移模块58,用于根据该写缓存投入回报率,对该每个RAID组的该写缓存的配额进行动态迁移。
通过上述装置,计算写缓存投入回报率,将RAID组的写缓存配额从“最不值得的”RAID组移动到“最值得的”RAID组,解决了多RAID组共享写缓存资源的利用率不高的问题,提高了写缓存资源的利用率。
在本实施例中,该计算模块56包括:
除法计算单元,用于该写缓存投入回报率是该被命中的次数除以该每个RAID组该写缓存大小的值。
图6是根据本发明实施例的一种多磁盘阵列RAID共享写缓存的处理装置的结构框图二,如图6所示,该装置除包括图5的模块以外,还包括:
第三获取模块62,用于获取预设时间段内多RAID组内每个RAID组的即将淘汰区中被命中的次数之前,获取该即将淘汰区的配置比例,在该每个RAID组上最近一次页面写入时刻为t1,当前被刷盘的该页面的上一次被访问时间为t2,该页面的被访问时间为t时,在(t–t2)/(t1–t2)小于该配置比例的情况下,该页面属于该即将淘汰区。
图7是根据本发明实施例的一种多磁盘阵列RAID共享写缓存的处理装置的结构框图三,如图7所示,该装置除包括图5的模块以外,还包括:
选取模块72,用于该根据该写缓存投入回报率,对该每个RAID组的该写缓存的配额进行动态迁移之前,选取该多个RAID组中该写缓存的配额大于预设下限配额的RAID组,其中,该RAID组用于进行该动态迁移。
在上述实施例中,该迁移模块58包括:
排序单元,用于对该多个RAID组的该写缓存投入回报率进行排序,选出该写缓存投入回报率最大的RAID组和该写缓存投入回报率最小的RAID组;
迁移单元,用于将该写缓存投入回报率最小的RAID组中预设数量的配额迁移到该写缓存投入回报率最大的RAID组。
下面结合优选实施例和实施方式对本发明进行详细说明。
本发明的优选实施例提出了一种在存储***中新增写缓存配额动态控制模块,该写缓存配额动态控制模块相当于上述实施例中的第一获取模块52、第二获取模块54、计算模块56和迁移模块58等,该模块驱动RAID组对象之间交换写页面配额。可解决以上相关技术中存在的问题,该模块侦测单位时间内每RAID组的“即将淘汰区”中写页面被命中的次数,获取对应RAID组的最近、最远访问时间信息和当前RAID组实际配额,通过模块内部的决策逻辑,给出每个RAID组的“写缓存投入回报率”K。K值的计算是预测将C1减小一点点,将C2增大一点点,看看由于C1减小RAID组1的性能损失大,还是RAID2组的性能提升大。选择一对最优的RAID组对,控制模块在他们之间完成写缓存配额的动态迁移。
需要说明的是,本优选实施例在存储***中新增写缓存配额动态控制模块,该模块利用侦测M值增量的方法计算出RAID组中哪一个最值得增加写缓存配额,哪一个最不值得增加其写缓存配额,然后动态驱动RAID组对象将少量写页面资源配额从“最不值得的”移动到“最值得的”。为了达到最佳效果,本模块允许用户设置一些必要参数,包括但不限于:动态迁移周期、“即将淘汰区”比例、迁移粒度等。
本发明的优选实施例采用以下技术方案包括:首先在存储***中新增“写缓存配额动态控制模块”,允许用户对其动态迁移周期和“即将淘汰区”所占比例等参数进行配置。图8是根据本发明优选实施例的写缓存配额动态控制模块在存储***中位置的示意图,如图8所示。该模块以RAID组对象为管理单位,对RAID组的写缓存分为两部分,一部分为正常普通写缓存,另一部分为“即将淘汰区”写缓存。所述“即将淘汰区”写缓存是通过用户配置的“即将淘汰区”比例计算出来的。举例来说,用户配置比例为1%,RAID组上最近一次页面写入时刻为t1,当前刚刚被刷盘的页面的上一次被访问时间为t2,若某页面的被访问时间为t,那么如果(t–t2)/(t1–t2)<1%那么该页面则属于“即将淘汰区”写缓存,反之属于“普通缓存”。
图9是根据本发明优选实施例的写缓存配额动态控制模块工作流程的示意图,如图9所示,该流程包括如下步骤:
首先对配额迁移的计数器清零,然后再执行以下步骤:
步骤1:该模块首先侦测每个RAID组对象一个动态迁移周期中即将淘汰区被命中的次数△M。所述动态迁移周期是用户配置的该模块的一个以秒为单位的时间长度。
步骤2:在动态迁移周期到期时刻该模块利用侦测到的每个RAID组的△M值和当前RAID组实际配额值进行除法计算,得出每个RAID组的“写缓存投入回报率”K,对于某个一RAID组,K=△M/C。
步骤3:接下来该模块判断每个RAID组当前配额是否已经小于等于该RAID组的下限配额,所述下限配额是指该RAID为了维持顺序写入性能达到最优而必须保持的最少写缓存大小。最小值根据经验一般选择为该RAID组磁盘数乘以4MB,4MB这个值也是写缓存配额动态控制模块的一个用户可修改参数。该模块从RAID组中选择出配额大于下限配额的所有RAID作为待排序集合。
步骤4:然后该模块对待排序集合中的RAID按照K值从大到小的顺序进行排序,确定出最优RAID组和最差RAID组。
步骤5:最后该模块驱动最差RAID组将迁移粒度指定数量的配额迁移到最优RAID组的配额中。所述迁移粒度是该模块的一个用户可配置参数,该值表示每周期RAID组间前期的配额粒度,单位MB。完成迁移后,进入下一个迁移周期之前对每个RAID组对象的△M和K值清零。然后重复上述动作。
以下澄清上述K值统计方法的理论依据。其主导思想是首先通过数学方法找到K值与哪些因素有关,然后通过一些合理的近似,使得K值计算公式中所需的数据可通过工程的方法在***运行中以较低的代价获得。
首先设表示K是在某一给定C值下G(C)对C的偏导数,这个值越大说明投入等量的C值即可使G(C)有较大的提升。但这个是难以在存储产品***中轻易获取到的,如果要利用曲线拟合方法需要采集很长一段时间内的多个点,做曲线拟合后再求导才行,将导致这种技术难以在工程产品中应用,所以必须对进行合理近似,使得该值可以通过其他易于监测的数值计算出来。
进一步根据偏导定义K(C)=(M(C+△C)–M(C))/△C
对于M(C+△C)从物理意义上理解,实际上可以分解成两部分,一部分是命中了(或发生IO合并)的页面属于C配额中,另一部分是命中了的页面发生在△C这部分配额中。由于在某个RAID组中,随机脏数据是以LRU链表形式维护的,***总是优先对一个RAID组中最无价值的那部分脏页面进行刷盘。那么我们不妨将当前某个RAID组的当前状态的脏数据C理解成两部分,C=Cx+Cy。
其中,Cx为99%C,Cy为1%C,分类上根据LRU链表认为Cy为即将被刷盘的脏页面的总和,不难理解如果当前的缓存容量从Cx+Cy缩减为Cx,那么Cy这部分页面就应该已经被刷盘了,所以我们可以统计命中了Cy这部分脏页面的IO次数,假设单位时间内统计到命中了Cy这部分的IO次数为△M(Cy),那么可得如下数学关系:
M(C)=M(Cx+Cy)=M(Cx)+△M(Cy),因为Cy可近似认为就是上式中的△C,将这个关系代入上面K值的计算公式得:
K(Cx)=(M(Cx+Cy)–M(Cx))/Cy=△M(Cx)/Cy=△M(1%C)/(1%C)
式中1%是用户可配置的一个经验值,只要在不同RAID组间选取相同的比例,即可计算出具有可比性的K值来,而式中的△M(1%C)的物理意义是命中了“即将被刷盘”的页面的次数,而这个次数完全可以通过很小的代价统计到,统计方法如下。
设RAID组中刚刚被写入的页面的写入时间为T1,当前刚刚被刷盘的页面的写入时间为T2。K值刷新周期为1s,那么可认为在1s时间窗内,如果发现某次写入操作发生了命中,则判断其命中的页面的上次访问时间T和T1、T2的关系,若T<(T1-T2)*1%+T2则说明命中了“即将被刷盘”的页面,对RAID组上的△M计数器进行自加1操作。在1s统计窗口结束时,根据公式K=△M/(1%C)可以计算出每个RAID组的K值,因为每个卷的计算公式中分母中都存在相同的1%,完全可以全部扩大100被将其抵消,直接假设K=△M/C即可进行对比。这里对于每个RAID组,K值既表征了如果减小一点点这个卷对应写缓存资源时改卷的性能损失,也等价于假设增加一点点写缓存资源该卷可提升的性能。
接下来从计算出的不同RAID组的K值中找到最大的和最小的RAID组,从K值最小的组向K值最大的组迁移一定量的写缓存页面配额,根据经验值,该值选取1MB为宜,也可根据实测效果进行调整。以此方法周期性的不断对不同RAID组间的配额进行调整,即可达到最佳对外输出性能。K值大的RAID组就是那些假设增大它的写缓存配额一点点,它的性能提升收益比较大的组;而K值最小的RAID组就是那些假设减小它的写缓存配额一点点,它的性能损失最小的组。这样我们总是以最小的代价换取最高的收益就会不断提示***对外整体写性能,最终达到一个最佳状态的动态平衡。
另外,这里还需要考虑一种特殊情况,在计算过K值进行排序之后,先要判断一个RAID组现有写页面配额是否已经低于最小允许值(即上文提到的通过N*4MB计算出的为了保证顺序写入最大性能而必须保证的最小额度)。若某个RAID组当前的额度已经达到允许的最小值,那么这个RAID组的配额只能增加不能再被减少,所以如果遇到K值最小的RAID组已经达到配额下限,则从其他RAID组中选取K值第二小的作为配额被转移对象,同样需要考虑配额下限,以此类推。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例该的方法。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行上述实施例的方法步骤的程序代码:
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例的方法步骤。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种多磁盘阵列RAID共享写缓存的处理方法,其特征在于,包括:
获取预设时间段内多RAID组内每个RAID组的即将淘汰区被命中的次数,其中,所述即将淘汰区是所述每个RAID组的写缓存的一部分;
获取所述每个RAID组的所述写缓存的配额;
依据所述被命中的次数和所述写缓存的配额确定所述每个RAID组的写缓存投入回报率,其中,所述写缓存投入回报率是所述每个RAID组所述写缓存的大小与所述被命中的次数的计算值;
根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移。
2.根据权利要求1所述的方法,其特征在于,获取预设时间段内多RAID组内每个RAID组的即将淘汰区中被命中的次数之前,包括:
获取所述即将淘汰区的配置比例,在所述每个RAID组上最近一次页面写入时刻为t1,当前被刷盘的所述页面的上一次被访问时间为t2,所述页面的被访问时间为t时,在(t–t2)/(t1–t2)小于所述配置比例的情况下,所述页面属于所述即将淘汰区。
3.根据权利要求1所述的方法,其特征在于,所述写缓存投入回报率是所述每个RAID组所述写缓存的大小与所述被命中的次数的计算值包括:
所述写缓存投入回报率是所述被命中的次数除以所述每个RAID组所述写缓存大小的值。
4.根据权利要求1所述的方法,其特征在于,所述根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移之前,包括:
选取所述多个RAID组中所述写缓存的配额大于预设下限配额的RAID组,其中,所述RAID组用于进行所述动态迁移。
5.根据权利要求1至4任一项所述的方法,其特征在于,根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移包括:
对所述多个RAID组的所述写缓存投入回报率进行排序,选出所述写缓存投入回报率最大的RAID组和所述写缓存投入回报率最小的RAID组;
将所述写缓存投入回报率最小的RAID组中预设数量的配额迁移到所述写缓存投入回报率最大的RAID组。
6.一种多磁盘阵列RAID共享写缓存的处理装置,其特征在于,包括:
第一获取模块,用于获取预设时间段内多RAID组内每个RAID组的即将淘汰区被命中的次数,其中,所述即将淘汰区是所述每个RAID组写缓存的一部分;
第二获取模块,用于获取所述每个RAID组的所述写缓存的配额;
计算模块,用于依据所述被命中的次数和所述写缓存的配额确定所述每个RAID组的写缓存投入回报率,其中,所述写缓存投入回报率是所述每个RAID组所述写缓存的大小与所述被命中的次数的计算值;
迁移模块,用于根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移。
7.根据权利要求6所述的装置,其特征在于,包括:
第三获取模块,用于获取预设时间段内多RAID组内每个RAID组的即将淘汰区中被命中的次数之前,获取所述即将淘汰区的配置比例,在所述每个RAID组上最近一次页面写入时刻为t1,当前被刷盘的所述页面的上一次被访问时间为t2,所述页面的被访问时间为t时,在(t–t2)/(t1–t2)小于所述配置比例的情况下,所述页面属于所述即将淘汰区。
8.根据权利要求6所述的装置,其特征在于,所述计算模块包括:
除法计算单元,用于所述写缓存投入回报率是所述被命中的次数除以所述每个RAID组所述写缓存大小的值。
9.根据权利要求6所述的装置,其特征在于,包括:
选取模块,用于所述根据所述写缓存投入回报率,对所述每个RAID组的所述写缓存的配额进行动态迁移之前,选取所述多个RAID组中所述写缓存的配额大于预设下限配额的RAID组,其中,所述RAID组用于进行所述动态迁移。
10.根据权利要求6至9任一项所述的装置,其特征在于,所述迁移模块包括:
排序单元,用于对所述多个RAID组的所述写缓存投入回报率进行排序,选出所述写缓存投入回报率最大的RAID组和所述写缓存投入回报率最小的RAID组;
迁移单元,用于将所述写缓存投入回报率最小的RAID组中预设数量的配额迁移到所述写缓存投入回报率最大的RAID组。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510648757.6A CN106569728B (zh) | 2015-10-09 | 2015-10-09 | 多磁盘阵列raid共享写缓存的处理方法及装置 |
PCT/CN2016/090212 WO2017059716A1 (zh) | 2015-10-09 | 2016-07-15 | 多磁盘阵列共享写缓存的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510648757.6A CN106569728B (zh) | 2015-10-09 | 2015-10-09 | 多磁盘阵列raid共享写缓存的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106569728A CN106569728A (zh) | 2017-04-19 |
CN106569728B true CN106569728B (zh) | 2021-02-23 |
Family
ID=58487241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510648757.6A Active CN106569728B (zh) | 2015-10-09 | 2015-10-09 | 多磁盘阵列raid共享写缓存的处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106569728B (zh) |
WO (1) | WO2017059716A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577439B (zh) * | 2017-09-28 | 2020-10-20 | 苏州浪潮智能科技有限公司 | 分配处理资源的方法、装置、设备及计算机可读存储介质 |
TWI667573B (zh) * | 2017-09-30 | 2019-08-01 | 英屬開曼群島商捷鼎創新股份有限公司 | 分散式儲存裝置 |
CN110865768B (zh) * | 2018-08-27 | 2022-03-04 | 中兴通讯股份有限公司 | 写缓存资源分配方法、装置、设备以及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6457098B1 (en) * | 1998-12-23 | 2002-09-24 | Lsi Logic Corporation | Methods and apparatus for coordinating shared multiple raid controller access to common storage devices |
CN102099792A (zh) * | 2008-06-06 | 2011-06-15 | 枢轴3公司 | 用于分布式raid实现的方法和*** |
CN102207830A (zh) * | 2011-05-27 | 2011-10-05 | 杭州宏杉科技有限公司 | 一种缓存动态分配管理方法及装置 |
CN102262511A (zh) * | 2011-06-14 | 2011-11-30 | 苏州市易德龙电器有限公司 | 用于raid的缓存管理***及方法 |
CN102883143A (zh) * | 2012-09-21 | 2013-01-16 | 浙江宇视科技有限公司 | 一种调整raid阵列缓存的方法 |
CN103038755A (zh) * | 2011-08-04 | 2013-04-10 | 华为技术有限公司 | 多节点***中数据缓存的方法、装置及*** |
CN103488583A (zh) * | 2013-09-09 | 2014-01-01 | 华中科技大学 | 一种高性能高可靠的固态盘实现方法 |
CN103902474A (zh) * | 2014-04-11 | 2014-07-02 | 华中科技大学 | 一种支持固态盘缓存动态分配的混合存储***和方法 |
CN103907097A (zh) * | 2011-09-30 | 2014-07-02 | 美国网域存储技术有限公司 | 用于控制虚拟存储器具存储装置分配的智能 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060195704A1 (en) * | 2005-01-27 | 2006-08-31 | Hewlett-Packard Development Company, L.P. | Disk array encryption element |
US7979655B2 (en) * | 2008-03-04 | 2011-07-12 | International Business Machines Corporation | Dynamic optimization of device limits and thresholds in a write cache |
CN102223510B (zh) * | 2011-06-03 | 2012-11-14 | 浙江宇视科技有限公司 | 缓存调度方法和装置 |
CN103823765B (zh) * | 2014-02-26 | 2017-02-01 | 浙江宇视科技有限公司 | 一种动态调整缓存刷新策略的方法和装置 |
-
2015
- 2015-10-09 CN CN201510648757.6A patent/CN106569728B/zh active Active
-
2016
- 2016-07-15 WO PCT/CN2016/090212 patent/WO2017059716A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6457098B1 (en) * | 1998-12-23 | 2002-09-24 | Lsi Logic Corporation | Methods and apparatus for coordinating shared multiple raid controller access to common storage devices |
CN102099792A (zh) * | 2008-06-06 | 2011-06-15 | 枢轴3公司 | 用于分布式raid实现的方法和*** |
CN102207830A (zh) * | 2011-05-27 | 2011-10-05 | 杭州宏杉科技有限公司 | 一种缓存动态分配管理方法及装置 |
CN102262511A (zh) * | 2011-06-14 | 2011-11-30 | 苏州市易德龙电器有限公司 | 用于raid的缓存管理***及方法 |
CN103038755A (zh) * | 2011-08-04 | 2013-04-10 | 华为技术有限公司 | 多节点***中数据缓存的方法、装置及*** |
CN103907097A (zh) * | 2011-09-30 | 2014-07-02 | 美国网域存储技术有限公司 | 用于控制虚拟存储器具存储装置分配的智能 |
CN102883143A (zh) * | 2012-09-21 | 2013-01-16 | 浙江宇视科技有限公司 | 一种调整raid阵列缓存的方法 |
CN103488583A (zh) * | 2013-09-09 | 2014-01-01 | 华中科技大学 | 一种高性能高可靠的固态盘实现方法 |
CN103902474A (zh) * | 2014-04-11 | 2014-07-02 | 华中科技大学 | 一种支持固态盘缓存动态分配的混合存储***和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106569728A (zh) | 2017-04-19 |
WO2017059716A1 (zh) | 2017-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110134514B (zh) | 基于异构内存的可扩展内存对象存储*** | |
EP3367251B1 (en) | Storage system and solid state hard disk | |
US10185592B2 (en) | Network storage device using dynamic weights based on resource utilization | |
CN102508619B (zh) | 存储***服务质量控制方法、***和存储*** | |
CN105556485B (zh) | 基于相邻体和基于动态热阈值的热数据识别 | |
US9971698B2 (en) | Using access-frequency hierarchy for selection of eviction destination | |
US11113192B2 (en) | Method and apparatus for dynamically adapting cache size based on estimated cache performance | |
US10409516B1 (en) | Positional indexing for a tiered data storage system | |
CN111597125B (zh) | 一种非易失内存文件***索引节点的磨损均衡方法及*** | |
CN107544754B (zh) | 一种垃圾回收方法及装置 | |
CN106569728B (zh) | 多磁盘阵列raid共享写缓存的处理方法及装置 | |
WO2017039728A1 (en) | Transparent hybrid data storage | |
US20190332328A1 (en) | Storage Controller and IO Request Processing Method | |
CN116457885A (zh) | 一种数据处理方法、装置及*** | |
TW202215248A (zh) | 操作儲存系統的方法、以及對儲存資源的層級進行分區的方法 | |
WO2017092193A1 (en) | Computer memory management method and system | |
CN110865768B (zh) | 写缓存资源分配方法、装置、设备以及存储介质 | |
Wang et al. | Energy-efficient data caching framework for spark in hybrid DRAM/NVM memory architectures | |
Goyal et al. | CacheCOW: providing QoS for storage system caches | |
CN112015667A (zh) | 用于存储设备的垃圾回收强度预测及补偿 | |
Meng et al. | A flexible two-layer buffer caching scheme for shared storage cache | |
CN117389485B (zh) | 存储性能优化方法、装置、存储***、电子设备和介质 | |
CN108196790A (zh) | 数据管理方法、存储设备及计算机可读存储介质 | |
Yao et al. | Uniform scheduling of interruptible garbage collection and request IO to improve performance and wear-leveling of SSDs | |
Chang et al. | A load-balancing data caching scheme in multi-tiered storage systems |
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 |