CN110968266B - 一种基于热度的存储管理方法及系统 - Google Patents
一种基于热度的存储管理方法及系统 Download PDFInfo
- Publication number
- CN110968266B CN110968266B CN201911081712.XA CN201911081712A CN110968266B CN 110968266 B CN110968266 B CN 110968266B CN 201911081712 A CN201911081712 A CN 201911081712A CN 110968266 B CN110968266 B CN 110968266B
- Authority
- CN
- China
- Prior art keywords
- storage
- hot
- key value
- value pair
- slab
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7211—Wear leveling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于热度的存储管理方法及系统,属于键值缓存系统领域,包括:(1)在内存中获取目标键值对的索引信息,以获得其存储地址Ao,并该索引信息进行更新;(2)确定用于存储目标键值对的存储策略;(3)判断是否需要执行slab块剔除操作以回收内存空间,若是,则转入步骤(4);否则,转入步骤(5);(4)获得冷、热分区中更新次数较小的分区内热度值最小的满slab块Sbv,顺序写入SSD后回收内存空间;(5)在内存中为目标键值对分配存储槽后,将目标键值对写入其中,更新目标键值对的索引信息及其所在分区的更新次数,并更新slab块的分配信息、总更新次数和冷热属性。本发明能减少键值缓存系统中SSD的写入磨损,延长SSD的使用寿命。
Description
技术领域
本发明属于键值缓存系统领域,更具体地,涉及一种基于热度的存储管理方法及系统。
背景技术
随着数据爆炸式的增长,内存键值缓存系统在当前的低延迟网络服务环境需求下,在可扩展性、成本和功耗上面临挑战。近年来,基于flash的键值缓存系统使用flashSSD作为主要存储介质,凭借其成本低、可扩展性强等特点得到了广泛的关注,例如Facebook的McDipper、Twitter的Fatcache等。基于flash的键值缓存系统作为内存键值缓存系统的扩展,来解决内存键值缓存系统面临的可扩展性和成本问题。基于flash的键值缓存系统包括内存和flash SSD两层系统架构,内存主要作为写缓冲,在写请求中的数据写入SSD前先对数据进行缓存,当内存空间满时再选择内存中的数据写入到SSD。Flash SSD作为缓存系统的主要存储介质,存储大部分键值对数据,来提供大容量缓存空间。
Slab分配方式是Linux内核中所使用的Slab分配器的基础。Slab分配管理内存资源将内存分为同样大小的slab块,对每个slab块再进一步划分为同样大小的存储槽存储大小合适的数据,从而避免内存碎片问题,实现了内存资源在空间和时间上的高效性。目前的内存键值缓存系统如Memcached同样采用了基于slab的分配方式管理缓存系统中的内存,将所有键值对数据都存储在内存,来保障内存资源的高效利用。基于flash的键值缓存系统继承了内存键值缓存系统中基于slab的分配方式,内存和SSD空间都被分配为同样大小的slab块。写入缓存的数据选择内存中相应合适的slab块进行存储,内存满时以slab块为单位,将键值对数据批处理地写入到SSD中存储。SSD采用日志存储结构,写入到SSD中的slab块被依次顺序存储和剔除,并采用异地更新方式,以适应SSD的写特性。
然而,传统的基于slab的分配方式忽略了数据的访问局部性特性,使内存slab块中的热数据随冷数据一起被写入SSD,SSD的异地更新操作导致写入SSD的热数据成为无效的垃圾数据。大量潜在的无效垃圾数据的写入不仅增加了SSD的写入磨损,而且导致SSD存储空间被大量垃圾数据占用,浪费缓存空间,同时增加缓存替换触发的频率,频繁的替换擦除会进一步增加SSD磨损,影响SSD的使用寿命。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种基于热度的存储管理方法及系统,其目的在于,减少键值缓存系统中SSD的写入磨损,延长SSD的使用寿命。
为实现上述目的,按照本发明的第一方面,提供了一种基于热度的存储管理方法,包括:
(1)在内存中获取待存储的目标键值对的索引信息,以获得目标键值对的存储地址Ao,并对目标键值对的索引信息进行更新;键值对的索引信息包括更新次数、存储地址以及用于标识键值对冷热属性的热度标识;
(2)根据存储地址Ao和目标键值对的数据长度,确定用于存储目标键值对的存储策略;
(3)根据所确定的存储策略,判断是否需要执行slab块剔除操作以回收内存空间,若是,则转入步骤(4);否则,转入步骤(5);
(4)分别统计冷分区和热分区的更新次数,并获得更新次数较小的分区内已满的slab块中热度值最小的slab块Sbv,顺序写入SSD后回收相应的内存空间;
slab块的热度值为该slab块内键值对的平均更新次数,冷分区由内存中所有的冷slab块构成,热分区由内存中所有的热slab块构成,冷slab块内热键值对相对于存储槽总数的比例小于预设的块热度阈值,热slab块内热键值对相对于存储槽总数的比例大于或等于块热度阈值;
(5)在内存中分配用于存储目标键值对的存储槽后,将目标键值对写入其中,更新目标键值对的索引信息及其所在分区的更新次数,并更新slab块的分配信息、总更新次数和冷热属性;slab块的分配信息包括该slab块中已分配的存储槽数量和空闲的存储槽数量;
其中,键值缓存系统的内存和SSD被统一划分为大小相等的多个slab块,每个slab块被等分为多个存储槽,内部存储槽大小相同的slab块属于同一个slab类。
本发明根据更新次数识别键值对数据的冷热属性,并基于键值对的冷热属性识别slab块的冷热属性,在此基础上,根据键值对和slab块的热度进行分类分区的存储和管理,在针对内存执行slab块剔除操作时,优先选择热度值最小的满slab块(即无空闲存储槽的slab块)写入SSD,能够使大部分热数据保存在内存,并通过就地更新完成存储请求,在保留slab分配方式的效益的同时,降低了SSD总写入量,因此,本发明能够减少键值缓存系统中SSD的写入磨损,延长SSD的使用寿命。
进一步地,步骤(1)包括:
(11)在内存中获取目标键值对的索引信息,若获取成功,则转入步骤(13);否则,转入步骤(12);
(12)在内存中为目标键值对创建新的索引信息,将其中的更新次数初始化为0,将其中的冷热标识初始化为冷键值对标识,并初始化其中的存储地址,以表示目标键值对的键值未存储于键值缓存系统中;
(13)将目标键值对的索引信息中的更新次数Nreq加1后,与热度阈值L进行比较,若Nreq>L,则将热度标识更新为热键值对标识;否则,将热度标识更新为冷键值对标识;
其中,L为正整数。
进一步地,本发明第一方面提供的基于热度的存储管理方法,还包括,定期执行以下步骤:
分别获得已分配内存相对于键值缓存系统总存储空间的比例P1和热键值对数量相对于总键值对数量的比例P2;
若P1>P2,则减小热度阈值L;
若P1<P2,则增加热度阈值L,同时随机选取热键值对,将其修改为冷键值对,同时减小其历史更新次数,以使得修改之后,P1=P2,并修改slab块的冷热属性;
扫描内存中所有的slab块,由所有的冷slab块重新构成冷分区,由所有的热slab块重新构成热分区。
本发明根据实际的内存分配情况与热键值对所占比例,定期对用于识别冷、热键值对的热度阈值L进行自适应调整,尽量使得已分配内存相对于键值缓存系统总存储空间的比例等于热键值对数量相对于总键值对数量的比例,从而保证了热数据能够保存在内存中。
进一步地,步骤(2)包括:
(21)判断目标键值对的键值是否存储于键值缓存系统中,若是,则转入步骤(22);否则,确定存储策略为直接存储策略,转入步骤(24);
(22)若目标键值对的键值存储于内存中,则转入步骤(23);否则,确定存储策略为异地更新存储策略,转入步骤(24);
(23)根据存储地址Ao获得存储目标键值对的旧值的存储槽Sto,若存储槽Sto大小与目标键值对的数据长度相符,则确定存储策略为就地更新存储策略,转入步骤(24);否则,确定存储策略为异地更新存储策略,转入步骤(24);
(24)操作结束。
进一步地,步骤(3)中,根据所确定的存储策略,判断是否需要执行slab块剔除操作以回收内存空间,包括:
(31)若确定的存储策略为就地更新策略,则判定不需要执行slab块剔除操作,操作结束;否则,转入步骤(32);
(32)判断键值缓存系统中内存空间是否已满,若是,则判定需要执行slab块剔除操作以回收内存空间,操作结束;若否,则判定不需要执行slab块剔除操作,操作结束。
进一步地,步骤(5)包括:
(51)若存储策略为就地更新存储策略,则转入步骤(52);若存储策略为异地更新存储策略,则转入步骤(53);若存储策略为直接存储策略,则转入步骤(55);
(52)获得存储槽Sto所属的slab块Sbo,将目标键值对覆盖写入存储槽Sto后,更新slab块Sbo的总更新次数和冷热属性,转入步骤(57);
(53)若目标键值对的键值存储于内存中,则转入步骤(54);否则,转入步骤(55);
(54)获得存储槽Sto所属的slab块Sbo,回收存储槽Sto的内存空间,并更新slab块Sbo的分配信息、总更新次数和冷热属性;
(55)获得与目标键值对的数据长度最相符的slab类,并根据目标键值对的热度标识确定用于存储目标键值对的分区后,根据所确定的slab类在该分区内为目标键值对分配slab块Sbn,并根据slab块Sbn的分配信息为目标键值对分配一个空闲的存储槽Stn;
(56)将目标键值对写入存储槽Stn后,将目标键值对的索引信息中的存储地址更新为存储槽Stn的地址,并更新slab块Sbn的总更新次数、冷热属性及分配信息,转入步骤(57);
(57)更新目标键值对所在分区的更新次数,操作结束。
本发明根据slab块的冷热属性将内存分为冷分区和热分区,处理存储请求时,根据待存储的目标键值对的冷热属性在内存中相应的分区内为其分配存储槽,能够有效将热数据进行集中组织存储,避免了热数据在不同slab块之间的分散,从而热数据能够集中保留在内存中。
进一步地,步骤(4)中,将slab块Sbv顺序写入SSD,包括:
判断SSD的存储空间是否已满,若是,则从SSD中剔除最早写入的slab块,并回收相应的SSD空间后,写入slab块Sbv;否则,直接写入slab块Sbv。
进一步地,本发明第一方面提供的基于热度的存储管理方法,还包括:按照预设的时间间隔,分别减小冷分区的历史更新次数、热分区的历史更新次数以及内存中所有slab块的总历史更新次数。
本发明通过定期分别减小冷分区、热分区以及所有内存slab块的历史更新次数记录,能够减少过去时间间隔内负载的历史访问积累,自适应负载变化。
按照本发明的第二方面,提供了一种基于热度的存储管理系统,包括:计算机可读存储介质和处理器;
计算机可读存储介质用于存储可执行程序;
处理器用于读取计算机可读存储介质中存储的可执行程序,执行本发明第一方面提供的基于热度的存储管理方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明所提供的基于热度的存储管理方法及系统,根据更新次数识别键值对数据的冷热属性,并基于键值对的冷热属性识别slab块的冷热属性,在此基础上,根据键值对和slab块的热度进行分类分区的存储和管理,在针对内存执行slab块剔除操作时,优先选择热度值最小的满slab块写入SSD,能够使大部分热数据保存在内存,并通过就地更新完成存储请求,在保留slab分配方式的效益的同时,降低了SSD总写入量,因此,本发明能够减少键值缓存系统中SSD的写入磨损,延长SSD的使用寿命。
(2)本发明所提供的基于热度的存储管理方法及系统,根据实际的内存分配情况与热键值对所占比例,定期对用于识别冷、热键值对的热度阈值进行自适应调整,尽量使得已分配内存相对于键值缓存系统总存储空间的比例等于热键值对数量相对于总键值对数量的比例,从而保证了热数据能够保存在内存中。
(3)本发明所提供的基于热度的存储管理方法及系统,根据slab块的冷热属性将内存分为冷分区和热分区,处理存储请求时,根据待存储的目标键值对的冷热属性在内存中相应的分区内为其分配存储槽,能够有效将热数据进行集中组织存储,避免了热数据在不同slab块之间的分散,从而热数据能够集中保留在内存中。
(4)本发明所提供的基于热度的存储管理方法及系统,通过分别减小冷分区、热分区以及所有内存slab块的历史更新次数记录,能够减少过去时间间隔内负载的历史访问积累,自适应负载变化。
附图说明
图1为本发明实施例提供的基于热度的存储管理方法流程图;
图2为本发明实施例提供的直接存储策略示意图;
图3为本发明实施例提供的就地更新存储策略示意图;
图4为本发明实施例提供的对键值存储于内存中的键值对执行异地更新存储策略的示意图;
图5为本发明实施例提供的对键值存储于SSD中的键值对执行异地更新存储策略的示意图;
图6为本发明实施例提供的针对内存执行slab块剔除操作的示意图;其中,(a)为SSD满时,针对内存执行slab块剔除操作的示意图,(b)为SSD不满时,针对内存执行slab块剔除操作的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为减少键值缓存系统中SSD的写入磨损,延长SSD的使用寿命,本发明提供的基于热度的存储管理方法,如图1所示,包括:
(1)在内存中获取待存储的目标键值对的索引信息,以获得目标键值对的存储地址Ao,并对目标键值对的索引信息进行更新;
键值对的索引信息包括更新次数、存储地址以及用于标识键值对冷热属性的热度标识;键值对的索引信息具体可利用哈希表管理;
在一个可选的实时方式中,步骤(1)包括:
(11)在内存中获取目标键值对的索引信息,若获取成功,则转入步骤(13);否则,转入步骤(12);
(12)在内存中为目标键值对创建新的索引信息,将其中的更新次数初始化为0,将其中的冷热标识初始化为冷键值对标识,并初始化其中的存储地址,以表示目标键值对的键值未存储于键值缓存系统中;
(13)将目标键值对的索引信息中的更新次数Nreq加1后,与热度阈值L进行比较,若Nreq>L,则将热度标识更新为热键值对标识;否则,将热度标识更新为冷键值对标识;
热度阈值L可根据实际的负载访问特性确定,以保证能够准确区分冷键值对和热键值对;
(2)根据存储地址Ao和目标键值对的数据长度,确定用于存储目标键值对的存储策略;
在一个可选的实施方式中,步骤(2)包括:
(21)判断目标键值对的键值是否存储于键值缓存系统中,若是,则转入步骤(22);否则,确定存储策略为直接存储策略,转入步骤(24);
(22)若目标键值对的键值存储于内存中,则转入步骤(23);否则,确定存储策略为异地更新存储策略,转入步骤(24);
(23)根据存储地址Ao获得存储目标键值对的旧值的存储槽Sto,若存储槽Sto大小与目标键值对的数据长度相符,即存储槽Sto能够完整地存储目标键值对,则确定存储策略为就地更新存储策略,转入步骤(24);否则,即存储槽Sto不足以存储目标键值对,确定存储策略为异地更新存储策略,转入步骤(24);
(24)操作结束;
(3)根据所确定的存储策略,判断是否需要执行slab块剔除操作以回收内存空间,若是,则转入步骤(4);否则,转入步骤(5);
在一个可选的实施方式中,步骤(3)中,根据所确定的存储策略,判断是否需要执行slab块剔除操作以回收内存空间,包括:
(31)若确定的存储策略为就地更新策略,则判定不需要执行slab块剔除操作,操作结束;否则,转入步骤(32);
(32)判断键值缓存系统中内存空间是否已满,若是,则判定需要执行slab块剔除操作以回收内存空间,操作结束;若否,则判定不需要执行slab块剔除操作,操作结束;
(4)分别统计冷分区和热分区的更新次数,并获得更新次数较小的分区内已满的slab块中热度值最小的slab块Sbv,顺序写入SSD后回收相应的内存空间;
slab块的热度值为该slab块内键值对的平均更新次数(slab块的总更新次数与其中存储的键值对数量相除的结果,即为该slab块内键值对的平均更新次数),冷分区由内存中所有的冷slab块构成,热分区由内存中所有的热slab块构成,冷slab块内热键值对相对于存储槽总数的比例小于预设的块热度阈值,热slab块内热键值对相对于存储槽总数的比例大于或等于块热度阈值;
在一个可选的实施方式中,步骤(4)中,将slab块Sbv顺序写入SSD,包括:
判断SSD的存储空间是否已满,若是,则从SSD中剔除最早写入的slab块,并回收相应的SSD空间后,写入slab块Sbv;否则,直接写入slab块Sbv;
由于从内存中剔除的slab块是顺序写入SSD的,最早写入SSD中的slab块中的数据极有可能为无效的垃圾数据,在SSD满时,从SSD中剔除最早写入的slab块,能够在回收SSD空间的同时,集中剔除无效的垃圾数据;
(5)在内存中分配用于存储目标键值对的存储槽后,将目标键值对写入其中,更新目标键值对的索引信息及其所在分区的更新次数,并更新slab块的分配信息、总更新次数和冷热属性;slab块的分配信息包括该slab块中已分配的存储槽数量和空闲的存储槽数量;
在一个可选的实施方式中,步骤(5)包括:
(51)若存储策略为就地更新存储策略,则转入步骤(52);若存储策略为异地更新存储策略,则转入步骤(53);若存储策略为直接存储策略,则转入步骤(55);
(52)获得存储槽Sto所属的slab块Sbo,将目标键值对覆盖写入存储槽Sto后,更新slab块Sbo的总更新次数和冷热属性,转入步骤(57);
(53)若目标键值对的键值存储于内存中,则转入步骤(54);否则,转入步骤(55);
(54)获得存储槽Sto所属的slab块Sbo,回收存储槽Sto的内存空间,并更新slab块Sbo的分配信息、总更新次数和冷热属性;
(55)获得与目标键值对的数据长度最相符的slab类,并根据目标键值对的热度标识确定用于存储目标键值对的分区后,根据所确定的slab类在该分区内为目标键值对分配slab块Sbn,并根据slab块Sbn的分配信息为目标键值对分配一个空闲的存储槽Stn;
容易理解的是,与目标键值对的数据长度最相符的slab类,就是其中的存储槽大小大于目标键值对的数据长度,且二者的相差最小的slab类;
根据目标键值对的热度标识确定用于存储目标键值对的分区,即确定将热键值对存储于热分区中,将冷键值存储于冷分区中;对于采用直接存储策略的键值对,由于其键值未存储于键值缓存系统中,首次存储该键值对时,该键值对为冷键值对,相应地,会在冷分区中为该键值对分配slab块;
对于键值存储于SSD中的键值对所占用的存储空间,会随着slab块从SSD中剔除被集中回收;
(56)将目标键值对写入存储槽Stn后,将目标键值对的索引信息中的存储地址更新为存储槽Stn的地址,并更新slab块Sbn的总更新次数、冷热属性及分配信息,转入步骤(57);
(57)更新目标键值对所在分区的更新次数,操作结束;
其中,键值缓存系统的内存和SSD被统一划分为大小相等的多个slab块,每个slab块被等分为多个存储槽,内部存储槽大小相同的slab块属于同一个slab类。
上述基于热度的存储管理方法,根据更新次数识别键值对数据的冷热属性,并基于键值对的冷热属性识别slab块的冷热属性,在此基础上,根据键值对和slab块的热度进行分类分区的存储和管理,在针对内存执行slab块剔除操作时,优先选择热度值最小的满slab块写入SSD,能够使大部分热数据保存在内存,并通过就地更新完成存储请求,在保留slab分配方式的效益的同时,降低了SSD总写入量,因此,上述基于热度的存储管理方法能够减少键值缓存系统中SSD的写入磨损,延长SSD的使用寿命。
为了自适应负载的变化,准确识别冷、热键值对,上述基于热度的存储管理方法,还可包括,定期执行以下步骤:
分别获得已分配内存相对于键值缓存系统总存储空间的比例P1和热键值对数量相对于总键值对数量的比例P2;
若P1>P2,则减小热度阈值L;
若P1<P2,则增加热度阈值L,同时随机选取热键值对,将其修改为冷键值对,同时减小其历史更新次数,以使得修改之后,P1=P2,并修改slab块的冷热属性;
扫描内存中所有的slab块,由所有的冷slab块重新构成冷分区,由所有的热slab块重新构成热分区;
理想情况下,根据已分配内存空间大小和负载中键值对更新次数,应将更新最频繁的那一部分键值对识别为热键值对并存储于内存中,剩余键值对则识别为冷键值对并存储于SSD中,此时,已分配内存相对于键值缓存系统总存储空间的比例等于热键值对数量相对于总键值对数量的比例;上述基于热度的存储管理方法,根据实际的内存分配情况与热键值对所占比例,定期对用于识别冷、热键值对的热度阈值L进行自适应调整,尽量使得已分配内存相对于键值缓存系统总存储空间的比例等于热键值对数量相对于总键值对数量的比例,能够保证热数据能够保存在内存中;
进行上述自适应调整的时间间隔,可根据负载的实际变化情况确定,以保证能够及时感知负载的变化,对热度阈值作出适应性的调整。
为了进一步自适应负载变化,上述基于热度的存储管理方法,还可包括:
按照预设的时间间隔,分别减小冷分区的历史更新次数、热分区的历史更新次数以及内存中所有slab块的总历史更新次数;
通过定期分别减小冷分区、热分区以及所有内存slab块的历史更新次数记录,能够减少过去时间间隔内负载的历史访问积累,自适应负载变化;
对对冷分区、热分区以及所有内存slab块的历史更新次数进行减小的比例,可根据实际负载的变化幅度确定,在负载变化较大的情况下,该比例可相应增大,而在负载变化较小的情况下,该比例则可相应减小,以确保在减少过去时间间隔内负载的历史访问积累,能够准确保留负载在不同时间间隔之间的联系;
对对冷分区、热分区以及所有内存slab块的历史更新次数进行减小的时间间隔,可根据实际负载的变化周期确定。
本发明还提供了一种基于热度的存储管理系统,包括:计算机可读存储介质和处理器;
计算机可读存储介质用于存储可执行程序;
处理器用于读取计算机可读存储介质中存储的可执行程序,执行上述基于热度的存储管理方法。
应用实例:
在键值缓存系统中,假定热度阈值为L=3;热度标识Tag=1用于标识热键值对,热度标识Tag=0用于标识冷键值对;在内存中以哈希表对键值对的索引信息进行管理。
对于分别包含键值对数据D1<key a,value x>,D2<key b,value y>,D3<key c,value z>和D4<key d,value w>的存储请求,假设键值对D1在缓存系统中不存在;D2的键值已存在于键值缓存系统中,D2’表示旧数据值,D2’存储于属于slab类Slabclass2的内存slab块i2内,其索引信息中的更新次数Nreq=1,Tag=0;D3的键值已存在,用D3’表示旧值,D3’存储于属于slab类Slabclass3的内存slab块i3内,其索引信息中的更新次数Nreq=3,Tag=0;D4的键值已存在,用D4’表示旧值,D4’存储于属于slab类Slabclass4的SSD slab块i4内,其索引信息中的更新次数Nreq=4,热度标识Tag=1。键值对数据包括键值key,和数据值value,例如,键值对数据D1<key a,value x>表示键值对数据D1的键值为a,数据值为value,以此类推。处理这四个存储请求的过程如下:
根据存储请求中的键值查询缓存系统中的哈希索引表,获取相应的索引信息。如图2所示,D1键值不存在于索引表中,因此新创建一个索引项存储D1的元数据信息,并将其热度标识Tag置为0,表示为冷数据。如图3,图4,图5所示,D2’、D3’、D4’已存在于系统中,因此成功获取相应索引信息,包括存储地址off,更新次数Nreq,热度标识Tag,将更新次数Nreq增加1后与系统设置的热度阈值L进行比较;D2的更新次数Nreq增加后为2仍小于L,因此其热度标识Tag不变,仍标识为冷数据;D3的更新次数Nreq增加后为4,大于L,其热度标识Tag从0被更新为1,标识为热数据;D4的更新次数Nreq增加后为5,仍大于L,其热度标识Tag不变,仍标识为热数据。
根据键值对在系统中的存储结果和存储请求中的数据信息,选择不同的存储策略,存储策略包括直接存储策略、就地更新存储策略和异地更新存储策略。D1不存在于系统中,因此选择直接存储策略。假定D2的value数据长度满足D2’存储的slab块所属slab类,因此选择就地更新存储策略。假定D3的value数据长度符合Slabclass4,不满足D3’存储的slab块所属slab类,因此选择异地更新存储策略。D4’存储在SSD内,因此D4同样选择异地更新策略。
由于D2选择的就地更新存储,D2将直接存储在D2’的存储位置,因此不需要新申请空闲空间分配和块剔除操作,而D1、D3、D4均为非就地更新存储,因此都需判断是否需要执行slab块剔除操作。
根据获取的内存存储情况,若内存已满,需要执行slab块剔除操作。如图6所示,slab块分为冷分区和热分区,因此根据获取的分区更新次数记录信息,若冷分区的更新次数记录小于热分区,则选择冷分区作为块剔除区域,否则选择热分区作为块剔除区域。然后对于选择的剔除区域,对于其中已满的每个内存slab块,用slab块记录的总更新次数除以存储数据量计算得到相应的热度值,并记录热度值最小的slab块。根据SSD存储情况,若SSD已满,先剔除SSD内最早写入的slab块以回收空间,如图6(a)所示;否则,将选择的热度值最小的slab块追加到SSD的日志尾,如图6(b)所示。
根据所选的存储策略存储数据。对于D1选择的直接存储策略,如图2所示,根据D1的数据及数据值长度,假设D1的value数据长度符合slabclass1,因此选择冷分区内属于slabclass1的分配slab块i1,并获取一个存储槽存储value x,存储成功后修改slab块i1的更新次数,冷热属性和分配信息,同时修改冷分区的更新次数,并将存储位置记录在索引项中。对于D2选择的就地更新存储策略,如图3所示,根据获取的索引信息得到D2键值在系统中的旧值D2’的存储位置,将D2’数据存储位置进行数据清零,并写入D2中的新数据valuey,写入成功后修改slab块i2的更新次数,冷热属性和分配信息,同时修改冷分区的更新次数。对于D3选择的异地更新存储策略,如图4所示,根据获取的索引信息得到D3键值在系统中的旧值D3’的存储位置,将D3’数据存储位置回收并修改slab块i3的更新次数,冷热属性和分配信息,以供后续数据存储。根据D3的数据及数据值长度,假设D3的value数据长度满足slabclass4,因此根据D3的热度信息,选择热分区内属于slabclass4的分配slab块i5,并获取一个存储槽存储value z,存储成功后修改slab块i5的更新次数,冷热属性和分配信息,同时修改热分区的更新次数,并修改索引项中记录的存储位置。对于D4选择的异地更新存储策略,如图5所示,由于D4’存储在SSD中,因此可以延迟进行后续清理。假设D4的value数据长度满足slabclass3。根据D4的热度信息,选择热分区内属于slabclass3的分配slab块i6,并获取一个存储槽存储value w,存储成功后修改slab块i6的更新次数,冷热属性和分配信息,同时修改热分区的更新次数,并修改索引项中记录的存储位置。
判断当满足定期触发条件时,系统进行自适应调整。根据系统的分配内存空间和缓存空间大小,计算内存与缓存空间大小比例P1,根据统计的当前热键值对数量和总键值对数量,计算热数据量相对于总数据量的比例P2,比较P1和P2的大小,若P1大于P2,将热度阈值L减小为2,若P1小于P2,将热度阈值L增加为4,同时随机选择当前的热键值对,将其修改为冷键值对,同时减小其历史更新次数,并修改所选择的热键值对所在slab块的slab热度信息,以减少当前热键值对数量至P1等于P2。扫描冷热分区内的所有内存slab块,根据slab块记录的热度信息判断其热度是否变化,若是,对其所在分区进行修改。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于热度的存储管理方法,其特征在于,包括:
(1)在内存中获取待存储的目标键值对的索引信息,以获得所述目标键值对的存储地址Ao,并对所述目标键值对的索引信息进行更新;键值对的索引信息包括更新次数、存储地址以及用于标识键值对冷热属性的热度标识;
(2)根据所述存储地址Ao和所述目标键值对的数据长度,确定用于存储所述目标键值对的存储策略;
(3)根据所确定的存储策略,判断是否需要执行slab块剔除操作以回收内存空间,若是,则转入步骤(4);否则,转入步骤(5);
(4)分别统计冷分区和热分区的更新次数,并获得更新次数较小的分区内已满的slab块中热度值最小的slab块Sbv,顺序写入SSD后回收相应的内存空间;
slab块的热度值为该slab块内键值对的平均更新次数,冷分区由内存中所有的冷slab块构成,热分区由内存中所有的热slab块构成,冷slab块内热键值对相对于存储槽总数的比例小于预设的块热度阈值,热slab块内热键值对相对于存储槽总数的比例大于或等于所述块热度阈值;
(5)在内存中分配用于存储所述目标键值对的存储槽后,将所述目标键值对写入其中,更新所述目标键值对的索引信息及其所在分区的更新次数,并更新slab块的分配信息、总更新次数和冷热属性;slab块的分配信息包括该slab块中已分配的存储槽数量和空闲的存储槽数量;
其中,键值缓存系统的内存和SSD被统一划分为大小相等的多个slab块,每个slab块被等分为多个存储槽,内部存储槽大小相同的slab块属于同一个slab类;
所述步骤(1)包括:
(11)在内存中获取所述目标键值对的索引信息,若获取成功,则转入步骤(13);否则,转入步骤(12);
(12)在内存中为所述目标键值对创建新的索引信息,将其中的更新次数初始化为0,将其中的冷热标识初始化为冷键值对标识,并初始化其中的存储地址,以表示所述目标键值对的键值未存储于所述键值缓存系统中;
(13)将所述目标键值对的索引信息中的更新次数Nreq加1后,与热度阈值L进行比较,若Nreq>L,则将热度标识更新为热键值对标识;否则,将热度标识更新为冷键值对标识;
其中,L为正整数。
2.如权利要求1所述的基于热度的存储管理方法,其特征在于,还包括,定期执行以下步骤:
分别获得已分配内存相对于键值缓存系统总存储空间的比例P1和热键值对数量相对于总键值对数量的比例P2;
若P1>P2,则减小所述热度阈值L;
若P1<P2,则增加所述热度阈值L,同时随机选取热键值对,将其修改为冷键值对,同时减小其历史更新次数,以使得修改之后,P1=P2,并修改slab块的冷热属性;
扫描内存中所有的slab块,由所有的冷slab块重新构成冷分区,由所有的热slab块重新构成热分区。
3.如权利要求1-2任一项所述的基于热度的存储管理方法,其特征在于,所述步骤(2)包括:
(21)判断所述目标键值对的键值是否存储于所述键值缓存系统中,若是,则转入步骤(22);否则,确定所述存储策略为直接存储策略,转入步骤(24);
(22)若所述目标键值对的键值存储于内存中,则转入步骤(23);否则,确定所述存储策略为异地更新存储策略,转入步骤(24);
(23)根据所述存储地址Ao获得存储所述目标键值对的旧值的存储槽Sto,若存储槽Sto大小与所述目标键值对的数据长度相符,则确定所述存储策略为就地更新存储策略,转入步骤(24);否则,确定所述存储策略为异地更新存储策略,转入步骤(24);
(24)操作结束。
4.如权利要求3所述的基于热度的存储管理方法,其特征在于,所述步骤(3)中,根据所确定的存储策略,判断是否需要执行slab块剔除操作以回收内存空间,包括:
(31)若确定的存储策略为就地更新策略,则判定不需要执行slab块剔除操作,操作结束;否则,转入步骤(32);
(32)判断所述键值缓存系统中内存空间是否已满,若是,则判定需要执行slab块剔除操作以回收内存空间,操作结束;若否,则判定不需要执行slab块剔除操作,操作结束。
5.如权利要求3所述的基于热度的存储管理方法,其特征在于,所述步骤(5)包括:
(51)若所述存储策略为就地更新存储策略,则转入步骤(52);若所述存储策略为异地更新存储策略,则转入步骤(53);若所述存储策略为直接存储策略,则转入步骤(55);
(52)获得存储槽Sto所属的slab块Sbo,将所述目标键值对覆盖写入所述存储槽Sto后,更新slab块Sbo的总更新次数和冷热属性,转入步骤(57);
(53)若所述目标键值对的键值存储于内存中,则转入步骤(54);否则,转入步骤(55);
(54)获得存储槽Sto所属的slab块Sbo,回收所述存储槽Sto的内存空间,并更新slab块Sbo的分配信息、总更新次数和冷热属性;
(55)获得与所述目标键值对的数据长度最相符的slab类,并根据所述目标键值对的热度标识确定用于存储所述目标键值对的分区后,根据所确定的slab类在该分区内为所述目标键值对分配slab块Sbn,并根据slab块Sbn的分配信息为所述目标键值对分配一个空闲的存储槽Stn;
(56)将所述目标键值对写入所述存储槽Stn后,将所述目标键值对的索引信息中的存储地址更新为所述存储槽Stn的地址,并更新slab块Sbn的总更新次数、冷热属性及分配信息,转入步骤(57);
(57)更新所述目标键值对所在分区的更新次数,操作结束。
6.如权利要求1-2任一项所述的基于热度的存储管理方法,其特征在于,所述步骤(4)中,将slab块Sbv顺序写入SSD,包括:
判断SSD的存储空间是否已满,若是,则从SSD中剔除最早写入的slab块,并回收相应的SSD空间后,写入所述slab块Sbv;否则,直接写入所述slab块Sbv。
7.如权利要求1-2任一项所述的基于热度的存储管理方法,其特征在于,还包括:按照预设的时间间隔,分别减小冷分区的历史更新次数、热分区的历史更新次数以及内存中所有slab块的总历史更新次数。
8.一种基于热度的存储管理系统,其特征在于,包括:计算机可读存储介质和处理器;
所述计算机可读存储介质用于存储可执行程序;
所述处理器用于读取所述计算机可读存储介质中存储的可执行程序,执行权利要求1-7任一项所述的基于热度的存储管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911081712.XA CN110968266B (zh) | 2019-11-07 | 2019-11-07 | 一种基于热度的存储管理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911081712.XA CN110968266B (zh) | 2019-11-07 | 2019-11-07 | 一种基于热度的存储管理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110968266A CN110968266A (zh) | 2020-04-07 |
CN110968266B true CN110968266B (zh) | 2021-03-26 |
Family
ID=70030458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911081712.XA Active CN110968266B (zh) | 2019-11-07 | 2019-11-07 | 一种基于热度的存储管理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110968266B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114791832B (zh) * | 2022-04-24 | 2024-02-27 | 深圳软牛科技集团股份有限公司 | 在设备空间不足时ios系统修复的方法、装置及相关组件 |
CN114969069B (zh) * | 2022-05-30 | 2024-06-18 | 华侨大学 | 一种应用于键值存储系统的热度感知本地更新方法 |
CN116149550A (zh) * | 2022-12-29 | 2023-05-23 | 北京趋动智能科技有限公司 | 数据管理方法、装置、存储介质及设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8677055B2 (en) * | 2010-04-12 | 2014-03-18 | Sandisk Enterprises IP LLC | Flexible way of specifying storage attributes in a flash memory-based object store |
CN104834607B (zh) * | 2015-05-19 | 2018-02-23 | 华中科技大学 | 一种提高分布式缓存的命中率并减少固态硬盘磨损的方法 |
CN105760225B (zh) * | 2016-01-27 | 2019-05-10 | 浪潮(北京)电子信息产业有限公司 | 一种内存回收方法与系统 |
CN106021488A (zh) * | 2016-05-19 | 2016-10-12 | 乐视控股(北京)有限公司 | 键值数据库的管理方法和装置 |
CN108733313B (zh) * | 2017-04-17 | 2021-07-23 | 伊姆西Ip控股有限责任公司 | 利用预备盘建立多级闪速缓存的方法、设备和计算机可读介质 |
CN107168654B (zh) * | 2017-05-26 | 2019-08-13 | 华中科技大学 | 一种基于数据对象热度的异构内存分配方法及系统 |
CN110134514B (zh) * | 2019-04-18 | 2021-04-13 | 华中科技大学 | 基于异构内存的可扩展内存对象存储系统 |
-
2019
- 2019-11-07 CN CN201911081712.XA patent/CN110968266B/zh active Active
Non-Patent Citations (2)
Title |
---|
393High-Performance Hybrid Key-Value Store on Modern Clusters with RDMAInterconnects and SSDs: Non-blocking Extensions, Designs, and Benefits;Dipti Shankar.etc;《IEEE International Parallel and Distributed Processing Symposium》;20160721;全文 * |
数据块热度感知的相变存储器读缓存优化策略研究;朱铭;《中国优秀硕士学位论文全文数据库》;20190315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110968266A (zh) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107193646B (zh) | 一种基于混合主存架构的高效动态页面调度方法 | |
CN110968266B (zh) | 一种基于热度的存储管理方法及系统 | |
US8909887B1 (en) | Selective defragmentation based on IO hot spots | |
US8799601B1 (en) | Techniques for managing deduplication based on recently written extents | |
KR101717644B1 (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
CN104899156B (zh) | 一种面向大规模社交网络的图数据存储及查询方法 | |
US9934231B2 (en) | System and methods for prioritizing data in a cache | |
US9785564B2 (en) | Hybrid memory with associative cache | |
US9805048B2 (en) | System and method for managing a deduplication table | |
CN106815152B (zh) | 一种优化页级闪存转换层的方法 | |
US20220083273A1 (en) | Memory system | |
CN106201335B (zh) | 存储系统 | |
CN110321301A (zh) | 一种数据处理的方法及装置 | |
CN107423229B (zh) | 一种面向页级ftl的缓冲区改进方法 | |
CN103558992A (zh) | 堆外直接内存数据存储器,创建和/或管理堆外直接内存数据存储器的方法,和/或包括堆外直接内存数据存储器的系统 | |
CN103246696A (zh) | 高并发数据库的访问方法及应用于多服务器系统的方法 | |
JPWO2017149592A1 (ja) | ストレージ装置 | |
CN108845957B (zh) | 一种置换和回写自适应的缓冲区管理方法 | |
JP2019517689A (ja) | 他のキャッシュでのエントリの可用性に基づくキャッシュエントリの置換 | |
WO2024066613A1 (zh) | 多级缓存系统的访问方法、数据存储方法及装置 | |
CN110955488A (zh) | 一种持久性内存的虚拟化方法及系统 | |
US20200241750A1 (en) | Memory system and method for controlling nonvolatile memory | |
CN110321081A (zh) | 一种闪存读缓存的方法及其系统 | |
CN114327270A (zh) | 一种请求处理方法、装置、设备及可读存储介质 | |
CN108664217B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |