一种基于ssd的缓存管理方法及系统的制作方法

文档序号:6370062阅读:142来源:国知局
专利名称:一种基于ssd 的缓存管理方法及系统的制作方法
技术领域
本发明涉及缓存的存储结构与策略,尤其涉及一种基于SSD的缓存管理方法及系统。
背景技术
随着当代社会的进步,需要处理的数据信息越来越多,数据量呈爆炸式增长。这给传统的存储系统带来了许多问题。传统的存储系统一般由内存(DRAM)和硬盘(HDD)构成,DRAM作为HDD的缓存,这样的系统面临以下几个挑战其一,数据总量在迅速増大。IDC和EMC的联合报告指出当今社会的数据呈爆炸式的增长趋势,从他们的报告可以看出来,2005前以及之前的数据量仅为几十EB(1EB=1018字节),2010年则为上千EB,预计到2015年则会到达接近8000EB,也就是8ZB (1ZB=1021字节)的数据量.面临这样的数据規模,传统的DRAM+HDD存储架构下,将有越来越多的I/O请求发向磁盘,因此性能会因请求的响应时间变长而受到产生影响。 其ニ,I/O gap在逐渐増大,HDD逐渐成为性能瓶颈。报告显示,CPU性能每年以60%的速度增长,也就是每18个月翻一番。而HDD的性能却每年增长速度小于10%,大约在8%左右,这是因为它受制于磁盘物理结构的特点,磁盘机械臂的寻道速度和盘面的旋转速度,大约每10年才能翻一番。同时DRAM与HDD的延迟差距也在加大,以上这些导致HDD成为I/O的瓶颈。如果请求频繁得发向磁盘,那么必然会严重降低系统的性能。其三,数据处理的性能需求在不断提高。近年来,高性能计算逐渐由CPU密集型向I/o密集型转变,系统的I/o效率对性能有着重要的影响,这就对存储系统的I/O操作提出了很高的要求。此外互联网服务的高速发展也对海量存储系统的I/o操作性能提出了更高的要求,对于搜索引擎、电子商务、OSN之类的互联网应用,它们需要同时处理大量用户的操作请求,并且用户感受到的响应时间必须是在可以接受的范围(秒级以内)。这样的应用特点就要求其底层的数据存储系统必须具有很好的I/o性能,传统的DRAM+HDD将越来越难以胜任。SSD是近年来新兴的ー种新型存储介质,它的出现极有可能帮助解决上述的挑战。SSD的性能和价格均位于DRAM和HDD之间,如果将其加入到缓存系统中,将其做为HDD的ニ级缓存,极有可能提高系统的性能,由于其容量比DRAM要大,同时性能较HDD好于若干个数量级,因此预计可以有效的減少发往HDD的请求。但是SSD有许多独特的特性,使得直接将SSD引入DRAM和HDD之间作为缓存会存在许多问题,导致SSD的性能得不到最大化利用.这些特性如下第一,SSD的读写性能不对称,读操作的性能远远好于写操作,在随机操作而且粒度较小的情况下更差,然而传统的缓存系统中,数据无论是从HDD中进入SSD还是从DRAM中替换进入SSD都是小粒度的随机写,这就使得SSD的性能受到严重影响。第二,SSD寿命有限,它的寿命限制于擦除次数,而写操作的数量直接决定擦除次数,然而在传统的缓存概念中,无论什么样的数据都要进入缓存,即使这些数据只被访问ー次,这些就会造成多余的擦除操作,会影响SSD的寿命。因此要尽量減少多余的写操作。第三,SSD的容量有限,虽然较之于DRAM比较大,但是相对HDD和要存储的数据量来讲还是比较小的,因此应将使其存储经常访问的数据,这样才能使其得到最大化的利用。从上面的叙述中可以看出,如何设计ー个缓存系统与缓存管理策略,提高系统的性能,同时能使SSD的性能和空间得到最大化的利用是ー个挑战。传统的缓存管理方式并不适合于应用到SSD中,它们主要分为以下几类第一类,是基于时间局部性的缓存管理算法。典型代表是LRU (Least RecentlyUsed)算法,但是这种算法它不能鉴定数据访问的热度,数据即使只访问过一次也从从链头走到链尾才能被替换。第二类,是基于访问频率的缓存管理算法。典型代表是LFU (Least FrequentlyUsed)算法。但是这种算法它不考虑时间这一因素,过去经常访问但是已经很长时间不再被访问的数据依然由于有很高的访问频繁而被保存在缓存中,因此会造成缓存污染。第三类,是综合两个因素的考虑,典型代表是LIRS(Low Inter-Reference Set)算法。但是它的缺点是实现较为复杂,同时会带来一定的额外开销。无论上面哪ー类,它们都不能改善前面提到的问题,因为数据无论是进入SSD还是替换SSD,则必然产生对于SSD的小粒度的随机写,而且如果数据不加选择的进入,缓存污染的问题在SSD上表现得更为严重。具体见附图I.因此需要一种技术在控制进入SSD的数据和优化SSD中数据的替换方面着手,从而改变上面提到的问题,从而最大化的利用SSD的性能。

