一种内存管理方法、装置、系统及计算机可读存储介质与流程

文档序号:15850858发布日期:2018-11-07 09:53阅读:133来源:国知局
一种内存管理方法、装置、系统及计算机可读存储介质与流程

本发明涉及存储领域,特别涉及一种内存管理方法、装置、系统及计算机可读存储介质。

背景技术

在数据呈现爆炸式增长的背景下,分布式集群存储具有容量和性能线性扩展的优势,在高性能、视频监控、广电媒资等多个场景广泛应用。

在现有技术中,内存管理采用的是单lru机制,只有一个缓存队列,并且常常使用lru算法淘汰缓存队列中的目录项,如此一来,只有在存在热点数据的时候,缓存命中率才较高,而一旦出现偶发性或周期性的操作时,则会造成内存污染,使得缓存命中率会随之降低。

因此,如何在兼容热点数据的前提下,减少偶发性操作造成的内存污染是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种内存管理方法、装置、系统及计算机可读存储介质,在兼容热点数据的前提下,能够减少偶发性操作造成的内存污染。

为了解决上述技术问题,本发明提供的一种内存管理方法,包括:

当访问数据时,判断与所述数据对应的目录项是否首次在内存中创建;

若是,则将所述目录项作为待淘汰目录项存入第一缓存队列的头部;

将缓存命中的所述待淘汰目录项作为目标目录项从所述第一缓存队列移至第二缓存队列的头部;

当缓存队列满时,淘汰处于所述第一缓存队列尾部的所述待淘汰目录项;

其中,所述缓存队列包括所述第一缓存队列和所述第二缓存队列,且所述第二缓存队列采用lru算法进行维护。

优选地,所述数据具体为元数据;

则对应的,所述内存具体为元数据内存。

优选地,所述第一缓存队列具体为bottom_lru队列,所述第二缓存队列具体为lru队列。

优选地,当所述第一缓存队列的容量为零时,还包括:

从所述第二缓存队列的尾部淘汰预设数目的所述目标目录项。

优选地,在所述淘汰处于所述第一缓存队列尾部的所述待淘汰目录项之前,还包括:

判断所述第二缓存队列的容量是否大于预设容量;

如果是,则淘汰处于所述第二缓存队列尾部的所述目标目录项;

如果否,则继续执行所述淘汰处于所述第一缓存队列尾部的所述待淘汰目录项的步骤。

优选地,在所述淘汰处于所述第一缓存队列尾部的所述待淘汰目录项之后,还包括:

判断所述第二缓存队列的容量是否大于预设容量;

如果是,则将处于所述第二缓存队列尾部的所述目标目录项作为所述待淘汰目录项移至所述第一缓存队列头部。

优选地,在所述淘汰处于所述第一缓存队列尾部的所述待淘汰目录项之前,还包括:

判断处于所述第一缓存队列尾部的所述待淘汰目录项从创建到当前时刻的时长是否小于处于所述第二缓存队列尾部的所述目标目录项从最后一次被命中到所述当前时刻的时长;

如果是,则淘汰处于所述第二缓存队列尾部的所述目标目录项;

如果否,则继续执行所述淘汰处于所述第一缓存队列尾部的所述待淘汰目录项的步骤。

为了解决上述技术问题,本发明提供的一种内存管理装置,包括:

判断模块,用于当访问数据时,判断与所述数据对应的目录项是否首次在内存中创建;

创建模块,用于当所述目录项首次在所述内存中创建时,将所述目录项作为待淘汰目录项存入第一缓存队列的头部;

移动模块,用于将缓存命中的所述待淘汰目录项作为目标目录项从所述第一缓存队列移至第二缓存队列的头部;

淘汰模块,用于当缓存队列满时,淘汰处于所述第一缓存队列尾部的所述待淘汰目录项;

其中,所述缓存队列包括所述第一缓存队列和所述第二缓存队列,且所述第二缓存队列采用lru算法进行维护。

为了解决上述技术问题,本发明提供的一种内存管理系统,包括:

存储器,用于存储内存管理程序;

处理器,用于在执行所述内存管理程序时实现如上述任一种内存管理方法的步骤。

