CN110287160B - 一种缓存空间清理方法及装置 - Google Patents
一种缓存空间清理方法及装置 Download PDFInfo
- Publication number
- CN110287160B CN110287160B CN201910466801.XA CN201910466801A CN110287160B CN 110287160 B CN110287160 B CN 110287160B CN 201910466801 A CN201910466801 A CN 201910466801A CN 110287160 B CN110287160 B CN 110287160B
- Authority
- CN
- China
- Prior art keywords
- file
- linked list
- pointer
- cache
- access frequency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在文件缓存中,如何提升缓存空间的利用率一直是一个大的研究热点,本发明提供了一种自动清理缓存中低访问频率的文件的方法,智能的根据文件的访问频率,删除访问率很低下的文件,并且结合传统的空间阈值设置方法进一步的改进了清理缓存空间的效率,使得缓存中的文件能够优胜劣汰,快速的清除掉缓存中不常用的文件,有效的提高了缓存空间的利用率及其访问速度,可以在文件缓存中大大的提升缓存空间的利用率。
Description
技术领域
本公开涉及文件缓存领域,具体涉及一种缓存空间清理方法及装置。
背景技术
在文件缓存中,如何提升缓存空间的利用率一直是一个大的研究点,随着云计算的存储网络的发展,在其文件缓存中,在现有的文件缓存清理技术中,存在以下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包含文件的管理信息,具体有以下内容:文件的字节数、文件拥有者的User ID、文件的Group ID、文件的读、写、执行权限、文件的时间戳(文件的时间戳共有三个:ctime指inode上一次变动的时间,time指文件内容上一次变动的时间,atime指文件上一次打开的时间)、链接数,即有多少文件名指向这个inode、文件数据block的位置。每个inode节点的大小,为128字节或256字节。inode节点的总数,在格式化时就给定,为每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到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,如果不存在冷点链表则设立一个冷点文件信息记录结构体,以下冷点文件信息记录结构体称为结构体,结构体即链表节点,链表节点包含四个字段,结构体包含四个成员,分别第一成员、第二成员、第三成员和第四成员,所述第一成员为缓存文件指针,第一成员初始值为空,所述第二成员为缓存文件的访问频率数值,第二成员为正整数且初始值为0,所述第三成员为前向指针,第三成员初始值为空,所述第四成员为后向指针,第四成员初始值为空,多个的意义为大于或等于一个,所述结构体通过第三成员和第四成员进行连接前驱结点和后继结点连接形成一个双向链表,即第三成员和第四成员分别指向其他的链表节点,所述前驱结点为前向指针连接的相邻结构体,所述后继结点为后向指针连接的相邻结构体;
步骤3.2,设立一个最大冷点文件信息记录数值,最大冷点文件信息作为冷点文件信息记录的最大值,以下最大冷点文件信息称为成为最大冷点文件;
步骤3.3,设立一个最大冷点文件信息指针,初始时该指针为空,下文称为指针;
步骤3.4,当文件发生访问的时候,获取文件缓存中当前缓存文件的访问频率,并与缓存文件的指针构建一个新的结构体,即生成一个新的链表节点;
步骤3.5,将当前缓存文件的访问频率与指针所指向的结构体中的文件频率相比较,若指针为空,则将指针指向当前缓存文件的结构体;
步骤3.6,若当前缓存文件的访问频率大于指针所指向的结构体中记录的文件访问频率,则判断指针所指向的信息结构所在的双向链表的长度,若长度大于冷点文件信息记录的最大值,则抛弃当前文件的结构体,否则将当前文件的结构体加入到双向链表的表尾,并将指针指向该结构体,即将新产生的节点加入双向链表的表尾;
步骤3.7,若当前的文件访问频率小于指针所指向的结构体中的文件访问频率,则从指针所指向的结构体的位置,沿着双向链表进行逆向查找,依次对比每一个链表节点的结构体中获取文件访问频率进行比较,直到链表节点中的文件访问频率小于当前文件的访问频率,则将当前文件的结构体插入到双向链表中该节点的下方,若查找到了链表的表头,仍然未满足条件,则将该结构体作为链表的表头;
步骤3.8,重新计算双向链表的长度,如果长度超过了预设的冷点文件信息记录的最大值,则将指针从其当前位置往双向链表上移一位,并删除指针之前所指向的结构体;
步骤3.9,设立一个缓存空间剩余可用空间大小的可用空间阈值,当剩余空间小于可用空间阈值时,则从头向尾遍历冷点文件双向链表,逐一删除对应的缓存文件和链表节点,直到可用空间大于可用空间阈值,或者链表中的节点只剩下初始时的一半,则停止遍历。
进一步地,在步骤4中,所述可用空间阈值为缓存空间剩余可用空间大小,可用空间阈值默认值设置为缓存空间大小的10%,可用空间阈值为百分比形式可进行人工调整,所述冷点文件记录阈值为限制冷点文件双向链表的长度的值,可用空间阈值默认值设置为200,可用空间阈值为正整数可进行人工调整。
本发明还提供了一种缓存空间清理装置,所述装置包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下装置的单元中:
获取访问频率单元,用于获取文件缓存中所有缓存文件的访问频率存储到双向链表的结构体第二成员中,即缓存文件的访问频率数值中;
冷点遍历单元,用于遍历冷点文件双向链表,寻找访问频率小于冷点阈值的双向链表的链表节点;
缓存清理单元,用于删除访问频率小于冷点阈值的链表节点指向的缓存文件和链表节点,更新冷点文件双向链表;
阈值空间清理单元,用于判断如果缓存的可用空间小于或等于可用空间阈值,则判断冷点文件双向链表的长度是否小于最大冷点文件记录阈值的50%,如果小于最大冷点文件记录阈值的50%则更新结束,如果大于或等于最大冷点文件记录阈值的50%,转到冷点遍历单元;
清理结束单元,用于如果缓存的可用空间小于可用空间阈值,则清理结束。
本公开的有益效果为:本发明提供一种缓存空间清理方法及装置,智能的根据文件的访问频率,删除访问率很低下的文件,并且结合传统的空间阈值设置方法进一步的改进了清理缓存空间的效率,使得缓存中的文件能够优胜劣汰,快速的清除掉缓存中不常用的文件,有效的提高了缓存空间的利用率及其访问速度。
附图说明
通过对结合附图所示出的实施方式进行详细说明,本公开的上述以及其他特征将更加明显,本公开附图中相同的参考标号表示相同或相似的元素,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,在附图中:
图1所示为一种缓存空间清理方法的流程图;
图2所示为更新冷点文件双向链表流程图;
图3所示为一种缓存空间清理装置图。
具体实施方式
以下将结合实施例和附图对本公开的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本公开的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图1所示为根据本公开的一种缓存空间清理方法的流程图,图2所示为更新冷点文件双向链表流程图,下面结合图1和图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包含文件的管理信息,具体有以下内容:文件的字节数、文件拥有者的User ID、文件的Group ID、文件的读、写、执行权限、文件的时间戳(文件的时间戳共有三个:ctime指inode上一次变动的时间,time指文件内容上一次变动的时间,atime指文件上一次打开的时间)、链接数,即有多少文件名指向这个inode、文件数据block的位置。每个inode节点的大小,为128字节或256字节。inode节点的总数,在格式化时就给定,为每1KB或每2KB就设置一个inode。假定在一块1GB的硬盘中,每个inode节点的大小为128字节,每1KB就设置一个inode,那么inode table的大小就会达到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,如果不存在冷点链表则设立一个冷点文件信息记录结构体,以下冷点文件信息记录结构体称为结构体,结构体即链表节点,链表节点包含四个字段,结构体包含四个成员,分别第一成员、第二成员、第三成员和第四成员,所述第一成员为缓存文件指针,第一成员初始值为空,所述第二成员为缓存文件的访问频率数值,第二成员为正整数且初始值为0,所述第三成员为前向指针,第三成员初始值为空,所述第四成员为后向指针,第四成员初始值为空,多个的意义为大于或等于一个,所述结构体通过第三成员和第四成员进行连接前驱结点和后继结点连接形成一个双向链表,即第三成员和第四成员分别指向其他的链表节点,所述前驱结点为前向指针连接的相邻结构体,所述后继结点为后向指针连接的相邻结构体;
步骤3.2,设立一个最大冷点文件信息记录数值,最大冷点文件信息作为冷点文件信息记录的最大值,以下最大冷点文件信息称为成为最大冷点文件;
步骤3.3,设立一个最大冷点文件信息指针,初始时该指针为空,下文称为指针;
步骤3.4,当文件发生访问的时候,获取文件缓存中当前缓存文件的访问频率,并与缓存文件的指针构建一个新的结构体,即生成一个新的链表节点;
步骤3.5,将当前缓存文件的访问频率与指针所指向的结构体中的文件频率相比较,若指针为空,则将指针指向当前缓存文件的结构体;
步骤3.6,若当前缓存文件的访问频率大于指针所指向的结构体中记录的文件访问频率,则判断指针所指向的信息结构所在的双向链表的长度,若长度大于冷点文件信息记录的最大值,则抛弃当前文件的结构体,否则将当前文件的结构体加入到双向链表的表尾,并将指针指向该结构体,即将新产生的节点加入双向链表的表尾;
步骤3.7,若当前的文件访问频率小于指针所指向的结构体中的文件访问频率,则从指针所指向的结构体的位置,沿着双向链表进行逆向查找,依次对比每一个链表节点的结构体中获取文件访问频率进行比较,直到链表节点中的文件访问频率小于当前文件的访问频率,则将当前文件的结构体插入到双向链表中该节点的下方,若查找到了链表的表头,仍然未满足条件,则将该结构体作为链表的表头;
步骤3.8,重新计算双向链表的长度,如果长度超过了预设的冷点文件信息记录的最大值,则将指针从其当前位置往双向链表上移一位,并删除指针之前所指向的结构体;
步骤3.9,设立一个缓存空间剩余可用空间大小的可用空间阈值,当剩余空间小于可用空间阈值时,则从头向尾遍历冷点文件双向链表,逐一删除对应的缓存文件和链表节点,直到可用空间大于可用空间阈值,或者链表中的节点只剩下初始时的一半,则停止遍历。
进一步地,在步骤4中,所述可用空间阈值为缓存空间剩余可用空间大小,可用空间阈值默认值设置为缓存空间大小的10%,可用空间阈值为百分比形式可进行人工调整,所述冷点文件记录阈值为限制冷点文件双向链表的长度的值,可用空间阈值默认值设置为200,可用空间阈值为正整数可进行人工调整。
本公开的实施例提供的一种缓存空间清理装置,如图3所示为本公开的一种缓存空间清理装置图,该实施例的一种缓存空间清理装置包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种缓存空间清理装置实施例中的步骤。
所述装置包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下装置的单元中:
获取访问频率单元,用于获取文件缓存中所有缓存文件的访问频率存储到双向链表的结构体第二成员中,即缓存文件的访问频率数值中;
冷点遍历单元,用于遍历冷点文件双向链表,寻找访问频率小于冷点阈值的双向链表的链表节点;
缓存清理单元,用于删除访问频率小于冷点阈值的链表节点指向的缓存文件和链表节点,更新冷点文件双向链表;
阈值空间清理单元,用于判断如果缓存的可用空间小于或等于可用空间阈值,则判断冷点文件双向链表的长度是否小于最大冷点文件记录阈值的50%,如果小于最大冷点文件记录阈值的50%则更新结束,如果大于或等于最大冷点文件记录阈值的50%,转到冷点遍历单元;
清理结束单元,用于如果缓存的可用空间小于可用空间阈值,则清理结束。
所述一种缓存空间清理装置可以运行于桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备中。所述一种缓存空间清理装置,可运行的装置可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述例子仅仅是一种缓存空间清理装置的示例,并不构成对一种缓存空间清理装置的限定,可以包括比例子更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述一种缓存空间清理装置还可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种缓存空间清理装置运行装置的控制中心,利用各种接口和线路连接整个一种缓存空间清理装置可运行装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述一种缓存空间清理装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
尽管本公开的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本公开的预定范围。此外,上文以发明人可预见的实施例对本公开进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本公开的非实质性改动仍可代表本公开的等效改动。
Claims (5)
1.一种缓存空间清理方法,其特征在于,所述方法包括以下步骤:
步骤1,获取文件缓存中所有缓存文件的访问频率存储到冷点双向链表的结构体第二成员中,即缓存文件的访问频率数值中;
步骤2,遍历冷点文件双向链表,寻找访问频率小于冷点阈值的双向链表的链表节点;
步骤3,删除访问频率小于冷点阈值的链表节点指向的缓存文件和链表节点,更新冷点文件双向链表;
更新冷点文件双向链表包括:设立一个结构体,包含第一成员、第二成员、第三成员和第四成员,所述第一成员为缓存文件指针,第一成员初始值为空,所述第二成员为缓存文件的访问频率数值,第二成员为正整数且初始值为0,所述第三成员为前向指针,第三成员初始值为空,所述第四成员为后向指针,第四成员初始值为空,所述结构体通过第三成员和第四成员进行连接前驱结点和后继结点连接形成一个双向链表,即第三成员和第四成员分别指向其他的链表节点,所述前驱结点为前向指针连接的相邻结构体,所述后继结点为后向指针连接的相邻结构体;
设立一个最大冷点文件信息记录数值,最大冷点文件信息作为冷点文件信息记录的最大值,以下最大冷点文件信息称为成为最大冷点文件;
设立一个最大冷点文件信息指针,初始时该指针为空,以下称为指针;
当文件发生访问的时候,获取文件缓存中当前缓存文件的访问频率,并与缓存文件的指针构建一个新的结构体,即生成一个新的链表节点;
将当前缓存文件的访问频率与指针所指向的结构体中的文件频率相比较,若指针为空,则将指针指向当前缓存文件的结构体;
若当前缓存文件的访问频率大于指针所指向的结构体中记录的文件访问频率,则判断指针所指向的信息结构所在的双向链表的长度,若长度大于冷点文件信息记录的最大值,则抛弃当前文件的结构体,否则将当前文件的结构体加入到双向链表的表尾,并将指针指向该结构体,即将新产生的节点加入双向链表的表尾;
若当前的文件访问频率小于指针所指向的结构体中的文件访问频率,则从指针所指向的结构体的位置,沿着双向链表进行逆向查找,依次对比每一个链表节点的结构体中获取文件访问频率进行比较,直到链表节点中的文件访问频率小于当前文件的访问频率,则将当前文件的结构体插入到双向链表中该节点的下方,若查找到了链表的表头,仍然未满足条件,则将该结构体作为链表的表头;
重新计算双向链表的长度,如果长度超过了预设的冷点文件信息记录的最大值,则将指针从其当前位置往双向链表上移一位,并删除指针之前所指向的结构体;
设立一个缓存空间剩余可用空间大小的可用空间阈值,当剩余空间小于可用空间阈值时,则从头向尾遍历冷点文件双向链表,逐一删除对应的缓存文件和链表节点,直到可用空间大于可用空间阈值,或者链表中的节点只剩下初始时的一半,则停止遍历;
步骤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包含文件的管理信息,具体有以下内容:文件的字节数、文件拥有者的User ID、文件的Group ID、文件的读、写、执行权限、文件的时间戳、链接数,即有多少文件名指向这个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所述的一种缓存空间清理方法,其特征在于,在步骤2中,所述冷点阈值为N次,N默认值为45,N为正整数,所述冷点文件为双向链表的链表节点,即缓存文件的访问频率的数值。
5.一种缓存空间清理装置,其特征在于,所述装置包括:存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序运行在以下装置的单元中:
获取访问频率单元,用于获取文件缓存中所有缓存文件的访问频率存储到双向链表的结构体第二成员中,即缓存文件的访问频率数值中;
冷点遍历单元,用于遍历冷点文件双向链表,寻找访问频率小于冷点阈值的双向链表的链表节点;
缓存清理单元,用于删除访问频率小于冷点阈值的链表节点指向的缓存文件和链表节点,更新冷点文件双向链表;
更新冷点文件双向链表包括:设立一个结构体,包含第一成员、第二成员、第三成员和第四成员,所述第一成员为缓存文件指针,第一成员初始值为空,所述第二成员为缓存文件的访问频率数值,第二成员为正整数且初始值为0,所述第三成员为前向指针,第三成员初始值为空,所述第四成员为后向指针,第四成员初始值为空,所述结构体通过第三成员和第四成员进行连接前驱结点和后继结点连接形成一个双向链表,即第三成员和第四成员分别指向其他的链表节点,所述前驱结点为前向指针连接的相邻结构体,所述后继结点为后向指针连接的相邻结构体;
设立一个最大冷点文件信息记录数值,最大冷点文件信息作为冷点文件信息记录的最大值,以下最大冷点文件信息称为成为最大冷点文件;
设立一个最大冷点文件信息指针,初始时该指针为空,以下称为指针;
当文件发生访问的时候,获取文件缓存中当前缓存文件的访问频率,并与缓存文件的指针构建一个新的结构体,即生成一个新的链表节点;
将当前缓存文件的访问频率与指针所指向的结构体中的文件频率相比较,若指针为空,则将指针指向当前缓存文件的结构体;
若当前缓存文件的访问频率大于指针所指向的结构体中记录的文件访问频率,则判断指针所指向的信息结构所在的双向链表的长度,若长度大于冷点文件信息记录的最大值,则抛弃当前文件的结构体,否则将当前文件的结构体加入到双向链表的表尾,并将指针指向该结构体,即将新产生的节点加入双向链表的表尾;
若当前的文件访问频率小于指针所指向的结构体中的文件访问频率,则从指针所指向的结构体的位置,沿着双向链表进行逆向查找,依次对比每一个链表节点的结构体中获取文件访问频率进行比较,直到链表节点中的文件访问频率小于当前文件的访问频率,则将当前文件的结构体插入到双向链表中该节点的下方,若查找到了链表的表头,仍然未满足条件,则将该结构体作为链表的表头;
重新计算双向链表的长度,如果长度超过了预设的冷点文件信息记录的最大值,则将指针从其当前位置往双向链表上移一位,并删除指针之前所指向的结构体;
设立一个缓存空间剩余可用空间大小的可用空间阈值,当剩余空间小于可用空间阈值时,则从头向尾遍历冷点文件双向链表,逐一删除对应的缓存文件和链表节点,直到可用空间大于可用空间阈值,或者链表中的节点只剩下初始时的一半,则停止遍历;
阈值空间清理单元,用于判断如果缓存的可用空间小于或等于可用空间阈值,则判断冷点文件双向链表的长度是否小于最大冷点文件记录阈值的50%,如果小于最大冷点文件记录阈值的50%则更新结束,如果大于或等于最大冷点文件记录阈值的50%,转到冷点遍历单元;所述可用空间阈值为缓存空间剩余可用空间大小,所述冷点文件记录阈值为限制冷点文件双向链表的长度的值;
清理结束单元,用于如果缓存的可用空间小于可用空间阈值,则清理结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910466801.XA CN110287160B (zh) | 2019-05-31 | 2019-05-31 | 一种缓存空间清理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910466801.XA CN110287160B (zh) | 2019-05-31 | 2019-05-31 | 一种缓存空间清理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110287160A CN110287160A (zh) | 2019-09-27 |
CN110287160B true CN110287160B (zh) | 2023-09-12 |
Family
ID=68003122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910466801.XA Active CN110287160B (zh) | 2019-05-31 | 2019-05-31 | 一种缓存空间清理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110287160B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860684A (zh) * | 2019-11-12 | 2021-05-28 | 阿里巴巴集团控股有限公司 | 数据访问方法、装置、设备及存储介质 |
CN113515497A (zh) * | 2020-04-09 | 2021-10-19 | 奇安信安全技术(珠海)有限公司 | 数据库的数据处理方法、装置及系统 |
CN112423104A (zh) * | 2020-09-02 | 2021-02-26 | 上海幻电信息科技有限公司 | 直播场景下的多路音频的音频混合方法及系统 |
CN112433993B (zh) * | 2020-11-16 | 2021-10-01 | 连邦网络科技服务南通有限公司 | 一种基于计算机的网络数据处理分析系统 |
CN113183759A (zh) * | 2021-07-01 | 2021-07-30 | 智道网联科技(北京)有限公司 | 一种仪表盘字符的显示方法及装置 |
CN114116634B (zh) * | 2022-01-26 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
CN116910100B (zh) * | 2023-09-08 | 2023-11-28 | 湖南立人科技有限公司 | 用于低代码平台的缓存数据处理方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150259A (zh) * | 2013-03-22 | 2013-06-12 | 华为技术有限公司 | 一种内存回收方法和装置 |
CN104111900A (zh) * | 2013-04-22 | 2014-10-22 | 中国移动通信集团公司 | 一种缓存中数据替换方法及装置 |
CN106294206A (zh) * | 2015-05-21 | 2017-01-04 | 广州华多网络科技有限公司 | 一种缓存数据处理方法以及装置 |
CN107729535A (zh) * | 2017-11-17 | 2018-02-23 | 中国科学技术大学 | 一种键值数据库内布隆过滤器的配置方法 |
CN107943718A (zh) * | 2017-12-07 | 2018-04-20 | 网宿科技股份有限公司 | 一种清理缓存文件的方法和装置 |
CN109144958A (zh) * | 2018-07-02 | 2019-01-04 | 广东睿江云计算股份有限公司 | 一种联合文件系统文件访问频率元数据采集方法及装置 |
US10176103B1 (en) * | 2015-05-07 | 2019-01-08 | American Megatrends, Inc. | Systems, devices and methods using a solid state device as a caching medium with a cache replacement algorithm |
CN109522243A (zh) * | 2018-10-22 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种全闪存储中元数据缓存管理方法、装置及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8918588B2 (en) * | 2009-04-07 | 2014-12-23 | International Business Machines Corporation | Maintaining a cache of blocks from a plurality of data streams |
CN104516828B (zh) * | 2013-09-27 | 2018-01-09 | 伊姆西公司 | 用于移除缓存数据的方法和设备 |
US10168912B2 (en) * | 2016-02-17 | 2019-01-01 | Panzura, Inc. | Short stroking and data tiering for a distributed filesystem |
-
2019
- 2019-05-31 CN CN201910466801.XA patent/CN110287160B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150259A (zh) * | 2013-03-22 | 2013-06-12 | 华为技术有限公司 | 一种内存回收方法和装置 |
CN104111900A (zh) * | 2013-04-22 | 2014-10-22 | 中国移动通信集团公司 | 一种缓存中数据替换方法及装置 |
US10176103B1 (en) * | 2015-05-07 | 2019-01-08 | American Megatrends, Inc. | Systems, devices and methods using a solid state device as a caching medium with a cache replacement algorithm |
CN106294206A (zh) * | 2015-05-21 | 2017-01-04 | 广州华多网络科技有限公司 | 一种缓存数据处理方法以及装置 |
CN107729535A (zh) * | 2017-11-17 | 2018-02-23 | 中国科学技术大学 | 一种键值数据库内布隆过滤器的配置方法 |
CN107943718A (zh) * | 2017-12-07 | 2018-04-20 | 网宿科技股份有限公司 | 一种清理缓存文件的方法和装置 |
CN109144958A (zh) * | 2018-07-02 | 2019-01-04 | 广东睿江云计算股份有限公司 | 一种联合文件系统文件访问频率元数据采集方法及装置 |
CN109522243A (zh) * | 2018-10-22 | 2019-03-26 | 郑州云海信息技术有限公司 | 一种全闪存储中元数据缓存管理方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110287160A (zh) | 2019-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110287160B (zh) | 一种缓存空间清理方法及装置 | |
US9971799B2 (en) | Storage device for storing directory entries, directory entry lookup apparatus and method, and storage medium storing directory entry lookup program | |
US9323772B2 (en) | Segment group-based segment cleaning apparatus and methods for storage units | |
CN110674053B (zh) | Ssd数据存储节点管理方法、装置、计算机设备及存储介质 | |
KR102437775B1 (ko) | 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN107526550B (zh) | 一种基于日志结构合并树的两阶段合并方法 | |
TW201140430A (en) | Allocating storage memory based on future use estimates | |
CN109144958B (zh) | 一种联合文件系统文件访问频率元数据采集方法及装置 | |
CN109766312A (zh) | 一种区块链存储方法、系统、装置及计算机可读存储介质 | |
WO2020199760A1 (zh) | 数据存储方法、存储器和服务器 | |
KR20190100537A (ko) | 플래시 저장장치의 내부 병렬성을 이용하는 키 값 기반의 데이터 액세스 장치 및 방법 | |
US20220164316A1 (en) | Deduplication method and apparatus | |
WO2021036689A1 (zh) | 一种缓存空间的管理方法及装置 | |
US20140095771A1 (en) | Host device, computing system and method for flushing a cache | |
CN109460406A (zh) | 一种数据处理方法及装置 | |
CN111930305A (zh) | 数据的存储方法和装置、存储介质、电子装置 | |
WO2020024933A1 (zh) | 一种数据写入方法和服务端 | |
CN110263010B (zh) | 一种缓存文件自动更新方法及装置 | |
CN107659626B (zh) | 面向临时元数据的分离存储方法 | |
CN112711564B (zh) | 合并处理方法以及相关设备 | |
CN111752941A (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN115167778A (zh) | 存储的管理方法、系统及服务器 | |
CN109478181A (zh) | 用于使得能够修改文件系统卷内的多个数据对象的系统和方法 | |
US11586353B2 (en) | Optimized access to high-speed storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |