一种基于持久性内存文件系统的IO调度方法及装置与流程

文档序号:16246132发布日期:2018-12-11 23:36阅读:139来源:国知局
一种基于持久性内存文件系统的IO调度方法及装置与流程

本申请涉及数据存储技术领域,具体涉及一种基于持久性内存文件系统的io调度方法及装置。

背景技术

随着当今社会科技的发展,处理器和存储器之间性能差距越来越大,特别是处理器和外存之间的巨大差距使得io瓶颈问题日益突出。

目前缓解io瓶颈的方式是在内存中设置磁盘文件cache,从而减少访问外存的次数。但随着大数据时代的到来,数据爆炸式的增长对内存容量的需求越来越大,传统的通过增加cache容量带来的效益反而会减少,而且在内外存之间频繁交换数据会产生较大的开销,基于此,新型非易失性存储介质逐渐出现在人们的视野中,它可字节寻址和非易失的特性使得数据在内存级就可以持久化存储,并且其存储速度快、存储数据不易丢失,从而可将新型非易失性存储介质作为内存,形成持久化内存文件系统,取代传统的内外存并存的方式,将其作为唯一的存储介质实现持久化数据存储。

因此,如何利用更先进的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子队列包插入所述相似操作队列中。

在一种可选的实现方式中,所述内存为新型非易失性存储介质。

在本申请提供的基于持久性内存文件系统的io调度方法中,在接收到至少一个io请求后,先将该io请求插入到离散操作队列中,再判断该io请求与相似操作队列中的io子队列是否相关,其中,离散操作队列和相似操作队列均属于等待处理队列,若该io请求与相似操作队列中的io子队列相关,则将其作为子队列插入相似操作队列中,进而可根据查找的相似操作队列,执行io调度,接着,再根据查找的离散操作队列,执行io调度。可见,本申请在接收到io请求后,不再立即进行io调度,而是将相关联的io请求进行整合后作为子队列插入到相似队列中,进而通过查找相似操作队列,再执行io调度,从而实现了智能负载io调度,减少了网络通信次数和器件擦写次数,降低了时延,也提高了性能。

附图说明

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

图1为本申请实施例提供的一种基于持久性内存文件系统的io调度方法的流程图;

图2为本申请实施例提供的根据查找的相似操作队列执行io调度的流程图;

图3为本申请实施例提供的一种基于持久性内存文件系统的io调度装置的结构示意图。

具体实施方式

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

为了便于理解本申请提供的技术方案,下面先对本申请技术方案的研究背景进行简单说明。

众所周知,正如背景技术中的描述,目前随着科技的发展,处理器和存储器之间性能差距越来越大,特别是处理器和外存之间的巨大差距使得io瓶颈问题日益突出,如果还是通过传统的在内存中设置磁盘文件cache来缓解io瓶颈的方式,将无法满足数据爆炸式的增长对内存容量的需求,并且,随着工业技术的进步,新型非易失性存储介质逐渐出现在人们的视野中,它可字节寻址和非易失的特性使得数据在内存级就可以持久化存储。新型非易失存储器件的高密度、读写速度越来越接近传统的动态随机存取存储器(dynamicrandomaccessmemory,简称dram)以及掉电数据不会丢失的特性使得人们将其作为内存的替代品甚至的下一代存储设备的首选。在此基础上,如何利用更先进的io调度方法取代传统的调度方式,实现基于持久性内存文件系统的智能io调度,从而协调中央处理器(centralprocessingunit,简称cpu)的计算开销以及新型非易失存储介质作为内存时的开销平衡,进而有效缓解io瓶颈,已成为亟待解决的问题。

基于此,本申请提出了一种基于持久性内存文件系统的io调度方法及装置,用于实现基于持久性内存文件系统的智能io调度。

以下将结合附图对本申请实施例提供的基于持久性内存文件系统的io调度方法进行详细说明。参见图1,其示出了本申请实施例提供的一种基于持久性内存文件系统的io调度方法的流程图,本实施例可以包括以下步骤:

s101:接收至少一个io请求。

在本实施例中,随着人们越来越多的将新型非易失性存储介质作为内存,形成了持久化内存文件系统,为了协调cpu的计算开销以及新型非易失存储介质作为内存时的开销平衡,进而有效缓解io瓶颈,在接收到至少一个io请求后,可以通过后续步骤实现对接收的io请求的智能调度。

s102:将io请求插入离散操作队列后,判断该io请求与相似操作队列中的io子队列是否相关,其中,离散操作队列和相似操作队列属于等待处理队列。

