CN105302743A - 一种在高速缓存中预读的方法和装置 - Google Patents
一种在高速缓存中预读的方法和装置 Download PDFInfo
- Publication number
- CN105302743A CN105302743A CN201510655737.1A CN201510655737A CN105302743A CN 105302743 A CN105302743 A CN 105302743A CN 201510655737 A CN201510655737 A CN 201510655737A CN 105302743 A CN105302743 A CN 105302743A
- Authority
- CN
- China
- Prior art keywords
- stream
- flow
- read
- cache block
- order
- 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.)
- Pending
Links
Landscapes
- Record Information Processing For Printing (AREA)
Abstract
一种在高速缓存中预读的方法,所述方法包括:高速缓存CACHE接收到的第一IO流可以与已经存在的顺序IO流第二IO流形成连续的顺序IO流第三IO流,则第一IO流加入第二IO流,然后按照第三IO流的长度和CACHE块的剩余容量顺序预读;第一IO流与第二IO流无法形成连续的顺序IO流,确定第一IO流与第二IO流的规律后,第一IO流加入第二IO流形成第四IO流,然后按照所述规律和CACHE块的剩余容量依序预读。还公开一种在高速缓存中预读的装置。应用本发明实施例后,能够在流媒体应用中实现预读,进而提高预读的效率。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种在高速缓存中预读的方法和装置。
背景技术
预读是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在高速缓存(CACHE)中,这样下一次读请求到来时直接从CACHE读取即可。当然,这个细节对应用程序透明,运行应用程序可能唯一感觉就是下次读取的速度会更快。
目前CACHE预读一般是基于逻辑(LV)卷的,当LV卷上的IO流是顺序的时候,才会进行预读,这样前端业务IO指令下来时,就不需要去访问磁盘,而是直接从CACHE获取数据返回,这样性能会有很大的提高。
但在流媒体的应用,同一个LV卷里,同时读写多个文件,进而导致整个LV卷有多个顺序的IO流。由于多个顺序的IO流组合后得到的IO流不是顺序的,则无法预读,而需要从磁盘读取数据,降低性能。
另外,考虑到在流媒体的应用中,使用快放等非顺序播放操作,下发的IO流是有规律的,并非常规的顺序IO流,因而不能进行预读。
发明内容
本发明实施例提出一种在高速缓存中预读的方法,能够在流媒体应用中实现预读,进而提高预读的效率。
本发明实施例还提出一种在高速缓存中预读的装置,能够在流媒体应用中实现预读,进而提高预读的效率。
本发明实施例的技术方案如下:
一种在高速缓存中预读的方法,所述方法包括:
高速缓存CACHE接收到的第一IO流可以与已经存在的顺序IO流第二IO流形成连续的顺序IO流第三IO流,则第一IO流加入第二IO流,然后按照第三IO流的长度和CACHE块的剩余容量顺序预读;
第一IO流与第二IO流无法形成连续的顺序IO流,确定第一IO流与第二IO流的规律后,第一IO流加入第二IO流形成第四IO流,然后按照所述规律和CACHE块的剩余容量依序预读。
所述按照第三IO流的长度和CACHE块的剩余容量顺序预读包括:
按照第三IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目N;
在第三IO流后顺序预读N个IO流。
所述按照所述规律和CACHE块的剩余容量依序预读包括:
按照所述规律确定与第四IO流顺序的IO流,依照CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目M;
在第四IO流后依序预读M个IO流。
所述方法进一步包括:
第一IO流已经存在于第二IO流中,则按照第二IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目K;
在第二IO流后顺序读取K个IO流。
所述方法进一步包括:
第一IO流与第二IO流无法形成连续的顺序IO流,且无法确定第一IO流与第二IO流之间的规律,创建新的顺序IO流第五IO流,第一IO流加入第五IO流;
按照第五IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目L;
在第五IO流后顺序读取L个IO流。
一种在高速缓存中预读的装置,所述装置包括:
判断模块,用于判断高速缓存CACHE接收到的第一IO流可以与已经存在的顺序IO流第二IO流形成连续的顺序IO流第三IO流;第一IO流与第二IO流无法形成连续的顺序IO流,确定第一IO流与第二IO流的规律;
控制模块,第一IO流可以与第二IO流形成第三IO流时,将第一IO流加入第二IO流,然后按照第三IO流的长度和CACHE块的剩余容量顺序预读;确定第一IO流与第二IO流的规律后,第一IO流加入第二IO流形成第四IO流,然后按照所述规律和CACHE块的剩余容量依序预读。
所述控制模块进一步用于,按照第三IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目N;在第三IO流后顺序预读N个IO流。
所述控制模块进一步用于,按照所述规律确定与第四IO流顺序的IO流,依照CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目M;在第四IO流后依序预读M个IO流。
所述判断模块进一步用于,判断第一IO流已经存在于第二IO流中;
所述控制模块进一步用于,第一IO流已经存在于第二IO流时,按照第二IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目K;在第二IO流后顺序读取K个IO流。
所述判断模块进一步用于,第一IO流与第二IO流无法形成连续的顺序IO流,且无法确定第一IO流与第二IO流之间的规律,创建新的顺序IO流第五IO流,第一IO流加入第五IO流;
所述控制模块进一步用于,按照第五IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目L;在第五IO流后顺序读取L个IO流。
从上述技术方案中可以看出,在本发明实施例中CACHE接收到的第一IO流可以与已经存在的顺序IO流第二IO流形成连续的顺序IO流第三IO流,则第一IO流加入第二IO流,然后按照第三IO流的长度和CACHE块的剩余容量顺序预读;第一IO流与第二IO流无法形成连续的顺序IO流,确定第一IO流与第二IO流的规律后,第一IO流加入第二IO流形成第四IO流,然后按照所述规律和CACHE块的剩余容量依序预读。这样,无论第一IO流与第二IO流是否可以形成顺序IO流,均可以在CACHE块中实现预读,进而能够在流媒体应用中实现预读,提高了预读的效率。
附图说明
图1为在高速缓存中预读的方法流程示意图;
图2为高速缓存中预读的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。
在本发明实施例中,第一IO流与第二IO流连续可以凑成连续的IO流,然后根据CACHE块的剩余容量顺序预读;第一IO流与第二IO流不连续,但其之间有规律,第一IO流与第二IO流形成第四IO流,然后根据CACHE块的剩余容量依序预读。在CACHE中将多个IO流尽量凑成多个顺序的IO流,这样能够在流媒体应用中实现预读,以提高预读的效率。
参见附图1为在高速缓存中预读的方法流程示意图,具体包括以下步骤:
101、判断第一IO流是否已存在于第二IO流中。
CACHE接收到一个新IO流,称之为第一IO流。首先需要判断第一IO流是否已存在于第二IO流中,若第一IO流存在于第二IO流中,执行步骤102;如果第一IO流未存在于第二IO流中,执行步骤103。
102、第一IO流加入第二IO流中,预读IO流。
第一IO流存在于第二IO流中,则说明第二IO流的长度大于第一IO流的长度。首先,确定CACHE块的剩余容量,依据第二IO流的长度可以判断在CACHE块的剩余资源中可以存储的IO流数目K。在第二IO流后按照顺序读取K个IO流,以供预读。
103、判断第一IO流与第二IO流形成连续的顺序IO。
第一IO流与第二IO流可以形成连续的顺序IO流,则执行步骤104;第一IO流与第二IO流不能形成连续的顺序IO流,则执行步骤105。
104、第一IO流加入第二IO流,预读IO流。
第一IO流与第二IO流可以形成连续的顺序IO流,则说明第一IO流与第二IO流是可以顺序连接的。第一IO流与第二IO流形成连续的顺序IO流即第三IO流,显然第三IO流的长度大于第一IO流的长度,也大于第二IO流的长度。
首先,确定CACHE块的剩余容量,依据第三IO流的长度可以判断在CACHE块的剩余资源中可以存储的IO流数目N。在第三IO流后按照顺序读取N个IO流,以供预读。
105、判断第一IO流与第二IO流之间有规律。
第一IO流与第二IO流之间有规律,则执行步骤106;第一IO流与第二IO流之间没有任何规律,则执行步骤107。
106、第一IO流加入第二IO流,预读IO流。
第一IO流与第二IO流之间有规律,是指两个IO流之间存在内在联系。例如,第一IO流为某整体IO流的一帧,三帧,五帧,七帧,第二IO流为十一帧,十三帧,十五帧,十七帧。可见,第一IO流与第二IO流有内在的联系。依据现有技术就可以确定第一IO流与第二IO流是否有规律。将第一IO流加入第二IO流形成第四IO流。
首先,确定CACHE块的剩余容量,依据第四IO流的长度可以判断在CACHE块的剩余资源中可以存储的IO流数目M。在第四IO流后按照顺序读取M个IO流,以供预读。
107、创建新的顺序IO流,预读IO流。
第一IO流与第二IO流无法形成连续的顺序IO流,且无法确定第一IO流与第二IO流之间的规律,那么创建新的顺序IO流第五IO流,第一IO流加入第五IO流。
首先,确定CACHE块的剩余容量,依据第五IO流的长度可以判断在CACHE块的剩余资源中可以存储的IO流数目L。在第五IO流后按照顺序读取L个IO流,以供预读。
参见附图2为高速缓存中预读的装置结构示意图,具体包括判断模块201和控制模块202。
判断模块201,用于判断CACHE接收到的第一IO流可以与已经存在的顺序IO流第二IO流形成连续的顺序IO流第三IO流;
控制模块202,第一IO流可以与第二IO流形成第三IO流时,将第一IO流加入第二IO流,然后按照第三IO流的长度和CACHE块的剩余容量顺序预读。即按照第三IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目N;在第三IO流后顺序预读N个IO流。
判断模块201,第一IO流与第二IO流无法形成连续的顺序IO流,确定第一IO流与第二IO流的规律;
控制模块202,确定第一IO流与第二IO流的规律后,第一IO流加入第二IO流形成第四IO流,然后按照所述规律和CACHE块的剩余容量依序预读。即按照所述规律确定与第四IO流顺序的IO流,依照CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目M;在第四IO流后依序预读M个IO流。
判断模块201,判断第一IO流已经存在于第二IO流中;
控制模块202,第一IO流已经存在于第二IO流时,按照第二IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目K;在第二IO流后顺序读取K个IO流。
判断模块201,第一IO流与第二IO流无法形成连续的顺序IO流,且无法确定第一IO流与第二IO流之间的规律,创建新的顺序IO流第五IO流,第一IO流加入第五IO流;
控制模块202,按照第五IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目L;在第五IO流后顺序读取L个IO流。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种在高速缓存中预读的方法,其特征在于,所述方法包括:
高速缓存CACHE接收到的第一IO流可以与已经存在的顺序IO流第二IO流形成连续的顺序IO流第三IO流,则第一IO流加入第二IO流,然后按照第三IO流的长度和CACHE块的剩余容量顺序预读;
第一IO流与第二IO流无法形成连续的顺序IO流,确定第一IO流与第二IO流的规律后,第一IO流加入第二IO流形成第四IO流,然后按照所述规律和CACHE块的剩余容量依序预读。
2.根据权利要求1所述在高速缓存中预读的方法,其特征在于,所述按照第三IO流的长度和CACHE块的剩余容量顺序预读包括:
按照第三IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目N;
在第三IO流后顺序预读N个IO流。
3.根据权利要求1所述在高速缓存中预读的方法,其特征在于,所述按照所述规律和CACHE块的剩余容量依序预读包括:
按照所述规律确定与第四IO流顺序的IO流,依照CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目M;
在第四IO流后依序预读M个IO流。
4.根据权利要求1所述在高速缓存中预读的方法,其特征在于,所述方法进一步包括:
第一IO流已经存在于第二IO流中,则按照第二IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目K;
在第二IO流后顺序读取K个IO流。
5.根据权利要求1所述在高速缓存中预读的方法,其特征在于,所述方法进一步包括:
第一IO流与第二IO流无法形成连续的顺序IO流,且无法确定第一IO流与第二IO流之间的规律,创建新的顺序IO流第五IO流,第一IO流加入第五IO流;
按照第五IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目L;
在第五IO流后顺序读取L个IO流。
6.一种在高速缓存中预读的装置,其特征在于,所述装置包括:
判断模块,用于判断高速缓存CACHE接收到的第一IO流可以与已经存在的顺序IO流第二IO流形成连续的顺序IO流第三IO流;第一IO流与第二IO流无法形成连续的顺序IO流,确定第一IO流与第二IO流的规律;
控制模块,第一IO流可以与第二IO流形成第三IO流时,将第一IO流加入第二IO流,然后按照第三IO流的长度和CACHE块的剩余容量顺序预读;确定第一IO流与第二IO流的规律后,第一IO流加入第二IO流形成第四IO流,然后按照所述规律和CACHE块的剩余容量依序预读。
7.根据权利要求6所述在高速缓存中预读的装置,其特征在于,所述控制模块进一步用于,按照第三IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目N;在第三IO流后顺序预读N个IO流。
8.根据权利要求6所述在高速缓存中预读的装置,其特征在于,所述控制模块进一步用于,按照所述规律确定与第四IO流顺序的IO流,依照CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目M;在第四IO流后依序预读M个IO流。
9.根据权利要求6所述在高速缓存中预读的装置,其特征在于,
所述判断模块进一步用于,判断第一IO流已经存在于第二IO流中;
所述控制模块进一步用于,第一IO流已经存在于第二IO流时,按照第二IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目K;在第二IO流后顺序读取K个IO流。
10.根据权利要求6所述在高速缓存中预读的装置,其特征在于,
所述判断模块进一步用于,第一IO流与第二IO流无法形成连续的顺序IO流,且无法确定第一IO流与第二IO流之间的规律,创建新的顺序IO流第五IO流,第一IO流加入第五IO流;
所述控制模块进一步用于,按照第五IO流的长度和CACHE块的剩余容量确定在CACHE块中可以预读的IO流数目L;在第五IO流后顺序读取L个IO流。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510655737.1A CN105302743A (zh) | 2015-10-12 | 2015-10-12 | 一种在高速缓存中预读的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510655737.1A CN105302743A (zh) | 2015-10-12 | 2015-10-12 | 一种在高速缓存中预读的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105302743A true CN105302743A (zh) | 2016-02-03 |
Family
ID=55200029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510655737.1A Pending CN105302743A (zh) | 2015-10-12 | 2015-10-12 | 一种在高速缓存中预读的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105302743A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294211A (zh) * | 2016-08-08 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种多路顺序流的检测方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050289236A1 (en) * | 2002-08-06 | 2005-12-29 | Richard Hull | Method and server for establishing coordinated consumption of a streamed media object by multiple devices |
WO2012015862A2 (en) * | 2010-07-30 | 2012-02-02 | Nasuni Corporation | Versioned file system with pruning |
CN102638402A (zh) * | 2012-03-28 | 2012-08-15 | 中兴通讯股份有限公司 | 流媒体双缓存技术中填充数据的方法及装置 |
CN103577158A (zh) * | 2012-07-18 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 数据处理方法与装置 |
CN103677651A (zh) * | 2012-09-14 | 2014-03-26 | 珠海扬智电子科技有限公司 | 数字视频转换器与视频串流的读写方法 |
-
2015
- 2015-10-12 CN CN201510655737.1A patent/CN105302743A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050289236A1 (en) * | 2002-08-06 | 2005-12-29 | Richard Hull | Method and server for establishing coordinated consumption of a streamed media object by multiple devices |
WO2012015862A2 (en) * | 2010-07-30 | 2012-02-02 | Nasuni Corporation | Versioned file system with pruning |
CN102638402A (zh) * | 2012-03-28 | 2012-08-15 | 中兴通讯股份有限公司 | 流媒体双缓存技术中填充数据的方法及装置 |
CN103577158A (zh) * | 2012-07-18 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 数据处理方法与装置 |
CN103677651A (zh) * | 2012-09-14 | 2014-03-26 | 珠海扬智电子科技有限公司 | 数字视频转换器与视频串流的读写方法 |
Non-Patent Citations (3)
Title |
---|
吴峰光 等: "一种支持并发访问流的文件预取算法", 《软件学报》 * |
吴峰光: "Linux内核中的预取算法", 《中国博士学位论文全文数据库(信息科技辑)》 * |
张冬: "《大话存储 存储系统底层架构原理极限剖析 终极版》", 31 January 2015, 清华大学出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294211A (zh) * | 2016-08-08 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种多路顺序流的检测方法及装置 |
CN106294211B (zh) * | 2016-08-08 | 2019-05-28 | 浪潮(北京)电子信息产业有限公司 | 一种多路顺序流的检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103348690B (zh) | 一种视频处理的方法及装置 | |
CN104298680B (zh) | 数据统计方法及数据统计装置 | |
CN104657366B (zh) | 海量日志写入数据库的方法、装置和日志容灾系统 | |
CN104036025A (zh) | 一种基于分布式的海量日志采集系统 | |
CN108848108A (zh) | 基于移动互联网+的创新项目pdca过程管理平台 | |
CN109379305B (zh) | 一种数据下发方法、装置、服务器及存储介质 | |
CN103714160B (zh) | 一种网络游戏中敏感词过滤方法及系统 | |
CN102298508A (zh) | 基于流的固态硬盘预读取的方法及装置 | |
CN102074221B (zh) | 一种字符显示方法及装置 | |
CN103177080A (zh) | 文件预读的方法和装置 | |
CN105874774B (zh) | 用于在帧的处理过程中保持计数表的计数表保持装置以及相关的保持方法 | |
CN106681659A (zh) | 数据压缩的方法及装置 | |
CN113127382A (zh) | 用于追加写的数据读取方法、装置、设备和介质 | |
CN114466227B (zh) | 一种视频分析方法、装置、电子设备及存储介质 | |
CN104281545B (zh) | 一种数据读取方法及设备 | |
CN105302743A (zh) | 一种在高速缓存中预读的方法和装置 | |
CN102780620B (zh) | 一种网络处理器和报文处理方法 | |
CN103581051A (zh) | 一种文件缓存方法、装置和系统 | |
CN107707621A (zh) | 一种实现智能缓存的方法及装置 | |
CN107480189A (zh) | 一种多维度实时分析系统及方法 | |
US20150312369A1 (en) | Checkpoints for media buffering | |
CN102857535B (zh) | 一种计算机处理单元、计算机网关、交互式系统 | |
CN107870921A (zh) | 一种日志数据处理方法及装置 | |
CN105335296A (zh) | 一种数据处理方法、装置及系统 | |
CN104994391B (zh) | 一种高效的VP9熵解码prob数据获取方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160203 |