首页> 中国专利> 一种提高分布式缓存的命中率并减少固态硬盘磨损的方法

一种提高分布式缓存的命中率并减少固态硬盘磨损的方法

摘要

本发明公开了一种提高分布式缓存的命中率并减少固态硬盘磨损的方法,结合缓存数据分布特性和固态硬盘特性优化缓存性能并降低成本。它能根据应用场景分配内存缓存区并将SSD划分为连续分布的与内存缓存区等大的Cage,内存缓存区缓存新数据,内存缓存区的数据达到上限时将内存缓存区所有数据写入Cage,擦除内存缓存区进行新的数据缓存。替换算法通过分析内存缓存区中的数据的访问频度分布,设定Cage中替换算法参数,替换算法会根据访问情况对缓存数据的替换优先级进行调整以区分出热门数据。当SSD的空闲空间不足时,替换算法会对Cage进行顺序擦除,擦除Cage时保留热门数据以提高命中率,降低了带宽消耗,顺序的批量擦写能有效降低SSD的写放大。

著录项

  • 公开/公告号CN104834607A

    专利类型发明专利

  • 公开/公告日2015-08-12

    原文格式PDF

  • 申请/专利权人 华中科技大学;

    申请/专利号CN201510257628.4

  • 发明设计人 金海;廖小飞;李渠;

    申请日2015-05-19

  • 分类号G06F12/08(20060101);

  • 代理机构42201 华中科技大学专利中心;

  • 代理人曹葆青

  • 地址 430074 湖北省武汉市洪山区珞喻路1037号

  • 入库时间 2023-12-18 10:12:06

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-02-23

    授权

    授权

  • 2015-09-09

    实质审查的生效 IPC(主分类):G06F12/08 申请日:20150519

    实质审查的生效

  • 2015-08-12

    公开

    公开

说明书

技术领域

本发明属于云计算环境下分布式缓存性能优化领域,具体涉及一种提 高分布式缓存的命中率并减少固态硬盘磨损的方法,用于结合用户访问行 为和硬件特性,实现高命中率以及低SSD磨损的缓存机制。

背景技术

云计算环境下,为了应对海量数据与用户请求带来的挑战,解决传统数 据库面临的大规模数据访问瓶颈,分布式缓存技术被引入,为用户提供高性 能、高可用、可伸缩的数据缓存服务。企业使用高速内存作为数据对象的存 储介质,数据以key/value形式存储。

固态硬盘(Solid State Drive,SSD)是用固态电子存储芯片阵列而制 成的硬盘,由控制单元和存储单元(包括FLASH芯片和DRAM芯片)组成。 固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘完全相同,在 产品外形和尺寸上也完全与普通硬盘一致。固态硬盘具有传统机械硬盘不 具备的快速读写、质量轻、能耗低以及体积小等特点。但其价格仍较为昂贵, 容量较低,一旦硬件损坏,数据较难恢复,并且固态硬盘的耐用性(寿命) 相对较短。

由于固态硬盘闪存的擦写次数有限,34nm的MLC闪存芯片寿命约是 5000次P/E,而25nm的寿命约是3000次P/E。SSD固件算法的优化指标之 一是提供更少的不必要写入量。

缓存的性能还体现在替换算法效率上,优化替换算法的目的是提高缓 存的命中率和比特命中率。影响算法效率的因素有缓存大小、缓存数据大小、 缓存数据不命中开销、时间局部性以及长尾效应等。目前商业系统通常使用 FIFO替换策略来对SSD缓存服务器中的内容进行更新,然而,通过对缓存 内容的访问情况进行分析发现FIFO策略会降低访问命中率,导致缓存服务 器需要更多的请求后台数据中心存储,加大带宽需求,增大了后台数据中心 的I/O压力。采用LRU等结合更多优化因素的替换策略能够有效的提高缓 存命中率以及比特命中率。

但是,SSD天生的缺陷——写放大,决定了FIFO替换策略能够将写放 大降到最低,其它的替换策略例如LRU、LFU都会造成严重的写放大,缩短 了SSD的使用寿命。企业从成本上考虑,FIFO能延长SSD的使用寿命,减 少SSD的购买,尽管FIFO会使命中率降低,现有的缓存系统依然使用FIFO 替换策略。