在本实施例中,为了实现智能io调度,一种可选的实现方式是,预先设置等待处理队列,该等待处理队列包含相似操作队列和离散操作队列,其中,相似操作队列是由io子队列组成,离散操作队列是由io请求组成。

在本实现方式中,为了实现基于语义分析的智能io调度,以达到操作的聚合处理,首先在对io请求指令处理之前,需要预先设置多个等待处理队列,其中,等待处理队列可以包括由io子队列组成的相似操作队列以及由io请求组成的离散操作队列,在初始情况下,相似操作队列为空,当通过步骤s201接收到至少一个io请求后,可将其插入离散操作队列中,然后在基于语义分析,找出相关联的io请求,进行聚合处理,以便在进行多线程操作时,可以将相似的io操作请求,例如对同一个文件的操作、对同一个目录下的多个操作等聚合成一个大的i/o子队列包,插入相似操作队列,比如,假设接收到的三条io请求分别为“读取a的前50个字节”、“读取a的后20个字节”以及“修改a中的第80个字节”,则从语义上分析可得出这三个io操作请求是对同一文件的操作,是可以进行聚合处理的,即可以将三者聚合成一个大的i/o子队列包,插入到相似操作队列中。

进而后续再通过步骤s201接收到io请求后,可以判断该io请求与相似操作队列中的io子队列是否相关,具体的,可以通过现有的语义分析的方法,计算出该io请求是是否和相似操作队列中每个io子队列包中每个子队列有关联关系。如果有,这可继续执行步骤s103。

s103:如果是,则将io请求作为子队列插入相似操作队列中。

在本实施例中,若通过步骤s102判断出接收到的io请求与相似操作队列中的io子队列是相关的,则可以将该io请求作为子队列插入到相似操作队列中的相应的io子队列包中。

举例说明:在上述示例的基础上,假设在相似操作队列中,存在由三条io请求“读取a的前50个字节”、“读取a的后20个字节”以及“修改a中的第80个字节”组成一个i/o子队列包,此时,若通过步骤s102接收到一条io请求为“读取a的第60至70个字节”,则通过语义分析,可以得出该io请求与相似操作队列中的io子队列“读取a的前50个字节”、“对去a的后20个字节”以及“修改a中的第80个字节”是相关的,进而可以将该io请求作为子队列插入到相似操作队列中的上述io子队列包中,使得该io子队列包包含有四个i/o子队列(即,上述四条io请求)。

需要说明的是,在本申请一些可能的实现方式中,如果在步骤s102中,判断出接收到的io请求与相似操作队列中的io子队列无关,则进一步,可以判断该io请求与离散操作队列中的其他io请求是否相关,如果相关,则可以根据io请求与离散操作队列中的其他与其相关的io请求,新建一个io子队列包插入相似操作队列中。

在本实现方式中,如果判断出接收到的io请求与相似操作队列中的io子队列无关,则不能将其直接作为子队列插入相似操作队列中,而是需要再判断该io请求与离散操作队列中的其他io请求是否相关,比如,同样可以通过语义分析的方式进行判断,例如,假设该io请求与离散操作队列中的io请求b在语义上是相关的,则可以将io请求与io请求b进行整合,构建一个io子队列包,二者分别作为该包中的子队列,并将该io子队列包插入相似操作队列中,以便利用后续步骤实现io请求的调度。

需要说明的是,若判断出该io请求与离散操作队列中的其他io请求也是不相关的,则将其保留在离散操作队列中,以便后续通过步骤s105进行调度。

s104:根据查找的相似操作队列,执行io调度。

在实际应用中,通过步骤s103将接收到的io请求作为子队列插入相似操作队列后,可以在执行多线程操作时,通过查找所有相似操作队列,执行其中对应的io调度。

在本申请一些可能的实现方式中,如图2所示,本步骤s104具体可以包括步骤s201-s203:

步骤s201:查找等待处理队列中的相似操作队列。

在本实现方式中,通过s103形成了相似操作队列中的所有io子队列后,可以通过查找等待处理队列中的所有的相似操作队列,进行后续步骤s202。

步骤s202:判断相似操作队列中是否包含有至少一个子队列包,其中,子队列包是由至少两个相关的子队列组成。

通过步骤s201查找到等待处理队列中的所有的相似操作队列后,进一步可以判断出相似操作队列中是否包含有至少一个子队列包,如果包含,则可以继续执行步骤s203。

步骤s203:如果是,则根据相似操作队列中包含的子队列包,按包执行io调度。

