一种基于IO场景识别的读加速方法、装置及电子设备与流程

文档序号:16895945发布日期:2019-02-15 23:38阅读:208来源:国知局
一种基于IO场景识别的读加速方法、装置及电子设备与流程

本申请涉及云计算技术领域,更具体地,涉及一种基于io场景识别的读加速方法、装置及电子设备。



背景技术:

在云计算环境下,采用分布式存储系统读写数据时,通常以数据块为单位,数据块从kb到mb不等。一个文件或大块数据写入到分布式存储系统中,通常要对数据块进行再分块,并随机分布到各个服务器的磁盘中。由于普通机械磁盘读写速度通常比较慢,特别是随机读,如果数据块在kb级别,每秒钟也就几mb。



技术实现要素:

鉴于上述问题,本申请提出了一种基于io场景识别的读加速方法、装置及电子设备,已解决上述技术问题。

本申请实施例提供了一种基于io场景识别的读加速方法,应用于分布式存储系统,所述方法包括:接收io读请求;将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库;启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存;响应所述io读请求,对预读的内存缓存进行读取,返回所述io读请求对应的数据。

本申请实施例还提供了一种基于io场景识别的读加速装置,所述装置包括:接收模块、处理模块、预读模块以及响应模块,其中,所述接收模块用于接收io读请求;所述处理模块用于将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库;所述预读模块用于启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存;所述相应模块用于响应所述io读请求,对预读的内存缓存进行读取,返回所述io读请求对应的数据。

本申请实施例还提供了一种基于io场景识别的读加速电子设备,所述电子设备包括存储器以及处理器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时所述处理器执行上述第一方面提供的基于io场景识别的读加速方法。

相对于现有技术,本申请提供的基于io场景识别的读加速方法、装置及电子设备,通过接收io读请求,将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据,从而实现了io读加速。

本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本申请第一实施例提出的基于io场景识别的读加速方法流程图。

图2示出了本申请第二实施例提出的基于io场景识别的读加速方法流程图。

图3示出了本申请第三实施例提出的基于io场景识别的读加速方法流程图。

图4示出了本申请第四实施例提出的基于io场景识别的读加速方法流程图。

图5示出了本申请第五实施例提出的基于io场景识别的读加速方法流程图。

图6示出了本申请第六实施例提出的基于io场景识别的读加速方法流程图。

图7示出了本申请第七实施例提出的基于io场景识别的读加速方法流程图。

图8示出了本申请第八实施例提出的基于io场景识别的读加速方法流程图。

图9示出了本申请第九实施例提出的基于io场景识别的读加速方法流程图。

图10示出了本申请第十实施例提出的基于io场景识别的读加速方法流程图。

图11示出了本申请第十一实施例提出的基于io场景识别的读加速方法流程图。

图12示出了本申请第十二实施例提出的基于io场景识别的读加速方法流程图。

图13示出了本申请第十三实施例提供的基于io场景识别的读加速装置的一种结构框图。

图14示出了本申请实施例的用于执行根据本申请实施例的基于io场景识别的读加速方法的电子设备的框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

目前,采用分布式存储系统读写数据时,当应用层读写一个文件,通常会发起数十万个随机io读请求到磁盘,读写一个上gb级数据,速度会相当的慢。发明人发现,在分布式系统中,(1)无论是随机io读操作还是顺序io读操作,读的速度都比较慢;(2)简单的预读,会读更多的数据,带来更多的网络、磁盘读写性能消耗;(3)对于每次大量有规律的非连续的随机读写,比如启动系统和应用,遍历文件系统等速度会很慢。因此,发明人提出了本发明实施例中的基于io场景识别的读加速方法。下面将结合附图具体描述本申请中的各实施例。

第一实施例

请参阅图1,图1示出了本申请第一实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图1所示的流程进行详细的阐述,上述的基于io场景识别的读加速方法具体地可以包括以下步骤:

