一种文件系统stride访问模式的预读方法技术方案

技术编号:7217665 阅读:274 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种文件系统stride访问模式的预读方法,在每次读之前,更新stride预读状态的历史读记录,并根据历史读记录,通过stride模式的匹配算法来检测是否是stride读模式;如果是,则开启stride模式的预读,进入stride模式的预读算法;否则进入顺序预读算法。本发明专利技术对特定应用的访问模式跨步读模式(stride模式)设计的预读方法,有效提高了应用程序stride模式访问的性能。

【技术实现步骤摘要】

本涉及对特定应用的访问模式跨步读模式(stride模式)设计的预读算法,具体来说,涉及。
技术介绍
预读是把预测将要访问的数据按页提前批量加载到内存中,这有助于IO的顺序化,异步化和并行化,有助于改善文件系统的读性能。异步读取有助于对上层应用隐藏IO 延迟,这在网络文件服务中可以有效提高IO效率;对于科学计算和工程计算等应用中,一般计算和IO交替进行,预取可以提高计算和IO的并行。目前预读算法主要分两种,一种是基于模式匹配的启发式自动检测算法,这种算法对应用程序透明,能检测到的可以预读模式比较单一。另一种是用户通过readahead和 fadvise接口显示通知预读。这种预读模式对用户不透明,需要用户程序中显示调用,它可以应对各种比较复杂的的访问模式。目前在Iinux操作系统提供了通用的顺序预读算法,来加速顺序读的性能,并没有针对跨步读(stride)模式的预读算法。
技术实现思路
本专利技术针对上述模式,提供了启发式的stirde预读算法,同时通过ioctl接口提供了一种用户可以批量通知预读的接口。,在每次读之前,更新stride预读状态的历史读记录,并根据历史读记录,通过 stride模式的匹配算法来检测是否是stride读模式;如果是,则开启stride模式的预读, 进入stride模式的预读算法;否则进入顺序预读算法。优选的,所述stride预读模式开启后,检测的stride读模式的参数,获取跨步读模式step和size参数,在构建预读窗口时,跳过不需要访问的页,只预读需要访问的页。优选的,根据所述预读的命中率,来动态调整预读窗口的大小。优选的,所述stride模式有三种,FIX_ALL模式访问的间隔和长度都相;FIX_P0S模式访问的间隔相同,但是长度不同;FIX_STEP模式访问的间隔步长相同,长度不同。优选的,所述预读方法在ictol命令中添加自定义参数,所述自定义参数包括预读段的数目、预读的偏移和长度。本专利技术对特定应用的访问模式跨步读模式(stride模式)设计的预读方法,有效提高了应用程序stride模式访问的性能。具体实施方式预读算法的基本思路通常文件系统的预读在内核系统例程generiC_file_read函数里通过page_ cache_readahead实现,本文要实现自己的预读算法,就必须修改generic_file_read例程,在其中添加自己的stride预读算法,并和内核的顺序预读算法协同工作。stride模式的检测有三种stride模式在第一模式下,访问的间隔和长度都相同,这种称谓FIX_ALL 模式,第二种是访问的间隔相同,但是长度不同,这种称谓FIX_P0S模式,在第三种是访问的间隔步长相同,长度不同,这中称为FIX_STEP模式,这三种stride读模式的检测,根据上述三种特征来分别检测。预读窗口的构建通过上述模式,来检测出如果是stride模式预读,就构建相应的预读窗口,在构建预读窗口时,要根据三种模式,来计算预读的目标页,特别要跳过那些不需要预读的页。 窗口的构建是自适应的,在初始时,窗口相对比较小,根据预读的命中率逐步加大。ioctl批量通知机制的实现相对于readahead只能提供一次只能预读一个连续的数据块预读接口,本专利技术通过ioctl提供可以批量预读的预读接口。修改ioctl命令,给ioctl添加一个0FS_READAHEAD的命令,来告诉文件系统,这是一个预读的命令。通过定义参数,可以批量通知内核多个不连续的文件块的预读。ioctl预读接口的不同之处,在于它可以一次批量加载多个文件段预读请求。自己定义了其接口参数如下typedef struct parastor—readv{ unsigned long offset; unsigned long count; }parastor—readv—t; struct parastor—readahead{ int nr;parastor—readv—t氺 readv;};如上接口,用户可以指定nr为预读段的数目。在readv参数里添加预读的偏移和长度。这样就可以指定的预读的多个文件段。权利要求1.一种文件系统Stride访问模式的预读方法,其特征在于在每次读之前,更新stride预读状态的历史读记录,并根据历史读记录,通过stride 模式的匹配算法来检测是否是stride读模式;如果是,则开启stride模式的预读,进入 stride模式的预读算法;否则进入顺序预读算法。2.如权利要求1所述的方法,其特征在于所述stride预读模式开启后,检测的 stride读模式的参数,获取跨步读模式step和size参数,在构建预读窗口时,跳过不需要访问的页,只预读需要访问的页。3.如权利要求2所述的方法,其特征在于根据所述预读的命中率,来动态调整预读窗口的大小。4.如权利要求1所述的方法,其特征在于所述stride模式有三种,FIX_ALL模式访问的间隔和长度都相;FIX_POS模式访问的间隔相同,但是长度不同;FIX.STEP模式访间的间隔步长相同,长度不同。5.如权利要求1所述的方法,其特征在于所述预读方法在ictol命令中添加自定义参数,所述自定义参数包括预读段的数目、预读的偏移和长度。全文摘要本专利技术提供了,在每次读之前,更新stride预读状态的历史读记录,并根据历史读记录,通过stride模式的匹配算法来检测是否是stride读模式;如果是,则开启stride模式的预读,进入stride模式的预读算法;否则进入顺序预读算法。本专利技术对特定应用的访问模式跨步读模式(stride模式)设计的预读方法,有效提高了应用程序stride模式访问的性能。文档编号G06F17/30GK102385622SQ20111032829公开日2012年3月21日 申请日期2011年10月25日 优先权日2011年10月25日专利技术者刘新春, 吕民强, 杨浩, 苗艳超, 邵宗有 申请人:曙光信息产业(北京)有限公司本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:吕民强杨浩邵宗有刘新春苗艳超
申请(专利权)人:曙光信息产业北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术