Ssd缓存的输入输出流量控制方法及装置制造方法

文档序号:6489749阅读:323来源:国知局
Ssd缓存的输入输出流量控制方法及装置制造方法
【专利摘要】本发明提供了一种SSD缓存的输入输出流量控制方法及装置,该方法包括:截获磁盘读写进程或者线程的磁盘数据,将磁盘数据缓存到SSD缓存装置空间中作为缓存数据;检测是否通过缓存清空线程将缓存数据清空到外部目的磁盘;并判断进行缓存清空处理;计算生成比例因子,并根据比例因子对SSD缓存装置进行缓存数据清空速度进行调整,对SSD缓存流量控制,直至SSD缓存装置的缓存使用率低于预先设定的第二预设比率。其根据外部磁盘的IO流量,动态控制进入SSD缓存的IO流量,最大化的利用SSD空间和性能来满足用户需求。
【专利说明】SSD缓存的输入输出流量控制方法及装置
【技术领域】
[0001]本发明涉及计算机存储控制【技术领域】,特别是涉及一种以SSD (固态硬盘)作为缓存的SSD缓存的输入输出(IO)流量控制方法及SSD缓存装置。
【背景技术】
[0002]目前传统存储器(如磁盘)的IO(Input/Output,输入输出)速度明显成为存储性能瓶颈,而以SSD (Solid State Disk,固态硬盘)作为存储器,使存储器的IO速度有了明显提升,但是由于SSD的价格相对较高,无法在整个存储器中全部安装使用,因此现有技术中将其作为缓存(Cache)使用,也就是SSD作为内存(memory)和硬盘(外部存储器)之间的一层缓存(Cache)来缓冲数据,以提高IO带宽和响应速度,称为SSD缓存(SSD Cache)。
[0003]在现有技术中实现的SSD缓存方法中,需要解决一个问题,即在大压力IO的情况下,SSD缓存的空间将很快被消耗,这时必须启动flush机制(清空缓存机制),将缓存的数据写回到目的磁盘,由于磁盘IO速度明显慢于SSD的IO速度,相对于缓存(Cache)来讲,流入的IO速度远大于流出的IO速度,会导致缓存(Cache)空间被耗尽,最终出现拒绝服务等恶劣情况。
[0004]因此,如何控制SSD缓存流量成为了迫切需要解决的问题。

【发明内容】

[0005]为了解决现有技术中存在的问题,本发明提供一种SSD缓存的输入输出(IO)流量控制方法及装置,其根据外部磁盘的IO流量,动态控制进入SSD缓存的IO流量,最大化的利用SSD空间和性能来满足用户需求。
[0006]为实现本发明目的而提供的一种SSD缓存的输入输出流量控制方法,包括如下步骤:
[0007]步骤S100,截获磁盘读写进程或者线程的磁盘数据,将磁盘数据缓存到SSD缓存装置空间中作为缓存数据;
[0008]步骤S200,检测SSD缓存装置中是否通过缓存清空线程将缓存数据清空到外部目的磁盘;如果是,则进入步骤S500 ;否则进入步骤S300 ;
[0009]步骤S300,统计作为缓存使用的固态硬盘的已使用空间,得到SSD缓存使用率,并在SSD缓存使用率超过第一预设比率时,进入步骤S400 ;
[0010]步骤S400,启动缓存清空线程,通过缓存清空线程,按预先设定的基准参考因子对应的缓存数据清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘;
[0011]步骤S500,计算生成比例因子,并根据比例因子对SSD缓存装置进行缓存数据清空速度进行调整,对SSD缓存流量控制,直至SSD缓存装置的缓存使用率低于预先设定的第二预设比率。
[0012]较优地,作为一实施例,所述步骤S200包括如下步骤:
[0013]步骤S210,判断是否正在将SSD缓存装置中的缓存数据通过缓存清空线程清空到外部目的磁盘;
[0014]步骤S220,如果判断没有正在将SSD缓存装置中的缓存数据通过缓存清空线程清空到外部目的磁盘,则进入步骤S300,监控其是否达到缓存清空线程启动条件而通知启动缓存清空线程;否则跳转到步骤S500,监控缓存清空速度。
[0015]较优地,作为一实施例,所述步骤S500包括如下步骤:
[0016]步骤S510,在将缓存数据写入到目的磁盘的过程中,累计统计写入SSD缓存装置的写IO的缓存数据的字节长度,即SSD缓存装置的IO流入速度,以及累计写出SSD缓存统计flush字节长度,即SSD缓存磁盘中的缓存数据清空速度,计算生成SSD缓存装置中的比例因子;
[0017]步骤S520,比较比例因子和基准参考因子,根据比较结果调整缓存清空速度,以新的缓存清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘;
[0018]步骤530,将SSD缓存中的数据写回到目的磁盘后,继续记录统计SSD缓存装置的每个写入写出的字节长度,并释放相应的SSD缓存装置空间,统计得到SSD缓存装置的缓存使用率;
[0019]步骤S540,判断SSD缓存装置的缓存使用率是否低于第二预设比率;如果是,则结束缓存清空线程并返回;否则,返回步骤S510,循环进行流量控制。
[0020]较优地,作为一实施例,所述步骤S520中,根据比较结果调整缓存清空速度,包括如下步骤:
[0021 ] 步骤S521,若比例因子ratio大于等于基准参考因子RefRatio,则表明流入速度大于等于flush速度,根据比例因子ratio的值调整flush速度,使流入速度小于等于flush 速度,即 vi ^ vf ;
[0022]步骤S522,若比例因子ratio小于基准参考因子RefRatio,则表明流入速度小于flush速度,则flush速度vf不变。
[0023]较优地,作为一实施例,所述预先设定的第一预设比率为70%~90% ;
[0024]所述预先设定的第二预设比率为20%~30%。
[0025]较优地,作为一实施例,其中,所述步骤S510中,所述根据累计统计的写10的字节长度和flush字节长度,计算得到比例因子ratio为:
[0026]设流入速度为vi,flush速度为vf,基准参考因子RefRatio,则:
[0027]Ratio=(vi/vf) ^RefRatio ;
[0028]其中,所述步骤S521中,若比例因子ratio大于基准参考因子RefRatio JlJflush速度 vf = vi* (rat io/Ref Ratio);
[0029]其中,所述步骤S522中,若比例因子ratio小于基准参考因子RefRatio,则flush速度vf保持不变。
[0030]为实现本发明目的还提供一种SSD缓存装置,包括作为连接在外部磁盘上作为缓存的固态硬盘SSD,还包括缓存控制装置;
[0031]所述缓存控制装置,包括截获模块,检测模块,统计模块,清空处理模块,计算调整控制模块;
[0032]其中:
[0033]所述截获模块,用于截获磁盘读写进程或者线程的磁盘数据,将磁盘数据缓存到固态硬盘SSD中作为缓存数据;
[0034]所述检测模块,用于检测是否通过缓存清空线程将缓存数据清空到外部目的磁盘;如果是,则转到计算调整控制模块进行处理;否则转到统计模块进行处理;
[0035]所述统计模块,用于统计固态硬盘的已使用空间,得到SSD缓存使用率,并在SSD缓存使用率超过第一预设比率时,进入清空处理模块;
[0036]所述清空处理模块,用于启动缓存清空线程,通过缓存清空线程,按预先设定的基准参考因子对应的缓存数据清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘;
[0037]所述计算调整控制模块,用于计算生成比例因子,并根据比例因子对SSD缓存装置进行缓存数据清空速度进行调整,对SSD缓存流量控制,直至SSD缓存装置的缓存使用率低于预先设定的第二预设比率。
[0038]较优地,作为一实施例,所述检测模块包括判断子模块,判断处理子模块,其中:
[0039]所述判断子模块,用于判断是否正在将SSD缓存装置中的缓存数据通过缓存清空线程清空到外部目的磁盘;
[0040]所述判断处理子模块,用于如果判断没有正在将固态硬盘中的缓存数据通过缓存清空线程清空到外部目的磁盘,则转到统计模块,监控其是否达到缓存清空线程启动条件而通知启动缓存清空线程;否则跳转到计算调整控制模块,监控缓存清空速度。
[0041]较优地,作为一实施例,所述计算调整控制模块,包括计算子模块,比较调整子模块,释放子模块,判断结束子模块;
[0042]其中:
[0043]所述计算子模块,用于在将缓存数据写入到目的磁盘的过程中,累计统计写入SSD缓存装置的写IO的缓存数据的字节长度,即SSD缓存装置的IO流入速度,以及累计写出SSD缓存统计flush字节长度,即SSD缓存磁盘中的缓存数据清空速度,计算生成SSD缓存装置中的比例因子;
[0044]所述比较调整子模块,用于比较比例因子和基准参考因子,根据比较结果调整缓存清空速度,以新的缓存清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘;
[0045]所述释放子模块,用于将SSD缓存中的数据写回到目的磁盘后,继续记录统计SSD缓存装置的每个写入写出的字节长度,并释放相应的SSD缓存装置空间,统计得到SSD缓存装置的缓存使用率;
[0046]所述判断结束子模块,用于判断SSD缓存装置的缓存使用率是否低于第二预设比率;如果是,则结束缓存清空线程并返回;否则,返回计算子模块,循环进行流量控制。
[0047]本发明的有益效果是:
[0048]本发明的SSD缓存的输入输出(IO)流量控制方法及装置,其根据外部磁盘的IO流量,动态控制进入SSD缓存的IO流量,其能够在多个线程之间实现流量的精确控制,并且根据SSD缓存可用空间自动调整控制的比例因子,依据目前资源情况尽最大可能满足用户写入流量请求,最大化的利用SSD空间和性能来满足用户需求。
【专利附图】