步骤s110:接收io读请求。

当存储底层收到上层io读请求时,表明上层出现io读需求,所述上层可以是中间层、和/或应用层。

步骤s120:将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

所述io场景分组集合是io历史数据库中的场景分组集合,且具备连续性分析特征。将所述io读请求的场景与io场景分组集合进行相似度匹配,即将所述io读请求的场景与io历史数据库中的场景分组集合进行相似度匹配。

相似度匹配即比较所述io读请求的场景与io历史数据库中的场景分组集合的相似度,找出io历史数据库中与所述io读请求的场景相似度最接近的场景分组集合中的分组库。相似度越接近表明所述io读请求的场景特征与历史数据库中的io场景分组集合的特征越接近,即所述io场景分组集合与所述io读请求的场景相似度是匹配的。

确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库,即确定与所述io读请求的场景特征最接近的包含在io场景分组集合中的io场景分组库对应的io场景分组特征库,滤除与所述io读请求的场景相似度不匹配的io场景分组库对应的io场景分组特征库。

步骤s130:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

在步骤s120中确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库之后,启动预读场景,将与所述io读请求的场景相似度相匹配的包含在io历史数据库中的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存中。所述io读请求对应的磁盘数据即包含所述io读请求的磁盘数据。

步骤s140:响应所述io读请求,对预读的内存缓存进行读取,返回所述io读请求对应的数据。

存储底层响应所述io读请求,对预读的内存缓存进行读取,即对内存缓存中与所述io读请求的场景相似度匹配的包含在io场景分组集合中的io场景分组库对应的io分组场景特征库和io读请求对应的磁盘数据进行读取,并返回所读取的io场景分组特征库和包含io读请求的磁盘数据。

第二实施例

请参阅图2,图2示出了本申请第二实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图2所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s210:接收io读请求。

步骤s210的具体过程可以参照第一实施例中的步骤s110,这里不再赘述。

步骤s220:初始化时间窗口t1。

当存储底层收到上层io读请求,初始化时间窗口t1,所述初始化时间窗口是一个经验值。

步骤s230:统计所述时间窗口t1内所述io读请求的场景特征。

统计所述时间窗口t1内所述io读请求的场景特征,所述场景特征是以读偏移为基础对记录集合进行不连续判断得到的特征,所述场景特征包括目标文件id,时间,读偏移,数据块指纹,和/或数据块位置。

步骤s240:将所述io读请求的场景特征与io场景分组集合中的io场景分组库进行匹配。

将所述io读请求的场景特征与io场景分组集合中的io场景分组库进行的匹配是相似度匹配。

步骤s250:获取与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s240的相似度匹配之后,获取与所述io读请求的场景相似度匹配的io场景分组库对应的io场景分组特征库。

步骤s260:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s270:响应所述io读请求,对预读的内存缓存进行读取,返回所述io读请求对应的数据。

步骤s260至步骤s270的具体过程可以参照第一实施例中的步骤s130至s140,这里不再赘述。

本申请第二实施例提供的基于io场景识别的读加速方法,通过统计时间窗口t1内所述io读请求的场景特征,并将所述io读请求的场景特征与io场景分组集合中的io场景分组库与进行匹配,获取与所述io读请求的场景匹配的io场景分组库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第三实施例

请参阅图3,图3示出了本申请第三实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图3所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s310:接收io读请求。

步骤s310的具体过程可以参照第二实施例中的步骤s210,这里不再赘述。

步骤s320:时间窗口t1初始化为分析窗口t的n%。

所述分析窗口t为io历史数据库建立过程中统计历史io读请求的场景特征的时间,将所述时间窗口t1初始化为分析窗口t的n%,即t1=t×n%,n<100,n值越大,所述时间窗口t1就越大,则在所述时间窗口t1内的io读请求次数越多,io读请求的场景越多,则对应的io读请求的场景特征就越丰富,那么后续步骤s330中统计的所述io读请求的场景特征也就越准确。相应地,n值越大,在较大的时间窗口t1内较多的io读请求次数就会影响读加速的效果。

步骤s330:统计所述时间窗口t1内所述io读请求的场景特征。

步骤s340:将所述io读请求的场景特征与io场景分组集合中的io场景分组库进行匹配。

步骤s350:获取与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s360:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s370:响应所述io读请求,对预读的内存缓存进行读取,返回所述io读请求对应的数据。

步骤s340至步骤s370的具体过程可以参照第二实施例中的步骤s240至s270,这里不再赘述。

本申请第三实施例提供的基于io场景识别的读加速方法,接收io请求,时间窗口t1初始化为分析窗口t的n%,通过统计时间窗口t1内所述io读请求的场景特征,并将所述io读请求的场景特征与io场景分组集合中的io场景分组库与进行匹配,获取与所述io读请求的场景匹配的io场景分组库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第四实施例

请参阅图4,图4示出了本申请第四实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图4所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s410:接收io读请求。

步骤s420:初始化时间窗口t1。

步骤s430:统计所述时间窗口t1内所述io读请求的场景特征。

步骤s410至步骤s430的具体过程可以参照第二实施例中的步骤s210至步骤s230,这里不再赘述。

步骤s440:扫描所述io场景分组集合,将所述io读请求的场景特征与所述io场景分组集合中的io场景分组库进行相似度匹配。

扫描所述io场景分组集合,即扫描io历史数据库中的io场景分组集合,将步骤s430中所统计的所述时间窗口t1内所述io读请求的场景特征与所述io场景分组集合中的io场景分组库进行相似度匹配,即计算二者的相似度,比较二者的相似度。

步骤s450:确定与所述io读请求的场景特征匹配成功的io场景分组库对应的io场景分组特征库。

确定与所述io读请求的场景特征匹配成功的io场景分组库,即通过步骤s440中所计算的相似度,确定与所述io读请求的场景特征最接近的包含在io场景分组集合中的io场景分组库对应的io场景分组特征库。

步骤s460:获取与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s470:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s480:响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

步骤s460至步骤s470的具体过程可以参照第二实施例中的步骤s240至s270,这里不再赘述。

本申请第四实施例提供的基于io场景识别的读加速方法,接收io请求,初始化时间窗口t1,通过统计时间窗口t1内所述io读请求的场景特征,扫描所述io场景分组集合,将所述io读请求的场景特征与所述io场景分组集合中的io场景分组库进行相似度匹配,确定与所述io读请求的场景特征匹配成功的io场景分组库,获取与所述io读请求的场景匹配的io场景分组库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第五实施例

请参阅图5,图5示出了本申请第五实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图5所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s501:接收io读请求。

步骤s502:时间窗口t1初始化为分析窗口t的n%。

步骤s503:统计所述时间窗口t1内所述io读请求的场景特征。

步骤s501至步骤s503的具体过程可以参照第四实施例中的步骤s410至步骤s430,这里不再赘述。

步骤s504:设定次数tc,统计所述io场景分组集合的平均偏移值a0。

所述次数tc为经验值,设定所述次数tc,统计所述io场景分组集合的平均偏移值a0即计算所述io场景分组集合的平均偏移值。

步骤s505:以第一个io偏移为基础,在连续的所述次数tc内,获得所述io读请求在所述时间窗口t1内的偏移平均值a1,计算a1与所述平均偏移值a0相减的差,再除以所述平均偏移值a0的商值,比较所述商值与0的大小。

所述以第一个io偏移为基础,在连续的所述次数tc内,获得所述io读请求在所述时间窗口t1内的偏移平均值a1,计算a1与所述平均偏移值a0相减的差,再除以所述平均偏移值a0的商值的计算过程即相似度匹配的过程。

步骤s506:如果所述商值等于0,判定所述io读请求的场景与所述io场景分组库匹配成功,则将所述io请求的第一个io对应的偏移值作为索引参数。

