一种缓存数据处理方法、装置和存储控制器与流程

文档序号:11154217阅读:401来源:国知局
一种缓存数据处理方法、装置和存储控制器与制造工艺

本发明涉发明存储技术,特别涉及于存储领域技术的日志领域。



背景技术:

缓存(cache)是一种为了解决高、低速设备之间速度不匹配而采用的一项重要技术,广泛应用于各种领域如存储系统中,可以减少应用响应时间、提升效率。

在存储系统中,为了提升存储系统的性能,通常在处理设备和硬盘之间增加一个缓存层(也称为回写缓存,write-back cache)。缓存层可以提高系统读写性能,所以有时候也把缓存层称为性能层。

缓存使用的介质例如是固态硬盘(solid state disk,SSD),其其读写性能优于持久化存储介质(例如硬盘)。相对于硬盘,可以更快速处理来自主机应用程序的写请求。缓存的存储容量有限,因此当空闲空间不足时,需要根据淘汰算法把一部分缓存介质数据淘汰到硬盘中,以便腾出空间为后续的写请求使用。这部分从缓存下发到硬盘的数据称为脏数据。

为了尽快的让缓存拥有足够的空闲空间,在空闲空间不足时需要尽快把脏数据淘汰到硬盘中去。否则会造成写请求难以被及时处理。

存储领域中,缓存中脏数据通常是以分条作为粒度下发到硬盘。分条是逻辑概念,类似于一个装数据的容器。如果下发的数据不足一个分条,意味着分条中仅有部分位置有效数据,分条中存在空闲位置。参见图1中的分条,其利用率只有50%。这种没有被有效数据“装满”的分条,和被有效数据“装满”的分条一样,都会占用硬盘中一个完整分条的存储空间,而且会产生一组元数据。因此,如果分条中有效数据和空闲位置的比例越大。可以节约越多的硬盘存储空间,以及减少元数据的数量。如果分条完全“装满”有效数据后再下发,可以最大化的利用硬盘存储空间,以及产生最少的元数据。

由此可见,脏数据的淘汰方式存在两个矛盾的需求:从尽快获取更多空闲缓存空间这个需求考虑,脏数据需要尽快淘汰到硬盘,最好是一旦空闲空间不足,立刻执行淘汰操作;而从提高硬盘利用率和减少元数据这个需求考虑,需要尽量凑满分条后再把脏数据淘汰到硬盘,最好是把脏数据凑满完整的分条后再执行淘汰操作。如何在二者中寻求一个平衡,是业界需要解决的问题。

现有技术中并没有很好的解决这个问题。每秒读写次数(IOPS)抖动过大,以及硬盘存储空间利用不足的情况时有发生。



技术实现要素:

本发明实施例提供一种缓存数据处理方法、装置和存储控制器,可以缓解IOPS的严重波动,使存储系统的性能越稳定。

本发明第一方面,本发明提供一种缓存数据处理方法,该方法包括:获取数据的压缩比D、重删比C、以及平均分条填充率I、缓存中目标分条大小S、以及所述目标分条中有效数据大小W;按照公式获取淘汰数据量N,在Tmin≤N≤Tmax的情况下,将大小为N的数据写入所述目标分条,把所述目标分条的数据淘汰给存储介质,其中当Tmin是预设的第一阈值,Tmax是预设的第二阈值。在另外一种可选方式中,在N>Tmax的情况下,将大小为N的数据写入所述目标分条。在另外一种可选方式中,在N<Tmin的情况下,把所述目标分条的数据淘汰给所述存储介质。这三种可选方式都是可选的,执行其中任意一个即可形成一个完整的流程。基于该方法,在对缓存没有明显影响的情况下,分条容纳尽量多的数据后再淘汰到存储介质中。在尽早获得空闲的缓存空间以及提高磁盘利用率这两个互相矛盾的需求之间获得平衡。使得缓存数据更平滑的淘汰给存储介质,减少了IOPS严重波动的情况,使存储系统更加稳定。

在第一方面的第一种可能实现方式中,其中,将大小为N的数据写入所述目标分条之后,进一步包括:在所述目标分条被后续数据写满以后,把所述目标分条淘汰到所述存储介质。该可能实现方式提出了N>Tm的情况下,淘汰数据的方案。

在第一方面的第二种可能实现方式中,根据权利要求1所述的缓存数据淘汰方法,所述D、C和I是统计值,其初始值均为1。

在第一方面的第三种可能实现方式中,其中S用从缓存下发数据到存储介质的最小单位(或者最小单位的整数倍)的数量进行描述,例如用缓存页的数量描述。

本发明第二方面,提供一种缓存数据处理装置,该装置包括:获取模块,可以用于获取数据的压缩比D、重删比C以及平均分条填充率I,还可以用于获取缓存中目标分条大小S、所述目标分条中有效数据大小W;计算模块,用于按照公式计算从淘汰数据量N;数据处理模块,用于在Tmin≤N≤Tmax的情况下,将大小为N的数据写入所述目标分条,把所述目标分条的数据淘汰给存储介质,其中当Tmin是预设的第一阈值,Tmax是预设的第二阈值。在另外一种可选方式中,数据处理模块用于在N>Tmax的情况下,将大小为N的数据写入所述目标分条。在另外一种可选方式中,在N<Tmin的情况下,数据处理模块用于把所述目标分条的数据淘汰给所述存储介质。这三种可选方式都是可选的,执行其中任意一个即可形成一个完整的流程。基于该缓存数据处理装置,在对缓存没有明显影响的情况下,分条容纳尽量多的数据后再淘汰到存储介质中。在尽早获得空闲的缓存空间以及提高磁盘利用率这两个互相矛盾的需求之间获得平衡。使得缓存数据更平滑的淘汰给存储介质,减少了IOPS严重波动的情况,使存储系统更加稳定。

本发明第二方面的第一种可能实现方式,所述处理模块还用于:在大小为N的数据写入所述目标分条之后,如果所述目标分条被后续数据写满以后,把所述目标分条淘汰到所述存储介质。该可能实现方式提出了N>Tm的情况下,淘汰数据的方案。

本发明第二方面的第二种可能实现方式,所述D、C和I是统计值,其初始值均为1。

本发明第二方面的第三种可能实现方式,S用从缓存下发数据到存储介质的最小单位(或者最小单位的整数倍)的数量进行描述,例如用缓存页的数量描述。

本发明第三方面提供一种存储控制器,所述存储控制器包括处理器和缓存,缓存用于暂存数据,可选的还可以包括存储淘汰数据的存储介质(例如硬盘或者固态硬盘)。所述处理器通过运行程序执行下面的步骤:获取数据的压缩比D、重删比C、以及平均分条填充率I,还用于获取缓存中目标分条大小S、所述目标分条中有效数据大小W;按照公式获取淘汰数据量N;在Tmin≤N≤Tmax的情况下,将大小为N的数据写入所述目标分条,把所述目标分条的数据淘汰给存储介质,其中当Tmin是预设的第一阈值,Tmax是预设的第二阈值。在另外一种可选方式中,在N>Tmax的情况下,将大小为N的数据写入所述目标分条。在另外一种可选方式中,在N<Tmin的情况下,把所述目标分条的数据淘汰给所述存储介质。这三种可选方式都是可选的,执行其中任意一个即可形成一个完整的流程。基于该存储控制器,在对缓存没有明显影响的情况下,分条容纳尽量多的数据后再淘汰到存储介质中。在尽早获得空闲的缓存空间以及提高磁盘利用率这两个互相矛盾的需求之间获得平衡。

本发明第三方面的第一种可能实现方式,所述处理器还用于执行:在大小为N的数据写入所述目标分条之后,如果所述目标分条被后续数据写满以后,把所述目标分条淘汰到所述存储介质。该可能实现方式提出了N>Tm的情况下,淘汰数据的方案。

本发明第三方面的第二种可能实现方式,所述D、C和I是统计值,其初始值均为1。

本发明第三方面的第三种可能实现方式,S用从缓存下发数据到存储介质的最小单位(或者最小单位的整数倍)的数量进行描述,例如用缓存页的数量描述。

本发明第四方面,还提供一种存储系统,包括上述的存储控制器和存储介质(例如硬盘、固态硬盘),存储介质用于存储被淘汰的数据。

本发明第五方面,还提供一种存储系统,包括上述的数据处理装置和存储介质(例如硬盘、固态硬盘),存储介质用于存储被淘汰的数据。

附图说明

图1是分条使用情况示意图;

图2是本发明存储系统实施例结构图;

图3是本发明缓存数据处理方法一种实施例流程图;

图4是一种缓存数据处理装置实施例拓扑图。

具体实施方式