为了解决上述技术问题,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有内存管理程序,所述内存管理程序被处理器执行时实现如上述任一种内存管理方法的步骤。

本发明提供的内存管理方法,在访问数据时,可以判断与数据对应的目录项是否首次在内存中创建,并通过将首次在内存中创建的目录项作为待淘汰目录项存入第一缓存队列,将缓存命中的待淘汰目录项作为目标目录项从第一缓存队列中移至第二缓存队列的头部,使热点数据对应的目录项存入第二缓存队列,而因偶发性操作导致访问的冷数据对应的目录项被隔离在第一缓存队列中。在缓存队列满的时候,通过优先淘汰处于第一缓存队列尾部的待淘汰目录项的方式,快速淘汰冷数据对应的目录项,从而能够减少因偶发性操作造成的内存污染。同时,第二缓存队列采用lru算法,依旧能够保证热点数据的缓存命中率。此外,本发明还提供了一种内存管理装置、系统及计算机可读存储介质,效果如上。

附图说明

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

图1为本发明实施例提供的一种内存管理方法的流程图;

图2为本发明实施例提供的一种内存管理装置的组成示意图;

图3为本发明实施例提供的一种内存管理系统的结构示意图。

具体实施方式

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

本发明的目的是提供一种内存管理方法、装置、系统及计算机可读存储介质,在兼容热点数据的前提下,能够减少偶发性操作造成的内存污染。

为了使本领域的技术人员更好的理解本发明技术方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为本发明实施例提供的一种内存管理方法的流程图。如图1所示,本实施例提供的内存管理方法包括:

s10:当访问数据时,判断与数据对应的目录项是否首次在内存中创建。

其中,与数据对应的目录项首次在内存中创建是指:在当前的第一缓存队列和当前的第二缓存队列中均未存有该目录项;第二缓存队列采用lru算法进行维护,当访问数据时,先在第二缓存队列中进行缓存命中,如果在第二缓存队列中无法命中,则再在第一缓存队列中进行缓存命中。

在步骤s10中,如果判断出与数据对应的目录项是首次在内存中创建,则进入步骤s11;如果判断出与数据对应的目录项不是首次在内存中创建,则对应与两种情况,第一种情况是与数据对应的目录项作为待淘汰目录项已经存入第一缓存队列中,第二种情况是与数据对应的目录项已经作为目标目录项已经存入第二缓存队列中。那么,对于第一种情况而言,则进入步骤s112即可,而对于第二种情况而言,则直接访问第二缓存队列中对应的目标目录项即可。

s11:将目录项作为待淘汰目录项存入第一缓存队列的头部。

对于首次在内存中创建的目录项而言,其可能是对应于热点数据,也可能是对应于冷数据,也就是说,首次在内存中创建的目录项可能是与因偶发性的、周期性的操作导致访问的冷数据对应的,该目录项在本次访问结束后,很可能在相对较长的一段时间内均不会被再次访问,如果直接将其存入采用lru算法的第二缓存队列中,与热点数据对应的目标目录项混合在一起,可能会降低热点数据的缓存命中率。因此,在步骤s11中,先将首次在内存中创建的目录项作为待淘汰目录项存入第一缓存队列的头部,如果在相对较短的一段时间内,第一缓存队列中的待淘汰目录项被再次命中,则说明该待淘汰目录项很大可能对应于热点数据,进入步骤s12;而如果在相对较长的一段时间内,第一缓存队列中的待淘汰目录项没有被再次命中,则说明该待淘汰目录项很可能对应于冷数据,将随着新存储待淘汰目录项的增多而逐渐被从第一缓存队列中淘汰。

s12:将缓存命中的待淘汰目录项作为目标目录项从第一缓存队列移至第二缓存队列的头部。

在待淘汰目录项从第一缓存队列中被淘汰之前,如果被再次缓存命中,则说明该待淘汰目录项很可能对应于热点数据,所以,将该待淘汰目录项作为目标目录项从第一缓存队列中移至第二缓存队列的头部,将其视为与热点数据对应的目录项,采用lru算法进行管理。

s13:当缓存队列满时,淘汰处于第一缓存队列尾部的待淘汰目录项。