如果所述商值等于0,表明所述io读请求的场景特征与所述io场景分组库的特征相似度接近,即判定所述io读请求的场景与所述io场景分组库匹配成功,则将所述io请求的第一个io对应的偏移值作为索引参数,由于所述索引参数是一个偏移值,因此,通过所述索引参数就能快速定位与所述io请求的场特征匹配的所述io场景分组库特征。

步骤s507:如果所述商值不等于0,继续在下一个连续的所述次数tc内计算,直到找不到匹配偏移。

如果所述商值不等于0,表明所述io读请求的场景特征与所述io场景分组库的特征相似度很低,即判定所述io读请求的场景与所述io场景分组库匹配不成功。则继续下一个连续的所述次数tc内的相似度计算,直到将所述io读请求遍历至找不到匹配偏移。

步骤s508:确定与所述io读请求的场景特征匹配成功的io场景分组库对应的io场景分组特征库。

步骤s509:获取与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s510:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s511:响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

步骤s508至步骤s511的具体过程可以参照第四实施例中的步骤s450至s480,这里不再赘述。

本申请第五实施例提供的基于io场景识别的读加速方法,接收io请求,时间窗口t1初始化为分析窗口t的n%,统计时间窗口t1内所述io读请求的场景特征,设定次数tc,统计所述io场景分组集合的平均偏移值a0,以第一个io偏移为基础,在连续的所述次数tc内,获得所述io读请求在所述时间窗口t1内的偏移平均值a1,计算a1与所述平均偏移值a0相减的差,再除以所述平均偏移值a0的商值,比较所述商值与0的大小,如果所述商值等于0,判定所述io读请求的场景与所述io场景分组库匹配成功,则将所述io请求的第一个io对应的偏移值作为索引参数,如果所述商值不等于0,继续在下一个连续的所述次数tc内计算,直到找不到匹配偏移,确定与所述io读请求的场景特征匹配成功的io场景分组库,获取与所述io读请求的场景匹配的io场景分组库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第六实施例

请参阅图6,图6示出了本申请第六实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图6所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s610:接收io读请求。

步骤s620:将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s610至步骤s620的具体过程可以参照第一实施例中的步骤s110至s120,这里不再赘述。

步骤s630:启动io场景预读。

将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库之后,启动io场景预读。

步骤s640:将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据保存到内存缓存。

定位与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库,并将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s650:设定时间k,当在所述设定时间k内对所述内存缓存无访问,释放所述内存缓存。

设定时间k,所述时间k是经验值,比如:可以设置k≤5分钟。当在所述设定时间k内对所述内存缓存无访问,表明目前没有io读请求的需求,释放所述内存缓存。

步骤s660:响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

步骤s660的具体过程可以参照第一实施例中的步骤s140,这里不再赘述。

本申请第六实施例提供的基于io场景识别的读加速方法,接收io请求,将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库,启动io场景预读,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求和所述io读请求对应的磁盘数据保存到内存缓存,设定时间k,当在所述设定时间k内对所述内存缓存无访问,释放所述内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第七实施例

请参阅图7,图7示出了本申请第七实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图7所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s710:接收io读请求。

步骤s720:将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s730:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s710至步骤s730的具体过程可以参照第一实施例中的步骤s110至s130,这里不再赘述。

步骤s740:访问包含与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据的内存缓存。

在启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存之后,访问包含与所述io读请求的场景匹配的io场景分组库的内存缓存。

步骤s750:如果所述访问的内存缓存中不存在与所述io读请求的场景匹配的io场景分组库,则继续向存储节点发起读取请求。

如果所述访问的内存缓存中不存在与所述io读请求的场景匹配的io场景分组库,说明io场景分组集合中的io场景分组库的io场景特征与所述io读请求的场景特征相似度低,也即相似度匹配不成功,不是所述io读请求要读的内容,因此不需要读取内存缓存中的数据,则继续向存储节点发起读取请求。

步骤s760:如果所述访问的内存缓存中存在与所述io读请求的场景匹配的io场景分组库,则返回所述io读请求对应的数据。

如果所述访问的内存缓存中存在与所述io读请求的场景匹配的io场景分组库,说明io场景分组集合中的io场景分组库的io场景特征与所述io读请求的场景特征相似度接近,也即特征相似度匹配成功,因此需要读取内存缓存中的数据,并返回所述io读请求对应的数据。

本申请第七实施例提供的基于io场景识别的读加速方法,接收io读请求,将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,访问包含与所述io读请求的场景匹配的io场景分组库应的io场景分组特征库和所述io读请求对应的磁盘数据的内存缓存,如果所述访问的内存缓存中不存在与所述io读请求的场景匹配的io场景分组库,则继续向存储节点发起读取请求,如果所述访问的内存缓存中存在与所述io读请求的场景匹配的io场景分组库,则返回所述io读请求对应的数据。

第八实施例

请参阅图8,图8示出了本申请第八实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图8所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s810:记录目标文件关联的io信息。

在接收io读请求之前,记录目标文件关联的io信息,即在接收io读请求之前,需要建立历史io数据库。所述记录目标文件关联的io信息包括目标文件id、时间、读偏移、数据块指纹和数据块位置。

步骤s820:分析得到所述目标文件的io读场景行为,得到io场景分组集合。

在记录目标文件关联的io信息之后,分析得到所述目标文件的io读场景行为,即以读偏移为基础对所述目标文件的记录集合进行不连续判断分析得到所述目标文件的io读场景行为。

步骤s830:接收io读请求。

步骤s840:将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库;

步骤s850:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存;

步骤s860:响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

步骤s830至步骤s860的具体过程可以参照第一实施例中的步骤s110至s140,这里不再赘述。

本申请第八实施例提供的基于io场景识别的读加速方法,记录目标文件关联的io信息,分析得到所述目标文件的io读场景行为,得到io场景分组集合,接收io读请求,将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第九实施例

请参阅图9,图9示出了本申请第九实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图9所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s901:记录目标文件关联的io信息。

步骤s901的具体过程可以参照第八实施例中的步骤s810,这里不再赘述。

步骤s902:通过时间切片方法确定所述分析窗口t;

所述分析窗口t,是场景化的io速度和访问时长经验值,t=t0+dt*n,依次递增n倍时间增量窗口,t0是初始分析时刻,dt是时间增量窗口。依据经验,dt可以初始化设置为1,n可以初始化为2,使得所有io涉及到的数据量大致在128mb以内。也可以根据存储配置的内存大小,调整初始化设置。

步骤s903:在所述分析窗口t,计算有效的io场景分组集合。

在所述分析窗口t,计算有效的io场景分组集合,即对所述io场景进行不连续分析,找到满足连续条件的io场景分组集合即有效性的io场景分组集合也即连续分析的结果,并保存所述满足连续条件的io场景分组集合。

步骤s904:将最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3...}。

步骤s903中得到的满足连续条件的分组集合即连续分析的结果,将所述最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3...}中。

步骤s905:继续从不连续的io访问时刻开始,进入下一个分析窗口,直到分析结束。

在步骤s903计算有效的io场景分组集合即判断io场景分组集合是否满足连续的条件,在具体分析过程中采用的是判断io场景是否不连续,将满足不连续条件的场景剔除,此时需要记录不连续的io访问时刻,那么,继续从所述不连续的io访问时刻开始,进入下一个分析窗口,继续对io场景是否有效进行判断,直到分析结束。

步骤s906:保留m个io场景分组特征库到所述io分组集合。

将在所述分析窗口内满足有效性的m个io场景分组特征库保留到io分组集合,形成历史io数据库。包含所述m个io场景分组特征库额io场景分组集合是具备连续性分析特征的io排序分组集合。

步骤s907:接收io读请求。

步骤s908:将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s909:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s910:响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

步骤s907至步骤s910的具体过程可以参照第八实施例中的步骤s830至s860,这里不再赘述。

本申请第九实施例提供的基于io场景识别的读加速方法,记录目标文件关联的io信息,通过时间切片方法确定所述分析窗口t,在所述分析窗口t,计算有效的io场景分组集合,将最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3...},继续从不连续的io访问时刻开始,进入下一个分析窗口,直到分析结束,保留m个io场景分组特征库到所述io分组集合,接收io读请求,将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第十实施例

请参阅图10,图10示出了本申请第十实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图10所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s1001:记录目标文件关联的io信息。

步骤s1002:通过时间切片方法确定所述分析窗口t。

步骤s1001至步骤s1002的具体过程可以参照第九实施例中的步骤s901至步骤s902,这里不再赘述。

步骤s1003:提取所述分析窗口t内的原始记录集合rr。

所述原始记录集合rr包含io访问的信息,因此需要提取所述分析窗口t内的原始记录集合rr。

步骤s1004:对于所述原始记录集合rr提取io访问特征。

对于所述原始记录集合rr提取io访问特征的过程即是对所述原始记录集合rr对应的访问记录sr进行不连续判断的过程。

步骤s1005:将最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3...};

步骤s1006:继续从不连续的io访问时刻开始,进入下一个分析窗口,直到分析结束。

步骤s1007:保留m个io特征场景分组库到所述io分组集合。

步骤s1008:接收io读请求。

步骤s1009:将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s1010:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s1011:响应所述io读请求,对预读的内存缓存进行读取,返回所述io读请求对应的数据。

步骤s1005至步骤s1011的具体过程可以参照第九实施例中的步骤s904至步骤s910,这里不再赘述。

本申请第十实施例提供的基于io场景识别的读加速方法,记录目标文件关联的io信息,通过时间切片方法确定所述分析窗口t,计算有效的io场景分组集合,提取所述分析窗口t内的原始记录集合rr,对于所述原始记录集合rr提取io访问特征,将最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3...},继续从不连续的io访问时刻开始,进入下一个分析窗口,直到分析结束,保留m个io特征场景分组库到所述io分组集合,接收io读请求,将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第十一实施例

请参阅图11,图11示出了本申请第十一实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图11所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s1101:记录目标文件关联的io信息。

步骤s1102:通过时间切片方法确定所述分析窗口t。

步骤s1103:提取所述分析窗口t内的原始记录集合rr。

步骤s1101至步骤s1103的具体过程可以参照第十实施例中的步骤s1001至步骤s1003,这里不再赘述。

步骤s1104:依据所述原始记录集合rr的io信息中的读偏移,降序排序所有的访问记录sr。

依据所述原始记录集合rr的io信息中的读偏移,降序排序所有的访问记录sr,降序排序的目的是便于不连续分析。

步骤s1105:当任何所述io访问不连续时,结束分析窗口分析,并记下此时不连续的io访问时刻。

所述io访问不连续条件是在1秒时间内,io访问次数低于100次;或者对于所述访问记录sr,计算相邻两次io访问的时间差,所述io时间差满足预设时间差。

当任何所述io访问不连续时,即任何所述io访问满足不连续条件时,结束分析窗口分析,记下此时不连续的io访问时刻。

步骤s1106:以固定偏移间隔cfl为单位分组读io偏移。

所述固定偏移间隔cfl是一个经验值,可以设置为1mb。io读请求通常以64kb为一个读取单位,1mb是64kb的整数倍,同时也是对应底层磁盘存储数据块文件大小,方便一次从磁盘中顺序读取。

步骤s1107:记录具有连续io偏移的分析结果到io场景分组集合sr{sr1,sr2,sr3,...}。

将满足连续分析的io场景分组记录到io场景分组集合sr{sr1,sr2,sr3,...}。