本申请方案可以适用于存储设备。存储设备例如是存储控制器。存储控制器和存储介质(例如硬盘、固态硬盘等)相对独立,它们共同组成存储系统。除非特别说明,后续实施例以这种情况为例介绍本发明实施例方案,存储介质以硬盘进行举例。

需要说明的是,存储设备还可以是既有运算管理能力又有存储介质的存储设备,例如服务器。服务器中拥有运算管理能力的那部分相当于存储控制器。存储控制器和存储设备内部的存储介质通信,或者和存储设备外部的存储介质通信。由于原理类似,因此不做详述。

参见图2是本发明存储系统实施例结构图。主机11和存储系统12通信,存储系统包括存储控制器12和存储介质13。存储控制器12中有处理器121,缓存122,还可以有内存123。内存123可以为处理器121运行程序提供存储空间,通过运行程序,处理器可以执行本发明提供的缓存数据处理方法实施例。内存123和缓存122可以集成在一起,也可以分开。在图中存储控制器12和财产介质13是独立的。在其他实施例中,存储控制器12中也可以集成存储介质13,例如通用服务器。

缓存可以供主机11读写。由于缓存空间有限,因此在缓存空间变小时,需要把缓存中数据迁移到存储介质13中。具体而言是以分条为单位,把位于缓存121的分条的有效数据迁移到存储介质13中,这种迁移也称为下盘,下盘的越早,缓存能越早的腾出来空隙空间。

在块(block)存储技术中,把缓存数据下盘是以分条作为粒度的,分条是逻辑单位,每个分条(stripe)由多个条带(strip)组成。在把数据从缓存下盘时,每个/每组硬盘存储所述分条的一个条带。以分条作为粒度把把缓存迁移到硬盘的过程中,并不意味着整个分条都是有效数据,可能分条的一部分是没有有效数据的,例如只有部分条带是有效数据,其余条带无有效数据。

一方面,是尽早下盘可以让缓存尽早获取空闲存储空间;另一方面,分条下盘后,分条中的有效数据和无效数据都会占用磁盘空间,如果分条尚未容纳尽量多的有效数据就下盘,会造成硬盘的利用率不高,因此从提高磁盘利用率的角度考虑,最好是不要尽早下盘,而是凑满分条再下盘。应用本发明实施例按照的算法,可以在这两个矛盾的需求之间做出更好的平衡。

参见附图3,是本发明缓存数据处理方法一种实施例流程图,可以由存储控制器执行。

21,从内存中获取数据的重删比C,数据的压缩比D、以及平均分条填充率I。

重删比C、压缩比D和平均分摊填充率I都是对历史数据的统计值。初始化的时候,都是1;但是随着系统的运行,由于不断有新分条被重删、压缩、填充处理,这3个值会动态变化的。这些数据被统计后可以存储在内存中,也可以存储在其他介质。

对缓存中的各个分条而言,在被下盘前,可以对分条内的有效数据进行重复数据删除。对于分条中的每个块,如果硬盘中已经存在相同的块,说明这个块和硬盘现有的块重复,这个块可以不用下盘。这样可以减少下盘的数据量以及节约磁盘的存储空间。重删比C是统计过去一段时间内,缓存中分条重删前和重删后的数据量的比值。统计的分条范围可以是缓存中所有分条;也可以是一部分分条,例如下盘后的数据属于特定LUN的分条。重删比C最小值为1(在重复数据删除过程中,没有数据块因为重复被被删除,或者不执行重删)。在分条下盘前对分条数据进行重删,可以节约磁盘空间。

对缓存中的各个分条而言,在被下盘前,除了进行重复数据删除,还可以对分条内的有效数据进行压缩。压缩可以在重复数据删除操作之后执行。压缩比D是统计过去一段时间内,缓存中的分条压缩前和压缩后的数据量的比值。理论上,压缩比D的最小值是1(执行了压缩操作,但是没有数据被压缩成功;或者没有执行压缩操作)。在分条下盘前对分条数据进行压缩,可以节约磁盘空间。统计的分条范围可以是缓存中所有分条;也可以是一部分分条,例如下盘后的数据属于特定LUN的分条。

平均分条填充率I,是统计过去一段时间内,缓存中各分条有效数据占分条总长度的比值的平均值。其中,计算平均分条填充率I时,统计的有效数据可以是执行完压缩操作和重删操作之后的有效数据。统计的分条范围可以是缓存中所有分条;也可以是一部分分条,例如下盘后的数据属于特定LUN的分条。

