一种缓存空间清理方法及装置制造方法及图纸

技术编号:22218654 阅读:22 留言:0更新日期:2019-09-30 01:08
在文件缓存中,如何提升缓存空间的利用率一直是一个大的研究热点,本发明专利技术提供了一种自动清理缓存中低访问频率的文件的方法,智能的根据文件的访问频率,删除访问率很低下的文件,并且结合传统的空间阈值设置方法进一步的改进了清理缓存空间的效率,使得缓存中的文件能够优胜劣汰,快速的清除掉缓存中不常用的文件,有效的提高了缓存空间的利用率及其访问速度,可以在文件缓存中大大的提升缓存空间的利用率。

A Cache Cleaning Method and Device

【技术实现步骤摘要】
一种缓存空间清理方法及装置
本公开涉及文件缓存领域,具体涉及一种缓存空间清理方法及装置。
技术介绍
在文件缓存中,如何提升缓存空间的利用率一直是一个大的研究点,随着云计算的存储网络的发展,在其文件缓存中,在现有的文件缓存清理技术中,存在以下2个方面的问题:一、依靠硬件成本较高的大硬件构建存储服务器以提高缓存速度,加快缓存访问速度;二、直接设置一个容量大小的阈值,到达该阈值则删除部分缓存中先到的文件。在文件缓存中,针对比较实际的第二个方面,如何提升文件访问的命中率一直是一个热点的研究课题,也是本公开所要解决的问题,本专利技术提供了一种自动清理缓存中低访问频率的文件的方法,可以在文件缓存中大大的提升缓存空间的利用率。
技术实现思路
本公开提供一种缓存空间清理方法及装置,智能的根据文件的访问频率,删除访问率很低下的文件,并且结合传统的空间阈值设置方法进一步的改进了清理缓存空间的效率,使得缓存中的文件能够优胜劣汰,快速的清除掉缓存中不常用的文件,可以在文件缓存提升缓存空间的利用率。为了实现上述目的,根据本公开的一方面,提供一种缓存空间清理方法,所述方法包括以下步骤:初始化冷点文件双向链表,所述冷点文件双向链表为多个冷点文件信息记录结构体构成的双向链表,以下冷点文件信息记录结构体称为结构体,结构体即链表节点,结构体包含四个成员,分别第一成员、第二成员、第三成员和第四成员,所述第一成员为缓存文件指针,第一成员初始值为空,所述第二成员为缓存文件的访问频率数值,第二成员为正整数且初始值为0,所述第三成员为前向指针,第三成员初始值为空,所述第四成员为后向指针,第四成员初始值为空,多个的意义为大于或等于一个,所述结构体通过第三成员和第四成员进行连接前驱结点和后继结点连接形成一个双向链表,即第三成员和第四成员分别指向其他的链表节点,所述前驱结点为前向指针连接的相邻结构体,所述后继结点为后向指针连接的相邻结构体。将缓存中的每个文件对应生成一个结构体,将所有的结构体作为链表节点依次连接到双向链表,双向链表的链表节点与缓存中文件的一一对应,每个链表节点的第一成员即缓存文件指针指向各自对应的文件。步骤1,获取文件缓存中所有缓存文件的访问频率存储到冷点双向链表的结构体第二成员中,即缓存文件的访问频率数值中;步骤2,遍历冷点文件双向链表,寻找访问频率小于冷点阈值的双向链表的链表节点;步骤3,删除访问频率小于冷点阈值的链表节点指向的缓存文件和链表节点,更新冷点文件双向链表;步骤4,如果缓存的可用空间小于或者等于可用空间阈值,则判断冷点文件双向链表的长度是否小于最大冷点文件记录阈值的50%,如果小于最大冷点文件记录阈值的50%则更新结束,如果大于或等于最大冷点文件记录阈值的50%,转到步骤1;步骤5,如果缓存的可用空间大于可用空间阈值,则清理结束。进一步地,在步骤1中,所述获取文件缓存中所有缓存文件的访问频率包括以下子步骤:步骤1.1,设立一个Hashmap用于存储文件访问频率的统计数据;步骤1.2,每个文件在Hashmap中以文件的访问路径作为键值分配一个独立的内存空间,Hashmap中为每个文件分配一个独立的内存空间;步骤1.3,在给每个文件分配的内存空间中建立一个环形链表,用于存放文件访问的时间戳;步骤1.4,将环形链表的时间戳全部设定为当前时间,所述时间戳能够设置为当前时间,可人工调整时间,对时间不做限制;步骤1.5,在文件缓存进行初始化的时候,在inode中加入一个最后访问时间戳指针,用于存放形链表最新插入的时间戳所在的链表节点的指针,所述inode,即索引节点,为储存文件管理信息的区域,每个inode的编号对应一个文件名,每一个文件都有对应的inode,inode中不仅仅存储着指针,还存储着缓存文件的权限、属主、属组和大小,inode对于文件为对应的,但是有时可以共享一个inode,通过多个文件指向同一个inode,实现了借助不同的方式访问到同一个文件内容,这就是硬链接。inode包含文件的管理信息,具体有以下内容:文件的字节数、文件拥有者的UserID、文件的GroupID、文件的读、写、执行权限、文件的时间戳(文件的时间戳共有三个:ctime指inode上一次变动的时间,time指文件内容上一次变动的时间,atime指文件上一次打开的时间)、链接数,即有多少文件名指向这个inode、文件数据block的位置。每个inode节点的大小,为128字节或256字节。inode节点的总数,在格式化时就给定,为每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inodetable的大小就会达到128MB,占整块硬盘的12.8%;步骤1.6,当发生文件访问的时候,时间戳插入到环形链表的当前时间戳的前一个链表节点中,并将inode中最新时间戳指针指向该链表节点;步骤1.7,在文件缓存的ioctl中加入文件访问频率查询的分支,ioctl是设备驱动程序中对设备的I/O通道进行管理的函数,所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的参数个数如下:intioctl(intfd,intcmd,…);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,为最多一个,有或没有是和cmd的意义相关的。ioctl函数是文件结构中的一个属性分量,就是说如果你的驱动程序提供了对ioctl的支持,用户就能在用户程序中使用ioctl函数控制设备的I/O通道;步骤1.8,调用ioctl的方法获取访问频率元数据:从inode中获取到最新时间戳指针,并获取到该指针所指向的环形链表的下一个数据节点,从数据节点中获取到其中记录的时间戳,因为环形链表,所以该时间戳是环形链表中最早的一次访问的时间戳,即获取到的时间戳,访问频率的计算公式为:链表长度为的环形链表的链表长度,即环形链表所有的链表节点个数。进一步地,在步骤2中,所述冷点文件双向链表为多个冷点文件信息记录结构体构成的双向链表,以下冷点文件信息记录结构体称为结构体,结构体即链表节点,结构体包含四个成员,分别第一成员、第二成员、第三成员和第四成员,所述第一成员为缓存文件指针,第一成员初始值为空,所述第二成员为缓存文件的访问频率数值,第二成员为正整数且初始值为0,所述第三成员为前向指针,第三成员初始值为空,所述第四成员为后向指针,第四成员初始值为空,多个的意义为大于或等于一个,所述结构体通过第三成员和第四成员进行连接前驱结点和后继结点连接形成一个双向链表,即第三成员和第四成员分别指向其他的链表节点,所述前驱结点为前向指针连接的相邻结构体,所述后继结点为后向指针连接的相邻结构体。进一步地,在步骤2中,所述冷点阈值为N次,N默认值为45,N为正整数且可人工设置,所述冷点文件为双向链表的第二成员,即缓存文件的访问频率的数值。进一步地,在步骤3中,更新冷点文件双向链表,冷点文件双向链表以下称为冷点链表的方法为;步骤3.1,如果不存在冷点链表则设立一个冷点文件信息记录结构体,以下冷点文件信息记录结构体称为结本文档来自技高网...