步骤s1108:计算每个io场景分组特征库对应的索引参数。

每个所述io场景分组特征库均有一个索引参数,所述索引参数是为了快速读取所述io场景分组特征库,所述io场景分组特征库即步骤s1107中的io场景分组集合。所述索引参数即在每次分析时间窗口对应的第一个io偏移。

步骤s1109:将最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3...}。

步骤s1110:继续从不连续的io访问时刻开始,进入下一个分析窗口,直到分析结束。

步骤s1111:保留m个io特征场景分组库到所述io分组集合。

步骤s1112:接收io读请求。

步骤s1113:将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s1114:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s1115:响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

步骤s1109至步骤s1115的具体过程可以参照第十实施例中的步骤s1005至步骤s1011,这里不再赘述。

本申请第十一实施例提供的基于io场景识别的读加速方法,记录目标文件关联的io信息,通过时间切片方法确定所述分析窗口t,提取所述分析窗口t内的原始记录集合rr,依据所述原始记录集合rr的io信息中的读偏移,降序排序所有的访问记录sr,当任何所述io访问不连续时,结束分析窗口分析,并记下此时不连续的io访问时刻,以固定偏移间隔cfl为单位分组读io偏移,记录具有连续io偏移的分析结果到io场景分组集合sr{sr1,sr2,sr3,...},计算每个所述io场景分组特征库对应的索引参数,将最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3...},继续从不连续的io访问时刻开始,进入下一个分析窗口,直到分析结束,保留m个io特征场景分组库到所述io分组集合,接收io读请求,将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第十二实施例

请参阅图12,图12示出了本申请第九实施例提供的基于io场景识别的读加速方法的流程示意图。下面将针对图12所示的流程进行详细的阐述,所述基于io场景识别的读加速方法具体可以包括以下步骤:

步骤s1201:记录目标文件关联的io信息。

步骤s1202:通过时间切片方法确定所述分析窗口t。

步骤s1203:在所述分析窗口t,计算有效的io场景分组集合。

步骤s1204:将最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3...}。

步骤s1201至步骤s1204的具体过程可以参照第九实施例中的步骤s901至s904,这里不再赘述。

步骤s1205:从所述不连续的io访问时刻开始,重新以n倍的递增窗口为分析窗口。

从步骤s1203中所记录的不连续的的io访问时刻开始,重新设定分析窗口,即重新以n倍的递增窗口设定分析窗口。

步骤s1206:在分析窗口,重复计算有效的io场景分组集合和将最近一次连续的分析结果记录到结果集合,直到分析结束。

在步骤s1205中所重新设定的分析窗口内,重复对分析窗口内的io分组集合计算有效的分组集合,并将满足连续分析的分组集合记录到结果集合,直到分析结束。

步骤s1207:保留m个io场景分组特征库到所述io分组集合。

步骤s1208:接收io读请求。

步骤s1209:将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库。

步骤s1210:启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存。

步骤s1211:响应所述io读请求,对预读的内存缓存进行读取,返回所述io读请求对应的数据。

步骤s1207至步骤s1211的具体过程可以参照第一实施例中的步骤s906至s910,这里不再赘述。

本申请第十二实施例提供的基于io场景识别的读加速方法,记录目标文件关联的io信息,通过时间切片方法确定所述分析窗口t,在所述分析窗口t,计算有效的io场景分组集合,将最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3...},从所述不连续的io访问时刻开始,重新以n倍的递增窗口为分析窗口,在分析窗口,重复计算有效的io场景分组集合和将最近一次连续的分析结果记录到结果集合fr{sr1,sr2,sr3,...},直到分析结束,保留m个io场景分组特征库到所述io分组集合,接收io读请求,将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回与所述io读请求对应的数据。

第十三实施例