其中,缓存队列包括第一缓存队列和第二缓存队列,缓存队列满是指第一缓存队列中待淘汰目录项的已存量和第二缓存队列中的目标目录项的已存量之和达到内存的可用容量上限。

相比于存储于第二缓存队列中的目标目录项而言,存储于第一缓存队列中的待淘汰目录项对应与冷数据的可能性更大,而处在第一缓存队列尾部的待淘汰目录项又为存入第一缓存队列中时间最长的待淘汰目录项,所以,与其它存储在第一缓存队列中的待淘汰目录项相比,其为冷数据的概率最大,因此,当缓存队列满的时候,优先淘汰处于第一缓存队尾部的待淘汰目录项。

另外,需要说明的是,在图1中虽然将步骤s10-s13依次顺序排列,但是,在具体实施中,各步骤之间的执行顺序取决于系统的具体运行情况,没有严格的先后之分。

综上所述,本实施例提供的内存管理方法,在访问数据时,可以判断与数据对应的目录项是否首次在内存中创建,并通过将首次在内存中创建的目录项作为待淘汰目录项存入第一缓存队列,将缓存命中的待淘汰目录项作为目标目录项从第一缓存队列中移至第二缓存队列的头部,使热点数据对应的目录项存入第二缓存队列,而因偶发性操作导致访问的冷数据对应的目录项被隔离在第一缓存队列中。在缓存队列满的时候,通过优先淘汰处于第一缓存队列尾部的待淘汰目录项的方式,快速淘汰冷数据对应的目录项,从而能够减少因偶发性操作造成的内存污染。同时,第二缓存队列采用lru算法,依旧能够保证热点数据的缓存命中率。

为了提升元数据内存管理效率,基于上述实施例,作为一种优选的实施方式,数据具体为元数据;则对应的,内存具体为元数据内存。

在本实施例中,数据具体为元数据,内存具体为元数据内存,也就是说,将本发明提供的内存管理方法应用于元数据内存管理,因此,本实施例提供的内存管理方法可以提升元数据内存管理效率,从而减少元数据内存污染、提高元数据内存的命中率和使用效率,侧面提升元数据的性能。

当然,可以理解的是,除了将本发明提供的内存管理方法应用于元数据内存管理外,还可以应用于其它模块内存管理,例如客户端缓存,本发明对此不做限定。

为了进一步提升内存管理方法的管理效率,基于上述实施例,作为一种优选的实施方式,第一缓存队列具体为bottom_lru队列,第二缓存队列具体为lru队列。

bottom_lru队列和lru队列均为元数据内存中常用的缓存队列,将bottom_lru队列作为第一缓存队列,将lru队列作为第二缓存队列更有利于管理效率的提升。

为了进一步提升内存管理方法的管理效率,基于上述实施例,作为一种优选的实施方式,当第一缓存队列的容量为零时,还包括:

从第二缓存队列的尾部淘汰预设数目的目标目录项。

其中,预设数目预先设置,其具体数值应根据内存的大小及实际使用情况灵活调节,本发明对此不作限定。

由于当缓存队列满时,优先淘汰的是处于第一缓存队列尾部的待淘汰目录项,所以,第二缓存队列中的目标目录项足够多时,第一缓存队列的容量将为零,如此,第一缓存队列便很难再起到隔离冷数据的作用,因此,在本实施例中,当第一缓存队列的容量为零时,则从第二缓存队列的尾部淘汰预设数据的目标目录项,以为第一缓存队列提供的一定容量。处于第二缓存队列的尾部的目标目录项相对于第二缓存队列中的其它目标目录项而言,其未被再次命中的时间稍长,很可能在当前时段处于第二缓存队列的尾部的目标目录项对应的数据已经成为了冷数据,所以,将处于第二缓存队列的尾部的预设数目的目标目录项淘汰掉以为第一缓存队列提供一定的容量,有利于增强第一缓存队列的隔离冷数据的作用。

为了进一步提升内存管理方法的管理效率,基于上述实施例,作为一种优选的实施方式,在淘汰处于第一缓存队列尾部的待淘汰目录项之前,还包括:

判断第二缓存队列的容量是否大于预设容量;

如果是,则淘汰处于第二缓存队列尾部的目标目录项;

如果否,则继续执行淘汰处于第一缓存队列尾部的待淘汰目录的步骤。

其中,预设容量预先设置,其具体数值应根据内存的大小及实际使用情况灵活调节,本发明对此不作限定。

由于当缓存队列满时,优先淘汰的是处于第一缓存队列尾部的待淘汰目录项,所以,如果不对第二缓存队列的容量上限加以设置,最终会导致第一缓存队列的容量为零,无法再起隔离冷数据的作用。再加上,考虑到第二缓存队列中的目标目录项的对应的数据不可能一直为热数据,因此,在本实施例中,通过设置预设容量来限制第二缓存队列的容量,使得第一缓存队列的容量不至于会逐渐缩减为零,能够一直起到隔离冷数据的作用。具体地,在第二缓存队列的容量不大于预设容量之前,如果缓存队列满,则优先淘汰处于第一缓存队列尾部的待淘汰目录项,而在第二缓存队列的容量大于预设容量之后,则优先淘汰处于第二缓存队列尾部的目标目录项,在将处于第二缓存队列尾部的目标目录项淘汰之后,缓存队列便处于未满状态,从而无需再淘汰处于第一缓存队列尾部的待淘汰目录项,达到为第一缓存队列保持一定的容量的目的,有利用提升内存管理方法的管理效率。

为了进一步提升内存管理方法的管理效率,基于上述实施例,作为一种优选的实施方式,在淘汰处于第一缓存队列尾部的待淘汰目录项之后,还包括:

判断第二缓存队列的容量是否大于预设容量;

如果是,则将处于第二缓存队列尾部的目标目录项作为待淘汰目录项移至第一缓存队列头部。

其中,预设容量预先设置,其具体数值应根据内存的大小及实际使用情况灵活调节,本发明对此不作限定。

由于当缓存队列满时,优先淘汰的是处于第一缓存队列尾部的待淘汰目录项,所以,如果不对第二缓存队列的容量上限加以设置,最终会导致第一缓存队列的容量为零,无法再起隔离冷数据的作用。再加上,考虑到第二缓存队列中的目标目录项的对应的数据不可能一直为热数据,因此,在本实施例中,通过设置预设容量来限制第二缓存队列的容量,使得第一缓存队列的容量不至于会逐渐缩减为零,能够一直起到隔离冷数据的作用。具体地,在淘汰处于第一缓存队列尾部的待淘汰目录项之后,如果第二缓存队列的容量大于预设容量则将处于第二缓存队列尾部的目标目录项作为待淘汰目录项移至第一缓存队列头部,而如果第二缓存队列的容量不大于预设容量,则在淘汰处于第一缓存队列尾部的待淘汰目录项之后,无需对缓存队列作出其它调整。

可见,处于第二缓存队列尾部的目标目录项对应的数据虽然相对于第二缓存队列中的其它目录项对应的数据而言,其为冷数据的可能性更大,但是其相对于处于第一缓存队列尾部的待淘汰目录项对应的数据而言,其为热点数据的可能性更大,所以,将处于第一缓存队列尾部的待淘汰目录项淘汰之后,将处于第二缓存队列尾部的目标目录项再移至第一缓存队列的头部,既能够保留热点数据可能性更大的目录项不被删除,又能保持第一缓存队列的容量,有利于进一步提升内存管理方法的管理效率。

优先淘汰处于第二缓存队列尾部的目标目录项,在将处于第二缓存队列尾部的目标目录项淘汰之后,缓存队列便处于未满状态,从而为第一缓存队列能够保持了一定的容量,有利用提升内存管理方法的管理效率。

为了进一步提升内存管理方法的管理效率,基于上述实施例,作为一种优选的实施方式,在淘汰处于第一缓存队列尾部的待淘汰目录项之前,还包括:

判断处于第一缓存队列尾部的待淘汰目录项从创建到当前时刻的时长是否小于处于第二缓存队列尾部的目标目录项从最后一次被命中到当前时刻的时长;

如果是,则淘汰处于第二缓存队列尾部的目标目录项;

如果否,则继续执行淘汰处于第一缓存队列尾部的待淘汰目录项的步骤。

如果处于第一缓存队列尾部的待淘汰目录项从创建到当前时刻的时长小于处于第二缓存队列尾部的目标目录项从最后一次被命中到当前时刻的时长,则说明处于第一缓存队列尾部的待淘汰目录项对应的数据相对于处于第二缓存队列尾部的目标目录项对应的数据,其更可能为热点数据,所以,在淘汰处于第一缓存队列尾部的待淘汰目录项之前,先淘汰处于第二缓存队列尾部的目标目录项,在淘汰完处于第二缓存队列尾部的目标目录项之后,缓存队列处于未满状态,则无需再淘汰处于第一缓存队列尾部的待淘汰目录项;而如果处于第一缓存队列尾部的待淘汰目录项从创建到当前时刻的时长不小于处于第二缓存队列尾部的目标目录项从最后一次被命中到当前时刻的时长,则说明处于第二缓存队列尾部的目标目录项对应的数据相对于处于第一缓存队列尾部的待淘汰目录项对应的数据,其更可能为热点数据,所以,继续执行淘汰处于第一缓存队列尾部的待淘汰目录项的步骤。可见,应用本实施例提供的内存管理方法,总能够淘汰缓存队列中与相对较冷的数据对应的目录项,从而能够进一步提升内存管理方法的管理效率。

上文对于本发明提供的一种内存管理方法的实施例进行了详细的描述,本发明还提供了一种与内存管理方法对应的内存管理装置,由于装置部分的实施例与方法部分的实施例相互照应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

图2为本发明实施例提供的一种内存管理装置的组成示意图。如图2所示,本实施例提供的一种内存管理装置包括:

判断模块20,用于当访问数据时,判断与数据对应的目录项是否首次在内存中创建;

创建模块21,用于当目录项首次在内存中创建时,将目录项作为待淘汰目录项存入第一缓存队列的头部;

移动模块22,用于将缓存命中的待淘汰目录项作为目标目录项从第一缓存队列移至第二缓存队列的头部;

淘汰模块23,用于当缓存队列满时,淘汰处于第一缓存队列尾部的待淘汰目录项;

其中,缓存队列包括第一缓存队列和第二缓存队列,且第二缓存队列采用lru算法进行维护。

可见,本实施例提供的内存管理装置,在访问数据时,判断模块可以判断与数据对应的目录项是否首次在内存中创建,并通过创建模块将首次在内存中创建的目录项作为待淘汰目录项存入第一缓存队列,移动模块将缓存命中的待淘汰目录项作为目标目录项从第一缓存队列中移至第二缓存队列的头部,使热点数据对应的目录项存入第二缓存队列,而因偶发性操作导致访问的冷数据对应的目录项被隔离在第一缓存队列中。在缓存队列满的时候,通过淘汰模块优先淘汰处于第一缓存队列尾部的待淘汰目录项的方式,快速淘汰冷数据对应的目录项,从而能够减少因偶发性操作造成的内存污染。同时,第二缓存队列采用lru算法,依旧能够保证热点数据的缓存命中率。

上文对于本发明提供的一种内存管理方法的实施例进行了详细的描述,本发明还提供了一种与内存管理方法对应的内存管理系统,由于系统部分的实施例与方法部分的实施例相互照应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

图3为本发明实施例提供的一种内存管理系统的结构示意图。如图3所示,本实施例提供内存管理系统包括:

存储器30,用于存储内存管理程序;

处理器31,用于在执行内存管理程序时实现如上述任一实施例提供的内存管理方法的步骤。

本实施例提供的内存管理系统,由于可以通过处理器调用存储器存储的管理程序,实现如上述任一实施例提供的内存管理方法的步骤,所以本系统具有同上述内存管理方法同样的实际效果。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有内存管理程序,内存管理程序被处理器执行时实现如上述任一实施例提供的内存管理方法的步骤。

本实施例提供的计算机可读存储介质存储有管理程序,由于管理程序被处理器执行时可以实现如上述任一实施例提供的内存管理方法的步骤,所以本计算机可读存储介质具有同上述内存管理方法同样的实际效果。

以上对本发明所提供的一种内存管理方法、装置、系统及计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明都是与其它实施例的不同之处,各个实施例之间相同相似部分互相参见即可。

应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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

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