发明内容

基于以上原因,本发明提出了一个结合数据访问特性和SSD特性的缓 存替换算法,它利用数据访问的时间局部性以及访问热度特性,实时动态调 整缓存数据的替换优先级,在降低SSD写放大的同时尽可能提高访问命中 率。

为了实现上述目的,本发明提供了一种提高分布式缓存的命中率并减 少固态硬盘磨损的方法,包括如下步骤:

(1)进行缓存系统初始化,设定内存缓存区大小并分配内存空间,按 照内存缓冲区大小将SSD按物理地址顺序且等量地划分为X个Cage,其中 所述缓存系统包括内存缓存区和SSD缓存区;

(2)缓存系统接收并处理用户访问请求,在缓存系统中查询请求数据 是否已缓存,如果请求数据在缓存系统中有副本,则将数据返回给用户;如 果缓存系统中没有对应的请求数据,则转步骤(3);

(3)如果请求数据不在缓存系统中,缓存系统需要从数据中心获取请 求数据并缓存到缓存系统中;

(4)当请求数据在缓存系统中命中时,缓存数据的冷热程度会改变, 需要对已缓存的数据优先级队列进行调整;

(5)当SSD缓存空间满,没有空闲Cage,需要擦除Cage以保存新数 据,并保留要被擦除的Cage中热门数据。

本发明方法与现有技术相比,具有以下有益效果:

(1)相比广泛使用的FIFO替换算法,本发明通过保留热门数据,避免 热门数据再次访问时的不命中,提高缓存的命中率,降低缓存系统的带宽开 销。

(2)相比LRU、LFU等算法,本发明利用顺序写的特性降低了数据擦除 时的写放大,降低SSD的磨损。

(3)本发明具有良好的扩展性和维护性,对系统扩容时不会增加额外 的开销,SSD故障失效时更换新SSD不会影响系统运行。

附图说明

图1为本发明提高分布式缓存的命中率并减少固态硬盘磨损的方法流 程图;

图2为本发明的缓存替换算法的原理图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及 实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施 例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明 各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互 组合。

本发明提出了一种动态调节的缓存替换算法,它能根据应用场景分配 内存缓存区大小并将SSD划分为连续分布的与内存缓存区等大的Cage,内 存缓存区的数据达到上限时将内缓存区数据写入Cage。替换算法通过分析 内存缓存区中的缓存数据的访问频度分布,设定写入数据的Cage替换算法 层数k并将数据按访问频度优先排序,根据访问情况对缓存数据的替换优 先级进行调整,区分出热门数据。在擦除Cage时,保留热门数据避免热门 数据再次被访问时的不命中,提高缓存的命中率,减少缓存服务器与后台数 据中心的数据交换,降低了带宽消耗。当SSD的空闲空间不足时,替换算法 会选择最老的Cage进行擦除,Cage的擦写操作是顺序的,顺序的批量擦写 能有效降低SSD的写放大。

如图1所示,本发明提高分布式缓存的命中率并减少固态硬盘磨损的 方法,具体包括如下步骤:

(1)进行缓存系统初始化,设定内存缓存区大小并分配内存空间,按 照内存缓冲区大小将SSD按物理地址顺序且等量地划分为X个Cage,其中 所述缓存系统包括内存缓存区和SSD缓存区。其主要包括如下几个子步骤:

(1-1)内存缓存区分配。根据设定的内存缓存区大小,划分一部分内 存区域用来存储缓存数据,统计内存缓存区中数据的大小、数量、访问频度。 内存缓存区保存的数据分两种:一种是将缓存系统未缓存的数据,从数据中 心获取并缓存到内存缓存区;另一种是在Cage被擦除时,将Cage中的热 门数据写到内存缓存区。

(1-2)如图2,将SSD划分为X个大小相等的Cage,按照顺序将每个 Cage被标记为F_0、F_1、F_2、……、F_(X-1),其中Cage的擦写是顺序进 行的。当内存缓存区中的数据总量达到内存缓存区容量上限,执行步骤(5)。