发明内容
为解决上述问题,针对SSD的性能特点,本发明的目的是解决现有技术的SSD上小粒度随机写过多,缓存污染严重的问题,提出了ー个新的缓存体系结构,由DRAM和SSD两级构成,DRAM是ー级缓存,SSD作为ニ级缓存的系统。本发明公开ー种基于SSD的缓存管理方法,包括步骤1,发送读写请求,检查缓存DRAM中是否命中数据,查找hash表,判断所述数据是否存在,如果存在则从缓存DRAM中读取该数据并返回该次请求,如不存在缓存DRAM中,则从HDD中读取数据至缓存DRAM中后执行步骤2 ;步骤2,采用两级LRU链表和Ghost buffer进行数据的筛选,鉴别数据的热度;步骤3,对于两级LRU链表的长度进行自适应变化的计算,当缓存DRAM中第二级LRU链表满时,采取页簇的粒度,将位于第二级LRU端的后C页作为一个整体聚合在一起被替换出缓存DRAM,然后大粒度写入到SSD中,其中页簇大小假定为C页,C为SSD中Block页数的整数倍。所述的基于SSD的缓存管理方法,所述步骤I包括步骤21,如果数据存在,即在缓存DRAM中命中数据,则可直接将缓存DRAM中的数据返回,请求完成;步骤22,如果在hash表中不存在,则需要继续查询SSD的hash表,判断该数据是否存储在SSD中;步骤23,如果在SSD中命中,则将该数据从SSD中读取出来,请求完成。
所述的基于SSD的缓存管理方法,包括从HDD中读取的数据直接复制至缓存DRAM中,数据由缓存DRAM筛选后才部分的替换至SSD缓存中,缓存DRAM与SSD之间的内容是不相同的,缓存的空间便是两个空间的总和;如果请求在SSD中也未命中,那么需要将请求发送到HDD中读取。所述的基于SSD的缓存管理方法,所述步骤2包括步骤41,当数据第一次进入到缓存DRAM时,先放置在第一级LRU链表的MRU端,两级LRU链表均在缓存DRAM中;步骤42,第一级LRU链表的大小设置为整个缓存DRAM大小的比例设为P1,0〈Pl〈l ;步骤43,当第一级链表满时,采用LRU的方式进行替换,替换出的页的信息保存至ghost buffer中,将其历史访问记录保存下来,该历史访问记录为访问热度并不高的数 据;步骤44,当第一级LRU链表中的数据第二次被命中的时候,则将其提升至第二级链表中;步骤45,当第二级LRU链表满的时候,将其第二级LRU链表的内容替换至SSD中,得到访问热度较高的数据。所述的基于SSD的缓存管理方法,所述步骤3中自适应变化的计算包括步骤51,为两级LRU链表都添加了相应的Shadowbuffer,其分别存储相应级别链表中最近被替换的页的访问信息,两个Shadowbuffer都存储缓存DRAM同样数量的访问信息记录;步骤52,两个Shadowbuffer动态变化两级LRU链表的大小,设定目标值TargetSize,该值是第一级LRU链表的目标值,即ー级LRU链表的目标大小是TargetSize ;初始值设为缓存DRAM大小的一半;对于随后的负载有变化过程。所述的基于SSD的缓存管理方法,其变化过程包括步骤61,第一级LRU链表的数据页替换后,历史信息保存在第一级LRU链表ShadowBuffer中,同吋,第二级LRU链表中的数据被替换后,也保存至第二级LRU链表Shadowbuffer 中;步骤62,当数据在第一级LRU链表Shadowbuffer中命中时,第一级LRU链表长度需要增长,TargeSize++ ;步骤63,当数据在第二级LRU链表Shadowbuffer中命中时,ニ级LRU链表长度需要增长,TargetSize—。所述的基于SSD的缓存管理方法,所述步骤3还包括步骤71,经过缓存DRAM中两级LRU链表的筛选,第二级LRU链表存储的是比较热的数据,从MRU端至LRU端的热度分别从高到低;步骤72,当第二级LRU链表满时,第二级LRU端的页被替换至缓冲区内;步骤73,第二级链表毎次替换都会使缓冲区内积累ー个page,经过一段时间后,缓冲区可以到达64页,此时已经到达Cluster的大小,因此此Cluster处于ready状态;步骤74,当再次替换的页进入缓冲区时,缓冲区满,因此将此Cluster刷至SSD中,缓冲区清空,之后重复步骤71-74。本发明还公开ー种基于SSD的缓存管理系统,包括
检查缓存DRAM模块,用于发送读写请求,检查缓存DRAM中是否命中数据,查找hash表,判断所述数据是否存在,如果存在则从缓存DRAM中读取该数据并返回该次请求,如不存在缓存DRAM中,则从HDD中读取数据至缓存DRAM ;筛选数据模块,用于采用两级LRU链表和Ghost buffer进行数据的筛选,鉴别数据的热度;自适应变化与聚合模块,用于对于两级LRU链表的长度进行自适应变化的计算,当缓存DRAM中第二级LRU链表满时,采取页簇的粒度,将位于第二级LRU端的后C页作为一个整体聚合在一起被替换出缓存DRAM,然后大粒度写入到SSD中,其中页簇大小假定为C页,C为中Block页数的整数倍。
所述的基于SSD的缓存管理系统,所述检查缓存DRAM模块包括命中数据模块,用于如果数据存在,即在缓存DRAM中命中数据,则可直接将缓存DRAM中的数据返回,请求完成;查询SSD模块,用于如果在hash表中不存在,则需要继续查询SSD的hash表,判断该数据是否存储在SSD中;读取SSD模块,用如果在SSD中命中,则将该数据从SSD中读取出来,请求完成。所述的基于SSD的缓存管理系统,包括从HDD中读取的数据直接复制至DRAM中,数据由DRAM筛选后才部分的替换至SSD缓存中,缓存DRAM与SSD之间的内容是不相同的,缓存的空间便是两个空间的总和;如果请求在SSD中也未命中,那么需要将请求发送到HDD中读取。所述的基于SSD的缓存管理系统,所述筛选数据模块包括放置MRU端模块,用于当数据第一次进入到缓存DRAM时,先放置在第一级LRU链表的MRU端,两级LRU链表均在缓存DRAM中;设置比例模块,用于第ー级LRU链表的大小设置为整个缓存DRAM大小的比例设为Pi, (Kp1 < I ;替换模块,用于当第一级链表满时,采用LRU的方式进行替换,替换出的页的信息保存至ghost buffer中,将其历史访问记录保存下来,该历史访问记录为访问热度并不高的数据;二次命中模块,用于当第一级LRU链表中的数据第二次被命中的时候,则将其提升至第二级链表中;热度模块,用于当第二级LRU链表满的时候,将其第二级LRU链表的内容替换至SSD中,得到访问热度较高的数据。所述的基于SSD的缓存管理系统,所述自适应变化与聚合模块包括自适应变化模块,用于为两级LRU链表都添加了相应的Shadowbuffer,其分别存储相应级别链表中最近被替换的页的访问信息,两个Shadowbuffer都存储缓存DRAM同样数量的访问信息记录;两个Shadowbuffer动态变化两级LRU链表的大小,设定目标值TargetSize,该值是第一级LRU链表的目标值,即ー级LRU链表的目标大小是TargetSize ;初始值设为缓存DRAM大小的一半;对于随后的负载有变化过程。所述的基于SSD的缓存管理系统,其自适应变化模块还包括保存历史信息模块,用于第一级LRU链表的数据页替换后,历史信息保存在第一级LRU链表ShadowBuffer中,同吋,第二级LRU链表中的数据被替换后,也保存至第二级LRU 链表 Shadowbuffer 中;—级增加长度模块,用于当数据在第一级LRU链表Shadowbuffer中命中时,第一级LRU链表长度需要增长,TargeSize++ ;ニ级增加长度模块,用于当数据在第二级LRU链表Shadowbuffer中命中时,第二级LRU链表长度需要增长,TargetSize—o所述的基于SSD的缓存管理系统,所述自适应变化与聚合模块还包括聚合模块,用于经过缓存DRAM中两级LRU链表的筛选,第二级LRU链表存储的是比较热的数据,从MRU端至LRU端的热度分别从高到低;当第二级LRU链表满时,第二级LRU端的页被替换至缓冲区内;第二级链表毎次替换都会使缓冲区内积累ー个page,经过 一段时间后,缓冲区可以到达64页,此时已经到达Cluster的大小,因此此Cluster处于ready状态;当再次替换的页进入缓冲区吋,缓冲区满,因此将此Cluster刷至SSD中,缓冲区清空。本发明的有益效果为1,在本发明中,数据的流向与传统的缓存并不相同。从HDD中读出的数据并不是直接进入到SSD,而是在先拿到DRAM中进行筛选后有选择的进入SSD。这样带来的技术效果便是数据是要经过DRAM的筛选过滤后才进入SSD,也就是数据先在DRAM中进行观察“热度”。这样便使进入SSD的写操作大大降低,同时减少了 SSD的缓存污染。2,针对上面的缓存结构,本发明设计了ー种筛选数据的方法。这样带来的技术效果是以这种方法进入到SSD的数据是那些被频繁被访问的数据,因此能够最大化地利用SSD缓存空间,同时DRAM和SSD缓存存储的内容是不同的,这样可以使两级缓存的空间利用更为有效。3,针对传统的数据进入SSD都以小粒度随机写的I/O模式的问题,本发明设计了数据聚合技木。数据先在DRAM中,将若干个页聚合为ー个大粒度的页簇(cluster),然后以页簇为粒度写入到SSD中,在替换时也采用页簇为粒度,这样的技术效果便是可以避免在SSD上帯来的小粒度随机写。与此相对应的,当缓存中数据满的时候,我们采取大粒度的方式替换,一次性替换一定数量的连续的页,这正与数据进入的方式相结合,从而提高缓存系统的性能。综上所述,本发明采用了以上的三个关键技术,可以对SSD的缓存系统进行一定程度的优化,从而更加有效的利用SSD的性能。在系统响应时间上,由于可以减少发向HDD的请求,因此系统性能会有所提高。其次SSD上的缓存污染问题得以避免。最后,SSD的小粒度的随机写会得到有效的減少,因而SSD的寿命也会延长。


图I为传统的缓存组织方式;图2为本发明新的缓存系统数据流向图;图3为本发明两级LRU链表管理DRAM缓存;图4为本发明两级LRU链表长度动态变化算法;图5为本发明聚合进入SSD的技术;
图6为本发明基于SSD的缓存管理方法示意图;图7为本发明基于SSD的缓存管理系统示意图。
具体实施例方式下面给出本发明的具体实施方式
,结合附图对本发明做出了详细描述。新的缓存系统新的缓存系统由DRAM, SSD, HDD构成,具体见附图2。SSD位于DRAM和HDD之间,作为HDD的缓存,数据持久化存储在HDD中,DRAM作为第一级缓存,SSD作为第二级缓存。DRAM和SSD构成了 HDD的两级缓存。DRAM中要记录DRAM缓存中本身存储的内容,为了快速定位某个page是否在DRAM缓存中存在,因此将缓存中存储的page以hash表的方式来管理,同时也要记录SSD中的内容,将SSD缓存中数据的相关信息要记录在DRAM中,这需要 同样以hash表来记录内容。因此在DRAM中需要存储如下信息LRU (Least Recently Used最近最少使用算法)链表信息,此链表有头指针和尾指针,用来执行插入,替换等操作;DRAM内容Hash表,存储DRAM中内容的hash表,用来查找数据在DRAM缓存中是否命中;SSD page的LRU链表,同DRAM中的LRU链表一祥,有头指针和尾指针,用来执行插入,替换等操作;SSD内容的hash表,存储SSD中内容的hash表,用来查找数据是否在SSD中命中;请求的处理过程是这样的姆当用户CPU/cache发送ー个读/写请求,首先检查ー级缓存DRAM中是否命中,查找hash表,查看hash表中page页是否存在。如果存在,即在DRAM缓存中命中,则可直接将DRAM缓存中的数据返回,请求完成。如果在hash表中不存在,则需要继续查询SSD的hash表,看该数据是否存储在SSD中。如果在SSD中命中,则将该数据从SSD中读取出来,请求完成。注意,数据并不复制至第一级缓存DRAM中,它们之间的内容是不相同的,也就是说是exclusive的,这样带来的好处是缓存的空间便是两个空间的总和。如果请求在SSD中也未命中,那么需要将请求发送到HDD中读取。当请求完成时,将此数据保存到DRAM缓存中,也就是第一级缓存中,这是基于时间局部性的考虑,因为有可能以后还有可能访问这个数据。这里要注意缓存满时的替换操作,因为请求可能是写操作,写操作如果在DRAM缓存中命中,则需要将其页置为“脏”,而如果这个页被选择替换,则需要先将此页的内容写回到HDD中,然后才能从DRAM缓存中移除。筛选数据的策略要想减少缓存污染,減少到SSD上的小粒度随机写,就必须有一种筛选数据的策略,而传统的缓存系统,数据只要从HDD拿来,必然要放入缓存中,而本发明在DRAM中采用了两级LRU链表加Ghost buffer的方式来进行数据的筛选。具体的情况见图3。如果简单地采取LRU链表来管理的话,前面也提到过,无法鉴别数据的热度,缓存污染严重。而采用两级LRU链表可以有效的解决这个问题,具体操作流程如下当数据第一次进入到DRAM缓存时,先放置在第一级LRU链表的MRU端(Mo s tRecently Used)。两级LRU链表均在DRAM缓存中。第一级链表的大小设置为整个DRAM缓存大小的一定比例(设为Pl,0〈Pl< 1),这就是为了减少缓存污染。当链表满时,则采用LRU的方式进行替换,替换出的页的信息保存至ghost buffer中,注意,ghost buffer中只保存该页的访问信息,并不记录该页的内容,因此ー个page (4K)只需要16个bytes便可以保存。ghost buffer可以保存DRAM缓存与SSD缓存的容量之和的访问信息,所占的内存量也并不多。如ー个IGB的SSD加上128MB的DRAM缓存,则仅需要约4MB的空间即可以存储其历史访问信息。当第一级LRU链表中的数据第二次被命中的时候,则将其提升至第二级链表中。当第二级LRU链表满的时候,将其LRU端的内容替换至SSD中,这些是访问热度较高的数据。并将其历史访问记录保存下来,因为这些是访问热度并不高的数据。从整体上看,SSD和这第二级LRU链表形成了一个大的LRU链表。当一个请求的页在缓存中未命中时,在此策略下,需要加一次查询Ghost buffer的操作,如果在Ghost buffer中找到访问信息,则认为该数据是比较热的数据,因此从磁盘读出数据后便将其放入第二级LRU链表中。因此在DRAM缓存中还需要保存以下信息Ghost buffer中的历史访问信息,以LRU方式管理每ー项。如果满了,就替换掉旧 的信息。Ghost buffer的hash表,用来查询历史访问记录。我们在DRAM中采用上面的算法来进行筛选数据,这样可以使得进入SSD的数据均为比较“热”的数据。然而当DRAM满时,我们需要选择ー个牺牲页来进行替换。那么到底选择ー级LRU链表中的页还是ニ级LRU链表中的页呢?如果只选择其中的一个来进行替换,势必导致另外ー个链表的页数逐渐变小。而如果分别为两个链表选择固定长度的大小,由于这两个链表分别代码Recency和Frequency两项參数,如果大小均一直不变化,则这个算法便不能根据负载的变化而相应的变化。因此我们需要使这两个參数能够自适应的随负载变化页变化。两级链表长度自适应变化的算法换句话说,我们需要设计ー个參数一级链表大小LI L2的比例分配的问题。为此,我们设计了一个动态变化的算法,如图4所示图4中Shadowbuffer其实与Ghostbuffer的功能是相同的,它们只存储最近被访问过的页的访问信息,而不存储数据信息。因此它的开销非常小。而为了与前面提到的Ghostbuffer相区分,我们称之为Shadowbuffer。在此处,我们为每级LRU链表都添加了相应的Shadowbuffer,该区别分别存储相应级别链表中最近被替换的页的访问信息。这两个Shadowbuffer都存储DRAM缓存同样数量的访问信息记录。我们采用这两个Shadowbuffer来动态变化两级LRU链表的大小,为此我们设定一个目标值TargetSize,这个值是第一级LRU链表的目标值,也就是说,ー级LRU链表的目标大小是TargetSize。初始值设为DRAM大小的一半。其后随着负载的变化而动态变化。其变化过程如下第一级LRU链表的数据页替换后,历史信息保存在LI ShadowBuffer中,同时,第ニ级LRU中的数据被替换后,也保存至L2 Shadow buffer中。当数据在LI Shadowbuffer中命中时,我们认为ー级LRU链表长度需要增长,iargeSize++ ;当数据在L2 Shadowbuffer中命中时,我们认为ニ级LRU链表长度需要增长,TargetSize—;我们之所以这样动态变化的原因在于,两个ShadowBuffer均存储相应级别链表中替换出的页,而如果页请求在LI Shadow中命中,这意味着在DRAM缓存中的未命中,而在其ShadowBuffer中命中则意味着LI链表长度不够,因为如果足够长,那么这次请求便不会未命中,因此我们使其TargetSize变大。同理,对于L2来说,我们应使L2大小变大,即使TargetSize变小。这样便完成了两级LRU链表的动态变化。当DRAM缓存满时,如果ー级链表的大小超过TargetSize,则替换时从LI中选择牺牲页;反之则从L2中选择牺牲页。综上所述,我们采取筛选数据进入SSD的方案后,可以带来如下好处有效的控制了进入SSD的数据,使得进入SSD的数据都是经常访问的“热”数据。同时杜绝了只访问一次就不再访问的数据进入SSD的可能。这可以使SSD的缓存利用率得到有效的提闻。
減少了发送至SSD上的写操作。经过数据的筛选操作,同HDD中读取的数据不再会全部经过SSD缓存,这使得SSD发送到SSD上的写操作数大为減少,可以使SSD的使用寿命得到延长DRAM和SSD存储的数据是不相交的,也就是exclusive的。这样ー来,两级缓存存储的有效空间便是两级缓存空间的总和。这使得整个缓存系统可以更为有效的得用DRAM和SSD的全部空间。聚合写入SSD与大粒度替换测试表明,对于SSD大粒度的I/O操作要比小粒度的I/O操作性能好很多。这是因为SSD的不能原地写的特点导致的,小粒度的操作会导致SSD内部出现碎片化,从而降低性能。因此本发明采用了聚合写的技木。当DRAM缓存中第二级LRU链表满了的时候,我们替换时并不是采用页的粒度,而是采取页簇的粒度。我们用SSD的擦除粒度(erase block)或者其倍数为页簇大小(假设为C页),也就是说位于LRU端的后C页作为一个整体一起被替换出DRAM缓存,将它们作为一个整体聚合在一起,然后写入到SSD中,具体流程如图5所示,其算法如下所示经过DRAM缓存中两级LRU链表的筛选,第二级LRU链表存储的是比较热的数据。从MRU端至LRU端的热度分别从高到低;当ニ级LRU链表满吋,LRU端的页被替换至缓冲区内;ニ级链表毎次替换都会使缓冲区内积累ー个page,因此经过一段时间后,缓冲区可以到达64页。此时已经到达Cluster的大小,因此此Cluster处于ready状态当再次替换的页进入缓冲区时,缓冲区满,因此将此cluster刷至SSD中,缓冲区清空,之后重复步骤1-4。在加入了聚合技术后,我们在SSD中也需要管理所有页簇的信息。也就是页簇级别的LRU,因此在DRAM缓存中我们还需的下面的信息页簇级别的LRU,需要记录每个页簇的权重当SSD满的时候,替换时也是以页簇为粒度进行替换。这样就避免了数据进入和替换出SSD时引入的小粒度随机写。如图6所示,本发明公开ー种基于SSD的缓存管理方法,包括
步骤1,发送读写请求,检查缓存DRAM中是否命中数据,查找hash表,判断所述数据是否存在,如果存在则从缓存DRAM中读取该数据并返回该次请求,如不存在缓存DRAM中,则从HDD中读取数据至缓存DRAM中后执行步骤2 ;步骤2,采用两级LRU链表和Ghost buffer进行数据的筛选,鉴别数据的热度;步骤3,对于两级LRU链表的长度进行自适应变化的计算,当缓存DRAM中第二级LRU链表满时,采取页簇的粒度,将位于第二级LRU端的后C页作为一个整体聚合在一起被替换出缓存DRAM,然后大粒度写入到SSD中,其中页簇大小假定为C页,C为SSD中Block页数的整数倍。所述的基于SSD的缓存管理方法,所述步骤I包括步骤21,如果数据存在,即在缓存DRAM中命中数据,则可直接将缓存DRAM中的数据返回,请求完成;
步骤22,如果在hash表中不存在,则需要继续查询SSD的hash表,判断该数据是否存储在SSD中;步骤23,如果在SSD中命中,则将该数据从SSD中读取出来,请求完成。所述的基于SSD的缓存管理方法,包括从HDD中读取的数据直接复制至缓存DRAM中,数据由缓存DRAM筛选后才部分的替换至SSD缓存中,缓存DRAM与SSD之间的内容是不相同的,缓存的空间便是两个空间的总和;如果请求在SSD中也未命中,那么需要将请求发送到HDD中读取。所述的基于SSD的缓存管理方法,所述步骤2包括步骤41,当数据第一次进入到缓存DRAM时,先放置在第一级LRU链表的MRU端,两级LRU链表均在缓存DRAM中; 步骤42,第一级LRU链表的大小设置为整个缓存DRAM大小的比例设为P1,0〈Pl〈l ;步骤43,当第一级链表满时,采用LRU的方式进行替换,替换出的页的信息保存至ghost buffer中,将其历史访问记录保存下来,该历史访问记录为访问热度并不高的数据;步骤44,当第一级LRU链表中的数据第二次被命中的时候,则将其提升至第二级链表中;步骤45,当第二级LRU链表满的时候,将其第二级LRU链表的内容替换至SSD中,得到访问热度较高的数据。所述的基于SSD的缓存管理方法,所述步骤3中自适应变化的计算包括步骤51,为两级LRU链表都添加了相应的Shadowbuffer,其分别存储相应级别链表中最近被替换的页的访问信息,两个Shadowbuffer都存储缓存DRAM同样数量的访问信息记录;步骤52,两个Shadowbuffer动态变化两级LRU链表的大小,设定目标值TargetSize,该值是第一级LRU链表的目标值,即ー级LRU链表的目标大小是TargetSize ;初始值设为缓存DRAM大小的一半;对于随后的负载有变化过程。所述的基于SSD的缓存管理方法,其变化过程包括步骤61,第一级LRU链表的数据页替换后,历史信息保存在第一级LRU链表ShadowBuffer中,同吋,第二级LRU链表中的数据被替换后,也保存至第二级LRU链表Shadowbuffer 中;步骤62,当数据在第一级LRU链表Shadowbuffer中命中时,第一级LRU链表长度需要增长,TargeSize++ ;步骤63,当数据在第二级LRU链表Shadowbuffer中命中时,ニ级LRU链表长度需要增长,TargetSize—。所述的基于SSD的缓存管理方法,所述步骤3还包括步骤71,经过缓存DRAM中两级LRU链表的筛选,第二级LRU链表存储的是比较热的数据,从MRU端至LRU端的热度分别从高到低;
步骤72,当第二级LRU链表满时,第二级LRU端的页被替换至缓冲区内;步骤73,第二级链表毎次替换都会使缓冲区内积累ー个page,经过一段时间后,缓冲区可以到达64页,此时已经到达Cluster的大小,因此此Cluster处于ready状态;步骤74,当再次替换的页进入缓冲区时,缓冲区满,因此将此Cluster刷至SSD中,缓冲区清空,之后重复步骤71-74。如图7所示,本发明还公开ー种基于SSD的缓存管理系统,包括检查缓存DRAM模块,用于发送读写请求,检查缓存DRAM中是否命中数据,查找hash表,判断所述数据是否存在,如果存在则从缓存DRAM中读取该数据并返回该次请求,如不存在缓存DRAM中,则从HDD中读取数据至缓存DRAM ;筛选数据模块,用于采用两级LRU链表和Ghost buffer进行数据的筛选,鉴别数据的热度;自适应变化与聚合模块,用于对于两级LRU链表的长度进行自适应变化的计算,当缓存DRAM中第二级LRU链表满时,采取页簇的粒度,将位于第二级LRU端的后C页作为一个整体聚合在一起被替换出缓存DRAM,然后大粒度写入到SSD中,其中页簇大小假定为C页,C为中Block页数的整数倍。 所述的基于SSD的缓存管理系统,所述检查缓存DRAM模块包括命中数据模块,用于如果数据存在,即在缓存DRAM中命中数据,则可直接将缓存DRAM中的数据返回,请求完成;查询SSD模块,用于如果在hash表中不存在,则需要继续查询SSD的hash表,判断该数据是否存储在SSD中;读取SSD模块,用如果在SSD中命中,则将该数据从SSD中读取出来,请求完成。所述的基于SSD的缓存管理系统,包括从HDD中读取的数据直接复制至DRAM中,数据由DRAM筛选后才部分的替换至SSD缓存中,缓存DRAM与SSD之间的内容是不相同的,缓存的空间便是两个空间的总和;如果请求在SSD中也未命中,那么需要将请求发送到HDD中读取。所述的基于SSD的缓存管理系统,所述筛选数据模块包括放置MRU端模块,用于当数据第一次进入到缓存DRAM时,先放置在第一级LRU链表的MRU端,两级LRU链表均在缓存DRAM中;设置比例模块,用于第ー级LRU链表的大小设置为整个缓存DRAM大小的比例设为Pi, (Kp1 < I ;替换模块,用于当第一级链表满时,采用LRU的方式进行替换,替换出的页的信息保存至ghost buffer中,将其历史访问记录保存下来,该历史访问记录为访问热度并不高的数据;二次命中模块,用于当第一级LRU链表中的数据第二次被命中的时候,则将其提升至第二级链表中;热度模块,用于当第二级LRU链表满的时候,将其第二级LRU链表的内容替换至SSD中,得到访问热度较高的数据。所述的基于SSD的缓存管理系统,所述自适应变化与聚合模块包括
自适应变化模块,用于为两级LRU链表都添加了相应的Shadowbuffer,其分别存储相应级别链表中最近被替换的页的访问信息,两个Shadowbuffer都存储缓存DRAM同样数量的访问信息记录;两个Shadowbuffer动态变化两级LRU链表的大小,设定目标值TargetSize,该值是第一级LRU链表的目标值,即ー级LRU链表的目标大小是TargetSize ;初始值设为缓存DRAM大小的一半;对于随后的负载有变化过程。所述的基于SSD的缓存管理系统,其自适应变化模块还包括保存历史信息模块,用于第一级LRU链表的数据页替换后,历史信息保存在第一级LRU链表ShadowBuffer中,同吋,第二级LRU链表中的数据被替换后,也保存至第二级LRU 链表 Shadowbuffer 中;—级增加长度模块,用于当数据在第一级LRU链表Shadowbuffer中命中时,第一级LRU链表长度需要增长,TargeSize++ ;ニ级增加长度模块,用于当数据在第二级LRU链表Shadowbuffer中命中时,第二级LRU链表长度需要增长,TargetSize—。所述的基于SSD的缓存管理系统,所述自适应变化与聚合模块还包括聚合模块,用于经过缓存DRAM中两级LRU链表的筛选,第二级LRU链表存储的是比较热的数据,从MRU端至LRU端的热度分别从高到低;当第二级LRU链表满吋,第二级LRU端的页被替换至缓冲区内;第二级链表毎次替换都会使缓冲区内积累ー个page,经过一段时间后,缓冲区可以到达64页,此时已经到达Cluster的大小,因此此Cluster处于ready状态;当再次替换的页进入缓冲区时,缓冲区满,因此将此Cluster刷至SSD中,缓冲区清空。综上,我们发明了ー种新的缓存系统,该系统由DRAM与SSD构成的混合缓存系统,它旨在最大化的利用SSD的性能。主要的技术有以下几点I.设计了基于SSD的缓存系统,设计了ー种控制进入SSD数据的架构。为了避免缓存污染,我们采取在DRAM中观察数据热度的方式来使数据选择性的进入SSD。这与传统的缓存管理策略不同,它可以避免只访问一次的数据进入缓存而造成缓存污染。因此它可以更有效的利用SSD缓存的空间。2.设计了一种筛选数据的算法。我们采用两级LRU链表的技术来筛选进入SSD的数据。ー级LRU链表存储只访问一次的数据,而ニ级链表则存储至少访问两次以上的数据,也就是比较“热”的数据。这样使得SSD中存储的数据更为有效,同时,这个算法开销非常小,并且可以动态地适应负载的变化。3.针对SSD的性能特点,设计了聚合进入SSD的数据和大粒度替换的方案。本文在DRAM中筛选数据的基础上,通过增加一个缓冲区来聚合进入SSD的数据。SSD上小粒度随机写的性能非常差,而采取这样的方案杜绝了数据进入SSD的过程中的小粒度随机写,从而使SSD的使用性能得到提高。与此同时,当缓存中数据满的时候,我们采取大粒度的方式替换,一次性替换一定数量的连续的页,这正与数据写入的方式相结合,从而提高缓存系统的性能。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还
可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1.一种基于SSD的缓存管理方法,其特征在于,包括 步骤I,发送读写请求,检查缓存DRAM中是否命中数据,查找hash表,判断所述数据是否存在,如果存在则从缓存DRAM中读取该数据并返回该次请求,如不存在缓存DRAM中,则从HDD中读取数据至缓存DRAM中后执行步骤2 ; 步骤2,采用两级LRU链表和Ghost buffer进行数据的筛选,鉴别数据的热度; 步骤3,对于两级LRU链表的长度进行自适应变化的计算,当缓存DRAM中第二级LRU链表满时,采取页簇的粒度,将位于第二级LRU端的后C页作为一个整体聚合在一起被替换出缓存DRAM,然后大粒度写入到SSD中,其中页簇大小假定为C页,C为SSD中Block页数的整数倍。
2.如权利要求I所述的基于SSD的缓存管理方法,其特征在于,所述步骤I包括 步骤21,如果数据存在,即在缓存DRAM中命中数据,则可直接将缓存DRAM中的数据返回,请求完成; 步骤22,如果在hash表中不存在,则需要继续查询SSD的hash表,判断该数据是否存储在SSD中; 步骤23,如果在SSD中命中,则将该数据从SSD中读取出来,请求完成。
3.如权利要求2所述的基于SSD的缓存管理方法,其特征在于,包括 从HDD中读取的数据直接复制至缓存DRAM中,数据由缓存DRAM筛选后才部分的替换至SSD缓存中,缓存DRAM与SSD之间的内容是不相同的,缓存的空间便是两个空间的总和;如果请求在SSD中也未命中,那么需要将请求发送到HDD中读取。
4.如权利要求I所述的基于SSD的缓存管理方法,其特征在于,所述步骤2包括 步骤41,当数据第一次进入到缓存DRAM时,先放置在第一级LRU链表的MRU端,两级LRU链表均在缓存DRAM中; 步骤42,第一级LRU链表的大小设置为整个缓存DRAM大小的比例设为Pl,0〈Pl < I ;步骤43,当第一级链表满时,采用LRU的方式进行替换,替换出的页的信息保存至ghost buffer中,将其历史访问记录保存下来,该历史访问记录为访问热度并不高的数据; 步骤44,当第一级LRU链表中的数据第二次被命中的时候,则将其提升至第二级链表中; 步骤45,当第二级LRU链表满的时候,将其第二级LRU链表的内容替换至SSD中,得到访问热度较高的数据。
5.如权利要求I所述的基于SSD的缓存管理方法,其特征在于,所述步骤3中自适应变化的计算包括 步骤51,为两级LRU链表都添加了相应的Shadowbuffer,其分别存储相应级别链表中最近被替换的页的访问信息,两个Shadowbuffer都存储缓存DRAM同样数量的访问信息记录; 步骤52,两个Shadowbuffer动态变化两级LRU链表的大小,设定目标值TargetSize,该值是第一级LRU链表的目标值,即一级LRU链表的目标大小是TargetSize ;初始值设为缓存DRAM大小的一半;对于随后的负载有变化过程。
6.如权利要求5所述的基于SSD的缓存管理方法,其特征在于,其变化过程包括步骤61,第一级LRU链表的数据页替换后,历史信息保存在第一级LRU链表ShadowBuffer中,同时,第二级LRU链表中的数据被替换后,也保存至第二级LRU链表Shadowbuffer 中; 步骤62,当数据在第一级LRU链表Shadowbuffer中命中时,第一级LRU链表长度需要增长,TargeSize++ ; 步骤63,当数据在第二级LRU链表Shadowbuffer中命中时,二级LRU链表长度需要增长,TargetSize—。
7.如权利要求I所述的基于SSD的缓存管理方法,其特征在于,所述步骤3还包括 步骤71,经过缓存DRAM中两级LRU链表的筛选,第二级LRU链表存储的是比较热的数据,从MRU端至LRU端的热度分别从高到低; 步骤72,当第二级LRU链表满时,第二级LRU端的页被替换至缓冲区内; 步骤73,第二级链表每次替换都会使缓冲区内积累一个page,经过一段时间后,缓冲区可以到达64页,此时已经到达Cluster的大小,因此此Cluster处于ready状态; 步骤74,当再次替换的页进入缓冲区时,缓冲区满,因此将此Cluster刷至SSD中,缓冲区清空,之后重复步骤71-74。
8.一种基于SSD的缓存管理系统,其特征在于,包括 检查缓存DRAM模块,用于发送读写请求,检查缓存DRAM中是否命中数据,查找hash表,判断所述数据是否存在,如果存在则从缓存DRAM中读取该数据并返回该次请求,如不存在缓存DRAM中,则从HDD中读取数据至缓存DRAM ; 筛选数据模块,用于采用两级LRU链表和Ghost buffer进行数据的筛选,鉴别数据的热度; 自适应变化与聚合模块,用于对于两级LRU链表的长度进行自适应变化的计算,当缓存DRAM中第二级LRU链表满时,采取页簇的粒度,将位于第二级LRU端的后C页作为一个整体聚合在一起被替换出缓存DRAM,然后大粒度写入到SSD中,其中页簇大小假定为C页,C为中Block页数的整数倍。
9.如权利要求8所述的基于SSD的缓存管理系统,其特征在于,所述检查缓存DRAM模块包括 命中数据模块,用于如果数据存在,即在缓存DRAM中命中数据,则可直接将缓存DRAM中的数据返回,请求完成; 查询SSD模块,用于如果在hash表中不存在,则需要继续查询SSD的hash表,判断该数据是否存储在SSD中; 读取SSD模块,用如果在SSD中命中,则将该数据从SSD中读取出来,请求完成。
10.如权利要求9所述的基于SSD的缓存管理系统,其特征在于,包括 从HDD中读取的数据直接复制至DRAM中,数据由DRAM筛选后才部分的替换至SSD缓存中,缓存DRAM与SSD之间的内容是不相同的,缓存的空间便是两个空间的总和;如果请求在SSD中也未命中,那么需要将请求发送到HDD中读取。
11.如权利要求8所述的基于SSD的缓存管理系统,其特征在于,所述筛选数据模块包括 放置MRU端模块,用于当数据第一次进入到缓存DRAM时,先放置在第一级LRU链表的MRU端,两级LRU链表均在缓存DRAM中; 设置比例模块,用于第一级LRU链表的大小设置为整个缓存DRAM大小的比例设为Pi, (Kp1 < I ; 替换模块,用于当第一级链表满时,采用LRU的方式进行替换,替换出的页的信息保存至ghost buffer中,将其历史访问记录保存下来,该历史访问记录为访问热度并不高的数据; 二次命中模块,用于当第一级LRU链表中的数据第二次被命中的时候,则将其提升至第二级链表中; 热度模块,用于当第二级LRU链表满的时候,将其第二级LRU链表的内容替换至SSD中,得到访问热度较高的数据。
12.如权利要求8所述的基于SSD的缓存管理系统,其特征在于,所述自适应变化与聚合模块包括 自适应变化模块,用于为两级LRU链表都添加了相应的Shadowbuffer,其分别存储相应级别链表中最近被替换的页的访问信息,两个Shadowbuffer都存储缓存DRAM同样数量的访问信息记录;两个Shadowbuffer动态变化两级LRU链表的大小,设定目标值TargetSize,该值是第一级LRU链表的目标值,即一级LRU链表的目标大小是TargetSize ;初始值设为缓存DRAM大小的一半;对于随后的负载有变化过程。
13.如权利要求12所述的基于SSD的缓存管理系统,其特征在于,其自适应变化模块还包括 保存历史信息模块,用于第一级LRU链表的数据页替换后,历史信息保存在第一级LRU链表ShadowBuffer中,同时,第二级LRU链表中的数据被替换后,也保存至第二级LRU链表Shadowbuffer 中; 一级增加长度模块,用于当数据在第一级LRU链表Shadowbuffer中命中时,第一级LRU链表长度需要增长,TargeSize++ ; 二级增加长度模块,用于当数据在第二级LRU链表Shadowbuffer中命中时,第二级LRU链表长度需要增长,TargetSize—o
14.如权利要求8所述的基于SSD的缓存管理系统,其特征在于,所述自适应变化与聚合模块还包括 聚合模块,用于经过缓存DRAM中两级LRU链表的筛选,第二级LRU链表存储的是比较热的数据,从MRU端至LRU端的热度分别从高到低;当第二级LRU链表满时,第二级LRU端的页被替换至缓冲区内;第二级链表每次替换都会使缓冲区内积累一个page,经过一段时间后,缓冲区可以到达64页,此时已经到达Cluster的大小,因此此Cluster处于ready状态;当再次替换的页进入缓冲区时,缓冲区满,因此将此Cluster刷至SSD中,缓冲区清空。
全文摘要
一种基于SSD的缓存管理方法及系统,该方法包括步骤1,发送读写请求,检查缓存DRAM中是否命中数据,查找hash表,判断所述数据是否存在,如存在则从缓存DRAM中读取该数据并返回该次请求,如不存在缓存DRAM中,则从HDD中读取数据至缓存DRAM中后执行步骤2;步骤2,采用两级LRU链表和Ghost buffer进行数据的筛选,鉴别数据的热度;步骤3,对于两级LRU链表的长度进行自适应变化计算,当缓存DRAM第二级LRU链表满时,采取页簇的粒度,将位于第二级LRU端的后C页作为整体聚合在一起被替换出缓存DRAM,然后大粒度写入到SSD,其中页簇大小为C页,C为SSD中Block页数的整数倍。
文档编号G06F12/08GK102760101SQ201210160350
公开日2012年10月31日 申请日期2012年5月22日 优先权日2012年5月22日
发明者熊劲, 车玉坤, 马久跃 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1