【技术保护点】
1.一种缓存空间清理方法,其特征在于,所述方法包括以下步骤:步骤1,获取文件缓存中所有缓存文件的访问频率存储到冷点双向链表的结构体第二成员中,即缓存文件的访问频率数值中;步骤2,遍历冷点文件双向链表,寻找访问频率小于冷点阈值的双向链表的链表节点;步骤3,删除访问频率小于冷点阈值的链表节点指向的缓存文件和链表节点,更新冷点文件双向链表;步骤4,如果缓存的可用空间小于或者等于可用空间阈值,则判断冷点文件双向链表的长度是否小于最大冷点文件记录阈值的50%,如果小于最大冷点文件记录阈值的50%则更新结束,如果大于或等于最大冷点文件记录阈值的50%,转到步骤1;步骤5,如果缓存的可用空间大于可用空间阈值,则清理结束。

【技术特征摘要】
1.一种缓存空间清理方法,其特征在于,所述方法包括以下步骤:步骤1,获取文件缓存中所有缓存文件的访问频率存储到冷点双向链表的结构体第二成员中,即缓存文件的访问频率数值中;步骤2,遍历冷点文件双向链表,寻找访问频率小于冷点阈值的双向链表的链表节点;步骤3,删除访问频率小于冷点阈值的链表节点指向的缓存文件和链表节点,更新冷点文件双向链表;步骤4,如果缓存的可用空间小于或者等于可用空间阈值,则判断冷点文件双向链表的长度是否小于最大冷点文件记录阈值的50%,如果小于最大冷点文件记录阈值的50%则更新结束,如果大于或等于最大冷点文件记录阈值的50%,转到步骤1;步骤5,如果缓存的可用空间大于可用空间阈值,则清理结束。2.根据权利要求1所述的一种缓存空间清理方法,其特征在于,在步骤1中,所述获取文件缓存中所有缓存文件的访问频率包括以下子步骤:步骤1.1,设立一个Hashmap用于存储文件访问频率的统计数据;步骤1.2,每个文件在Hashmap中以文件的访问路径作为键值分配一个独立的内存空间,Hashmap中为每个文件分配一个独立的内存空间;步骤1.3,在给每个文件分配的内存空间中建立一个环形链表,用于存放文件访问的时间戳;步骤1.4,将环形链表的时间戳全部设定为当前时间,所述时间戳能够设置为当前时间,可人工调整时间,对时间不做限制;步骤1.5,在文件缓存进行初始化的时候,在inode中加入一个最后访问时间戳指针,用于存放形链表最新插入的时间戳所在的链表节点的指针,所述inode,即索引节点,为储存文件管理信息的区域,每个inode的编号对应一个文件名,每一个文件都有对应的inode,inode中存储着指针和缓存文件的权限、属主、属组和大小,inode对于文件为对应的,但是有时可以共享一个inode,通过多个文件指向同一个inode,实现了借助不同的方式访问到同一个文件内容,inode包含文件的管理信息,具体有以下内容:文件的字节数、文件拥有者的UserID、文件的GroupID、文件的读、写、执行权限、文件的时间戳、链接数,即有多少文件名指向这个inode、文件数据block的位置,每个inode节点的大小,为128字节或256字节,inode节点的总数,在格式化时就给定,为每1KB或每2KB就设置一个inode;步骤1.6,当发生文件访问的时候,时间戳插入到环形链表的当前时间戳的前一个链表节点中,并将inode中最新时间戳指针指向该链表节点;步骤1.7,在文件缓存的ioctl中加入文件访问频率查询的分支,ioctl是设备驱动程序中对设备的I/O通道进行管理的函数,所谓对I/O通道进行管理,就是对设备的一些特性进行控制,其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,为最多一个,有或没有是和cmd的意义相关的;ioctl函数是文件结构中的一个属性分量;步骤1.8,调用ioctl的方法获取访问频率元数据:从inode中获取到最新时间戳指针,并获取到该指针所指向的环形链表的下一个数据节点,从数据节点中获取到其中记录的时间戳,因为环形链表,所以该时间戳是环形链表中最早的一次访问的时间戳,即获取到的时间戳,访问频率的计算公式为:链表长度为的环形链表的链表长度,即环形链表所有的链表节点个数。3.根据权利要求2所述的一种缓存空间清理方法,其特征在于,在步骤2中,所述冷点文件双向链表为多个冷点文件信息记录结构体构成的双向链表,以下冷点文件信息记录结构体称为结构体,结构体即链表节点,结构体包含四个成员,分别第一成员、第二成员、第三成员和第四成员,所述第一成员为缓存文件指针,第一成员初始值为空,所述第二成员为缓存文件的访问频率数值,第二成员为正整数且初始值为0,所述第三成员为前向指针,第三成员初始值为空,所述第四成员为后向指针,第四成员初始值为空,多个的意义为大于或等于一个,所述结构体通过第三成员和第四成员进行连接前驱结点和后继结点连接形成一个双向链表,即第三成员和第四成员分别指向其他的链表节点,所述前驱结点为前向指针连接的相邻结构体,所述后继结点为后向指针连接的相邻结构体。4.根据权利要求3所述的一种缓存空间清理...

【专利技术属性】
技术研发人员:刘杰霍键聪史伟胡新勇
申请(专利权)人:广东睿江云计算股份有限公司
类型:发明
国别省市:广东,44

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

1