需要说明的是,本发明实施例描述了内存和缓存这两个概念。缓本发明实施例中的内存(memory)例如是RAM,可以暂时存放CPU中的运算数据,为计算机运行程序提供空间。存可以是内存的一部分,也可以和内存是在物理上分开。缓存(cache)在本发明实施例中可以用于暂时存放分条;缓存可以同样是RAM,也可以是固态硬盘SSD等其他介质。

22,获取内存中目标分条大小S、所述目标分条中有效数据大小W。

目标分条大小S可以用目标分条的长度进行描述,单位例如是字节(Byte)。也可以用单位长度的数量描述,比如用目标分条占用的缓存页(cache page)的数量来描述。

类似的,目标分条中有效数据大小W可以用目标分条的长度进行描述,单位是字节(Byte);也可以用单位长度的数量描述。目标分条中有效数据大小W的描述方式和目标分条大小S的描述方式保持一致。

按照公式N=(S*D*C-W)/I,获取淘汰数据量N,按照N的取值范围执行下述操作中的一个:

23,按照公式获取淘汰数据量N。

其中,压缩比C、重删比D是可选的。如果没有压缩,则没有压缩比C;如果没有重删,则没有重删比D。

在首次对缓存中的的数据使用本实施例进行处理时,由于历史上没有分条被处理,因此可以缺省为D=1,C=1,I=1。

显然,N的单位和S、W保持一致。当S的单位是字节时,N的单位也是字节。N的实际取值可以是下盘的最小单位的整数倍,并且与(S*D*C-W)/I的差值小于一个最小单位。例如下盘的最小单位是10字节,(S*D*C-W)/I的计算结果是54字节,那么一种可选方式是N的值是50字节;另外一种可选方式是N的值是60字节。

当S由缓存页的数量描述时,N也是缓存页的数量。此时,如果(S*D*C-W)/I的计算结果是小数,N的实际取值可以是(S*D*C-W)/I进行取整后的值,一种可选方式是向下取整例如(S*D*C-W)/I的计算结果是10.3个缓存页,那么N的取值可以是10个缓存页。在另外一种实施方式中,也可以是向上取整,10.3个缓存页取整为11个缓存页。

24,按照淘汰数据量N的值,执行相应的操作。

(1)在Tmin≤N≤Tmax的情况下,将大小为N的数据写入所述目标分条,然后把所述目标分条的数据淘汰到持久化存储介质(SSD、硬盘等)。在把大小为N的数据写入所述目标分条后,目标分条的当前数据=大小为N的数据+目标分条原有数据。

其中Tmin是预设的第一阈值,TmaX是预设的第二阈值。Tmin和Tmax。的单位和N一致。Tmin和Tmax在不同的场景下,可以需求的不同,可以有不同的设置,因此不做限定。例如Tmin的取值可以为分条长度*C*D的10%,而Tmax的取值可以为分条长度*C*D的80%。

(2)在N>Tmax的情况下,将大小为N的数据写入所述目标分条。和(1)的区别是,可以暂时不对目标分条执行下盘操作。在后续有新的数据被写入这个分条,使得分条被写满后再把这个分条淘汰到持久化存储介质存储介质。

(3)在N<Tmin的情况下,把所述目标分条的数据淘汰到持久化存储介质。和(1)的区别是,不把大小为N的数据的数据写入目标分条,直接对目标分条进行下盘。

需要说明的是,上述(1)和(2)都涉及把缓存的数据写入目标分条。这种写操作逻辑上的,可以理解为把不属于目标分条的数据归属于目标分条。写操作执行完以后,被写的数据在物理上仍然位于缓存中。但是在逻辑层面,把大小为N的数据写入目标分条,是把位于缓存层的数据写入了存储池(storage pool)层。缓存层用于为主机提供读写,主要和主机进行交互;而存储池是用于暂存准备写入硬盘的数据,主要和硬盘进行交互,因此这是两个不同的功能层。

为了方便理解,下面以一个具体的示例对上述实施例进行介绍。

例如:从内存中获取:当前的重删率为2,当前的压缩率为4,当前的统计的分条平均填充率I=0.9。缓存页的大小为4KB,分条大小为8MB,即S=(8MB/4KB)=2K,当前分条已经写入了15K个缓存页,假设Tmin=128,Tmax=4K。

根据公式(S*D*C-W)/I=(2K*2*4-15K)/0.9≈1137.8。向下取整为N=1137。