(2)缓存系统接收并处理用户访问请求,在缓存系统中查询请求数据 是否已缓存,如果请求数据在缓存系统中有副本,则将数据返回给用户;如 果缓存系统中没有对应的请求数据,则转步骤(3);具体地:

(2-1)如果在缓存系统中有请求数据的副本,则将数据返回给用户。 并且如果请求数据在内存缓存区中,更新内存缓存区中的访问频度记录,如 果请求的数据在SSD中,转到步骤(4)更新缓存数据的替换队列;

(2-2)如果缓存系统中没有对应的请求数据,或者缓存的请求数据因 超时或者原始数据被修改等原因而失效,执行步骤(3)从数据中心获取请 求数据并缓存到缓存系统中。

(3)如果请求数据不在缓存系统中,缓存系统需要从数据中心获取请 求数据并缓存到缓存系统中,处理流程如下:

(3-1)查询内存缓存区中的数据是否达到了内存缓存区容量上限,如果 没有达到上限,直接从数据中心获取请求数据并存入内存缓存区,并更新内 存缓存区中数据的大小、数量和访问频度记录,将请求数据返回给用户。

(3-2)当内存缓存区中的数据达到了内存缓存区的容量上限,需要将内 存缓存区中的数据写入SSD。如果上一个被写的Cage为F_C,此时要将内 存缓存区数据写入编号为F_[(C+1)%X]的Cage。如果编号为F_[(C+1)%X]的 Cage为空,直接将内存缓存区数据写入该Cage,并清空内存缓存区。如果 编号为F_[(C+1)%X]的Cage不为空,则跳转到步骤(5)。

(3-3)将内存缓存区中的数据写入SSD的Cage中时,根据内存缓存 区中统计的缓存数据访问频度设定替换算法参数k。按照参数k和Cage中 缓存数据数量,生成LRU_1,LRU_2,…,LRU_k一共k个队列,LRU_1队列 记录Cage缓存数据中访问频度最高的热门数据,按照缓存数据访问频度, 后面的队列依次记录非热门数据。

(4)当请求数据在缓存系统中命中时,缓存数据的冷热程度会改变, 需要对已缓存的数据优先级队列进行调整,这时需要按照图2调整。其具 体步骤为:

(4-1)当队列LRU_1中的数据被访问,将该数据提升到LRU_1队列的 队头。

(4-2)当一个LRU_N(N≠1)队列中数据被访问,将该数据提升到LRU- (N-1)队列的队头,将LRU_(N-1)队尾数据放到LRU-N的队头,LRU-1中的 数据是访问频度高的热门数据。

(5)当SSD缓存空间满,没有空闲Cage,需要擦除Cage以保存新数 据。Cage在物理空间上顺序划分,对Cage进行顺序擦除能够有效的降低 SSD的写放大。并保留要被擦除的Cage中热门数据,以提高缓存命中率。 其具体步骤为:

(5-1)确定编号F_[(C+1)%X]的Cage为当前要被擦除的Cage,其中 编号F_C的Cage是上一个被擦除的Cage。

(5-2)将F_[(C+1)%X]中队列LRU_1对应的缓存数据暂存到内存缓存 区。

(5-3)擦除F_[(C+1)%X]对应的Cage,将内存缓存区中的数据写到编 号为F_[(C+1)%X]的Cage。

(5-4)清空内存缓存区,将(5-2)中内存暂存的数据写入内存缓存区。

本发明提供了一种提高分布式缓存的命中率并减少固态硬盘磨损的方 法,由于采用了步骤(1-2)将Cage进行顺序划分,并且采用步骤(5-1) 和(5-3)对Cage进行顺序擦写,能够大大的降低SSD的写放大,降低SSD 的磨损;由于采用了步骤(4),在系统运行时,能够将最近常被访问的热 门数据和其它非热门数据区分开来;由于采用了步骤(5-2)和(5-4),系 统能够在擦除过程中保留热门数据,提高缓存系统的高命中率,并且可以通 过控制保留数据的多少来控制SSD的写放大;由于采用了以上步骤(1)- (5),系统扩容时,将新数据顺序地写入新SSD,并且可以实现新老SSD的 磨损均衡,具有良好的扩展性,SSD出现故障时更换对应SSD不影响其它SSD 数据的访问,具有高可维护性。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同 替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号