在本实现方式中,如果通过步骤s202判断出相似操作队列中包含有至少一个子队列包,则可以将这些子队列包按包进行io调度,比如,可以按包进行io请求的发送等。例如,客户端在接收到多个io请求后,可以通过上述步骤形成多个子队列包插入相似操作队列中,在将这些子队列包按包一次发送给服务器端,一次发送一个子队列包(其中包含多个ip请求),直至将相似操作队列中的所有子队列包均发送给服务器端,从而实现了智能负载io调度,减少了网络通信次数和器件擦写次数,降低了时延,也提高了性能。同理,服务器端在接收到客户端发送的多个io请求后,也可以通过上述步骤实现对io请求的重新整合,在以新型非易失性存储介质作为内存的基础上,可以实现更快速度的集中处理,具体过程可参见上述步骤,本申请在此不再赘述。

s105:根据查找的离散操作队列,执行io调度。

在本实施例中,若通过上述步骤实现对相似操作队列的智能io调度后,仍存在与离散操作队列中的其他io请求不相关的io请求,则可以将其保留在离散操作队列中,进而可以通过查找离散操作队列,执行对这些io请求的调度。

需要说明的是,在本申请一些可能的实现方式中,系统内存为新型非易失性存储介质。

具体来讲,新型非易失性存储介质可以为存储器内存(storageclassmemory,简称scm)、非易失存储器(nonvolatilememory,简称nvm)中的至少一种。

这样,在本申请提供的基于持久性内存文件系统的io调度方法中,在接收到至少一个io请求后,先将该io请求插入到离散操作队列中,再判断该io请求与相似操作队列中的io子队列是否相关,其中,离散操作队列和相似操作队列均属于等待处理队列,若该io请求与相似操作队列中的io子队列相关,则将其作为子队列插入相似操作队列中,进而可根据查找的相似操作队列,执行io调度,接着,再根据查找的离散操作队列,执行io调度。可见,本申请在接收到io请求后,不再立即进行io调度,而是将相关联的io请求进行整合后作为子队列插入到相似队列中,进而通过查找相似操作队列,再执行io调度,从而实现了智能负载io调度,减少了网络通信次数和器件擦写次数,降低了时延,也提高了性能。

基于以上基于持久性内存文件系统的io调度方法,本申请还提供了一种基于持久性内存文件系统的io调度装置,所述装置包括:

接收单元301,用于接收至少一个io请求;

第一判断单元302,用于将所述io请求插入离散操作队列后,判断所述io请求与相似操作队列中的io子队列是否相关,所述离散操作队列和所述相似操作队列属于等待处理队列;

插入单元303,用于如果io请求与相似操作队列中的io子队列相关,则将所述io请求作为子队列插入所述相似操作队列中;

第一调度单元304,用于根据查找的所述相似操作队列,执行io调度;

第二调度单元305,用于根据查找的所述离散队操作列,执行io调度。

可选地,所述装置还包括:

设置单元,用于预先设置等待处理队列,所述等待处理队列包含相似操作队列和离散操作队列;

其中,所述相似操作队列是由io子队列组成,所述离散操作队列是io请求组成。

可选地,所述第一调度单元304包括:

查找子单元,用于查找所述等待处理队列中的相似操作队列;

第一判断子单元,用于判断所述相似操作队列中是否包含有至少一个子对列包,所述子对列包是由至少两个相关的子队列组成;

第一调度子单元,用于如果相似操作队列中是包含有至少一个子对列包,则根据所述相似操作队列中包含的子对列包,按包执行io调度。

可选地,如果所述io请求与所述相似操作队列中的io子队列无关,所述装置还包括:

第二判断单元,用于判断所述io请求与所述离散操作队列中的其他io请求是否相关;

新建单元,用于如果所述io请求与所述离散操作队列中的其他io请求是相关的,则根据所述io请求与所述离散操作队列中的其他相关的io请求,新建一个io子队列包插入所述相似操作队列中。

可选地,所述内存为新型非易失性存储介质。

这样,在本申请提供的基于持久性内存文件系统的io调度装置中,在接收到至少一个io请求后,先将该io请求插入到离散操作队列中,再判断该io请求与相似操作队列中的io子队列是否相关,其中,离散操作队列和相似操作队列均属于等待处理队列,若该io请求与相似操作队列中的io子队列相关,则将其作为子队列插入相似操作队列中,进而可根据查找的相似操作队列,执行io调度,接着,再根据查找的离散操作队列,执行io调度。可见,本申请在接收到io请求后,不再立即进行io调度,而是将相关联的io请求进行整合后作为子队列插入到相似队列中,进而通过查找相似操作队列,再执行io调度,从而实现了智能负载io调度,减少了网络通信次数和器件擦写次数,降低了时延,也提高了性能。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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