一种分布式存储中协议使用缓存的方法及装置与流程

文档序号:12664059阅读:223来源:国知局

本发明涉及存储技术领域,尤其涉及一种分布式存储中协议使用缓存的方法,还涉及一种分布式存储中协议使用缓存的装置。



背景技术:

NFS-Ganesha协议处理读写数据请求时,准备缓存数据块,来接收或者发送数据,默认是从操作系统申请缓存块来承载数据,然后在回应客户端读写消息后,把读写准备的缓存块free掉。向操作系统频繁申请缓存,一是占用系统的CPU资源,因为要分配空间;二是容易使操作系统缓存碎片化,使操作系统缓存回收整理复杂,会占用CPU资源来整理回收,并且再次申请时,效率会变低,申请缓存块消耗的时间变长。

因此,对于本领域技术人员而言,如何优化缓存使用方式,降低CPU资源的消耗为亟需解决的技术问题。



技术实现要素:

基于背景技术存在的技术问题,本发明提出了一种分布式存储中协议使用缓存的方法,包括以下步骤:

申请虚拟空间作为缓存空间;

将缓存空间划分为多个缓存块;

根据申请缓存线程从缓存空间获取可用的缓存块;

缓存块使用后,释放交换给缓存空间。

优选地,还包括以下步骤:将多个缓存块创建形成多个队列,其中,每个队列设置至少一个指针并按顺序指向该队列的缓存块,且每个队列指针数相同;

根据申请缓存线程从队列头获取可用的缓存块,缓存块交换回缓存空间时放入队列的尾部。

优选地,申请缓存线程采用轮询机制循环队列来申请缓存块。

优选地,缓存块释放后交换给队列过程中,通过缓存指针偏移和整个缓存空间放入地址偏移之差,以及每个队列的长度,计算该缓存块属于哪个队列。

优选地,每个队列设置内部互斥锁。

优选地,缓存空间的大小为1MB的整数倍,缓存块的大小为1MB。

本发明中提供的分布式存储中协议使用缓存的方法,关键点在于预先申请整块缓存,并划分为多个缓存块形成内存池,处理数据请求时,从上述存储池中获取缓存块,从而避免从操作系统中申请缓存;进一步地,采用多队列形式循环利用缓存块,避免缓存碎片化,从而高效率且稳定的使用缓存;上述方法至少具有以下优点:

1、提前申请的缓存形成专用缓存,避免向操作系统频繁申请缓存,降低对系统CPU资源的占用;

2、通过采用多队列形式循环利用缓存块,避免缓存碎片化,提高缓存使用效率和稳定性。

本发明还提出了一种分布式存储中协议使用缓存的装置,包括:

缓存生成模块,用于申请虚拟空间作为缓存空间并将缓存空间划分为多个缓存块;

缓存分配模块,用于根据申请缓存线程从缓存空间中取用缓存块;

缓存整理模块,用于将释放的缓存块放入缓存空间中。

优选地,缓存生成模块包括:

缓存申请子模块,用于申请虚拟空间作为缓存空间,并将缓存空间切分为缓存块;

缓存队列生成子模块,用于将缓存块创建形成多个队列,并为每个队列分配数量相同的指针,且每个队列中的指针按顺序指向缓存块。

优选地,缓存分配模块包括:

缓存块取用子模块,用于根据申请缓存线程,采用轮询机制循环队列取用缓存块;

队列锁子模块,用于为每个队列设置队列内部互斥锁。

优选地,缓存整理模块包括:

队列择取子模块,用于根据缓存指针偏移和整个缓存空间放入地址偏移之差,以及每个队列的长度,计算缓存块属于哪个队列;

缓存块归还子模块,用于将释放的缓存块放入对应队列中。

本发明中提供的分布式存储中协议使用缓存的装置,其有益效果与上述分布式存储中协议使用缓存的方法基本类似,此处不再赘述。

附图说明

图1为本发明提出的一种分布式存储中协议使用缓存的方法中一种实施例的流程示意图。

具体实施方式

如图1所示,图1为本发明提出的一种分布式存储中协议使用缓存的方法中一种实施例的流程示意图。

下面结合附图和实施例对本发明进行详细的描述。

参考图1,本发明所公开的一种分布式存储中协议使用缓存的方法,包括以下步骤:

申请虚拟空间作为缓存空间;

将缓存空间划分为多个缓存块;

将多个缓存块创建形成多个队列,其中,每个队列设置至少一个指针并按顺序指向该队列的缓存块,且每个队列指针数相同,每个队列设置内部互斥锁;

根据申请缓存线程采用轮询机制循环从队列头获取可用的缓存块;

缓存块释放后交换给队列过程中,通过缓存指针偏移和整个缓存空间放入地址偏移之差,以及每个队列的长度,计算该缓存块属于哪个队列,并将释放的缓存块放入该队列的尾部。

申请缓存过程中,通过对每个队列设置内部互斥锁,防止并发申请,队列之间则允许并发申请,采用轮询机制,第一个申请缓存的线程按照index指向第一个队列,从队列头获取可用的缓存块返回,然后index++,此时再有第二个来申请缓存块的线程,则按照index向第二个队列申请;以此类推,循环队列来申请缓存块。

在上述实施例中,我们可以获知,通过提前申请的缓存形成专用缓存,可以避免向操作系统频繁申请缓存,降低对系统CPU资源的占用;通过采用多队列形式循环利用缓存块,避免缓存碎片化,提高缓存使用效率和稳定性。

本发明所公开的一种分布式存储中协议使用缓存的装置,包括:缓存生成模块、缓存分配模块和缓存整理模块;

其中,缓存生成模块包括:

缓存申请子模块,用于申请虚拟空间作为缓存空间,并将缓存空间切分为缓存块;

缓存队列生成子模块,用于将缓存块创建形成多个队列,并为每个队列分配数量相同的指针,且每个队列中的指针按顺序指向缓存块;

缓存分配模块包括:

缓存块取用子模块,用于根据申请缓存线程,采用轮询机制循环队列取用缓存块;

队列锁子模块,用于为每个队列设置队列内部互斥锁;

缓存整理模块包括:

队列择取子模块,用于根据缓存指针偏移和整个缓存空间放入地址偏移之差,以及每个队列的长度,计算缓存块属于哪个队列;

缓存块归还子模块,用于将释放的缓存块放入对应队列中。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

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