【附图说明】
[0049]以下结合具体附图及具体实施例,对本发明进行进一步详细说明。
[0050]图1是本发明实施例的SSD缓存的输入输出(10)流量控制方法流程图;[0051]图2是本发明实施例SSD缓存装置结构示意图。
【具体实施方式】
[0052]为了解决现有技术中存在的问题,给IO提供更好的服务质量,本发明实施例中,通过监控SSD缓存(SSD Cache)装置空间的使用情况和flush (清空缓存)速度,动态调整流入流出IO速度。
[0053]作为缓存使用的SSD缓存装置的物理空间是有限的,在写入一定的缓存数据后,该SSD缓存装置空间会被慢慢消耗掉,空余空间逐渐减少,如果不作任何处理,当空余空间为零的时候,就不能对写请求做缓存处理。因此,需要监控并调整SSD缓存装置空间,并将已缓存的缓存数据(占用着缓存空间)flush到目的磁盘中,在这个过程中,SSD缓存装置空间的变化依赖于进入的写请求速度(流入速度)和flush的速度(流出速度),为了做到SSD缓存装置空间可控,就需要控制SSD缓存装置的流入流出速度。
[0054]本发明实施例中,在进行SSD缓存装置监控时,考虑以下3种情况:I)是SSD缓存装置空间足够,不需要控制SSD缓存装置流入流出IO速度;2)是SSD缓存装置空间即将被用尽,为保证流入IO速度小于等于流出IO速度,需要动态调整SSD缓存装置流入流出IO速度;3)在有读写IO (SSD缓存装置流入流出同时存在)的情况下,在保证读写IO正确处理的前提下,将已经在SSD缓存装置的数据flush到目的磁盘,保证在有限的时间内结束。
[0055]作为一种可实施方式,如图1所不,本发明实施例的一种SSD缓存的输入输出(IO)流量控制方法,包括如下步骤:
[0056]步骤S100,截获磁盘读写进程或者线程的磁盘数据,将磁盘数据缓存到SSD缓存装置空间中作为缓存数据;
[0057]计算机用户可利用用户态的多个进程或者线程通过已知的内核系统API(Application Programming Interface,应用程序编程接口)来读写缓存数据,而因为读写目的磁盘速度相对较慢,因此可以通过SSD缓存(cache)装置空间加速(uf〈us)存储。
[0058]通常地,通过内核API截获所述多个进程或者线程的读写请求,可以将其目的地址由速度较慢的磁盘改为速度较快作为缓存(cache)使用的固态硬盘(SSD),即SSD缓存装置空间中进行缓存,将磁盘数据缓存到SSD缓存装置空间中作为缓存数据;
[0059]步骤S200,检测SSD缓存装置中是否通过缓存清空线程(flush线程)将缓存数据清空到外部目的磁盘;如果是,则进入步骤S500 ;否则进入步骤S300 ;
[0060]较佳地,作为一种可实施方式,所述步骤S200包括如下步骤:
[0061]步骤S210,判断是否正在将SSD缓存装置中的缓存数据通过缓存清空线程(flush线程)清空到外部目的磁盘;
[0062]缓存清空线程(flush线程)是一种现有技术,因此,在本发明实施例中,不再一一详细描述。
[0063]发生SSD缓存装置中的缓存数据清空(flush)到外部目的磁盘的情况包括但不限于I) SSD缓存装置空间不足;2)用户操作控制启动缓存清空线程清空(flush)缓存数据;3)用户预设条件满足,计算机存储系统启动缓存清空线程清空等。
[0064]步骤S220,如果判断没有正在将SSD缓存装置中的缓存数据通过缓存清空线程清空(flush)到外部目的磁盘,则进入步骤S300,监控其是否达到本发明实施例的SSD缓存装置中的缓存清空线程(flush线程)启动条件而通知启动缓存清空线程;否则跳转到步骤S500,监控缓存清空速度。
[0065]如果SSD缓存装置没有通过缓存清空线程进行清空(flush),此SSD缓存装置还不需要进行流量控制,但是随着不断缓存输入输出(IO)的进行,SSD缓存装置的未使用空间慢慢被占用,为了进行流量控制,则进入步骤S300继续监控。
[0066]步骤S300,统计作为缓存(cache)使用的固态硬盘(SSD)的已使用空间,得出SSD缓存空间中已经缓存的缓存数据的空间与未使用空间的比例,得到其使用百分比,即SSD缓存使用率,并在SSD缓存使用率超过第一预设比率时,进入步骤S400 ;
[0067]作为一种可实施方式,较佳地,预先设定的第一预设比率为70%?90%,则步骤S300中SSD缓存使用率大于等于70%?90%时,跳转到步骤S400,启动flush线程;否则循环统计已使用空间。
[0068]更佳地,作为一种可实施方式,根据缓存空间的空余空间的比例是否超过第一预设比率80%,决定是否启动flush线程,即如果SSD缓存装置的空余空间不足20%,即SSD缓存使用率大于等于80%时,则通知启动flush线程,进入步骤S400。
[0069]作为一种可实施方式,在监控过程中,设置flush线程等待,检查控制条件(检测是否大于等于预设比率),一旦满足条件,通知该flush线程启动。
[0070]步骤S400,启动缓存清空线程(flush线程),通过缓存清空线程(flush线程),按预先设定的基准参考因子RefRatio对应的缓存数据清空速度(flush),将SSD缓存装置中的缓存数据清空(flush)到目的磁盘;
[0071]其中,作为一种可实施方式,所述基准参考因子RefRatio为预设的无符号整型常量,该基准参考因子RefRatio根据经验值得到,其使得对应的flush速度进行清空时,读写控制处于动态平衡状态。
[0072]步骤S500,计算生成比例因子ratio,并根据比例因子ratio对SSD缓存装置进行缓存数据清空速度进行调整,对SSD缓存流量控制,直至SSD缓存装置的缓存使用率低于预先设定的第二预设比率。
[0073]较佳地,预先设定的第二预设比率为20%?30%,则步骤S500中SSD缓存使用率小于等于20%?30%时,结果flush线程并返回;否则循环进行流量监控。
[0074]较佳地,作为一种可实施方式,所述步骤S500包括如下步骤:
[0075]步骤S510,在将缓存数据写入到目的磁盘的过程中,累计统计写入SSD缓存装置的写10的缓存数据的字节长度,即SSD缓存装置的10流入速度,以及累计写出SSD缓存统计flush字节长度,即SSD缓存磁盘中的缓存数据清空速度(flush速度),计算生成SSD缓存装置中的比例因子;
[0076]本发明实施例中,字节长度对应写入写出(10)传输带宽(速度),通过统计字节长度,也就统计了写入写出(10)带宽(速度)。
[0077]本发明实施例的读写控制方法中,较佳地,作为一种可实施方式,在步骤S510中,根据累计统计的写10的字节长度,即SSD缓存装置的10流入速度,以及flush字节长度,即SSD缓存磁盘中的flush速度,计算调整比例因子ratio。
[0078]作为一种可实施方式,根据累计统计的写10的字节长度和flush字节长度,计算得到比例因子ratio:[0079]设流入速度为vi, flush 速度为 vf,则:vi/vf=ratio/RefRatio,即:
[0080]Ratio=(vi/vf)^RefRatio ?
[0081]由于在开始进行流量监控时,流出速度会大于流入速度,因此,比例因子小于基准参考因子RefRatio。
[0082]步骤S520,比较比例因子ratio和基准参考因子RefRatio,根据比较结果调整缓存清空速度,以新的缓存清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘。
[0083]较佳地,作为一种可实施方式,所述步骤S520根据比较结果调整缓存清空速度,包括如下步骤:
[0084]步骤S521,若比例因子ratio大于等于基准参考因子RefRatio,则表明流入速度(写10到SSD缓存装置)大于等于flush速度(flush出SSD缓存装置到目的磁盘),因此,根据比例因子ratio的值调整flush速度,使流入速度小于等于flush速度,即vi〈=vf ;
[0085]作为一种可实施方式,若比例因子ratio大于基准参考因子RefRatio,则flush速度vf = vi* (ratio/RefRatio),替换原来的flush速度,继续将SSD缓存装置中的缓存数据清空到目的磁盘。
[0086]步骤S522,若比例因子ratio小于基准参考因子RefRatio,则表明流入速度(写10到SSD缓存装置)小于flush速度(flush出SSD缓存装置到目的磁盘),SSD缓存装置的可用空间可以承受流入速度vi比flush速度快所带来的压力,则flush速度vf不变。
[0087]本发明实施例中,较佳地,若比例因子ratio小于基准参考因子RefRatio,则vf保持不变,缓存清空速度vf不变,继续将SSD缓存装置中的缓存数据清空到目的磁盘。
[0088]本发明实施例中,通过控制缓存清空速度Vf,从而有效地清空SSD缓存装置中的缓存数据,直至SSD缓存装置的缓存`使用率低于第二预设比率。
[0089]步骤530,将SSD缓存中的数据写回到目的磁盘后,继续记录统计SSD缓存装置的每个写入写出(10)的字节长度,并释放相应的SSD缓存(cache)装置空间,统计得到SSD缓存装置的缓存使用率;
[0090]步骤S540,判断SSD缓存装置的缓存使用率是否低于第二预设比率;如果是,则结束flush线程并返回;否则,返回步骤S510,循环进行流量控制。
[0091]作为一种可实施方式,可以通过Write 10 API结束flush线程并返回,完成该SSD缓存装置的流量控制。
[0092]相应地,基于同一发明构思,本发明实施例还提供一种SSD缓存装置。由于此装置解决问题的原理与前述一种SSD缓存流量控制方法的过程相似,因此,此装置的实施可以通过前述方法具体实现,重复之处不再赘述。
[0093]如图2所示,本发明实施例的一种SSD缓存装置,包括作为连接在外部磁盘上作为缓存的固态硬盘(SSD) 100,还包括缓存控制装置200。
[0094]所述缓存控制装置200,包括截获模块210,检测模块220,统计模块230,清空处理模块240,计算调整控制模块250 ;
[0095]其中:
[0096]所述截获模块210,用于截获磁盘读写进程或者线程的磁盘数据,将磁盘数据缓存到固态硬盘SSD中作为缓存数据;
[0097]所述检测模块220,用于检测是否通过缓存清空线程(flush线程)将缓存数据清空到外部目的磁盘;如果是,则转到计算调整控制模块进行处理;否则转到统计模块进行处理;
[0098]所述统计模块230,用于统计固态硬盘(SSD)的已使用空间,得到SSD缓存使用率,并在SSD缓存使用率超过第一预设比率时,进入清空处理模块;
[0099]所述清空处理模块240,用于启动缓存清空线程(flush线程),通过缓存清空线程(flush线程),按预先设定的基准参考因子RefRatio对应的缓存数据清空速度(flush),将SSD缓存装置中的缓存数据清空(flush)到目的磁盘;
[0100]所述计算调整控制模块250,用于计算生成比例因子ratio,并根据比例因子ratio对SSD缓存装置进行缓存数据清空速度进行调整,对SSD缓存流量控制,直至SSD缓存装置的缓存使用率低于预先设定的第二预设比率。
[0101]较佳地,作为一种可实施方式,所述检测模块220包括判断子模块221,判断处理子模块222,其中:
[0102]所述判断子模块221,用于判断是否正在将SSD缓存装置中的缓存数据通过缓存清空线程(flush线程)清空到外部目的磁盘;
[0103]所述判断处理子模块222,用于如果判断没有正在将固态硬盘中的缓存数据通过缓存清空线程清空(flush)到外部目的磁盘,则转到统计模块,监控其是否达到缓存清空线程(flush线程)启动条件而通知启动缓存清空线程;否则跳转到计算调整控制模块,监控
缓存清空速度。
[0104]较佳地,作为一种可实施方式,所述预先设定的第一预设比率为70%~90%,更佳地,所述第一预设比率为80%。所述预先设定的第二预设比率为20%~30%。
[0105]较佳地,作为一种可实施方式,所述计算调整控制模块250,包括计算子模块251,比较调整子模块252,释放子模块253,判断结束子模块254,其中:
[0106]所述计算子模块251,用于在将缓存数据写入到目的磁盘的过程中,累计统计写入SSD缓存装置的写IO的缓存数据的字节长度,即SSD缓存装置的IO流入速度,以及累计写出SSD缓存统计flush字节长度,即SSD缓存磁盘中的缓存数据清空速度(flush速度),计算生成SSD缓存装置中的比例因子;
[0107]更佳地,作为一种可实施方式,根据累计统计的写IO的字节长度和flush字节长度,计算得到比例因子ratio:
[0108]设流入速度为vi, flush 速度为 vf,则:vi/vf=ratio/RefRatio,即:
[0109]Ratio=(vi/vf)^RefRatio?
[0110]所述比较调整子模块252,用于比较比例因子ratio和基准参考因子RefRatio,根据比较结果调整缓存清空速度,以新的缓存清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘。
[0111]若比例因子ratio大于等于基准参考因子RefRatio,则表明流入速度(写10到SSD缓存装置)大于等于flush速度(flush出SSD缓存装置到目的磁盘),因此,根据比例因子ratio的值调整flush速度,使流入速度小于等于flush速度,即vi〈=vf ;
[0112]作为一种可实施方式,若比例因子ratio大于基准参考因子RefRatio,则flush速度vf = vi* (ratio/RefRatio),替换原来的flush速度,继续将SSD缓存装置中的缓存数据清空到目的磁盘。[0113]若比例因子ratio小于基准参考因子RefRatio,则表明流入速度(写IO到SSD缓存装置)小于flush速度(flush出SSD缓存装置到目的磁盘),SSD缓存装置的可用空间可以承受流入速度vi比flush速度快所带来的压力,则flush速度不变。
[0114]本发明实施例中,较佳地,若比例因子ratio小于基准参考因子RefRatio,则vf保持不变,缓存清空速度不变,将SSD缓存装置中的缓存数据清空到目的磁盘。
[0115]所述释放子模块253,用于将SSD缓存中的数据写回到目的磁盘后,继续记录统计SSD缓存装置的每个写入写出(IO)的字节长度,并释放相应的SSD缓存(cache)装置空间,统计得到SSD缓存装置的缓存使用率;
[0116]所述判断结束子模块254,用于判断SSD缓存装置的缓存使用率是否低于第二预设比率;如果是,则结束flush线程并返回;否则,返回计算子模块,循环进行流量控制。
[0117]本发明实施例的SSD缓存的输入输出(IO)流量控制方法及装置,其根据外部磁盘的IO流量,动态控制进入SSD缓存的IO流量,其能够在多个线程之间实现流量的精确控制,并且根据SSD缓存可用空间自动调整控制的比例因子,依据目前资源情况尽最大可能满足用户写入流量请求,最大化的利用SSD空间和性能来满足用户需求。
[0118]最后,需要说明的是,在本专利文件中,诸如第一、第二等之类的关系术语仅仅用于将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何关系或者顺序。而且,在本专利文件中,术语“包括”、“包含”或者其任何其他变体,其意在涵盖而非排他性包含,从而使得包括一系列要素的过程、方法、物品或者设备,不仅包括这些要素,而且还包括没有明确列出而本领域技术人员能够知晓的其他要素,或者还包括为这些过程、方法、物品或者设备所公知的必不可少的要素。
[0119]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种SSD缓存的输入输出流量控制方法,其特征在于,包括如下步骤: 步骤S100,截获磁盘读写进程或者线程的磁盘数据,将磁盘数据缓存到SSD缓存装置空间中作为缓存数据; 步骤S200,检测SSD缓存装置中是否通过缓存清空线程将缓存数据清空到外部目的磁盘;如果是,则进入步骤S500 ;否则进入步骤S300 ; 步骤S300,统计作为缓存使用的固态硬盘的已使用空间,得到SSD缓存使用率,并在SSD缓存使用率超过第一预设比率时,进入步骤S400 ; 步骤S400,启动缓存清空线程,通过缓存清空线程,按预先设定的基准参考因子对应的缓存数据清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘; 步骤S500,计算生成比例因子,并根据比例因子对SSD缓存装置进行缓存数据清空速度进行调整,对SSD缓存流量控制,直至SSD缓存装置的缓存使用率低于预先设定的第二预设比率。
2.根据权利要求1所述的SSD缓存的输入输出流量控制方法,其特征在于,所述步骤S200包括如下步骤: 步骤S210,判断是否正在将SSD缓存装置中的缓存数据通过缓存清空线程清空到外部目的磁盘; 步骤S220,如果判断没有正在将SSD缓存装置中的缓存数据通过缓存清空线程清空到外部目的磁盘,则进 入步骤S300,监控其是否达到缓存清空线程启动条件而通知启动缓存清空线程;否则跳转到步骤S500,监控缓存清空速度。
3.根据权利要求1所述的SSD缓存的输入输出流量控制方法,其特征在于,所述步骤S500包括如下步骤: 步骤S510,在将缓存数据写入到目的磁盘的过程中,累计统计写入SSD缓存装置的写IO的缓存数据的字节长度,即SSD缓存装置的IO流入速度,以及累计写出SSD缓存统计flush字节长度,即SSD缓存磁盘中的缓存数据清空速度,计算生成SSD缓存装置中的比例因子; 步骤S520,比较比例因子和基准参考因子,根据比较结果调整缓存清空速度,以新的缓存清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘; 步骤530,将SSD缓存中的数据写回到目的磁盘后,继续记录统计SSD缓存装置的每个写入写出的字节长度,并释放相应的SSD缓存装置空间,统计得到SSD缓存装置的缓存使用率; 步骤S540,判断SSD缓存装置的缓存使用率是否低于第二预设比率;如果是,则结束缓存清空线程并返回;否则,返回步骤S510,循环进行流量控制。
4.根据权利要求3所述的SSD缓存的输入输出流量控制方法,其特征在于,所述步骤S520中,根据比较结果调整缓存清空速度,包括如下步骤: 步骤S521,若比例因子ratio大于等于基准参考因子RefRatio,则表明流入速度大于等于flush速度,根据比例因子ratio的值调整flush速度,使流入速度小于等于flush速度,即 vi < vf ; 步骤S522,若比例因子ratio小于基准参考因子RefRatio,则表明流入速度小于flush速度,则flush速度vf不变。
5.根据权利要求1所述的SSD缓存的输入输出流量控制方法,其特征在于: 所述预先设定的第一预设比率为70%~90% ; 所述预先设定的第二预设比率为20%~30%。
6.根据权利要求4所述的SSD缓存的输入输出流量控制方法,其特征在于: 其中,所述步骤S510中,所述根据累计统计的写IO的字节长度和flush字节长度,计算得到比例因子ratio为: 设流入速度为vi,flush速度为vf,基准参考因子RefRatio,则:
Ratio=(vi/vf)^RefRatio ; 其中,所述步骤S521中,若比例因子ratio大于基准参考因子RefRatio,则flush速度vf = vi* (ratio/RefRatio); 其中,所述步骤S522中,若比例因子ratio小于基准参考因子RefRatio,则flush速度vf保持不变。
7.—种SSD缓存装置 ,包括作为连接在外部磁盘上作为缓存的固态硬盘SSD,其特征在于,还包括缓存控制装置; 所述缓存控制装置,包括截获模块,检测模块,统计模块,清空处理模块,计算调整控制模块; 其中: 所述截获模块,用于截获磁盘读写进程或者线程的磁盘数据,将磁盘数据缓存到固态硬盘SSD中作为缓存数据; 所述检测模块,用于检测是否通过缓存清空线程将缓存数据清空到外部目的磁盘;如果是,则转到计算调整控制模块进行处理;否则转到统计模块进行处理; 所述统计模块,用于统计固态硬盘的已使用空间,得到SSD缓存使用率,并在SSD缓存使用率超过第一预设比率时,进入清空处理模块; 所述清空处理模块,用于启动缓存清空线程,通过缓存清空线程,按预先设定的基准参考因子对应的缓存数据清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘; 所述计算调整控制模块,用于计算生成比例因子,并根据比例因子对SSD缓存装置进行缓存数据清空速度进行调整,对SSD缓存流量控制,直至SSD缓存装置的缓存使用率低于预先设定的第二预设比率。
8.根据权利要求7所述的SSD缓存装置,其特征在于,所述检测模块包括判断子模块,判断处理子模块,其中: 所述判断子模块,用于判断是否正在将SSD缓存装置中的缓存数据通过缓存清空线程清空到外部目的磁盘; 所述判断处理子模块,用于如果判断没有正在将固态硬盘中的缓存数据通过缓存清空线程清空到外部目的磁盘,则转到统计模块,监控其是否达到缓存清空线程启动条件而通知启动缓存清空线程;否则跳转到计算调整控制模块,监控缓存清空速度。
9.根据权利要求7所述的SSD缓存装置,其特征在于,所述计算调整控制模块,包括计算子模块,比较调整子模块,释放子模块,判断结束子模块; 其中: 所述计算子模块,用于在将缓存数据写入到目的磁盘的过程中,累计统计写入SSD缓存装置的写IO的缓存数据的字节长度,即SSD缓存装置的IO流入速度,以及累计写出SSD缓存统计flush字节长度,即SSD缓存磁盘中的缓存数据清空速度,计算生成SSD缓存装置中的比例因子; 所述比较调整子模块,用于比较比例因子和基准参考因子,根据比较结果调整缓存清空速度,以新的缓存清空速度,将SSD缓存装置中的缓存数据清空到目的磁盘; 所述释放子模块,用于将SSD缓存中的数据写回到目的磁盘后,继续记录统计SSD缓存装置的每个写入写出的字节长度,并释放相应的SSD缓存装置空间,统计得到SSD缓存装置的缓存使用率; 所述判断结束子模块,用于判断SSD缓存装置的缓存使用率是否低于第二预设比率;如果是,则结束缓存清空线程并返回;否则,返回计算子模块,循环进行流量控制。
10.根据权利要求7所述的SSD缓存装置,其特征在于,所述预先设定的第一预设比率为70%~90% ;所述预 先设定的第二预设比率为20%~30%。
【文档编号】G06F3/06GK103729313SQ201210383733
【公开日】2014年4月16日 申请日期:2012年10月11日 优先权日:2012年10月11日
【发明者】裴金干, 刘虹越, 王术, 王旭光 申请人:苏州捷泰科信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1