一种内核客户端的预读方法、系统及计算机可读存储介质与流程

文档序号:26588972发布日期:2021-09-10 20:15阅读:124来源:国知局
一种内核客户端的预读方法、系统及计算机可读存储介质与流程

1.本发明涉及计算机技术领域,尤其涉及一种内核客户端的预读方法、系统及计算机可读存储介质。


背景技术:

2.随着社会信息爆炸时代的到来,信息数据量的日益增大,存储服务器的发展也越来越快,客户对存储读写性能要求也越来越高。在从存储读取文件时,使用内核客户端有很大的优势,得益于内核的缓存特性(pagecache和预读等)以及较短的io路径。内核预读是在读请求量读完后按照顺序多读一定量页面,以便下个读取请求时,可以直接在缓存中读取目标内容,但是某些客户场景下进行随机读时,内核客户端识别到随机读,预读会停止失效。


技术实现要素:

3.有鉴于此,本发明提出了一种内核客户端的预读方法、系统及计算机可读存储介质,改善了内核客户端的预读机制,实现了内核客户端的非顺序预读,提高了内核客户端读文件性能,并且能够适应多种形式的读取文件业务,提高了非顺序预读的缓存命中率。
4.基于上述目的,本发明实施例的一方面提供了一种内核客户端的预读方法,具体包括如下步骤:接收对文件的读取请求并判断对文件的读取是否连续;若是对文件的读取不连续,则生成所述文件inode的头结点,并构建嵌入所述头结点的链表,所述链表中的每个链表节点包括读取偏移量;判断所述文件是否包括文件的读取规则,若是所述文件包括所述文件的读取规则,则基于所述读取规则,获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中;基于所述链表执行预读。
5.在一些实施方式中,方法还包括:若是所述文件不包括所述文件的读取规则,则判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中。
6.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件进行重复读取,则获取第一次读取所述文件时的读取请求次数和对应的读取偏移量,在重复读取所述文件时,基于所述读取请求次数分别对所述对应的读取偏移量进行作差计算,若是计算结果的误差小于预设量的页面,则根据计算结果的误差
小于预设量的所述对应的读取偏移量生成所述map路线。
7.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件不进行重复读取,则获取所述文件的预设次数的读取请求和每次对应的读取偏移量,并基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线。
8.在一些实施方式中,基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线,包括:基于所述预设次数和所述对应的读请求偏移量得到读请求偏移量平均值;基于所述读请求偏移量平均值和文件大小,得到文件的未读部分的请求次数;根据所述文件的未读部分的请求次数和所述读请求偏移量平均值,生成map路线。
9.在一些实施方式中,接收对文件的读取请求并判断对文件的读取是否连续,还包括:记录读取所述文件的不连续次数。
10.在一些实施方式中,对文件的读取不连续,包括:所述不连续次数达到预设次数。
11.在一些实施方式中,所述链表中的每个链表节点还包括下一次要读取的读取偏移量;基于所述链表执行预读,包括:基于所述链表将所述文件下一次要读取的读取偏移量读取到页高速缓存中以对非顺序读的文件执行预读。
12.本发明实施例的另一方面,还提供了一种内核客户端的预读系统,系统包括:接收模块,所述接收模块配置为接收对文件的读取请求并判断对文件的读取是否连续;构建模块,所述构建模块配置为若是对文件的读取不连续,则生成所述文件inode的头结点,并构建嵌入所述头结点的链表,所述链表中的每个链表节点包括读取偏移量;生成模块,所述生成模块配置为判断所述文件是否包括文件的读取规则,若是所述文件包括所述文件的读取规则,则基于所述读取规则,获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中;执行模块,所述执行模块配置为基于所述链表执行预读。
13.在一些实施方式中,系统还包括第二生成模块,第二生成模块配置为:若是所述文件不包括所述文件的读取规则,则判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中。
14.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件进行重复读取,则获取第一次读取所述文件时的读取请求次数和对应的读取偏移量,在重复读取所述文件时,基于所述读取请求次数分别对所述对应的读取偏移量进行作差计算,若是计算结果的误差小于预设量的页面,则根据计算结果的误差
小于预设量的所述对应的读取偏移量生成所述map路线。
15.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件不进行重复读取,则获取所述文件的预设次数的读取请求和每次对应的读取偏移量,并基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线。
16.在一些实施方式中,基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线,包括:基于所述预设次数和所述对应的读请求偏移量得到读请求偏移量平均值;基于所述读请求偏移量平均值和文件大小,得到文件的未读部分的请求次数;根据所述文件的未读部分的请求次数和所述读请求偏移量平均值,生成map路线。
17.在一些实施方式中,接收对文件的读取请求并判断对文件的读取是否连续,还包括:记录读取所述文件的不连续次数。
18.在一些实施方式中,对文件的读取不连续,包括:所述不连续次数达到预设次数。
19.在一些实施方式中,所述链表中的每个链表节点还包括下一次要读取的读取偏移量,基于所述链表执行预读,包括:基于所述链表将所述文件下一次要读取的读取偏移量读取到页高速缓存中以对非顺序读的文件执行预读。
20.本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
21.本发明具有以下有益技术效果:通过本发明的方案,改善了内核客户端的预读机制,实现了内核客户端的非顺序预读,提高了内核客户端读文件性能,并且能够适应多种形式的读取文件业务,提高了非顺序预读的缓存命中率。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
23.图1为本发明提供的内核客户端的读取方法的一实施例的框图;图2为本发明的内核客户端的读取系统的一实施例的示意图;图3为本发明提供的计算机可读存储介质的一实施例的结构示意图。
具体实施方式
24.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
25.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应
理解为对本发明实施例的限定,后续实施例对此不再一一说明。
26.基于上述目的,本发明实施例的第一个方面,提出了一种内核客户端的预读方法的实施例。如图1所示,其包括如下步骤:步骤101、接收对文件的读取请求并判断对文件的读取是否连续;步骤103、若是对文件的读取不连续,则生成所述文件inode的头结点,并构建嵌入所述头结点的链表,所述链表中的每个链表节点包括读取偏移量;步骤105、判断所述文件是否包括文件的读取规则,若是所述文件包括所述文件的读取规则,则基于所述读取规则,获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中;步骤107、基于所述链表执行预读。
27.具体的,接收对文件的读取请求并判断所述对文件的读取是否连续;若是对文件的读取不连续,则进入非顺序预读学习模式,生成文件inode的头结点list_head,定义结构体变量ra_map,在结构体变量ra_map中,包括读取偏移量和嵌入头结点的链表,并以头结点将链表连接起来,在链表的每个链表节点中包括:读取偏移量、下一次要读取的读取偏移量、上一次读取的读取偏移量;判断文件是否存在已知的读文件规则、算法,如果有,则生成对应的文件的读取请求次数和每次对应的偏移量,并根据对应的文件的读取请求次数和每次对应的偏移量生成map路线,将map路线存入链表中,基于所述链表执行预读。
28.通过本发明的方案,改善了内核客户端的预读机制,实现了内核客户端的非顺序预读,提高了内核客户端读文件性能,并且能够适应多种形式的读取文件业务,提高了非顺序预读的缓存命中率。
29.在一些实施方式中,方法还包括:若是所述文件不包括所述文件的读取规则,则判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中。
30.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件进行重复读取,则获取第一次读取所述文件时的读取请求次数和对应的读取偏移量,在重复读取所述文件时,基于所述读取请求次数分别对所述对应的读取偏移量进行作差计算,若是计算结果的误差小于预设量的页面,则根据计算结果的误差小于预设量的所述对应的读取偏移量生成所述map路线。
31.根据本发明的多个实施方式,对于需要重复读取的文件,例如,所述文件1000页,第一次读取文件时,一共读了5次,读取请求次数与读取偏移量的关系为:读取请求次数1:读取偏移量200,读取请求次数2:读取偏移量300,读取请求次数3:读取偏移量100,读取请求次数4:读取偏移量100,读取请求次数5:读取偏移量400,再重复读取该文件时,取前五次的读取偏移量,分别与第一次读取时的读取偏移量作差,如果差值的绝对值,小于预设量的页面,比如30,则将小于30的那次读取请求的读取偏移量作为以后重复读取该文件时的map
路线。
32.通过对需要重复读取的文件的读取请求次数和读取偏移量的计算,提高了内核客户端的读取速率和重复读取文件的缓存命中率。
33.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件不进行重复读取,则获取所述文件的预设次数的读取请求和每次对应的读取偏移量,并基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线。
34.在一些实施方式中,基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线,包括:基于所述预设次数和所述对应的读请求偏移量得到读请求偏移量平均值;基于所述读请求偏移量平均值和文件大小,得到文件的未读部分的请求次数;根据所述文件的未读部分的请求次数和所述读请求偏移量平均值,生成map路线。
35.根据本发明的多个实施方式,对于不需要重复读取的文件,统计文件读取时的读取情况,例如,所述文件1000页,前3次读取文件时,读取请求次数与读取偏移量的关系为:读取请求次数1:读取偏移量70,读取请求次数2:读取偏移量50,读取请求次数3:读取偏移量60,计算读请求偏移量平均值为60,计算文件未读部分的大小为820,将读请求偏移量平均值作为文件未读部分的读取偏移量,计算剩余读取请求次数为820
÷
60=13.6≈14,将请求次数14和读请求偏移量平均值60作为文件未读部分的读取请求次数和读取偏移量,并基于此生成map路线。
36.通过对不需要重复读取的文件的读取请求次数和读取偏移量的计算,提高了内核客户端的读取速率和重复读取文件的缓存命中率。
37.在一些实施方式中,接收对文件的读取请求并判断对文件的读取是否连续,还包括:记录读取所述文件的不连续次数。
38.在一些实施方式中,对文件的读取不连续,包括:所述不连续次数达到预设次数。
39.在一些实施方式中,所述链表中的每个链表节点还包括下一次要读取的读取偏移量;基于所述链表执行预读,包括:基于所述链表将所述文件下一次要读取的读取偏移量读取到页高速缓存中以对非顺序读的文件执行预读。
40.基于同一发明构思,根据本发明的另一个方面,如图2所示,本发明的实施例还提供了一种内核客户端的预读系统,系统包括:接收模块110,所述接收模块110配置为接收对文件的读取请求并判断对文件的读取是否连续;构建模块120,所述构建模块120配置为若是对文件的读取不连续,则生成所述文件inode的头结点,并构建嵌入所述头结点的链表,所述链表中的每个链表节点包括读取偏移量;生成模块130,所述生成模块130配置为判断所述文件是否包括文件的读取规则,若是所述文件包括所述文件的读取规则,则基于所述读取规则,获取所述文件的读取请求
次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中;执行模块140,所述执行模块140配置为基于所述链表执行预读。
41.在一些实施方式中,系统还包括第二生成模块,第二生成模块配置为:若是所述文件不包括所述文件的读取规则,则判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中。
42.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件进行重复读取,则获取第一次读取所述文件时的读取请求次数和对应的读取偏移量,在重复读取所述文件时,基于所述读取请求次数分别对所述对应的读取偏移量进行作差计算,若是计算结果的误差小于预设量的页面,则根据计算结果的误差小于预设量的所述对应的读取偏移量生成所述map路线。
43.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件不进行重复读取,则获取所述文件的预设次数的读取请求和每次对应的读取偏移量,并基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线。
44.在一些实施方式中,基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线,包括:基于所述预设次数和所述对应的读请求偏移量得到读请求偏移量平均值;基于所述读请求偏移量平均值和文件大小,得到文件的未读部分的请求次数;根据所述文件的未读部分的请求次数和所述读请求偏移量平均值,生成map路线。
45.在一些实施方式中,接收对文件的读取请求并判断对文件的读取是否连续,还包括:则记录读取所述文件的不连续次数。
46.在一些实施方式中,对文件的读取不连续,包括:所述不连续次数达到预设次数。
47.在一些实施方式中,所述链表中的每个链表节点还包括下一次要读取的读取偏移量;基于所述链表执行预读,包括:基于所述链表将所述文件下一次要读取的读取偏移量读取到页高速缓存中以对非顺序读的文件执行预读。
48.基于同一发明构思,根据本发明的另一个方面,如图3所示,本发明的实施例还提供了一种计算机可读存储介质30,计算机可读存储介质30存储有被处理器执行时执行如下方法的计算机程序310:接收对文件的读取请求并判断对文件的读取是否连续;若是对文件的读取不连续,则生成所述文件inode的头结点,并构建嵌入所述头结点的链表,所述链表中的每个链表节点包括读取偏移量;判断所述文件是否包括文件的读取规则,若是所述文件包括所述文件的读取规
则,则基于所述读取规则,获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中;基于所述链表执行预读。
49.在一些实施方式中,方法还包括:若是所述文件不包括所述文件的读取规则,则判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,并将所述map路线存入所述链表中。
50.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件进行重复读取,则获取第一次读取所述文件时的读取请求次数和对应的读取偏移量,在重复读取所述文件时,基于所述读取请求次数分别对所述对应的读取偏移量进行作差计算,若是计算结果的误差小于预设量的页面,则根据计算结果的误差小于预设量的所述对应的读取偏移量生成所述map路线。
51.在一些实施方式中,判断是否对文件进行重复读取,并基于判断结果获取所述文件的读取请求次数和每次对应的读取偏移量,并基于所述读取请求次数和所述对应的读取偏移量生成map路线,包括:若是对所述文件不进行重复读取,则获取所述文件的预设次数的读取请求和每次对应的读取偏移量,并基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线。
52.在一些实施方式中,基于所述预设次数的读取请求和所述对应的读取偏移量进行统计计算,生成所述map路线,包括:基于所述预设次数和所述对应的读请求偏移量得到读请求偏移量平均值;基于所述读请求偏移量平均值和文件大小,得到文件的未读部分的请求次数;根据所述文件的未读部分的请求次数和所述读请求偏移量平均值,生成map路线。
53.在一些实施方式中,接收对文件的读取请求并判断对文件的读取是否连续,还包括:记录读取所述文件的不连续次数。
54.在一些实施方式中,对文件的读取不连续,包括:所述不连续次数达到预设次数。
55.在一些实施方式中,所述链表中的每个链表节点还包括下一次要读取的读取偏移量;基于所述链表执行预读,包括:基于所述链表将所述文件下一次要读取的读取偏移量读取到页高速缓存中以对非顺序读的文件执行预读。
56.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
57.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本
发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
58.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
59.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
60.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
61.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1