本申请第十三实施例提供了一种基于io场景识别的读加速1300,请参见图13,该家居设备的管理装置1300包括:接收模块1310、处理模块1320、预读模块1330以及响应模块1340。其中,所述接收模块1310用于接收io读请求;

所述处理模块用于将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库;

所述预读模块用于启动io场景预读,将与所述io读请求的场景匹配的io场景分组库和所述io读请求对应的磁盘数据预读到内存缓存;

所述相应模块用于响应所述io读请求,对预读的内存缓存进行读取,返回所述io读请求对应的数据。

综上所述,相对于现有技术,本申请提供的基于io场景识别的读加速方法、装置、及电子设备,通过接收io读请求,将所述io读请求的场景与io场景分组集合进行相似度匹配,确定与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库,启动io场景预读,将与所述io读请求的场景匹配的io场景分组库对应的io场景分组特征库和所述io读请求对应的磁盘数据预读到内存缓存,响应所述io读请求,对预读的内存缓存进行读取,返回所述io读请求对应的数据,实现了io读加速。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。对于方法实施例中的所描述的任意的处理方式,在装置实施例中均可以通过相应的处理模块实现,装置实施例中不再一一赘述。

请参阅图14,基于上述的io场景识别的读加速的处理方法、装置,本申请实施例还提供一种终端设备100,所述终端设备100通常可以包括一个或多个(图中仅示出一个)处理器102、存储器104、rf(radiofrequency,射频)模块106、电源模块108。本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对所述终端100的结构造成限定。例如,所述终端设备100还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的对应。

本领域普通技术人员可以理解,相对于所述处理器102来说,所有其他的组件均属于外设,所述处理器102与这些外设之间通过多个外设接口110相耦合。所述外设接口110可基于以下标准实现:通用异步接收/发送装置(universalasynchronousreceiver/transmitter,uart)、通用输入/输出(generalpurposeinputoutput,gpio)、串行外设接口(serialperipheralinterface,spi)、内部集成电路(inter-integratedcircuit,i2c),但不并限于上述标准。在一些实例中,所述外设接口110可仅包括总线;在另一些实例中,所述外设接口110还可包括其他元件,如一个或者多个控制器。此外,这些控制器还可以从所述外设接口110中脱离出来,而集成于所述处理器102内或者相应的外设内。

所述存储器104可用于存储软件程序以及模块,所述处理器102通过运行存储在所述存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理。所述存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,所述存储器104可进一步包括相对于所述处理器102远程设置的存储器,这些远程存储器可以通过网络连接至所述终端设备100。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述rf模块106用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。所述rf模块106可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(sim)卡、存储器等等。所述rf模块106可与各种网络如互联网、企业内部网、无线网络进行通讯或者通过无线网络与其他设备进行通讯。上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。上述的无线网络可以使用各种通信标准、协议及技术,包括但并不限于全球移动通信系统(globalsystemformobilecommunication,gsm)、增强型移动通信技术(enhanceddatagsmenvironment,edge),宽带码分多址技术(widebandcodedivisionmultipleaccess,w-cdma),码分多址技术(codedivisionaccess,cdma)、时分多址技术(timedivisionmultipleaccess,tdma),无线保真技术(wireless,fidelity,wifi)(如美国电气和电子工程师协会标准ieee802.10a,ieee802.11b,ieee802.11g和/或ieee802.11n)、网络电话(voiceoverinternetprotocal,voip)、全球微波互联接入(worldwideinteroperabilityformicrowaveaccess,wi-max)、其他用于邮件、即时通讯及短消息的协议,以及任何其他合适的通讯协议,甚至可包括那些当前仍未被开发出来的协议。

所述电源模块108用于向所述处理器102以及其他各组件提供电力供应。具体地,所述电源模块108可包括电源管理系统、一个或多个电源(如电池或者交流电)、充电电路、电源失效检测电路、逆变器、电源状态指示灯以及其他任意与所述终端设备100内电力的生成、管理及分布相关的组件。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(移动终端),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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