CN106776368B - 一种数据读取时的缓存管理方法、装置及系统 - Google Patents

一种数据读取时的缓存管理方法、装置及系统 Download PDF

Info

Publication number
CN106776368B
CN106776368B CN201611090301.3A CN201611090301A CN106776368B CN 106776368 B CN106776368 B CN 106776368B CN 201611090301 A CN201611090301 A CN 201611090301A CN 106776368 B CN106776368 B CN 106776368B
Authority
CN
China
Prior art keywords
memory
data
client
residual
residual data
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
Application number
CN201611090301.3A
Other languages
English (en)
Other versions
CN106776368A (zh
Inventor
孔帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN201611090301.3A priority Critical patent/CN106776368B/zh
Publication of CN106776368A publication Critical patent/CN106776368A/zh
Application granted granted Critical
Publication of CN106776368B publication Critical patent/CN106776368B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种数据读取时的缓存管理方法、装置及系统,服务器内设有共享内存及与其连接的次级硬盘缓存,包括接收客户端发送的数据读取请求,若共享内存中完整地存有客户端请求读取的数据,将相应的数据返回客户端,若否,计算请求的数据中未存储于共享内存内的剩余数据需占用的内存大小,得到剩余内存配额;从共享内存内选择与剩余内存配额等大的空闲内存作为预留内存,若空闲内存不够,选择释放部分内存的数据;判断次级硬盘缓存内是否存有剩余数据,若有,读取剩余数据发送至预留内存内;否则,返回预留内存的地址至客户端,供客户端从存储设备内读取剩余数据写入预留内存内。本发明能够扩展用做数据读取时的缓存空间的大小,提高读取性能。

Description

一种数据读取时的缓存管理方法、装置及系统
技术领域
本发明涉及服务器缓存控制技术领域,特别是涉及一种数据读取时的缓存管理方法、装置及系统。
背景技术
从事分布式存储产品的客户端软件开发时,往往会用到缓存的概念,它其实是程序在内存中申请的一块空间,将用户将要写入或者刚刚读取到的数据暂存,既可以提高写入性能,又能在用户对最近访问过的数据再次发起请求时迅速返回,降低延迟。
但是,由于内存的大小一般较小,用作缓存的内存空间不可能很大,当有多个客户端进行读取操作时,会互相争夺内存资源,并且这时由于需要缓存的数据量会很大,容易导致可用作缓存的空间已满,而使得部分客户端无法进行读取操作的情况出现,读取性能较差。
因此,如何提供一种读取性能好的数据读取时的缓存管理方法、装置及系统是本领域技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种数据读取时的缓存管理方法、装置及系统,能够扩展用做数据读取时的缓存空间的大小,尽可能避免由于多个客户端读取数据量较大时而导致的缓存空间不够的情况出现,提高读取性能。
为解决上述技术问题,本发明提供了一种数据读取时的缓存管理方法,用于服务器,所述服务器内预先设置有共享内存以及与所述共享内存连接的次级硬盘缓存,包括:
步骤s101:接收客户端发送的数据读取请求,判断所述共享内存中是否完整地存储有所述客户端请求读取的数据;若是,进入步骤s106;若否,进入步骤s102;
步骤s102:计算所述请求读取的数据中当前未存储于所述共享内存内的剩余数据需占用的内存大小,得到剩余内存配额;
步骤s103:从所述共享内存内选择与所述剩余内存配额大小相同的空闲内存作为预留内存,若所述空闲内存不能满足所述剩余内存配额,进入步骤s104;否则,进入步骤s105;
步骤s104:按照预设回收规则从所述共享内存中已经占用的内存内选择特定大小的内存标记为待回收内存,按照预设转移规则从所述待回收内存中选择部分内存中的数据拷贝至所述次级硬盘缓存内,并释放所述待回收内存;
步骤s105:判断所述次级硬盘缓存内是否存有所述剩余数据,若有,读取所述剩余数据发送至所述预留内存内;否则,返回所述预留内存的地址至所述客户端,供所述客户端从后端存储设备内读取所述剩余数据并写入所述预留内存内;
步骤s106:将所述共享内存中的所述请求读取的数据返回所述客户端。
优选地,步骤s105的过程具体为:
查找所述次级硬盘缓存内的数据;
若所述次级硬盘缓存内完整的存有所述剩余数据,读取所述剩余数据发送至所述预留内存内;
若所述次级硬盘缓存内部分存有所述剩余数据,将所述次级硬盘缓存内存储的部分所述剩余数据发送至所述预留内存内,确定当前所述预留内存内的空闲部分内存的地址并返回所述客户端,供所述客户端从后端存储设备内读取当前未存储于所述预留内存内的剩余数据并写入所述预留内存内的空闲部分内存中;
若所述次级硬盘缓存内未存有所述剩余数据,返回所述预留内存的地址至所述客户端;供所述客户端从后端存储设备内读取所述剩余数据并写入所述预留内存内。
优选地,所述步骤s102的过程具体包括:
计算并判断所述请求读取的数据总体需要占用的内存大小是否超出预设文件大小阈值,若是,返回配额不足的提示至所述客户端,并终止此次数据读取;否则;计算所述总体需要占用的内存大小与当前所述请求读取的数据中已经存储于所述共享内存中的部分数据所占用的内存大小之差,得到所述剩余内存配额。
优选地,所述共享内存按照预设大小划分为若干个内存块,且每个所述内存块设置有引用计数,所述引用计数为当前正在访问所述内存块的客户端的数量;
所述预设回收规则具体为:
将各个非空闲的所述内存块按照已持续未被访问的时间从长到短进行排序,得到使用缓存列表;
按照所述剩余内存配额与当前的空闲内存之差,从所述缓存列表内引用计数为0的若干个内存块中依次选择特定个数的内存块标记为待回收内存块。
为解决上述技术问题,本发明还提供了一种数据读取时的缓存管理装置,用于服务器,所述服务器内预先设置有共享内存以及与所述共享内存连接的次级硬盘缓存,包括:
第一判读模块,用于接收客户端发送的数据读取请求,判断所述共享内存中是否完整地存储有所述客户端请求读取的数据;若是,触发数据返回模块;若否,触发配额计算模块;
所述配额计算模块,用于计算所述请求读取的数据中当前未存储于所述共享内存中的剩余数据需占用的内存大小,得到剩余内存配额;
预留内存选择模块,用于从所述共享内存内选择与所述剩余内存配额大小相同的空闲内存作为预留内存,若所述空闲内存不能满足所述剩余内存配额,触发回收模块;否则,触发次级读取模块;
所述回收模块,用于按照预设回收规则从所述共享内存中已经占用的内存内选择特定大小的内存标记为待回收内存,按照预设转移规则从所述待回收内存中选择部分内存中的数据拷贝至所述次级硬盘缓存内,并释放所述待回收内存;触发所述次级读取模块;
所述次级读取模块,用于判断所述次级硬盘缓存内是否存有所述剩余数据,若有,读取所述剩余数据发送至所述预留内存内;否则,返回所述预留内存的地址至所述客户端,供所述客户端从后端存储设备内读取所述剩余数据并写入所述预留内存内;触发所述数据返回模块;
所述数据返回模块,用于将所述共享内存中的所述请求读取的数据返回所述客户端。
所述次级读取模块具体用于:
查找所述次级硬盘缓存内的数据;若所述次级硬盘缓存内完整的存有所述剩余数据,读取所述剩余数据发送至所述预留内存内;若所述次级硬盘缓存内部分存有所述剩余数据,将所述次级硬盘缓存内存储的部分所述剩余数据发送至所述预留内存内,确定当前所述预留内存内的空闲部分内存的地址并返回所述客户端,供所述客户端从后端存储设备内读取当前未存储于所述预留内存内的剩余数据并写入所述预留内存内的空闲部分内存中;若所述次级硬盘缓存内未存有所述剩余数据,返回所述预留内存的地址至所述客户端;供所述客户端从后端存储设备内读取所述剩余数据并写入所述预留内存内;触发所述数据返回模块。
优选地,所述次级硬盘缓存具体为固态硬盘。
为解决上述技术问题,本发明还提供了一种数据读取时的缓存管理系统,用于服务器,包括共享内存、与所述共享内存连接的次级硬盘缓存、后端存储设备以及如以上任一项所述的缓存管理装置。
本发明提供了一种数据读取时的缓存管理方法、装置及系统,在服务器内设置有次级硬件缓存;当共享内存内不完全包含有用户读取的数据且空间内存不够的情况下,选择部分内存空间进行释放,并且为避免释放有用数据,从待释放的数据中选择部分内存的数据存入次级硬件缓存内;当数据读取时,首先查看共享内存内的数据,然后查看次级硬件缓存内的数据,若所需的数据仍然不完整,再由用户读取后端存储设备。由于硬件独立于内存,且硬件空间要远大于内存空间,故本发明扩展了能够用做数据读取时的缓存空间的大小,尽可能避免了由于多个客户端读取数据量较大时而导致的缓存空间不够的情况出现,提高了读取性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种数据读取时的缓存管理方法的过程的流程图;
图2为本发明提供的一种数据读取时的缓存管理装置的结构示意图。
具体实施方式
本发明的核心是提供一种数据读取时的缓存管理方法、装置及系统,能够扩展用做数据读取时的缓存空间的大小,尽可能避免由于多个客户端读取数据量较大时而导致的缓存空间不够的情况出现,提高读取性能。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种数据读取时的缓存管理方法,用于服务器,服务器内预先设置有共享内存以及与共享内存连接的次级硬盘缓存,参见图1所示,图1为本发明提供的一种数据读取时的缓存管理方法的过程的流程图;该方法包括:
步骤s101:接收客户端发送的数据读取请求,判断共享内存中是否完整地存储有客户端请求读取的数据;若是,进入步骤s106;若否,进入步骤s102;
可以理解的是,相比目前采用的分别为每个客户端分配一块内存的方式,本发明采用共享内存的形式,能够避免同一份数据多次存储导致的数据冗余的情况;所有客户端均访问同一块共享内存,若共享内存内缓存有客户端访问的数据,则直接返回相应的数据,不再读取后端存储设备,也提高了数据访问的速度以及减少了访问进程所占用的资源,并且减少了占用内存的大小。
步骤s102:计算请求读取的数据中当前未存储于共享内存内的剩余数据需占用的内存大小,得到剩余内存配额;
步骤s103:从共享内存内选择与剩余内存配额大小相同的空闲内存作为预留内存,若空闲内存不能满足剩余内存配额,进入步骤s104;否则,进入步骤s105;
由于数据从后端存储设备读取过来之后,需要首先存储至共享内存内,故需要共享内存内具有足够大小的空闲内存。
步骤s104:按照预设回收规则从共享内存中已经占用的内存内选择特定大小的内存标记为待回收内存,按照预设转移规则从待回收内存中选择部分内存中的数据拷贝至次级硬盘缓存内,并释放待回收内存;
可以理解的是,这里的特定大小与共享内存内当前的空闲内存之和不能小于剩余内存配额,一般要略大于剩余内存配额,具体大小的选择可根据实验后的结果进行设定,本发明对此不做限定。并且,这些待回收内存此时其实并不符合原始设定的回收条件,故其内部可能存有较为重要的数据,为避免必要数据丢失,故需要按照预设转移规则选择出部分待回收内存内的数据,存储至次级硬盘缓存内,再将待回收内存释放。
另外,次级硬盘缓存中存有之前转移的数据,能够作为一个备用的数据存储内存供客户端查询。
步骤s105:判断次级硬盘缓存内是否存有剩余数据,若有,读取剩余数据发送至预留内存内;否则,返回预留内存的地址至客户端,供客户端从后端存储设备内读取剩余数据并写入预留内存内;
步骤s106:将共享内存中的请求读取的数据返回客户端。
其中,步骤s105的过程具体为:
步骤s501:查找次级硬盘缓存内的数据;
步骤s502:若次级硬盘缓存内完整的存有剩余数据,读取剩余数据发送至预留内存内;
步骤s503:若次级硬盘缓存内部分存有剩余数据,将次级硬盘缓存内存储的部分剩余数据发送至预留内存内,确定当前预留内存内的空闲部分内存的地址并返回客户端,供客户端从后端存储设备内读取当前未存储于预留内存内的剩余数据并写入预留内存内的空闲部分内存中;
可以理解的是,次级硬盘缓存内也不一定完整的存储有需要的剩余数据,故此时仍需要客户端访问后端存储设备来读取共享内存以及次级硬盘缓存内均未存储的部分,该操作减少了客户端需要读取的数据的大小。
步骤s504:若次级硬盘缓存内未存有剩余数据,返回预留内存的地址至客户端;供客户端从后端存储设备内读取剩余数据并写入预留内存内。
需要注意的是,步骤s501、步骤s502、步骤s503无先后顺序之分,仅视次级硬盘缓存内的存储情况而定。
另外,步骤s102的过程具体包括:
计算并判断请求读取的数据总体需要占用的内存大小是否超出预设文件大小阈值,若是,返回配额不足的提示至客户端,并终止此次数据读取;否则;计算总体需要占用的内存大小与当前请求读取的数据中已经存储于共享内存中的部分数据所占用的内存大小之差,得到剩余内存配额。
可以理解的是,客户端每次读取的数据总体大小应不超过一个预设文件大小阈值。当共享内存中已经存有部分请求读取的数据时,若此时请求读取的数据总体大于预设文件大小阈值,则表明即使从后端存储设备获取了剩余的部分数据,也没有办法存入共享内存内,应为该请求读取的数据整体过大。当然,若该数据已经完整的存在共享内存中了,则默认该数据并未超出预设文件大小阈值。这里的预设文件大小阈值的具体大小可自由设定。
作为优选地,共享内存按照预设大小划分为若干个内存块,且每个内存块设置有引用计数,引用计数为当前正在访问内存块的客户端的数量;
这里的预设回收规则具体为:
将各个非空闲的内存块按照已持续未被访问的时间从长到短进行排序,得到使用缓存列表;
按照剩余内存配额与当前的空闲内存之差,从缓存列表内引用计数为0的若干个内存块中依次选择特定个数的内存块标记为待回收内存块。
可以理解的是,若引用计数不为0,表明当前有客户端正在访问该内存块,此时不能对该内存块进行释放。一般需要释放的内存块为长期未被访问的内存块,故应从缓存列表中按照未被访问的时间从长到短的顺序选择待回收的内存块。
本发明提供了一种数据读取时的缓存管理装置,在服务器内设置有次级硬件缓存;当共享内存内不完全包含有用户读取的数据且空间内存不够的情况下,选择部分内存空间进行释放,并且为避免释放有用数据,从待释放的数据中选择部分内存的数据存入次级硬件缓存内;当数据读取时,首先查看共享内存内的数据,然后查看次级硬件缓存内的数据,若所需的数据仍然不完整,再由用户读取后端存储设备。由于硬件独立于内存,且硬件空间要远大于内存空间,故本发明扩展了能够用做数据读取时的缓存空间的大小,尽可能避免了由于多个客户端读取数据量较大时而导致的缓存空间不够的情况出现,提高了读取性能。
本发明还提供了一种数据读取时的缓存管理装置,用于服务器,服务器内预先设置有共享内存以及与共享内存连接的次级硬盘缓存,参见图2所示,图2为本发明提供的一种数据读取时的缓存管理装置的结构示意图。该装置包括:
第一判读模块1,用于接收客户端发送的数据读取请求,判断共享内存中是否完整地存储有客户端请求读取的数据;若是,触发数据返回模块6;若否,触发配额计算模块2;
配额计算模块2,用于计算请求读取的数据中当前未存储于共享内存中的剩余数据需占用的内存大小,得到剩余内存配额;
预留内存选择模块3,用于从共享内存内选择与剩余内存配额大小相同的空闲内存作为预留内存,若空闲内存不能满足剩余内存配额,触发回收模块4;否则,触发次级读取模块5;
回收模块4,用于按照预设回收规则从共享内存中已经占用的内存内选择特定大小的内存标记为待回收内存,按照预设转移规则从待回收内存中选择部分内存中的数据拷贝至次级硬盘缓存内,并释放待回收内存;触发次级读取模块5;
次级读取模块5,用于判断次级硬盘缓存内是否存有剩余数据,若有,读取剩余数据发送至预留内存内;否则,返回预留内存的地址至客户端,供客户端从后端存储设备内读取剩余数据并写入预留内存内;触发数据返回模块6;
数据返回模块6,用于将共享内存中的请求读取的数据返回客户端。
作为优选地,次级读取模块5具体用于:
查找次级硬盘缓存内的数据;若次级硬盘缓存内完整的存有剩余数据,读取剩余数据发送至预留内存内;若次级硬盘缓存内部分存有剩余数据,将次级硬盘缓存内存储的部分剩余数据发送至预留内存内,确定当前预留内存内的空闲部分内存的地址并返回客户端,供客户端从后端存储设备内读取当前未存储于预留内存内的剩余数据并写入预留内存内的空闲部分内存中;若次级硬盘缓存内未存有剩余数据,返回预留内存的地址至客户端;供客户端从后端存储设备内读取剩余数据并写入预留内存内;触发数据返回模块6。
其中,这里的次级硬盘缓存具体为固态硬盘。当然,也可以选用其他类型的硬盘,本发明对此不做限定。
本发明提供了一种数据读取时的缓存管理装置,在服务器内设置有次级硬件缓存;当共享内存内不完全包含有用户读取的数据且空间内存不够的情况下,选择部分内存空间进行释放,并且为避免释放有用数据,从待释放的数据中选择部分内存的数据存入次级硬件缓存内;当数据读取时,首先查看共享内存内的数据,然后查看次级硬件缓存内的数据,若所需的数据仍然不完整,再由用户读取后端存储设备。由于硬件独立于内存,且硬件空间要远大于内存空间,故本发明扩展了能够用做数据读取时的缓存空间的大小,尽可能避免了由于多个客户端读取数据量较大时而导致的缓存空间不够的情况出现,提高了读取性能。
本发明还提供了一种数据读取时的缓存管理系统,用于服务器,包括共享内存、与共享内存连接的次级硬盘缓存、后端存储设备以及以上缓存管理装置。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (6)

1.一种数据读取时的缓存管理方法,用于服务器,所述服务器内预先设置有共享内存以及与所述共享内存连接的次级硬盘缓存,其特征在于,所述次级硬盘缓存为固态硬盘,包括:
步骤s101:接收客户端发送的数据读取请求,判断所述共享内存中是否完整地存储有所述客户端请求读取的数据;若是,进入步骤s106;若否,进入步骤s102;
步骤s102:计算所述请求读取的数据中当前未存储于所述共享内存内的剩余数据需占用的内存大小,得到剩余内存配额;
步骤s103:从所述共享内存内选择与所述剩余内存配额大小相同的空闲内存作为预留内存,若所述空闲内存不能满足所述剩余内存配额,进入步骤s104;否则,进入步骤s105;
步骤s104:按照预设回收规则从所述共享内存中已经占用的内存内选择特定大小的内存标记为待回收内存,按照预设转移规则从所述待回收内存中选择部分内存中的数据拷贝至所述次级硬盘缓存内,并释放所述待回收内存;
步骤s105:判断所述次级硬盘缓存内是否存有所述剩余数据,若有,读取所述剩余数据发送至所述预留内存内;否则,返回所述预留内存的地址至所述客户端,供所述客户端从后端存储设备内读取所述剩余数据并写入所述预留内存内;
步骤s106:将所述共享内存中的所述请求读取的数据返回所述客户端;
其中,所述步骤s102的过程具体包括:
计算并判断所述请求读取的数据总体需要占用的内存大小是否超出预设文件大小阈值,若是,返回配额不足的提示至所述客户端,并终止此次数据读取;否则;计算所述总体需要占用的内存大小与当前所述请求读取的数据中已经存储于所述共享内存中的部分数据所占用的内存大小之差,得到所述剩余内存配额。
2.根据权利要求1所述的方法,其特征在于,步骤s105的过程具体为:
查找所述次级硬盘缓存内的数据;
若所述次级硬盘缓存内完整的存有所述剩余数据,读取所述剩余数据发送至所述预留内存内;
若所述次级硬盘缓存内部分存有所述剩余数据,将所述次级硬盘缓存内存储的部分所述剩余数据发送至所述预留内存内,确定当前所述预留内存内的空闲部分内存的地址并返回所述客户端,供所述客户端从后端存储设备内读取当前未存储于所述预留内存内的剩余数据并写入所述预留内存内的空闲部分内存中;
若所述次级硬盘缓存内未存有所述剩余数据,返回所述预留内存的地址至所述客户端;供所述客户端从后端存储设备内读取所述剩余数据并写入所述预留内存内。
3.根据权利要求2所述的方法,其特征在于,所述共享内存按照预设大小划分为若干个内存块,且每个所述内存块设置有引用计数,所述引用计数为当前正在访问所述内存块的客户端的数量;
所述预设回收规则具体为:
将各个非空闲的所述内存块按照已持续未被访问的时间从长到短进行排序,得到使用缓存列表;
按照所述剩余内存配额与当前的空闲内存之差,从所述缓存列表内引用计数为0的若干个内存块中依次选择特定个数的内存块标记为待回收内存块。
4.一种数据读取时的缓存管理装置,用于服务器,所述服务器内预先设置有共享内存以及与所述共享内存连接的次级硬盘缓存,其特征在于,所述次级硬盘缓存为固态硬盘,包括:
第一判读模块,用于接收客户端发送的数据读取请求,判断所述共享内存中是否完整地存储有所述客户端请求读取的数据;若是,触发数据返回模块;若否,触发配额计算模块;
所述配额计算模块,用于计算所述请求读取的数据中当前未存储于所述共享内存中的剩余数据需占用的内存大小,得到剩余内存配额;
预留内存选择模块,用于从所述共享内存内选择与所述剩余内存配额大小相同的空闲内存作为预留内存,若所述空闲内存不能满足所述剩余内存配额,触发回收模块;否则,触发次级读取模块;
所述回收模块,用于按照预设回收规则从所述共享内存中已经占用的内存内选择特定大小的内存标记为待回收内存,按照预设转移规则从所述待回收内存中选择部分内存中的数据拷贝至所述次级硬盘缓存内,并释放所述待回收内存;触发所述次级读取模块;
所述次级读取模块,用于判断所述次级硬盘缓存内是否存有所述剩余数据,若有,读取所述剩余数据发送至所述预留内存内;否则,返回所述预留内存的地址至所述客户端,供所述客户端从后端存储设备内读取所述剩余数据并写入所述预留内存内;触发所述数据返回模块;
所述数据返回模块,用于将所述共享内存中的所述请求读取的数据返回所述客户端;
其中,所述配额计算模块具体用于:
计算并判断所述请求读取的数据总体需要占用的内存大小是否超出预设文件大小阈值,若是,返回配额不足的提示至所述客户端,并终止此次数据读取;否则;计算所述总体需要占用的内存大小与当前所述请求读取的数据中已经存储于所述共享内存中的部分数据所占用的内存大小之差,得到所述剩余内存配额。
5.根据权利要求4所述的装置,其特征在于,所述次级读取模块具体用于:
查找所述次级硬盘缓存内的数据;若所述次级硬盘缓存内完整的存有所述剩余数据,读取所述剩余数据发送至所述预留内存内;若所述次级硬盘缓存内部分存有所述剩余数据,将所述次级硬盘缓存内存储的部分所述剩余数据发送至所述预留内存内,确定当前所述预留内存内的空闲部分内存的地址并返回所述客户端,供所述客户端从后端存储设备内读取当前未存储于所述预留内存内的剩余数据并写入所述预留内存内的空闲部分内存中;若所述次级硬盘缓存内未存有所述剩余数据,返回所述预留内存的地址至所述客户端;供所述客户端从后端存储设备内读取所述剩余数据并写入所述预留内存内;触发所述数据返回模块。
6.一种数据读取时的缓存管理系统,用于服务器,其特征在于,包括共享内存、与所述共享内存连接的次级硬盘缓存、后端存储设备以及如权利要求4-5任一项所述的缓存管理装置,所述次级硬盘缓存为固态硬盘。
CN201611090301.3A 2016-11-29 2016-11-29 一种数据读取时的缓存管理方法、装置及系统 Active CN106776368B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611090301.3A CN106776368B (zh) 2016-11-29 2016-11-29 一种数据读取时的缓存管理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611090301.3A CN106776368B (zh) 2016-11-29 2016-11-29 一种数据读取时的缓存管理方法、装置及系统

Publications (2)

Publication Number Publication Date
CN106776368A CN106776368A (zh) 2017-05-31
CN106776368B true CN106776368B (zh) 2021-02-05

Family

ID=58913520

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611090301.3A Active CN106776368B (zh) 2016-11-29 2016-11-29 一种数据读取时的缓存管理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN106776368B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107402818A (zh) * 2017-08-04 2017-11-28 郑州云海信息技术有限公司 一种客户端读写缓存分离的方法及系统
CN107621926B (zh) * 2017-09-19 2020-06-16 珠海市杰理科技股份有限公司 栈区数据存取方法、装置、可读存储介质和计算机设备
CN108287793B (zh) * 2018-01-09 2020-12-25 网宿科技股份有限公司 响应消息的缓冲方法及服务器
CN108984323B (zh) * 2018-07-13 2022-04-01 上海联影医疗科技股份有限公司 一种共享存储空间的调度方法及系统
CN109325026B (zh) * 2018-08-14 2023-09-26 中国平安人寿保险股份有限公司 基于大数据平台的数据处理方法、装置、设备及介质
CN109445943A (zh) * 2018-10-24 2019-03-08 郑州云海信息技术有限公司 内核态系统中i/o栈的内存管理方法、系统及相关装置
CN110134655A (zh) * 2019-04-30 2019-08-16 华为技术有限公司 一种资源管理方法、装置和设备
CN111026706B (zh) * 2019-10-21 2023-10-13 武汉神库小匠科技有限公司 电力系统数据的入库方法、装置、设备及介质
CN113495678B (zh) * 2020-04-01 2022-06-28 荣耀终端有限公司 一种dm缓存的分配方法及装置
CN111736973A (zh) * 2020-06-24 2020-10-02 北京奇艺世纪科技有限公司 一种服务启动方法、装置、服务器及存储介质
CN114063888A (zh) * 2020-07-31 2022-02-18 中移(苏州)软件技术有限公司 数据存储系统、数据处理方法、终端及存储介质
CN112486678A (zh) * 2020-11-25 2021-03-12 广州经传多赢投资咨询有限公司 一种股票行情数据处理方法、系统、装置及存储介质
CN113377049B (zh) * 2021-06-11 2022-09-06 西安应用光学研究所 基于fpga低延迟视频图像缓存的ddr控制方法
CN114610506B (zh) * 2022-03-09 2023-03-24 奥特酷智能科技(南京)有限公司 基于分离式数据分发服务的域内共享内存传输架构及机制

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458662A (zh) * 2007-12-14 2009-06-17 创惟科技股份有限公司 改进闪存存取效率的存储系统与方法
CN202995701U (zh) * 2012-12-13 2013-06-12 东南大学 基于预先解码分析的数据信息缓存管理系统
CN105573682A (zh) * 2016-02-25 2016-05-11 浪潮(北京)电子信息产业有限公司 一种san存储系统及其数据读写方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100530186C (zh) * 2006-12-26 2009-08-19 腾讯科技(深圳)有限公司 缓存处理方法以及缓存处理系统
US10324861B2 (en) * 2015-02-05 2019-06-18 Eta Scale Ab Systems and methods for coherence in clustered cache hierarchies

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101458662A (zh) * 2007-12-14 2009-06-17 创惟科技股份有限公司 改进闪存存取效率的存储系统与方法
CN202995701U (zh) * 2012-12-13 2013-06-12 东南大学 基于预先解码分析的数据信息缓存管理系统
CN105573682A (zh) * 2016-02-25 2016-05-11 浪潮(北京)电子信息产业有限公司 一种san存储系统及其数据读写方法

Also Published As

Publication number Publication date
CN106776368A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN106776368B (zh) 一种数据读取时的缓存管理方法、装置及系统
US20220413706A1 (en) Data Storage Method, Apparatus and Storage System
KR101620773B1 (ko) 복합식 비휘발성 저장 디바이스를 위한 데이터 이송
CN110555001B (zh) 数据处理方法、装置、终端及介质
JP2013521579A5 (zh)
CN110858162B (zh) 内存管理方法及装置、服务器
CN107122130B (zh) 一种数据重删方法及装置
CN109804359A (zh) 用于将数据回写到存储设备的系统和方法
JP2010134628A (ja) メモリコントローラおよびデータ処理装置
US20170123975A1 (en) Centralized distributed systems and methods for managing operations
US20200104072A1 (en) Data management method and storage controller using the same
CN111880734A (zh) 一种数据处理方法、系统、电子设备及存储介质
CN110442533A (zh) 一种提高访问性能的方法、设备及存储介质
CN111177105B (zh) 分布式文件系统的海量文件写方法、装置、系统及介质
CN113835624A (zh) 基于异构内存的数据迁移方法及装置
WO2019000423A1 (zh) 一种数据存储方法及设备
US20140195571A1 (en) Fast new file creation cache
WO2016206070A1 (zh) 一种文件更新方法及存储设备
CN111552438B (zh) 一种对象写入的方法、装置、服务器和存储介质
CN109508140B (zh) 存储资源管理方法、装置、电子设备及电子设备、系统
KR20180135390A (ko) 대용량 ssd 장치를 위한 데이터 저널링 방법
CN112764664A (zh) 一种磁盘缓存方法及装置
CN110515861B (zh) 处理刷写命令的存储设备及其方法
CN110989930A (zh) 一种池空间数据处理方法、装置、设备及存储介质
CN110795031A (zh) 一种基于全闪存储的数据重删方法、装置和系统

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
TA01 Transfer of patent application right

Effective date of registration: 20210104

Address after: Building 9, No.1, guanpu Road, Guoxiang street, Wuzhong Economic Development Zone, Wuzhong District, Suzhou City, Jiangsu Province

Applicant after: SUZHOU LANGCHAO INTELLIGENT TECHNOLOGY Co.,Ltd.

Address before: Room 1601, floor 16, 278 Xinyi Road, Zhengdong New District, Zhengzhou City, Henan Province

Applicant before: ZHENGZHOU YUNHAI INFORMATION TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant