一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种预读方法及装置与流程

2022-02-24 18:43:55 来源:中国专利 TAG:

一种预读方法及装置
1.本技术要求于2020年08月20日提交国家知识产权局、申请号为202010845198.9、发明名称为“一种预读方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术实施例涉及计算机领域,尤其涉及一种预读方法及装置。


背景技术:

3.随着通信技术发展,无线网络广泛应用,而无线网络的通信时延远大于有线网络。而分布式/网络文件系统的时延大,会影响查看、浏览图片和播放视频的体验。现有的文件系统并不能很好的满足无线网络场景,使得无线网络场景(例如,视频播放和协同办公等场景)都存在性能体验问题。
4.在实际应用中,可以通过缓存预读减少无线网络中,网络时延对文件系统读写性能的影响。缓存预读关注两个主要指标:提高缓存命中率(减少应用程序等待时间)、提高缓存预读效率(减少无效预读),因此,提高缓存预读命中率,以缩短读文件等待时间是亟待解决的问题。


技术实现要素:

5.本技术提供一种预读方法及装置,以提高缓存预读命中率,缩短读文件等待时间。
6.为达到上述目的,本技术采用如下技术方案:
7.第一方面,提供一种预读方法,该方法可以包括:获取读操作,该读操作包括读取位置及读取大小,该读操作用于指示从读取位置开始读取其包括的读取大小的数据;根据读操作是否命中缓存,以及读取大小与预读窗口的范围大小关系,配置预读任务;一个预读任务用于预读小于或等于预读窗口大小的数据;该预读窗口小于文件系统支持的预读数据范围;按照预设规则,配置预读任务的优先级;按照预读任务的优先级从高到低的顺序,预读数据并存储于缓存。
8.通过本技术提供的预读方法,配置小于文件系统支持的预读数据范围的预读窗口,将预读窗口作为一次预读的最大范围,在获取到读操作时,根据本次读操作读取的数据大小与预读窗口的大小关系以及读操作是否命中缓存,来配置不同数量的预读任务,一个预读任务对应一个预读窗口,再根据实际需求或经验配置预读任务的优先级,根据优先级调度执行预读任务。一方面,由于预读窗口小于文件系统支持的预读数据范围,执行一个预读任务预读的数据范围小于一次预读文件系统支持的预读数据范围,提高了预读效率,可以保证预读窗口对应的数据尽早预读至缓存,提高了缓存命中率,也就缩短了读文件的等待时间;另一方面,可以将本次读操作之后读取概率高的位置对应的预读任务,配置为高优先级,以使得该位置尽早缓存,有效提高缓存命中率,进而缩短读文件等待时间。
9.在一种可能的实现方式中,预读窗口可以是将文件系统支持的预读数据范围划分
之后得到。
10.在一种可能的实现方式中,预读窗口可以为文件系统支持的预读数据范围划分的32千字节(kilobyte,kb)的数据块。
11.在另一种可能的实现方式中,读操作的读取结束位置与系统支持的预读数据范围结束位置间存在未缓存的数据,根据读操作是否命中缓存,以及读取大小与预读窗口的大小关系,配置预读任务,包括:若读操作未命中缓存,且该读操作的读取大小小于或等于第一门限,从该读操作的读取结束位置开始预读第一门限大小的数据;第一门限小于预读窗口的范围。由于该读操作未命中缓存,且读取的数据很小(小于或等于第一门限),则后续的读操作大概率与该读操作类似,因此预读第一门限大小的数据,实现快读预读以及提高缓存命中率。
12.在一种可能的实现方式中,第一门限可以为4kb。
13.在另一种可能的实现方式中,读操作的读取结束位置与系统支持的预读数据范围结束位置间存在未缓存的数据,根据读操作是否命中缓存,以及读取大小与预读窗口的大小关系,配置预读任务,包括:若读操作未命中缓存,且该读操作的读取大小小于预读窗口的范围,从该读操作的读取结束位置开始,配置x个预读任务。其中,x为大于1的整数。由于该读操作未命中缓存,且读取的数据不到一个预读窗口的范围,可能存在后续大范围读取数据的概率,则配置x个预读任务,实现快读预读以及提高缓存命中率。
14.在一种可能的实现方式中,若读操作未命中缓存,且该读操作的读取大小小于预读窗口的范围,从该读操作的读取结束位置开始,配置x个预读任务,具体可以实现为:若读操作未命中缓存,且该读操作的读取大小大于第一门限,且小于预读窗口的范围,从该读操作的读取结束位置开始,配置x个预读任务。
15.在一种可能的实现方式中,x可以为1。
16.在另一种可能的实现方式中,读操作的读取结束位置与系统支持的预读数据范围结束位置间存在未缓存的数据,根据读操作是否命中缓存,以及读取大小与预读窗口的大小关系,配置预读任务,包括:若该读操作未命中缓存,且该读操作的读取大小大于预读窗口的范围,从该读操作的读取结束位置开始,配置y个预读任务。y为大于2的整数。由于该读操作未命中缓存,且读取的数据大于一个预读窗口的范围,可能存在后续大范围读取数据的概率,则配置y个(2个以上)预读任务,实现快读预读以及提高缓存命中率。
17.在一种可能的实现方式中,y可以为4。
18.在另一种可能的实现方式中,读操作的读取结束位置与系统支持的预读数据范围结束位置间存在未缓存的数据,根据读操作是否命中缓存,以及读取大小与预读窗口的大小关系,配置预读任务,包括:若该读操作命中缓存,且该读操作的读取大小小于一个预读窗口的范围,从读取结束位置开始,配置z个预读任务。z为大于1的整数。由于该读操作命中缓存,且读取的数据不到一个预读窗口的范围,可能存在后续大范围读取数据的概率,则配置z个预读任务,实现快读预读以及提高缓存命中率。
19.在一种可能的实现方式中,z可以为2。
20.在另一种可能的实现方式中,读操作的读取结束位置与系统支持的预读数据范围结束位置间存在未缓存的数据,根据读操作是否命中缓存,以及读取大小与预读窗口的大小关系,配置预读任务,包括:若该读操作命中缓存,且读取大小大于一个预读窗口的范围,
从读取结束位置开始,配置r个预读任务。r为大于2的整数。由于该读操作命中缓存,且读取的数据大于一个预读窗口的范围,可能存在后续大范围读取数据的概率,则配置r个(2个以上)预读任务,实现快读预读以及提高缓存命中率。
21.在一种可能的实现方式中,r可以为8。
22.在一种可能的实现方式中,在配置预读任务时,读操作的读取大小与预读窗口的范围对比时,对于读操作的读取大小等于一个预读窗口的范围的情况,可以根据实际需求配置预读任务个数,本技术对此不予限定。
23.在另一种可能的实现方式中,若读操作的读取结束位置与系统支持的预读数据范围结束位置间不存在未缓存的数据,则不配置预读任务。
24.在另一种可能的实现方式中,配置预读任务的优先级的预设规则,可以包括:预读起始地址距离当前读地址越近的预读任务,优先级越高。其中,预读起始地址为预读任务的实际读取开始地址,当前读地址为所述读操作对应的读取位置。在文件系统中,一般采用顺序读,因此,距离当前读地址越近的预读任务配置越高的优先级,可以很好的提高缓存命中率。
25.在另一种可能的实现方式中,配置预读任务的优先级的预设规则,可以包括:新增的预读任务优先级高于已有的预读任务优先级。由于新增的预读任务,是根据最新的读操作配置的,因此,新增的预读任务对应的预读更能命中之后的读操作,可以配置高优先级以提高缓存命中率。
26.在另一种可能的实现方式中,本技术提供的预读方法还可以包括:按照读取速率,调整预读任务的总个数和/或预读任务的预读范围大小。例如,可以针对不同的读取速率,偶尔之不同的预读总大小,根据不同速率下的预读总大小,调整预读任务的总个数和/或预读任务的预读范围大小。实现自适应的预读,提高文件系统的可靠性及性能。
27.在另一种可能的实现方式中,本技术提供的预读方法还可以包括:配置预读任务的生命周期,丢弃超时的预读任务。长时间未执行的预读任务,说明预读的必要性不高,则丢弃,以提高文件系统的利用率。
28.第二方面,提供一种预读装置,包括获取单元、第一配置单元、第二配置单元以及预读单元。其中:
29.获取单元,用于获取读操作,该读操作包括读取位置及读取大小,该读操作用于指示从其包括的读取位置开始读取其包括的读取大小的数据。
30.第一配置单元,用于根据获取单元获取的读操作是否命中缓存,以及读取大小与预读窗口的范围大小关系,配置预读任务;一个预读任务用于预读小于或等于预读窗口大小的数据;预读窗口小于文件系统支持的预读数据范围。
31.第二配置单元,用于按照预设规则,配置预读任务的优先级。
32.预读单元,用于按照预读任务的优先级从高到低的顺序,预读数据并存储于缓存。
33.需要说明的是,第二方面提供的预读装置,用于实现上述第一方面提供的预读方法,其具体实现可以参照上述第一方面或其任一种可能的实现方式,不再赘述。
34.第三方面,提供一种预读装置,该预读装置可以实现上述第一方面描述的方法示例中的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。该预读装置可以以芯片的产品形态存在。
35.在一种可能的实现方式中,该预读装置可以包括处理器和传输接口。其中,传输接口用于接收和发送数据。处理器被配置为调用存储在存储器中的软件指令,以使得该预读装置执行上述第一方面描述的方法示例中的功能。
36.第四方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上或处理器上运行时,使得计算机或处理器执行上述第一方面或其任一种可能的实现方式提供的预读方法。
37.第五方面,提供一种计算机程序产品,该计算机程序产品包括指令,当该指令在计算机或处理器上运行时,使得计算机或处理器执行上述第一方面或其任一种可能的实现方式提供的预读方法。
38.第六方面,提供一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现上述方法中相应的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
39.第七方面,提供一种计算机系统,该系统包括第三方面的预读装置,该装置具备上述第一方面以及任一可能的实现方式的功能。
40.其中,需要说明的是,上述各个方面中的任意一个方面的各种可能的实现方式,在方案不矛盾的前提下,均可以进行组合。
附图说明
41.图1a为一种基于数据流确定预读范围的场景示意图;
42.图1b为一种电子设备的结构示意图;
43.图2为本技术实施例提供的一种预读装置的结构示意图;
44.图3为本技术实施例提供的一种预读方法的流程示意图;
45.图4a为本技术实施例提供的一种添加预读任务的场景示意图;
46.图4b为本技术实施例提供的另一种预读方法的流程示意图;
47.图5a为本技术实施例提供的一种文件系统的性能仿真结果示意图;
48.图5b为本技术实施例提供的另一种文件系统的性能仿真结果示意图;
49.图5c为本技术实施例提供的另一种预读装置的结构示意图;
50.图6为本技术实施例提供的再一种预读装置的结构示意图;
51.图7为本技术实施例提供的又一种预读装置的结构示意图。
具体实施方式
52.本技术说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
53.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
54.为了下述各实施例的描述清楚简洁,此处先对本文涉及的名词及相关技术做简要介绍。
55.预读,是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在cache中,下一次读请求到来时部分页面直接从cache读取,以提高读取效率。
56.系统支持的预读数据范围,是指文件系统支持的一次最多的预读范围。
57.预读窗口,是指将系统支持的预读数据范围划分得到的多个数据块。预读窗口小于系统支持的预读数据范围。
58.预读任务,是指与预读窗口对应的预读操作,一个预读任务对应一个预读窗口。预读任务用于读取其对应的预读窗口内未缓存的数据。
59.当前,业界为了提高文件系统的缓存命中率,提出了多种多样的预读技术。
60.一种预读技术为,基于数据流缓存预读一定数量的数据,具体为:首先对数据流设置一个初始的预读范围,然后根据各种方式(如历史情况、网络等)增大或减少预读范围,在系统层面实现缓存预读处理(如一定条件触发一定预读大小、一定条件预读大小加倍、一定条件加大或减少预读范围等)。该方案对于顺序读写,可以很好的提高缓存命中率,但是,对存在随机读写如office文档/pdf文档/部分视频等场景,由于随机读写地址没有规律,缓存命中率低,预读效果不好。
61.示例性的,图1a示意了一种基于数据流确定预读范围的场景。如图1a所示,在情形1中,数据流已读取之后,添加初始预读范围;在情形2中,在数据流已读取之后,判断满足增加预读范围的条件(具体条件不赘述),则增大预读范围,增大后的预读范围比初始预读范围大;在情形3中,在数据流已读取之后,判断满足减少预读范围的条件(具体条件不赘述),则减少预读范围,减少后的预读范围比初始预读范围小。
62.另一种预读技术为,视频播放软件缓存预读。具体为:在应用层根据应用和文件特征实现缓存,也就是播放器提前解析下一个时间点要播放的视频内容,提前从网络加载到本地。该预读方案针对视频播放场景设计,不能适应各种类型文件的缓存预读,不适合在文件系统层面实现。
63.基于此,本技术提供一种预读方法,将文件系统支持的预读数据范围划分为多个预读窗口,在处理每一个读操作时,根据读操作的读取大小与预读窗口的大小以及读操作是否命中缓存,配置不同数量的预读任务,一个预读任务用于预读小于或等于一个预读窗口的数据,对预读任务配置优先级,根据优先级调度预读任务预读缓存数据。这样一来,执行一个预读任务预读的数据范围小于一次预读文件系统支持的预读数据范围,提高了预读效率,可以保证预读窗口对应的数据尽早预读至缓存,提高了缓存命中率,也就缩短了读文件的等待时间;将本次读操作之后读取概率高的位置对应的预读任务,配置为高优先级,以使得该位置尽早缓存,有效提高缓存命中率,进而缩短读文件等待时间。
64.本技术提供的预读方法,可以应用于图1b示意的电子设备中。如图1b所示,电子设备10可以包括应用层101、内核层102以及网络层103。
65.其中,应用层101部署一个或多个应用程序(application,app)1011。
66.内核层102中部署虚拟文件系统(virtual file system,vfs)1021,实现vfs定义的各种文件接口,用于存储及组织电子设备10的数据。
67.例如,vfs 1021可以为分布式文件系统(distributed file system,dfs),或者,也可以为移动分布式文件系统(mobile distributed file system,mdfs)。本技术实施例对于文件系统10211的类型不予限定。
68.进一步的,文件系统10211中可以部署缓存(cache)和缓存预读管理模块(prefetch),由缓存预读管理模块实现文件系统10211的预读功能,并将预读数据存储于cache中。
69.网络层103用于利用网络实现通信功能。
70.具体的,电子设备10的用户通过访问应用层101中的app,发起读操作,文件系统10211中的缓存预读管理模块根据该读操作,按照本技术提供的方案进行预读,具体预读过程参照后续方法实施例的具体描述,此处不进行赘述。
71.需要说明的是,图1b仅是示意了一种电子设备10的架构,在实际应用中,电子设备10还可以包括图1b未示出的内容,本技术实施例对此不进行具体限定。
72.示例性的,图1b示意的电子设备10可以为包含通信功能的各种移动设备终端,如手机、平板、大屏等。
73.下面结合附图,对本技术的实施例进行具体阐述。
74.一方面,本技术实施例提供一种预读装置,用于执行本技术提供的预读方法,该预读装置可以部署于图1b所示的电子设备中的文件系统10211中。图2示出的是与本技术各实施例相关的一种预读装置。如图2所示,预读装置20可以包括处理器201、存储器202以及收发器203。
75.下面结合图2对预读装置20的各个构成部件进行具体的介绍:
76.其中,存储器202可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram);或者非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);或者上述种类的存储器的组合,用于存储可实现本技术方法的应用程序、程序代码、配置文件或其他内容。
77.处理器201是预读装置20的控制中心,可以是一个中央处理器(central processing unit,cpu),也可以是特定集成电路(application specific integrated circuit,asic),或者是被配置成实施本技术实施例的一个或多个集成电路,例如:一个或多个微处理器(digital signal processor,dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,fpga)。
78.收发器203用于与其他设备之间通信以及数据传输。
79.具体的,处理器201通过运行或执行存储在存储器202内的软件程序和/或模块,以及调用存储在存储器202内的数据,执行如下功能:
80.获取读操作,该读操作包括读取位置及读取大小,该读操作用于指示从读取位置开始读取其包括的读取大小的数据;根据读操作是否命中缓存,以及读取大小与预读窗口的大小关系,配置预读任务;一个预读任务用于预读小于或等于预读窗口大小的数据;该预读窗口小于文件系统支持的预读数据范围;按照预设规则,配置预读任务的优先级;按照预读任务的优先级从高到低的顺序,预读数据并存储于缓存。
81.另一方面,本技术实施例提供一种预读方法,该方法可以由文件系统中部署的预读装置执行,该预读装置可以为文件系统中部署的缓存预读管理模块的部分或全部。如图3所示,本技术提供的预读方法可以包括:
82.s301、预读装置获取读操作。
83.其中,读操作包括读取位置及读取大小,该读操作用于指示从其包含的读取位置开始读取该读取大小的数据。
84.具体的,该读操作可以由用户操作电子设备中的app产生,该电子设备可以如图1b所示,该电子设备中可以部署了文件系统,该文件系统中部署了该预读装置。
85.示例性的,读操作可以为read操作。例如,read(fd,buf,count)为一个读操作,其中fd为读取位置,count为读取大小,buf用于指示缓存,该读操作用于从文件描述符fd所指向的文件中,读取count个字节的数据到buf所指向的缓存中。
86.示例性的,读操作可以为pread操作。例如,pread(fd,buf,count,pos)为一个读操作,其中fd及pos为读取位置,count为读取大小,buf用于指示缓存,该读操作用于从文件描述符fd所指向的文件中pos的偏移位置,读取count个字节的数据到buf所指向的缓存中。
87.s302、预读装置根据读操作是否命中缓存,以及读取大小与预读窗口的范围大小关系,配置预读任务。
88.其中,该读操作是指s301中获取的读操作。读操作是否命中缓存,是指读操作读取的数据,是否已经存储于缓存中。当读操作读取的数据已经存储于缓存,则读操作命中缓存。当读操作读取的数据部分存储于缓存,部分未存储于缓存,或者,当读操作读取的数据全部未存储于缓存,则读操作未命中缓存。
89.具体的,预读窗口小于文件系统支持的预读数据范围。
90.一种可能的实现方式中,预读窗口是将文件系统支持的预读数据范围划分得到的数据块。可选的,预读窗口的范围可以为静态配置,也可以动态调整,本技术对此不予限定。
91.例如,预读窗口可以为32kb(或者4kb、或者8kb、或者16kb、或者64kb、或者128kb)大小的数据块。文件系统支持的预读数据范围可以为多个预读窗口组成。
92.其中,预读任务与预读窗口一一对应,一个预读任务用于预读小于或等于预读窗口大小的数据。具体的,一个预读任务用于预读其对应的预读窗口对应的数据中未缓存的数据。
93.示例性的,假设一个文件系统支持的预读数据范围为160kb,将其划分为5个32kb大小的数据块,作为5个预读窗口。假设一个读操作的读取结束位置为100kb,这5个预读窗口的位置可以记录为:[100kb,132kb)、[132kb,164kb)、[164kb,196kb)、[196kb,228kb)、[228kb,260kb)。其中,“)”表示开区间,“[”表示闭区间。假设一个预读任务对应预读窗口[132kb,164kb),这个预读任务就读取132kb~164kb中未缓存的数据。
[0094]
一种可能的实现方式中,在s302中,预读装置可以先判断读操作的读取结束位置与文件系统支持的预读数据范围结束位置间是否存在未缓存的数据,若不存在未缓存的数据,则无需配置预读任务。
[0095]
另一种可能的实现方式中,在s302中,预读装置可以先判断读操作的读取结束位置与文件系统支持的预读数据范围结束位置间是否存在未缓存的数据,若存在未缓存的数据,预读装置根据读操作是否命中缓存,以及读取大小与预读窗口的范围大小关系,配置预读任务,具体的配置预读任务的方案可以根据实际需求配置,本技术实施例对此不予限定。预读装置配置的一个或多个预读任务,是从读操作的读取结束位置开始与预读窗口一一对应的。
[0096]
示例性的,在读操作的读取结束位置与文件系统支持的预读数据范围结束位置间
存在未缓存的数据时,本技术实施例提供一种预读装置根据读操作是否命中缓存,以及读取大小与预读窗口的范围大小关系,配置预读任务的具体方案,该方案具体包括但不限于如下5种情况:
[0097]
情况1、若读操作未命中缓存,且读取大小小于或等于第一门限,从读取结束位置开始预读第一门限大小的数据;第一门限小于预读窗口。
[0098]
示例性的,第一门限可以为4kb。在情况1中,若本次读操作的读取大小小于4kb,则从读取结束位置预读4kb的数据,不配置预读任务。
[0099]
情况2、若读操作未命中缓存,且读取大小小于一个预读窗口的范围,从读取结束位置开始,配置x个预读任务。x为大于1的整数。
[0100]
示例性的,x可以为1。
[0101]
例如,在情况2中,若本次读操作的读取大小小于32kb,则配置1个预读任务,对应从读取结束位置开始的一个预读窗口。
[0102]
一种可能的实现方式中,在情况2中,可以限定读取大小大于第一门限且小于一个预读窗口的范围时,从读取结束位置开始,配置x个预读任务。
[0103]
情况3、若读操作未命中缓存,且读取大小大于一个预读窗口的范围,从读取结束位置开始,配置y预读任务。y为大于2的整数。
[0104]
示例性的,y可以为4。
[0105]
例如,在情况3中,若本次读操作的读取大小大于32kb,则配置4个预读任务,对应从读取结束位置开始的4个预读窗口。
[0106]
情况4、若读操作命中缓存,且读取大小小于一个预读窗口的范围,从读取结束位置开始,配置z个预读任务。z为大于1的整数。
[0107]
示例性的,z可以为2。
[0108]
例如,在情况4中,若本次读操作的读取大小小于32kb,则配置2个预读任务,对应从读取结束位置开始的2个预读窗口。
[0109]
情况5、若读操作命中缓存,且读取大小大于一个预读窗口的范围,从读取结束位置开始,配置r个预读任务。r为大于2的整数。
[0110]
示例性的,r可以为8。
[0111]
例如,在情况5中,若本次读操作的读取大小大于32kb,则配置8个预读任务,对应从读取结束位置开始的8个预读窗口。
[0112]
需要说明的是,在上述不同情况中配置预读任务时,读操作的读取大小与预读窗口的范围对比时,对于读操作的读取大小等于一个预读窗口的范围的情况,可以根据实际需求配置预读任务的数量,本技术对此不予限定。
[0113]
还需要说明的是,上述5种情况只是对配置预读任务的方案示例说明,并不是对此的具体限定。
[0114]
示例性的,在获取本次读操作为read(pos=500k,size=10k),可以配置1个预读任务,对应从该读操作的读取结束位置开始的第一个预读窗口。
[0115]
s303、预读装置按照预设规则,配置预读任务的优先级。
[0116]
具体的,s303中预读装置按照预设规则,配置s302中配置的预读任务的优先级。
[0117]
其中,该优先级可以用阿拉伯数字或者其他内容标识,不予限定。
[0118]
需要说明的是,可以根据实际需求设定预设规则的内容,以用于预读访问概率高的数据的预读任务配置高优先级为原则即可,本技术对于该预设规则的内容不予限定。
[0119]
一种可能的实现方式中,预设规则可以包括:预读起始地址距离当前读地址越近的预读任务,优先级越高。其中,预读起始地址为预读任务的实际读取开始地址,当前读地址为读操作对应的读取位置。
[0120]
具体的,若预读任务对应的预读窗口为[180kb,212kb),如190kb之前的数据已缓存,该预读任务则预读[190kb,200kb)对应的数据,该预读任务的预读起始地址则为190kb。
[0121]
可选的,当前读地址可以为读操作的起始读取位置,或者也可以为读取结束位置。
[0122]
另一种可能的实现方式中,预设规则可以包括:新增的预读任务优先级高于已有的预读任务优先级。
[0123]
例如,已经存在预读任务a(pos=100k,pri=1)、b(pos=132k,pri=1),其中pos用于指示读取位置,pri用于指示读取任务的优先级,本次读操作read(pos=500k,size=10k),可以新增高优先级预读任务c(pos=510k,pri=3),下次读操作read(pos=510k,size=10k)时就可以从缓存命中了。
[0124]
示例性的,图4a示意了一种添加预读任务的场景。如图4a所示,假设预读装置在获取某一读操作之前,已经配置了图4a中实线框示意的多个预读任务,这多个预读任务中包括1个高优先级的预读任务1,3个中优先级的预读任务2-预读任务4,以及6个低优先级的预读任务5-预读任务10。在某一时刻,该预读装置获取到一个读操作,并执行s302配置了4个预读任务(图4a中虚线框示意的4个任务,记录为预读任务a、预读任务b、预读任务c以及预读任务d),预读装置执行s303配置这4个预读任务的优先级为:预读任务a为高优先级、预读任务b为中优先级,预读任务c和预读任务d为低优先级,然后预读装置将这4个预读任务添加至预读任务队列中。
[0125]
s304、预读装置按照预读任务的优先级从高到低的顺序,预读数据并存储于缓存。
[0126]
具体的,s304中预读装置可以基于优先级的各种队列调度,按照预读任务的优先级从高到低的顺序调度预读任务,预读数据并存储于缓存。
[0127]
示例性的,调度预读任务的算法可以为严格优先级算法(strict priority,sp)、循环调度(round robin,rr)算法、或加权循环调度算法(weighted round robin,wrr)或其他,本技术实施例对于调度算法不予限定。
[0128]
示例性的,基于图4a示意的添加预读任务的场景中添加了预读任务后的队列,预读装置在s304中可以先执行优先级最高的预读任务预读数据并存储于缓存,然后执行中优先级的预读任务预读数据并存储于缓存,最后执行低优先级的预读任务预读数据并存储于缓存。应理解,在执行预读任务的过程中,预读装置还可以按照前述s301至s304的过程添加新的预读任务,预读装置均实时的按照预读任务的优先级从高到低的顺序,预读数据并存储于缓存。
[0129]
通过本技术提供的预读方法,配置小于文件系统支持的预读数据范围的预读窗口,将预读窗口作为一次预读的最大范围,在获取到读操作时,根据本次读操作读取的数据大小与预读窗口的大小关系以及读操作是否命中缓存,来配置不同数量的预读任务,一个预读任务对应一个预读窗口,再根据实际需求或经验配置预读任务的优先级,根据优先级调度执行预读任务。一方面,由于预读窗口小于文件系统支持的预读数据范围,执行一个预
读任务预读的数据范围小于一次预读文件系统支持的预读数据范围,提高了预读效率,可以保证预读窗口对应的数据尽早预读至缓存,提高了缓存命中率,也就缩短了读文件的等待时间;另一方面,可以将本次读操作之后读取概率高的位置对应的预读任务,配置为高优先级,以使得该位置尽早缓存,有效提高缓存命中率,进而缩短读文件等待时间。
[0130]
进一步的,如图4b所示,本技术提供的预读方法还可以包括s305。
[0131]
s305、预读装置按照读取速率,调整预读任务的总个数和/或预读任务的预读范围大小。
[0132]
具体的,在s305中可以配置不同读取速率对应的预读总大小,不同的预读总大小对应不同的预读任务个数和/或预读任务的预读范围大小,预读装置根据读取速率,查询配置的内容,获取与当前读取速率对应的预读任务个数和/或预读任务的预读范围大小,将存在的预读任务的个数和/或预读任务的预读范围大小调整为获取的与当前读取速率对应的预读任务个数和/或预读任务的预读范围大小。
[0133]
进一步的,如图4b所示,本技术提供的预读方法还可以包括s306。
[0134]
s306、预读装置配置预读任务的生命周期,丢弃超时的预读任务。
[0135]
具体的,预读装置在配置预读任务时,可以配置预读任务的生命周期,以指示预读任务的存活时间。当预读任务的生命周期结束时,可以丢弃预读任务。
[0136]
一种可能的实现方式中,预读任务的生命周期可以配置为固定的静态值,不同的预读任务生命周期时长相同或。
[0137]
另一种可能的实现方式中,预读任务的生命周期可以动态配置,本技术实施例对于动态配置的过程不予限定。例如,不同读取速率对应不同的生命周期时长。
[0138]
示例性的,对文件系统的性能进行了仿真,未采用本技术方案时的仿真结果如图5a所示,采用本技术方案时的仿真结果如图5b所示。如图5a所示,文件系统的读时延较高且缓存命中率低。如图5b所示,采用本技术方案后,文件系统的读时延明显降低,且缓存命中率提升到95%以上。
[0139]
上述主要从预读装置的工作原理角度对本技术实施例提供的方案进行了介绍。可以理解的是,上述预读装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0140]
本技术实施例可以根据上述方法示例对执行本技术提供的预读方法的设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0141]
在采用对应各个功能划分各个功能模块的情况下,图5c示出了上述实施例中所涉及的预读装置50的一种可能的结构示意图。该预读装置50可以为功能模块或者芯片。如图5c所示,预读装置50可以包括:获取单元501、第一配置单元502、第二配置单元503及预读单
元504。其中,获取单元501用于执行图3或图4b中的过程s301;第一配置单元502用于执行图3或图4b中的过程s302;第二配置单元503用于执行图3或图4b中的过程s303;预读单元504用于执行图3或图4b中的过程s304。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
[0142]
进一步的,如图6所示,预读装置50还可以包括调整单元505及周期管理单元506。其中,调整单元505用于执行图4b中的过程s305;周期管理单元506用于执行图4b中的过程s306。
[0143]
在采用集成的单元的情况下,图7示出了上述实施例中所涉及的预读装置的一种可能的结构示意图。如图7所示,预读装置70可以包括:处理模块701、通信模块702。处理模块701用于对预读装置70的动作进行控制管理,通信模块702用于与其他设备通信。例如,处理模块701用于执行图3中过程s301至s304中任一过程,或者执行图4b中的过程s301至s306中任一过程。预读装置70还可以包括存储模块703,用于存储预读装置70的程序代码和数据。
[0144]
其中,处理模块701可以为图2所示的预读装置20的实体结构中的处理器201,可以是处理器或控制器。例如可以是cpu,通用处理器,dsp,asic,fpga或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理模块701也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。通信模块702可以为图2所示的预读装置20的实体结构中的收发器203,通信模块702可以是通信端口,或者可以是收发器、收发电路或通信接口等。或者,上述通信接口可以通过上述具有收发功能的元件,实现与其他设备的通信。上述具有收发功能的元件可以由天线和/或射频装置实现。存储模块703可以是图2所示的预读装置20的实体结构中的存储器202。
[0145]
当处理模块701为处理器,通信模块702为收发器,存储模块703为存储器时,本技术实施例图7所涉及的预读装置70可以为图2所示的预读装置20。
[0146]
如前述,本技术实施例提供的预读装置50或预读装置70可以用于实施上述本技术各实施例实现的方法中相应的功能,为了便于说明,仅示出了与本技术实施例相关的部分,具体技术细节未揭示的,请参照本技术各实施例。
[0147]
作为本实施例的另一种形式,提供一种计算机可读存储介质,其上存储有指令,该指令被执行时执行上述方法实施例中的预读方法。
[0148]
作为本实施例的另一种形式,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行时执行上述方法实施例中的预读方法。
[0149]
本技术实施例再提供一种芯片系统,该芯片系统包括处理器,用于实现本发明实施例的技术方法。在一种可能的设计中,该芯片系统还包括存储器,用于保存本发明实施例必要的程序指令和/或数据。在一种可能的设计中,该芯片系统还包括存储器,用于处理器调用存储器中存储的应用程序代码。该芯片系统,可以由一个或多个芯片构成,也可以包含芯片和其他分立器件,本技术实施例对此不作具体限定。
[0150]
结合本技术公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于ram、闪存、rom、可擦除可编程只读存储器(erasable programmable rom,
eprom)、电可擦可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。或者,存储器可以与处理器耦合,例如存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。存储器可以用于存储执行本技术实施例提供的技术方案的应用程序代码,并由处理器来控制执行。处理器用于执行存储器中存储的应用程序代码,从而实现本技术实施例提供的技术方案。
[0151]
结合本技术公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于ram、闪存、rom、可擦除可编程只读存储器(erasable programmable rom,eprom)、电可擦可编程只读存储器(electrically eprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。另外,该asic可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。或者,存储器可以与处理器耦合,例如存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。存储器可以用于存储执行本技术实施例提供的技术方案的应用程序代码,并由处理器来控制执行。处理器用于执行存储器中存储的应用程序代码,从而实现本技术实施例提供的技术方案。
[0152]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0153]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本技术所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0154]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
[0155]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个
网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0156]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0157]
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0158]
最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献