符合第(2)种情形Tmin<N<Tmax。因此,按照本发明实施例,将1137个缓存页的数据写入当前分条,然后把当前分条中的所有数据发送到硬盘中去。发送完成后,释放目标分条在缓存中占用的存储空间。在这个示例中,之所以使用缓存页的数量作为S,是考虑到把缓存中的数据下发到硬盘中时,以缓存页作为粒度是一种常见的做法。在其他实施例中可以有其他方案,例如以分条大小除以缓存页的倍数作为S。在另外的实施例中,可能没有缓存页的概念,以分条大小下盘的最小粒度或者最小粒度的整数倍即可。或者直接以分条大小作为S,在算出来N的值以后,再换算成缓存页的数量。

参见图4,本发明还提供一种缓存数据处理装置实施例。缓存数据处理装置3是硬件或者程序虚拟装置,可以执行上述方法。缓存数据处理装置3包括:参数获取模块,和参数获取模块连接的计算模块32,和计算模块32连接的数据处理模块33。

所述参数获取模块,用于获取数据的压缩比D、重删比C、以及平均分条填充率I,还用于获取缓存中目标分条大小S、所述目标分条中有效数据大小W。

所述计算模块32,用于按照公式获取淘汰数据量N。

所述数据处理模块33,用于根据N的取值执行下述操作中的一个:在Tmin≤N≤Tmax的情况下,将大小为N的数据写入所述目标分条,把所述目标分条的数据淘汰给存储介质,其中当Tmin是预设的第一阈值,Tmax是预设的第二阈值;在N>Tmax的情况下,将大小为N的数据写入所述目标分条;在N<Tmin的情况下,把所述目标分条的数据淘汰给所述存储介质。

下面对各模块功能进行具体介绍。

参数获取模块,用于从内存中获取数据的重删比C,数据的压缩比D、以及平均分条填充率I。

重删比C、压缩比D和平均分摊填充率I都是对历史数据的统计值。初始化的时候,都是1;但是随着系统的运行,由于不断有新分条被重删、压缩、填充处理,这3个值会动态变化的。这些数据被统计后可以存储在内存中,也可以存储在其他介质。

对缓存中的各个分条而言,在被下盘前,可以对分条内的有效数据进行重复数据删除。对于分条中的每个块,如果硬盘中已经存在相同的块,说明这个块和硬盘现有的块重复,这个块可以不用下盘。这样可以减少下盘的数据量以及节约磁盘的存储空间。重删比C是统计过去一段时间内,缓存中分条重删前和重删后的数据量的比值。统计的分条范围可以是缓存中所有分条;也可以是一部分分条,例如下盘后的数据属于特定LUN的分条。重删比C最小值为1(在重复数据删除过程中,没有数据块因为重复被被删除,或者不执行重删)。在分条下盘前对分条数据进行重删,可以节约磁盘空间。

对缓存中的各个分条而言,在被下盘前,除了进行重复数据删除,还可以对分条内的有效数据进行压缩。压缩可以在重复数据删除操作之后执行。压缩比D是统计过去一段时间内,缓存中的分条压缩前和压缩后的数据量的比值。理论上,压缩比D的最小值是1(执行了压缩操作,但是没有数据被压缩成功;或者没有执行压缩操作)。在分条下盘前对分条数据进行压缩,可以节约磁盘空间。统计的分条范围可以是缓存中所有分条;也可以是一部分分条,例如下盘后的数据属于特定LUN的分条。

平均分条填充率I,是统计过去一段时间内,缓存中各分条有效数据占分条总长度的比值的平均值。其中,计算平均分条填充率I时,统计的有效数据可以是执行完压缩操作和重删操作之后的有效数据。统计的分条范围可以是缓存中所有分条;也可以是一部分分条,例如下盘后的数据属于特定LUN的分条。

需要说明的是,本发明实施例描述了内存和缓存这两个概念。缓本发明实施例中的内存(memory)例如是RAM,可以暂时存放CPU中的运算数据,为计算机运行程序提供空间。存可以是内存的一部分,也可以和内存是在物理上分开。缓存(cache)在本发明实施例中可以用于暂时存放分条;缓存可以同样是RAM,也可以是固态硬盘SSD等其他介质。

参数获取模块,用于获取内存中目标分条大小S、所述目标分条中有效数据大小W。

目标分条大小S可以用目标分条的长度进行描述,单位例如是字节(Byte)。也可以用单位长度的数量描述,比如用目标分条占用的缓存页(cache page)的数量来描述。

类似的,目标分条中有效数据大小W可以用目标分条的长度进行描述,单位是字节(Byte);也可以用单位长度的数量描述。目标分条中有效数据大小W的描述方式和目标分条大小S的描述方式保持一致。

按照公式N=(S*D*C-W)/I,获取淘汰数据量N,按照N的取值范围执行下述操作中的一个:

计算模块32,用于按照公式获取淘汰数据量N。

其中,压缩比C、重删比D是可选的。如果没有压缩,则没有压缩比C;如果没有重删,则没有重删比D。

在首次对缓存中的的数据使用本实施例进行处理时,由于历史上没有分条被处理,因此可以缺省为D=1,C=1,I=1。

显然,N的单位和S、W保持一致。当S的单位是字节时,N的单位也是字节。N的实际取值可以是下盘的最小单位的整数倍,并且与

(S*D*C-W)/I的差值小于一个最小单位。例如下盘的最小单位是10字节,(S*D*C-W)/I的计算结果是54字节,那么一种可选方式是N的值是50字节;另外一种可选方式是N的值是60字节。

当S由缓存页的数量描述时,N也是缓存页的数量。此时,如果(S*D*C-W)/I的计算结果是小数,N的实际取值可以是(S*D*C-W)/I进行取整后的值,一种可选方式是向下取整例如(S*D*C-W)/I的计算结果是10.3个缓存页,那么N的取值可以是10个缓存页。在另外一种实施方式中,也可以是向上取整,10.3个缓存页取整为11个缓存页。

34,按照淘汰数据量N的值,执行相应的操作。

(1)在Tmin≤N≤TmaX的情况下,将大小为N的数据写入所述目标分条,然后把所述目标分条的数据淘汰到持久化存储介质(SSD、硬盘等)。在把大小为N的数据写入所述目标分条后,目标分条的当前数据=大小为N的数据+目标分条原有数据。

其中Tmin是预设的第一阈值,Tmax是预设的第二阈值。Tmin和Tmax。的单位和N一致。Tmin和Tmax在不同的场景下,可以需求的不同,可以有不同的设置,因此不做限定。例如Tmin的取值可以为分条长度*C*D的10%,而Tmax的取值可以为分条长度*C*D的80%。

(2)在N>Tmax的情况下,将大小为N的数据写入所述目标分条。和(1)的区别是,可以暂时不对目标分条执行下盘操作。在后续有新的数据被写入这个分条,使得分条被写满后再把这个分条淘汰到持久化存储介质存储介质。

(3)在N<Tmin的情况下,把所述目标分条的数据淘汰到持久化存储介质。和(1)的区别是,不把大小为N的数据的数据写入目标分条,直接对目标分条进行下盘。

需要说明的是,上述(1)和(2)都涉及把缓存的数据写入分条。这种写操作逻辑上的,把不属于目标分条的数据归属于目标分条。写操作执行完以后,被写的数据在物理上仍然位于缓存中。但是在逻辑层面,这是把缓存层的数据写入了存储池(storage pool)。缓存层用于为主机提供读写,主要和主机进行交互;而存储池是用于暂存准备写入硬盘的数据,主要和硬盘进行交互,因此这是两个不同的功能层。步骤31、32和33是由缓存池层执行的。

为了方便理解,下面以一个具体的示例对上述实施例进行介绍。

例如:从内存中获取:当前的重删率为2,当前的压缩率为4,当前的统计的分条平均填充率I=0.9。缓存页的大小为4KB,分条大小为8MB,即S=(8MB/4KB)=2K,当前分条已经写入了15K个缓存页,假设Tmin=128,Tmax=4K。

根据公式(S*D*C-W)/I=(2K*2*4-15K)/0.9≈1137.8。向下取整为N=1137。

符合第(2)种情形Tmin<N<Tmax。因此,按照本发明实施例,将1137个缓存页的数据写入当前分条,然后把当前分条中的所有数据发送到硬盘中去。发送完成后,释放目标分条在缓存中占用的存储空间。在这个示例中,之所以使用缓存页的数量作为S,是考虑到把缓存中的数据下发到硬盘中时,以缓存页作为粒度是一种常见的做法。在其他实施例中可以有其他方案,例如以分条大小除以缓存页的倍数作为S。在另外的实施例中,可能没有缓存页的概念,以分条大小下盘的最小粒度或者最小粒度的整数倍即可。或者直接以分条大小作为S,在算出来N的值以后,再换算成缓存页的数量。

结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,基于本发明的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1