CN102073463A - 流预测方法和装置及预读控制方法和装置 - Google Patents
流预测方法和装置及预读控制方法和装置 Download PDFInfo
- Publication number
- CN102073463A CN102073463A CN 201010622569 CN201010622569A CN102073463A CN 102073463 A CN102073463 A CN 102073463A CN 201010622569 CN201010622569 CN 201010622569 CN 201010622569 A CN201010622569 A CN 201010622569A CN 102073463 A CN102073463 A CN 102073463A
- Authority
- CN
- China
- Prior art keywords
- information
- historical
- stream
- read request
- current read
- 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.)
- Granted
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种流预测方法和装置以及预读控制方法和装置。本发明能够查询到与当前读请求的最匹配的历史I/O信息,并在当前读请求与所述最匹配的历史I/O信息相关联时,可依据所述最匹配的历史I/O信息是否存在对应的流信息,预测出当前读请求是否属于一个已存在的流,以及,还可依据根据当前读请求更新后的所述最匹配的历史I/O信息是否满足流模式的条件,预测出更新后的所述最为匹配的历史I/O信息是否已对应一个新的流。从而,只有在预测出当前读请求属于适合预读的流模式的情况下才触发针对当前读请求的预读操作,能够提高读请求的命中率、并避免阵地随机访问执行预读所造成的I/O资源浪费,进而有助于提高存储***的性能。
Description
技术领域
本发明涉及数据预读技术,特别涉及一种流预测方法、基于流预测的一种预读控制方法、以及一种流预测装置、基于流预测的一种预读控制装置。
背景技术
由于主机的运算能力越来越强大,存储***的性能开始成为整个计算***的瓶颈。
为了解决此类问题,如图1所示,一般会在主机与磁盘阵列之间设置一高速的缓存(该缓存通常设置在主机与磁盘阵列之间的存储控制器中),当主机访问存储***中的磁盘阵列时,会先到存储***中的缓存中去寻找,如果数据存在于缓存中,就不需要再从硬盘中读取数据,而是通过缓存即可实现读请求命中。其中,存在于缓存中的数据有可能是因之前的操作已经读取而被暂存其中,或者,是依据一定的规则有选择性地从磁盘预读到缓存中,本文仅关注预读的情况。
由于缓存的读写速度是磁盘的数百倍,因而如果能够在缓存中读请求命中,就能够大大缩短读请求的I/O等待时间。但同时,缓存的容量一般都会远远小于磁盘的容量,不可能将所有的数据都预读到缓存中,从而,如何在缓存容量有限的前提下有效地利用预读,即成为提高读请求的命中率的关键所在,进而影响存储***的性能。
发明内容
有鉴于此,本发明提供了一种流预测方法、一种预读控制方法、以及一种流预测装置、一种预读控制装置,有助于对存储***性能的提高。
本发明提供的一种流预测方法,包括:
A、查询与当前读请求的最匹配的历史I/O信息;
B、判断当前读请求是否与所述最匹配的历史I/O信息相关联,如果是则执行步骤D,否则执行步骤C;
C、为当前读请求新建一个历史I/O信息并结束本流程;
D、根据当前读请求更新所述最匹配的历史I/O信息,然后执行步骤E;
E、判断更新后的所述最为匹配的历史I/O信息是否存在对应的流信息,如果是则确认当前读请求属于一个已存在的流、并执行步骤F,否则执行步骤G;
F、更新对应的流信息;
G、判断更新后的所述最为匹配的历史I/O信息是否满足流模式的条件,如果是则确认更新后的所述最为匹配的历史I/O信息已对应一个新的流、并执行步骤H,否则结束本流程;
H、为更新后的所述最为匹配的历史I/O信息创建新的流信息。
本发明提供的一种预读控制方法,包括上述流预测方法的步骤A~H,并在步骤F和步骤H之后进一步包括:I、触发针对当前读请求的预读操作。优选地,当流信息包括前一次预读的结束地址、以及最后访问的时间时,在所述步骤I之后,还可以再进一步包括:
J、计算最近若干条流的流信息中的流长度的平均值,并将计算得到的平均值与一预设经验值的商作为针对当前读请求的预读长度;
K、判断对应的流信息中的前一次预读的结束地址与当前读请求的起始地址之差是否小于所述平均值,如果是,则按照所述预读长度执行针对当前读请求的预读操作,否则,取消已触发的针对当前读请求的预读操作。
本发明提供的一种流预测装置,包括:
匹配查询模块,查询与当前读请求的最匹配的历史I/O信息;
关联判断模块,判断当前读请求是否与所述最匹配的历史I/O信息相关联,如果是则触发信息更新模块,否则触发信息建立模块;
信息建立模块,为当前读请求新建一个历史I/O信息并结束处理;
信息更新模块,根据当前读请求更新所述最匹配的历史I/O信息,然后触发流查询模块;
流查询模块,判断更新后的所述最为匹配的历史I/O信息是否存在对应的流信息,如果是则确认当前读请求属于一个已存在的流、并触发流更新模块,否则触发流判决模块;
流更新模块,更新对应的流信息;
流判决模块,判断更新后的所述最为匹配的历史I/O信息是否满足流模式的条件,如果是则确认更新后的所述最为匹配的历史I/O信息已对应一个新的流、并触发流建立模块,否则结束处理;
流建立模块,为更新后的所述最为匹配的历史I/O信息创建新的流信息。
本发明提供的一种预读控制装置,包括上述流预测装置、以及可由流更新模块和流建立模块触发的预读启动模块。优选地,当流信息包括前一次预读的结束地址、以及最后访问的时间时,还可以再进一步包括可被预读启动模块触发的如下模块:
长度计算模块,计算最近若干条流的流信息中的流长度的平均值,并将计算得到的平均值与一预设经验值的商作为预读操作所需的预读长度;
预读执行模块,判断对应的流信息中的前一次预读的结束地址与当前读请求的起始地址之差是否小于所述平均值,如果是,则按照所述预读长度执行针对当前读请求的预读操作,否则,取消针对当前读请求的预读操作。
由上述技术方案可见,本发明能够查询到与当前读请求的最匹配的历史I/O信息,并在当前读请求与所述最匹配的历史I/O信息相关联时,可依据所述最匹配的历史I/O信息是否存在对应的流信息,预测出当前读请求是否属于一个已存在的流,以及,还可依据根据当前读请求更新后的所述最匹配的历史I/O信息是否满足流模式的条件,预测出更新后的所述最为匹配的历史I/O信息是否已对应一个新的流。
从而,利用本发明的预读控制方法和装置,只有在预测出当前读请求属于适合预读的流模式的情况下才触发针对当前读请求的预读操作,因而能够提高读请求的命中率、并避免阵地随机访问执行预读所造成的I/O资源浪费,进而有助于提高存储***的性能。
进一步地,本发明的预读控制方法和装置还能够在触发预读操作后,动态调整预读长度,避免固定的预读长度所可能造成的I/O资源浪费;
再进一步地,本发明的预读控制方法和装置还能够在前一次预读的结束地址与当前读请求的起始地址之差不小于预读长度的平均值时,判决出需要预读的数据已存在于缓存中、并取消已被触发的预读操作(相当于将预读长度变为0),从而避免不必要的预读所可能造成的I/O资源浪费。
附图说明
图1为现有技术中常采用数据预读的存储***架构示意图;
图2为本发明实施例中预读控制方法的较佳流意图;
图3为本发明实施例中提供的一种历史I/O信息的结构示意图;
图4为本发明实施例中提供的一种流信息的结构示意图;
图5为本发明实施例中的预读控制装置的示例性结构示意图;
图6为包含有本发明实施例中的预读控制装置的存储***架构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
对于地址连续的流访问模式,将即将被访问的地址连续的数据预读至缓存中显然能够提高命中率;而对于地址非连续的随机访问模式,则难以确定即将被访问的数据,即便采用预读也难以确保命中率。因此,本实施例首先考虑如何预测当前的读请求是否属于流,并在预测出当前的读请求属于流时才会触发预读操作。
图2为本发明实施例中预读控制方法的较佳流意图。如图2所示,本实施例中的预读控制方法至少包括如下步骤:
步骤201,查询与当前读请求的最匹配的历史I/O信息。
在本实施例中,设置有一个历史信息库,该历史信息库针对之前的访问分别记录有对应的历史I/O信息,较佳地,每条历史I/O信息的结构可以如图3所示,至少包括但不限于:对应访问的起始地址、结束地址、访问时间、访问次数、以及流信息ID。对于此类结构的历史I/O信息,本步骤中可以将与当前读请求具有最接近的起始地址的历史I/O信息为最匹配的历史I/O信息。
此外,对于历史I/O信息中的流信息ID,当其为无效时,表示对应访问不属于流;而当其有效时,该流信息ID的有效值表示与对应访问相对应的流的流信息的标识。只有历史I/O信息所对应的访问属于一个流,该历史I/O信息才会存在对应的流信息、其流信息ID也才会有效,所述的流信息的结构可以如图4所示,其至少包括但不限于:对应的流的前一次预读结束地址、对应的流的长度、以及对应的流的最后访问时间。
步骤202,判断当前读请求是否与最匹配的历史I/O信息相关联,如果是则执行步骤204,否则执行步骤203。
本步骤中所述的相关联,使指当前的读请求与最匹配的历史I/O信息所对应的访问,是否在空间上和时间上足够接近。
较佳地,对于如图3所示的历史I/O信息,本步骤中可以判断当前读请求与所述最匹配的历史I/O信息的起始地址之差是否在一定的地址范围M内、以及访问时间之差是位于对应的时间范围Ts内,如果均是,则表示当前读请求与所述最匹配的历史I/O信息相关联,否则,表示当前读请求与所述最匹配的历史I/O信息无关联。
步骤203,对于与最匹配的历史I/O信息都无任何关联的当前读请求,其显然属于在时间和空间上独立的访问、而不可能属于一个在时间和空间上足够接近的流,因而在历史信息库中为当前读请求新建一个历史I/O信息、用于后续再有其他读请求访问时的查询,并结束本流程。
较佳地,对于如图3所示的历史I/O信息,本步骤可以将当前读请求的起始地址、结束地址、访问时间分别作为新建的历史I/O信息中的起始地址、结束地址、访问时间;以及,将新建的历史I/O信息中的访问次数设置为1、流信息ID设为无效。
步骤204,由于当前读请求与最匹配的历史I/O信息所对应的访问存在关联,因而当前读请求可与最匹配的历史I/O信息所对应的访问属于在时间和空间上足够接近的访问,因此,根据当前读请求更新最匹配的历史I/O信息、用以将当前读请求与最匹配的历史I/O信息所对应的访问合并,然后执行步骤205。
较佳地,对于如图3所示的历史I/O信息,更新方式可以如下:
a、起始地址的更新方式:判断当前读请求的起始地址与更新前的最匹配的历史I/O信息的起始地址的大小,如果当前读请求的起始地址小于更新前的最匹配的历史I/O信息的起始地址,则将当前读请求的起始地址作为为更新后的最匹配的历史I/O信息的起始地址,否则,将更新前的最匹配的历史I/O信息的起始地址保留为更新后的最匹配的历史I/O信息的起始地址;即,将当前读请求的起始地址与更新前的最匹配的历史I/O信息的起始地址中最小的一个作为为更新后的最匹配的历史I/O信息的起始地址;
b、结束地址的更新方式:判断当前读请求的结束地址与更新前的最匹配的历史I/O信息的结束地址的大小,如果当前读请求的结束地址大于更新前的最匹配的历史I/O信息的结束地址,则将当前读请求的结束地址作为为更新后的最匹配的历史I/O信息的结束地址,否则,将更新前的最匹配的历史I/O信息的结束地址保留为更新后的最匹配的历史I/O信息的结束地址;即,将当前读请求的结束地址与更新前的最匹配的历史I/O信息的结束地址中最大的一个作为更新后的最匹配的历史I/O信息的结束地址;
c、访问时间和访问次数的更新方式:将当前读请求的访问时间作为更新后的最匹配的历史I/O信息的访问时间、将更新后的最匹配的历史I/O信息的访问次数加1。
步骤205,判断更新后的最为匹配的历史I/O信息是否存在对应的流信息,如果是则确认当前读请求属于一个已存在的流、并执行步骤206,否则执行步骤207。
较佳地,对于如图3所示的历史I/O信息,如前文所述,只有历史I/O信息所对应的访问属于一个流,该历史I/O信息才会存在对应的流信息、其流信息ID也才会有效,因此,本步骤可判断最为匹配的历史I/O信息中的流信息ID是否有效,如果有效则表示最匹配的历史I/O信息存在对应的流信息,否则表示最匹配的历史I/O信息不存在对应的流信息。
步骤206,更新对应的流信息,然后执行步骤209。
较佳地,对于如图4所示的流信息,本步骤主要是更新流信息中的流长度、以及最后访问时间,具体说,将对应的流信息中的流长度更新为最匹配的历史I/O信息的更新后的结束地址减去更新后的起始地址,将最后访问时间更新为当前读请求的访问时间。而前一次预读结束地址可等待预读操作被触发后再予以更新,当然,最后访问时间也可以待预读操作被触发后再予以更新。
步骤207,虽然当前读请求并不属于一个已存在的流,但其也有可能与最匹配的历史I/O信息所对应的访问构成一个新的流,因此,暂不认定当前读请求不属于流,而是先判断根据当前读请求更新后的最为匹配的历史I/O信息是否满足流模式的条件,即当前读请求与最匹配的历史I/O信息所对应的访问合并后是否满足流模式的条件,如果是则根据当前读请求更新后的所述最为匹配的历史I/O信息已对应一个新的流,即当前读请求与最匹配的历史I/O信息所对应的访问合并后已构成一个新的流,然后执行步骤208,否则,当前读请求与最匹配的历史I/O信息所对应的访问合并后暂未构成一个新的流,因而结束本流程。
较佳地,对于如图3所示的历史I/O信息,本步骤中可以判断更新后的最匹配的历史I/O信息的访问次数是否大于预设的阈值,如果是,则表示当前读请求与最匹配的历史I/O信息所对应的访问合并后的访问次数已满足一个流的连续访问次数,因而可以确认更新后的最为匹配的历史I/O信息满足流模式的条件,否则表示更新后的最为匹配的历史I/O信息不满足流模式的条件。
步骤208,为更新后的最为匹配的历史I/O信息创建新的流信息、并设置更新后的最匹配的历史I/O信息的流信息ID为有效的对应值,然后执行步骤209。
较佳地,对于如图4所示的流信息,本将对应的流信息中的流长度设置为最匹配的历史I/O信息的更新后的结束地址减去更新后的起始地址。而前一次预读结束地址和最后访问时间暂设置为空、待预读操作被触发后再予以更新。
步骤209,触发针对当前读请求的预读操作。
由于本步骤只有在预测出当前读请求属于适合预读的流模式的情况下才触发针对当前读请求的预读操作,因而能够提高读请求的命中率、并避免阵地随机访问执行预读所造成的I/O资源浪费,进而有助于提高存储***的性能。
本流程中在步骤209触发针对当前读请求的预读操作之前的步骤201~208即可构成一个独立的流预测方法,该流预测方法并不仅限于用于预读的控制。
此外,在步骤209之后,即能够针对属于流的当前读请求进行预读操作,但如果简单地按照固定不变的预读长度进行预读操作的话,有可能会由于预读长度过大而导致大量的预读数据并不是当前读请求所需要的数据,从而使预读数据被命中的概率不高,进而造成I/O资源的浪费、导致存储***性能下降。例如视频编辑业务会有不同的码流,IO特点也会不同,需要的预读数据量也会不一样。
因此,本实施例在步骤209之后,优选地增加了计算预读长度、以及预读判决的步骤210~212。
步骤210,参照一定时期内的若干个流的预读长度的平均值,确定针对当前读请求的预读操作所应当使用的预读长度,然后执行步骤211。
例如,可以计算最近若干条流的流信息中的流长度的平均值L,并将计算得到的平均值L与一预设经验值P的商L/P作为针对当前读请求的预读长度。这样,对应的流信息中的前一次预读结束地址J就更新为J+L/P。
利用本步骤,即可动态调整预读长度,避免固定的预读长度所可能造成的I/O资源浪费。
步骤211,判断当前读请求所需要的数据是否已经被之前的预读操作读取至缓存中,如果是,则取消已触发的针对当前读请求的预读操作,然后结束本流程,否则,执行步骤212。
本步骤中,可判断对应的流信息中的前一次预读的结束地址与当前读请求的起始地址之差是否小于平均值L,如果是,则表示当前读请求所需要的数据并未被之前的预读操作全部读取至缓存中,否则,表示当前读请求所需要的数据已经被之前的预读操作全部读取至缓存中。
对于预读操作的取消,本步骤可以通过直接终止预读操作的方式、或将预读长度变更为0的方式、或本领据技术人员能够想到的其他任意一种方式予以实现。
利用本步骤,即可在判决出需要预读的数据已存在于缓存中时,取消已被触发的预读操作,从而避免不必要的预读所可能造成的I/O资源浪费。
步骤212,按照步骤211计算出的预读长度执行针对当前读请求的预读操作,然后结束本流程。
至此,针对一次读请求的预读控制过程结束。
除了上述由步骤201~208所构成的流预测方法、以及如图2所示的预读控制方法之外,本实施例还提供了对应的一种预读控制装置、以及包含于该预读控制装置中的流预测装置。
图5为本发明实施例中的预读控制装置的示例性结构示意图。如图5所示,本实施例中的预读控制装置可以按照如图6所示的方式设置在主机与磁盘阵列之间的存储控制器中、并至少包括:匹配查询模块501、关联判断模块502、信息建立模块503、信息更新模块504、流查询模块505、流更新模块506、流判决模块507、流建立模块508、以及预读启动模块509。
匹配查询模块501,查询与当前读请求的最匹配的历史I/O信息。较佳地,对于如图3所示的历史I/O信息,匹配查询模块501可以将与当前读请求具有最接近的起始地址的历史I/O信息作为最匹配的历史I/O信息。
关联判断模块502,判断当前读请求是否与匹配查询模块501所查询到的最匹配的历史I/O信息相关联,如果是则触发信息更新模块504,否则触发信息建立模块503;较佳地,对于如图3所示的历史I/O信息,关联判断模块502可以判断当前读请求与最匹配的历史I/O信息的起始地址之差、以及访问时间之差是否均位于对应的范围内,如果是则表示当前读请求与最匹配的历史I/O信息相关联、否则表示当前读请求与最匹配的历史I/O信息无关联。
信息建立模块503,为当前读请求新建一个历史I/O信息并结束处理;较佳地,对于如图3所示的历史I/O信息,信息建立模块503可以将当前读请求的起始地址、结束地址、访问时间分别作为新建的历史I/O信息中的起始地址、结束地址、访问时间;以及,将新建的历史I/O信息中的访问次数设置为1、流信息ID设为无效。
信息更新模块504,根据当前读请求更新最匹配的历史I/O信息,然后触发流查询模块505;较佳地,对于如图3所示的历史I/O信息,信息更新模块504可以参照如前文中步骤204所采用的方式更新。
流查询模块505,判断更新后的最为匹配的历史I/O信息是否存在对应的流信息,如果是则确认当前读请求属于一个已存在的流、并触发流更新模块506,否则触发流判决模块507;较佳地,对于如图3所示的历史I/O信息,流查询模块505可以判断最为匹配的历史I/O信息中的流信息ID是否有效,如果有效则表示最匹配的历史I/O信息存在对应的流信息,否则表示最匹配的历史I/O信息不存在对应的流信息。
流更新模块506,更新对应的流信息,并触发预读启动模块509;较佳地,对于如图4所示的流信息,流更新模块506将对应的流信息中的流长度更新为最匹配的历史I/O信息的更新后的结束地址减去更新后的起始地址、最后访问时间就更新为当前读请求的访问时间。
流判决模块507,判断更新后的最为匹配的历史I/O信息是否满足流模式的条件,如果是则确认当前读请求已形成一个新的流、并触发流建立模块508,否则结束处理;较佳地,对于如图3所示的历史I/O信息,流判决模块可以判断更新后的最匹配的历史I/O信息的访问次数是否大于预设的阈值,如果是,则表示更新后的最为匹配的历史I/O信息满足流模式的条件,否则表示更新后的最为匹配的历史I/O信息不满足流模式的条件。
流建立模块508,为更新后的最为匹配的历史I/O信息创建新的流信息、并设置更新后的最匹配的历史I/O信息的流信息ID为有效的对应值,以及,触发预读启动模块509。
预读启动模块509,触发针对当前读请求的预读操作。
由于预读启动模块509只有在预测出当前读请求属于适合预读的流模式的情况下才触发针对当前读请求的预读操作,因而能够提高读请求的命中率、并避免阵地随机访问执行预读所造成的I/O资源浪费,进而有助于提高存储***的性能。
需要说明的是,上述匹配查询模块501、关联判断模块502、信息建立模块503、信息更新模块504、流查询模块505、流更新模块506、流判决模块507、流建立模块508可构成一个独立的流预测装置,该流预测装置并不仅限于用于预读的控制。
此外,在预读启动模块509触发针对当前读请求的预读操作之后,即能够针对属于流的当前读请求进行预读操作,但如果简单地按照固定不变的预读长度进行预读操作的话,有可能会由于预读长度过大而导致大量的预读数据并不是当前读请求所需要的数据,从而使预读数据被命中的概率不高,进而造成I/O资源的浪费、导致存储***性能下降。例如视频编辑业务会有不同的码流,IO特点也会不同,需要的预读数据量也会不一样。
因此,本实施例中的预读控制装置优选地还可增设用于计算预读长度、以及预读判决的功能模块。
具体说,用于计算预读长度的功能模块为长度计算模块510、用于预读判决的功能模块为预读执行模块511。
长度计算模块510,参照一定时期内的若干个流的预读长度的平均值L,确定针对当前读请求的预读操作所应当使用的预读长度;较佳地,长度计算模块510可以计算最近若干条流的流信息中的流长度的平均值L,并将计算得到的平均值L与一预设经验值P的商L/P作为预读操作所需的预读长度;这样,对应的流信息中的前一次预读结束地址J就更新为J+L/P。
预读执行模块511,判断当前读请求所需要的数据是否已经被之前的预读操作读取至缓存中,如果是,则允许按照预读长度执行针对当前读请求的预读操作,否则,取消针对当前读请求的预读操作;较佳地,预读执行模块511可判断对应的流信息中的前一次预读的结束地址与当前读请求的起始地址之差是否小于平均值L,如果是,则表示当前读请求所需要的数据并未被之前的预读操作全部读取至缓存中,否则,表示当前读请求所需要的数据已经被之前的预读操作全部读取至缓存中。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种流预测方法,其特征在于,该流预测方法包括如下步骤:
A、查询与当前读请求的最匹配的历史I/O信息;
B、判断当前读请求是否与所述最匹配的历史I/O信息相关联,如果是则执行步骤D,否则执行步骤C;
C、为当前读请求新建一个历史I/O信息并结束本流程;
D、根据当前读请求更新所述最匹配的历史I/O信息,然后执行步骤E;
E、判断更新后的所述最为匹配的历史I/O信息是否存在对应的流信息,如果是则确认当前读请求属于一个已存在的流、并执行步骤F,否则执行步骤G;
F、更新对应的流信息;
G、判断更新后的所述最为匹配的历史I/O信息是否满足流模式的条件,如果是则确认更新后的所述最为匹配的历史I/O信息已对应一个新的流、并执行步骤H,否则结束本流程;
H、为更新后的所述最为匹配的历史I/O信息创建新的流信息。
2.如权利要求1所述的流预测方法,其特征在于,所述历史I/O信息至少包括起始地址、结束地址、访问时间、访问次数、以及流信息ID;所述流信息至少包括流长度和最后访问时间;
在所述步骤A中:与当前读请求具有最接近的起始地址的历史I/O信息为最匹配的历史I/O信息;
在所述步骤B中:判断当前读请求与所述最匹配的历史I/O信息的起始地址之差、以及访问时间之差是否均位于对应的范围内,如果是则表示当前读请求与所述最匹配的历史I/O信息相关联、否则表示当前读请求与所述最匹配的历史I/O信息无关联;
在所述步骤C中:将当前读请求的起始地址、结束地址、访问时间分别作为新建的历史I/O信息中的起始地址、结束地址、访问时间;以及,将新建的历史I/O信息中的访问次数设置为1、流信息ID设为无效;
在所述步骤D中:将当前读请求的起始地址与更新前的所述最匹配的历史I/O信息的起始地址中最小的一个作为为更新后的所述最匹配的历史I/O信息的起始地址;将当前读请求的结束地址与更新前的所述最匹配的历史I/O信息的结束地址中最大的一个作为更新后的所述最匹配的历史I/O信息的结束地址;以及,将当前读请求的访问时间作为更新后的所述最匹配的历史I/O信息的访问时间、将更新后的所述最匹配的历史I/O信息的访问次数加1;
在所述步骤E中:判断所述最为匹配的历史I/O信息中的流信息ID是否有效,如果有效则表示所述最匹配的历史I/O信息存在对应的流信息,否则表示所述最匹配的历史I/O信息不存在对应的流信息;
在所述步骤F中:将对应的流信息中的流长度更新为所述最匹配的历史I/O信息的更新后的结束地址减去更新后的起始地址,将对应的流信息中的最后访问时间更新为当前读请求的访问时间;
在所述步骤G中:判断更新后的所述最匹配的历史I/O信息的访问次数是否大于预设的阈值,如果是,则表示更新后的所述最为匹配的历史I/O信息满足流模式的条件,否则表示更新后的所述最为匹配的历史I/O信息不满足流模式的条件。
3.一种基于流预测的预读控制方法,其特征在于,该预读控制方法包括如下步骤:
A、查询与当前读请求的最匹配的历史I/O信息;
B、判断当前读请求是否与所述最匹配的历史I/O信息相关联,如果是则执行步骤D,否则执行步骤C;
C、为当前读请求新建一个历史I/O信息并结束本流程;
D、根据当前读请求更新所述最匹配的历史I/O信息,然后执行步骤E;
E、判断更新后的所述最为匹配的历史I/O信息是否存在对应的流信息,如果是则确认当前读请求属于一个已存在的流、并执行步骤F,否则执行步骤G;
F、更新对应的流信息,然后执行步骤I;
G、判断更新后的所述最为匹配的历史I/O信息是否满足流模式的条件,如果是则确认更新后的所述最为匹配的历史I/O信息已对应一个新的流、并执行步骤H,否则结束本流程;
H、为更新后的所述最为匹配的历史I/O信息创建新的流信息、并设置更新后的最匹配的历史I/O信息的流信息ID为有效的对应值,然后执行步骤I;
I、触发针对当前读请求的预读操作。
4.如权利要求3所述的预读控制方法,其特征在于,所述历史I/O信息至少包括起始地址、结束地址、访问时间、访问次数、以及流信息ID;所述流信息至少包括流长度和最后访问时间;
在所述步骤A中:与当前读请求具有最接近的起始地址的历史I/O信息为最匹配的历史I/O信息;
在所述步骤B中:判断当前读请求与所述最匹配的历史I/O信息的起始地址之差、以及访问时间之差是否均位于对应的范围内,如果是则表示当前读请求与所述最匹配的历史I/O信息相关联、否则表示当前读请求与所述最匹配的历史I/O信息无关联;
在所述步骤C中:将当前读请求的起始地址、结束地址、访问时间分别作为新建的历史I/O信息中的起始地址、结束地址、访问时间;以及,将新建的历史I/O信息中的访问次数设置为1、流信息ID设为无效;
在所述步骤D中:将当前读请求的起始地址与更新前的所述最匹配的历史I/O信息的起始地址中最小的一个作为为更新后的所述最匹配的历史I/O信息的起始地址;将当前读请求的结束地址与更新前的所述最匹配的历史I/O信息的结束地址中最大的一个作为更新后的所述最匹配的历史I/O信息的结束地址;以及,将当前读请求的访问时间作为更新后的所述最匹配的历史I/O信息的访问时间、将更新后的所述最匹配的历史I/O信息的访问次数加1;
在所述步骤E中:判断所述最为匹配的历史I/O信息中的流信息ID是否有效,如果有效则表示所述最匹配的历史I/O信息存在对应的流信息,否则表示所述最匹配的历史I/O信息不存在对应的流信息;
在所述步骤F中:将对应的流信息中的流长度更新为所述最匹配的历史I/O信息的更新后的结束地址减去更新后的起始地址,将对应的流信息中的最后访问时间更新为当前读请求的访问时间;
在所述步骤G中:判断更新后的所述最匹配的历史I/O信息的访问次数是否大于预设的阈值,如果是,则表示更新后的所述最为匹配的历史I/O信息满足流模式的条件,否则表示更新后的所述最为匹配的历史I/O信息不满足流模式的条件。
5.如权利要求4所述的预读控制方法,其特征在于,所述流信息进一步包括前一次预读的结束地址;
在所述步骤I之后,该预读控制方法进一步包括:
J、计算最近若干条流的流信息中的流长度的平均值,并将计算得到的平均值与一预设经验值的商作为针对当前读请求的预读长度,然后计算出的预读长度更新对应的流信息中的前一次预读的结束地址;
K、判断对应的流信息中的前一次预读的结束地址与当前读请求的起始地址之差是否小于所述平均值,如果是,则按照所述预读长度执行针对当前读请求的预读操作,否则,取消已触发的针对当前读请求的预读操作。
6.一种流预测装置,其特征在于,该流预测装置包括:
匹配查询模块,查询与当前读请求的最匹配的历史I/O信息;
关联判断模块,判断当前读请求是否与所述最匹配的历史I/O信息相关联,如果是则触发信息更新模块,否则触发信息建立模块;
信息建立模块,为当前读请求新建一个历史I/O信息并结束处理;
信息更新模块,根据当前读请求更新所述最匹配的历史I/O信息,然后触发流查询模块;
流查询模块,判断更新后的所述最为匹配的历史I/O信息是否存在对应的流信息,如果是则确认当前读请求属于一个已存在的流、并触发流更新模块,否则触发流判决模块;
流更新模块,更新对应的流信息;
流判决模块,判断更新后的所述最为匹配的历史I/O信息是否满足流模式的条件,如果是则确认更新后的所述最为匹配的历史I/O信息已对应一个新的流、并触发流建立模块,否则结束处理;
流建立模块,为更新后的所述最为匹配的历史I/O信息创建新的流信息。
7.如权利要求6所述的流预测装置,其特征在于,所述历史I/O信息至少包括起始地址、结束地址、访问时间、访问次数、以及流信息ID;所述流信息至少包括流长度和最后访问时间;
匹配查询模块将与当前读请求具有最接近的起始地址的历史I/O信息作为最匹配的历史I/O信息;
关联判断模块判断当前读请求与所述最匹配的历史I/O信息的起始地址之差、以及访问时间之差是否均位于对应的范围内,如果是则表示当前读请求与所述最匹配的历史I/O信息相关联、否则表示当前读请求与所述最匹配的历史I/O信息无关联;
信息建立模块将当前读请求的起始地址、结束地址、访问时间分别作为新建的历史I/O信息中的起始地址、结束地址、访问时间;以及,将新建的历史I/O信息中的访问次数设置为1、流信息ID设为无效;
信息更新模块将当前读请求的起始地址与更新前的所述最匹配的历史I/O信息的起始地址中最小的一个作为为更新后的所述最匹配的历史I/O信息的起始地址;将当前读请求的结束地址与更新前的所述最匹配的历史I/O信息的结束地址中最大的一个作为更新后的所述最匹配的历史I/O信息的结束地址;以及,将当前读请求的访问时间作为更新后的所述最匹配的历史I/O信息的访问时间、将更新后的所述最匹配的历史I/O信息的访问次数加1;
流查询模块判断所述最为匹配的历史I/O信息中的流信息ID是否有效,如果有效则表示所述最匹配的历史I/O信息存在对应的流信息,否则表示所述最匹配的历史I/O信息不存在对应的流信息;
流更新模块将对应的流信息中的流长度更新为所述最匹配的历史I/O信息的更新后的结束地址减去更新后的起始地址,以及,将对应的流信息中的最后访问时间更新为当前读请求的访问时间;
流判决模块判断更新后的所述最匹配的历史I/O信息的访问次数是否大于预设的阈值,如果是,则表示更新后的所述最为匹配的历史I/O信息满足流模式的条件,否则表示更新后的所述最为匹配的历史I/O信息不满足流模式的条件。
8.一种预读控制装置,其特征在于,该预读控制装置包括:
匹配查询模块,查询与当前读请求的最匹配的历史I/O信息;
关联判断模块,判断当前读请求是否与所述最匹配的历史I/O信息相关联,如果是则触发信息更新模块,否则触发信息建立模块;
信息建立模块,为当前读请求新建一个历史I/O信息并结束处理;
信息更新模块,根据当前读请求更新所述最匹配的历史I/O信息,然后触发流查询模块;
流查询模块,判断更新后的所述最为匹配的历史I/O信息是否存在对应的流信息,如果是则确认当前读请求属于一个已存在的流、并触发流更新模块,否则触发流判决模块;
流更新模块,更新对应的流信息,并触发预读启动模块;
流判决模块,判断更新后的所述最为匹配的历史I/O信息是否满足流模式的条件,如果是则确认更新后的所述最为匹配的历史I/O信息已对应一个新的流、并触发流建立模块,否则结束处理;
流建立模块,为更新后的所述最为匹配的历史I/O信息创建新的流信息、并设置更新后的最匹配的历史I/O信息的流信息ID为有效的对应值,以及,触发预读启动模块;
预读启动模块,触发针对当前读请求的预读操作。
9.如权利要求8所述的预读控制装置,其特征在于,所述历史I/O信息至少包括起始地址、结束地址、访问时间、访问次数、以及流信息ID;所述流信息至少包括流长度和最后访问时间;
匹配查询模块将与当前读请求具有最接近的起始地址的历史I/O信息作为最匹配的历史I/O信息;
关联判断模块判断当前读请求与所述最匹配的历史I/O信息的起始地址之差、以及访问时间之差是否均位于对应的范围内,如果是则表示当前读请求与所述最匹配的历史I/O信息相关联、否则表示当前读请求与所述最匹配的历史I/O信息无关联;
信息建立模块将当前读请求的起始地址、结束地址、访问时间分别作为新建的历史I/O信息中的起始地址、结束地址、访问时间;以及,将新建的历史I/O信息中的访问次数设置为1、流信息ID设为无效;
信息更新模块将当前读请求的起始地址与更新前的所述最匹配的历史I/O信息的起始地址中最小的一个作为为更新后的所述最匹配的历史I/O信息的起始地址;将当前读请求的结束地址与更新前的所述最匹配的历史I/O信息的结束地址中最大的一个作为更新后的所述最匹配的历史I/O信息的结束地址;以及,将当前读请求的访问时间作为更新后的所述最匹配的历史I/O信息的访问时间、将更新后的所述最匹配的历史I/O信息的访问次数加1;
流查询模块判断所述最为匹配的历史I/O信息中的流信息ID是否有效,如果有效则表示所述最匹配的历史I/O信息存在对应的流信息,否则表示所述最匹配的历史I/O信息不存在对应的流信息;
流更新模块将对应的流信息中的流长度更新为所述最匹配的历史I/O信息的更新后的结束地址减去更新后的起始地址,以及,将对应的流信息中的最后访问时间更新为当前读请求的访问时间;
流判决模块判断更新后的所述最匹配的历史I/O信息的访问次数是否大于预设的阈值,如果是,则表示更新后的所述最为匹配的历史I/O信息满足流模式的条件,否则表示更新后的所述最为匹配的历史I/O信息不满足流模式的条件。
10.如权利要求9所述的预读控制装置,其特征在于,所述流信息进一步包括前一次预读的结束地址;
该预读控制装置预读控制进一步包括可被预读启动模块触发的如下模块:
长度计算模块,计算最近若干条流的流信息中的流长度的平均值,并将计算得到的平均值与一预设经验值的商作为预读操作所需的预读长度,然后计算出的预读长度更新对应的流信息中的前一次预读的结束地址;
预读执行模块,判断对应的流信息中的前一次预读的结束地址与当前读请求的起始地址之差是否小于所述平均值,如果是,则允许按照所述预读长度执行针对当前读请求的预读操作,否则,取消针对当前读请求的预读操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106225693A CN102073463B (zh) | 2010-12-28 | 2010-12-28 | 流预测方法和装置及预读控制方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106225693A CN102073463B (zh) | 2010-12-28 | 2010-12-28 | 流预测方法和装置及预读控制方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102073463A true CN102073463A (zh) | 2011-05-25 |
CN102073463B CN102073463B (zh) | 2012-08-22 |
Family
ID=44032016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106225693A Active CN102073463B (zh) | 2010-12-28 | 2010-12-28 | 流预测方法和装置及预读控制方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102073463B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508642A (zh) * | 2011-11-10 | 2012-06-20 | 华为技术有限公司 | 一种数据预取方法及装置 |
CN104134027A (zh) * | 2014-07-23 | 2014-11-05 | 华为技术有限公司 | 一种顺序流识别的方法以及装置 |
CN104156321A (zh) * | 2014-07-23 | 2014-11-19 | 华为技术有限公司 | 一种数据预取的方法以及装置 |
CN105487987A (zh) * | 2015-11-20 | 2016-04-13 | 深圳市迪菲特科技股份有限公司 | 一种处理并发顺序读io的方法及装置 |
CN106708750A (zh) * | 2016-12-22 | 2017-05-24 | 郑州云海信息技术有限公司 | 存储***的缓存预读方法及*** |
CN110389709A (zh) * | 2018-04-19 | 2019-10-29 | 北京忆恒创源科技有限公司 | 顺序流检测与数据预读 |
CN110580128A (zh) * | 2018-06-11 | 2019-12-17 | 北京忆恒创源科技有限公司 | 使用缓存反馈信息指导数据预读 |
CN111694504A (zh) * | 2019-03-15 | 2020-09-22 | 杭州宏杉科技股份有限公司 | 一种处理读请求的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994028485A1 (en) * | 1993-05-28 | 1994-12-08 | Rambus, Inc. | Cache system and method for prefetching of data |
CN1366633A (zh) * | 2000-03-31 | 2002-08-28 | 松下电器产业株式会社 | 盘式存储装置、数据预读方法以及记录媒体 |
US7313656B1 (en) * | 2004-12-27 | 2007-12-25 | Emc Corporation | Pre-fetch prediction method for disk drives |
CN101788887A (zh) * | 2010-02-05 | 2010-07-28 | 浪潮(北京)电子信息产业有限公司 | 磁盘阵列中一种基于数据库的i/o缓存流的***及方法 |
-
2010
- 2010-12-28 CN CN2010106225693A patent/CN102073463B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994028485A1 (en) * | 1993-05-28 | 1994-12-08 | Rambus, Inc. | Cache system and method for prefetching of data |
CN1366633A (zh) * | 2000-03-31 | 2002-08-28 | 松下电器产业株式会社 | 盘式存储装置、数据预读方法以及记录媒体 |
US7313656B1 (en) * | 2004-12-27 | 2007-12-25 | Emc Corporation | Pre-fetch prediction method for disk drives |
CN101788887A (zh) * | 2010-02-05 | 2010-07-28 | 浪潮(北京)电子信息产业有限公司 | 磁盘阵列中一种基于数据库的i/o缓存流的***及方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102508642A (zh) * | 2011-11-10 | 2012-06-20 | 华为技术有限公司 | 一种数据预取方法及装置 |
CN104134027A (zh) * | 2014-07-23 | 2014-11-05 | 华为技术有限公司 | 一种顺序流识别的方法以及装置 |
CN104156321A (zh) * | 2014-07-23 | 2014-11-19 | 华为技术有限公司 | 一种数据预取的方法以及装置 |
CN104156321B (zh) * | 2014-07-23 | 2017-06-09 | 华为技术有限公司 | 一种数据预取的方法以及装置 |
CN104134027B (zh) * | 2014-07-23 | 2017-10-10 | 华为技术有限公司 | 一种顺序流识别的方法以及装置 |
CN105487987A (zh) * | 2015-11-20 | 2016-04-13 | 深圳市迪菲特科技股份有限公司 | 一种处理并发顺序读io的方法及装置 |
CN105487987B (zh) * | 2015-11-20 | 2018-09-11 | 深圳市迪菲特科技股份有限公司 | 一种处理并发顺序读io的方法及装置 |
CN106708750A (zh) * | 2016-12-22 | 2017-05-24 | 郑州云海信息技术有限公司 | 存储***的缓存预读方法及*** |
CN106708750B (zh) * | 2016-12-22 | 2020-08-04 | 郑州云海信息技术有限公司 | 存储***的缓存预读方法及*** |
CN110389709A (zh) * | 2018-04-19 | 2019-10-29 | 北京忆恒创源科技有限公司 | 顺序流检测与数据预读 |
CN110580128A (zh) * | 2018-06-11 | 2019-12-17 | 北京忆恒创源科技有限公司 | 使用缓存反馈信息指导数据预读 |
CN111694504A (zh) * | 2019-03-15 | 2020-09-22 | 杭州宏杉科技股份有限公司 | 一种处理读请求的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102073463B (zh) | 2012-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102073463B (zh) | 流预测方法和装置及预读控制方法和装置 | |
CN101595461B (zh) | 延长闪存驱动器使用寿命 | |
KR101378270B1 (ko) | Sas 확장기를 포함하는 저장 시스템에서 데이터 판독을 가능하게 하기 위한 방법, 시스템 및 sas 확장기 디바이스 | |
US9110669B2 (en) | Power management of a storage device including multiple processing cores | |
US9128825B1 (en) | Optimizing allocation of flash memory to file groups | |
CN101288055B (zh) | 数据处理控制方法,信息处理设备和数据处理控制*** | |
KR101434887B1 (ko) | 네트워크 스위치를 이용한 캐시 시스템 및 캐시 서비스 제공 방법 | |
CN104808952A (zh) | 数据缓存方法及装置 | |
EP2793175A2 (en) | Optimization utilizing machine learning | |
CN104040516A (zh) | 用于数据去重的方法、设备和*** | |
CN105493053A (zh) | 多核处理器中的高速缓存划分 | |
CN102609466B (zh) | 一种共享内存的控制方法及*** | |
US20150302903A1 (en) | System and method for deep coalescing memory management in a portable computing device | |
CN103270470A (zh) | 多核***能耗优化 | |
CN104571954A (zh) | 一种数据存储方法及装置 | |
CN102841915B (zh) | 文件管理装置及其控制方法 | |
CN105138473A (zh) | 管理高速缓冲存储器的***和方法 | |
CN102566978A (zh) | 存储器加速器缓冲器置换方法及*** | |
JP2005115600A (ja) | 情報処理装置及び方法 | |
CN103885807A (zh) | 设备程序更新方法 | |
CN103294609A (zh) | 信息处理装置和存储器管理方法 | |
CN103713853A (zh) | 用于数据管理的方法和*** | |
US8554798B2 (en) | Asynchronous state engine with plug-ins for flexible application development | |
US6968437B2 (en) | Read priority caching system and method | |
US8234513B2 (en) | Power management method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room 505, Taixing Building, 11 Garden East Road, Haidian District, Beijing, 100191 Co-patentee after: Shenzhen Innovation Software Technology Co., Ltd. Patentee after: Innovation Technology Co., Ltd. Address before: Room 0801-0810, 51 College Road, Haidian District, Beijing, 100191 Co-patentee before: Chuangxinke Software Technology (Shenzhen) Co., Ltd. Patentee before: Innovation and Technology Storage Technology Co., Ltd. |
|
CP03 | Change of name, title or address |