CN115827511A - 设置缓存的方法以及装置 - Google Patents
设置缓存的方法以及装置 Download PDFInfo
- Publication number
- CN115827511A CN115827511A CN202211297441.3A CN202211297441A CN115827511A CN 115827511 A CN115827511 A CN 115827511A CN 202211297441 A CN202211297441 A CN 202211297441A CN 115827511 A CN115827511 A CN 115827511A
- Authority
- CN
- China
- Prior art keywords
- capacity
- cache
- cache partition
- partition
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供一种设置缓存的方法以及装置,其中设置缓存的方法包括:为固态盘的多个闪存分区,分别设置对应的缓存分区;记录读请求在缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息;利用命中信息以及缓存分区对应的闪存分区的读延迟,预估为缓存分区增加第一容量的情况下,第一容量带来的读性能收益,以及,预估为缓存分区减少第二容量的情况下,第二容量带来的读性能损失;基于各个缓存分区各自对应的读性能收益和读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区;将需要缩容的缓存分区中减少第二容量,将需要扩容的缓存分区中增加第一容量。通过命中信息调整各缓存分区的容量,达到降低固态盘的访问延迟的效果。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种设置缓存的方法。
背景技术
固态盘是存储盘的主流设备。得益于多级存储单元技术的进步,基于闪存的固态盘存储密度快速提升。尤其是基于四级存储单元的闪存(Quad-Level Cell Solid StateDrive,QLC SSD)成为主流存储设备之一。基于QLC闪存的固态盘,适合读密集的场景,如机器学习、大数据分析、NoSQL数据库等。在此背景下,针对QLC固态盘的读性能优化尤为重要。
发明内容
有鉴于此,本说明书实施例提供了一种设置缓存的方法。本说明书一个或者多个实施例同时涉及一种设置缓存的装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种设置缓存的方法,包括:
为固态盘的多个闪存分区,分别设置对应的缓存分区;
记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息;
利用所述命中信息以及所述缓存分区对应的闪存分区的读延迟,预估为所述缓存分区增加第一容量的情况下,所述第一容量带来的读性能收益,以及,预估为所述缓存分区减少第二容量的情况下,所述第二容量带来的读性能损失;
基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区;
将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量。
根据本说明书实施例的第二方面,提供了一种设置缓存的装置,包括:
缓存分区模块,被配置为固态盘的多个闪存分区,分别设置对应的缓存分区;
信息记录模块,被配置为记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息;
性能计算模块,被配置为利用所述命中信息以及所述缓存分区对应的闪存分区的读延迟,预估为所述缓存分区增加第一容量的情况下,所述第一容量带来的读性能收益,以及,预估为所述缓存分区减少第二容量的情况下,所述第二容量带来的读性能损失;
分区确定模块,被配置为基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区;
分区调整模块,被配置为将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述设置缓存的方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述设置缓存的方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述设置缓存的方法的步骤。
本说明书实施例提供一种设置缓存的方法以及装置,其中所述设置缓存的方法包括:为固态盘的多个闪存分区,分别设置对应的缓存分区;记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息;利用所述命中信息以及所述缓存分区对应的闪存分区的读延迟,预估为所述缓存分区增加第一容量的情况下,所述第一容量带来的读性能收益,以及,预估为所述缓存分区减少第二容量的情况下,所述第二容量带来的读性能损失;基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区;将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量。可见,该方法根据固态盘多个闪存分区的闪存页类型不同,读延迟具有较大差异的特点,通过为缓存设置与闪存分区对应的缓存分区,并记录读请求在各缓存分区待淘汰数据中的命中信息和已淘汰数据中的命中信息,基于命中信息和闪存分区的读延迟来预估扩容对应的读性能收益以及缩容对应的读性能损失,进而能够根据收益和损失调整各缓存分区的容量,即可达到降低固态盘的访问延迟,提高读性能的效果。
附图说明
图1是本说明书一个实施例提供的一种设置缓存的方法的存储结构示意图;
图2是本说明书一个实施例提供的一种设置缓存的方法的流程图;
图3是本说明书一个实施例提供的一种设置缓存的方法的缓存分区的示意图;
图4是本说明书一个实施例提供的一种设置缓存的方法的处理过程流程图;
图5是本说明书一个实施例提供的一种设置缓存的装置的结构示意图;
图6是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
SSD:Solid State Drive,固态盘。
SLC:Single-Level Cell,单层存储单元。
MLC:Multi-Level Cell,多级存储单元。
TLC:Triple-Level Cell,三级存储单元。
QLC:Quad-Level Cell,四级存储单元。
P/E Cycle:Program/Erase Cycle,读写周期。
闪存:快闪存储器(英语:flash memory),是一种非易失性存储器,允许在操作中被多次擦或写的存储器。
闪存页(Flash Page):是固态盘读(read)和写(program)操作的基本单位。
NAND闪存:是一种非易失性存储技术,即断电后仍能保存数据。
缓存(cache):是指可以进行高速数据交换的存储器,是固态盘内闪存和外界之间的缓冲器。
固态盘(Solid State Disk或Solid State Drive):也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的硬盘
动态随机存取存储器(Dynamic Random Access Memory,DRAM)是一种半导体存储器。
格雷码:在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code)。
SLC、MLC、TLC、QLC都多级存储单元形式的闪存。以QLC闪存为例,QLC闪存单元具有16个不同的状态,每个状态对应一个电压范围。16个状态使用格雷码(Gray Code)编码为4比特。格雷码保证了相邻的状态有且只有1比特的数据不同,这样发生电压偏移时一般只会产生1比特的错误,便于纠错。因此,基于QLC闪存的固态盘适合读密集的场景,如机器学习、大数据分析、NoSQL数据库等。由于NAND闪存编程步骤的要求,目前广泛采取的格雷码是非平衡格雷码,即不同页面的读电压等级数不同。以1-2-6-6格雷码为例,闪存单元的最低有效位只对应1个读电压等级,而最高有效为对应6个读电压等级。相应闪存页的读延迟与读电压等级数成正相关关系,因此QLC固态盘内四种不同的闪存页读延迟差距巨大。在一些产品的测试中,其中四种类型的QLC闪存页数量大致相当,而读延迟存在1.6-4.8倍的差异。QLC闪存页之间读延迟的巨大差异,给QLC固态盘读性能优化带来了很大空间。
目前针对固态盘闪存页读性能差异的研究很少,其中一种为在运行过程中动态识别数据的读热度,并将读热度较高的数据迁移到读延迟较低的闪存页中。然而这些策略需要统计数据的冷热信息,这引入了额外的计算开销。更重要的是,为了调整数据在不同类型闪存页中的分布,需要进行额外数据迁移,这实际上增加了固态盘的数据写入量。而对于基于如QLC闪存的大容量固态盘,由于闪存单元的耐久性极差,这种方法引入的写放大开销难以接受。另一种方案为每种类型的闪存页各维护一个队列,在垃圾回收、磨损均衡操作时根据页面的读热度将迁移的有效页放入不同的队列中。这种策略虽然不存在写放大问题,但依然存在冷热识别的开销。并且数据的迁移只在垃圾回收时进行,对于读为主的工作负载,算法的触发频率很低,作用有限。并且这些方案都通过优化闪存数据布局来优化读性能。即,将读热度较高的数据迁移到低延迟页中。这些方法存在两个问题:数据冷热统计的开销、数据迁移带来额外的写放大。目前尚不存在针对QLC闪存页读性能差异,结合盘内数据缓存进行优化的算法。
基于此,在本说明书中,提供了一种设置缓存的方法,本说明书同时涉及一种设置缓存的装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1,图1示出了根据本说明书一个实施例提供的一种设置缓存的方法的存储结构示意图,具体包括缓存和闪存,其中,缓存中包括读缓存和写缓存,读缓存用于进行数据读取,写缓存用于数据写入。闪存包括第一闪存块、第二闪存块、第三闪存块和第n闪存块,进一步地,每个闪存块中包括第一类型闪存页、第二类型闪存页、第三类型闪存页和第四类型闪存页。
在缓存的读缓存中,划分四个与闪存页类型相对应的缓存分区,分别为第一缓存分区、第二缓存分区、第三缓存分区和第四缓存分区。第一缓存分区、第二缓存分区、第三缓存分区和第四缓存分区分别对应缓存第一类型闪存页、第二类型闪存页、第三类型闪存页和第四类型闪存页的数据。并为每个缓存分区定义两个数据结构,这两个数据结构分别是第二存储区和第一存储区。第二存储区位于每个缓存分区内尾部,包括固定数量的缓存数据,属于缓存分区内的一部分,其中是待淘汰的缓存数据。第一存储区位于每个缓存分区之外,是仅存储元数据的数据结构,用于存储从缓存分区淘汰的最近固定数量数据的元数据,不占用额外的存储空间,占用空间极小。
本说明书实施例通过为缓存设置与闪存分区对应的缓存分区,并记录各分区的命中信息,从而通过命中信息调整各缓存分区的容量,以达到降低固态盘的访问延迟的效果。
参见图2,图2示出了根据本说明书一个实施例提供的一种设置缓存的方法的流程图,具体包括以下步骤。
步骤202:为固态盘的多个闪存分区,分别设置对应的缓存分区。
其中,闪存可以为三级存储单元类、四级存储单元或多级存储单元类等。缓存分区可以理解为对一整块缓存区域进行划分得到的分区。
在实际应用中,闪存可以为QLC闪存,每个QLC闪存单元可以存4比特的信息,每个比特属于一个闪存页。QLC闪存中存在四种闪存页,这四种闪存页分别为,高延迟页(HighLatency Page,HL Page)、中高延迟页(Medium-High Latency Page,MHL Page)、中低延迟页(Medium-Low Latency Page,MLL Page)和低延迟页(Low Latency Page,LL Page)。与4种类型的QLC闪存页对应,将固态盘的数据读缓存分为4个分区,每个分区仅用于缓存一种类型的闪存页数据。
例如,一个固态盘的闪存类型为QLC闪存,该固态盘对应的缓存大小为40GB,则将该缓存划分四个分区,分别对应QLC闪存中的,高延迟页、中高延迟页、中低延迟页和低延迟页。
本说明书实施例为固态盘的多个闪存分区,分别设置对应的缓存分区,可以在后续进行四个分区的容量调整收益计算,并做出容量调整决策。从而使可以提高了固态盘的读写性能有了基础前提。
本说明书实施例提供的方法中,对划分缓存分区的具体方式不限。例如:为了保证对固态盘的多个闪存分区对应的初始的缓存分区的性能一样,可以通过平局分配容量的方式初始化缓存分区,具体地,所述为固态盘的多个闪存分区,分别设置对应的缓存分区,包括:按照一一对应的原则,为固态盘的多个闪存分区,分别设置容量相同的缓存分区;初始化各个缓存分区,初始化各个缓存分区的命中信息。
其中,一一对应的原则可以理解为一个闪存分区对应一个缓存分区的原则。命中信息可以为命中次数。
在上述实施例中,为了保证对固态盘的多个闪存分区对应的初始的缓存分区的性能一样,采用了对缓存进行平均分配的方式,实际应用中,可以按需灵活设置,本说明书实施例提供的方法对此并不进行限制。另外,在初始化各个缓存分区的过程中,可以将读缓存进行分区格式化。以QLC固态盘的4中闪存页类型的闪存分区为例,可以对应地将读缓存分为4个缓存分区。参见图3,图3示出一种设置缓存的方法的缓存分区的示意图,每个缓存分区以链表形式存储数据,链表从头到尾按最多使用的数据至最少使用的数据顺序进行存放,淘汰的数据即为替换节点。标注每个分区末尾一段为第二存储区。为每个分区另外维护一个第一存储区。具体的,可以定义两个数据结构,这两个数据结构分别是第二存储区和第一存储区。第二存储区包括每个缓存分区尾部的固定数量的数据,属于缓存分区的一部分。第一存储区中包括每个缓存分区之外维护的仅存储元数据的数据结构,存储从缓存分区淘汰的最近固定数量数据的元数据,例如,元数据为LPN(logical page number,逻辑页编号)。初始化4组第二存储区、第一存储区的命中次数计数器。其中第二存储区是缓存分区的一部分,不占用额外的DRAM空间;第一存储区仅存储元数据,占用空间极小。
例如,固态盘对应的缓存大小为40GB,则将该缓存划分四个分区,分别对应QLC闪存中的,高延迟页、中高延迟页、中低延迟页和低延迟页,即,没各缓存分区的初始大小为10GB。在每个缓存分区的尾部的三个数据节点的区域设置为第二存储区,在每个缓存分区之外维护的仅存储元数据的数据结构,容量大小同样为三个数据节点,设置为第一存储区。并初始化各个缓存分区的命中信息,即,将命中次数设置为零。
上述实施例为固态盘的多个闪存分区,分别设置容量相同的缓存分区,可以使各个闪存分区对应的缓存分区的初始性能相同,以提高后续收益计算的准确性。
步骤204:记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息。
所述读请求,是对闪存进行访问,对闪存中的数据进行读出的请求。所述读请求,会先访问比较高速的缓存,如果缓存中没有要读取的数据,就再去闪存中访问。
本说明书实施例记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息,可以使后续步骤通过命中信息计算读性能收益和读性能损失。
在一种可实现的方式中,所述记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息,包括:
记录读请求在所述缓存分区的第一存储区的命中次数,以及,记录读请求在所述缓存分区的第二存储区的命中次数,所述第一存储区是位于所述缓存分区外的、第一容量大小的存储区,所述第一存储区用于存储从对应的所述缓存分区淘汰的数据的标识,所述第二存储区是位于所述缓存分区内出队列端的、第二容量大小的存储区,所述缓存分区是按照最近最久未使用算法淘汰数据的队列。
其中,第一容量可以和第二容量相同,也可以不同。
在实际应用中,通过统计第二存储区的读命中次数,可以估算该分区容量减少固定大小容量导致的命中次数损失;通过第一存储区的读命中次数,可以估算该分区容量增加固定大小容量导致的命中次数提高。如上述实施例所述,第一存储区对应第一存储区,第二存储区对应第二存储区。第二存储区包括每个缓存分区尾部的固定数量的数据,属于缓存分区的一部分。第一存储区中包括每个缓存分区之外维护的仅存储元数据的数据结构,存储从缓存分区淘汰的最近固定数量数据的元数据,元数据可以为逻辑页编号。其中第二存储区是缓存分区的一部分,不占用额外的DRAM空间;第一存储区仅存储元数据,占用空间极小。在运行过程中,统计每个缓存分区的第二存储区命中次数以及第一存储区命中次数,如,QLC固态盘进行正常读操作。当读请求在缓存分区的第二存储区命中时,可直接向驱动层返回结果,并维护相应第二存储区的命中次数,可以将第二存储区的命中次数加1;当读请求在第一存储区命中时,维护相应第一存储区的命中次数,可以将第一存储区的命中次数加1。
例如,在每个缓存分区的尾部三个数据节点区域设置为第二存储区,在每个缓存分区之外维护的仅存储元数据的数据结构,容量大小同样为三个数据节点,设置为第一存储区。并初始化各个缓存分区的命中信息,即,将命中次数设置为零。读请求对应的数据存在于第二存储区内,则将该第二存储区对应的命中次数加一。
又例如,在缓存中当前的数据为空,缓存的容量为3个数据节点。第一次访问标识为1的数据,因为缓存为空,所以未命中;同时会从闪存读取这个数据到缓存中。缓存中的数据变为1,第二次访问标识为1的数据,因为缓存中已经存在该数据,所以命中。在之后第三、四和五次访问,分别访问了标识为2、3和4的数据,那么还会进行从闪存读取标识为2、3和4的数据到缓存中,缓存中的数据就会变成标识为2、3和4的数据。第六次再访问标识为1的数据,因为当前缓存中的数据为标识为2、3和4的数据,则未命中。可以确定第二存储区的命中次数为1。对于第一存储区来说,缓存变成标识为2、3和4的数据之后,因为标识为1的数据刚才被淘汰,则对应第一存储区中增加标识为1的数据的元数据,即表示标识为1的数据从缓存中淘汰,若再次收到的读请求访问标识为1的数据,则增加第一存储区的命中次数。
本说明书实施例通过统计第二存储区的读命中次数,可以估算该分区容量减少固定大小容量导致的命中次数损失;通过第一存储区的读命中次数,可以估算该分区容量增加固定大小容量导致的命中次数提高。模拟计算缓存分区增大容量的收益,或者减少容量的损失,从而实现对缓存分区进行调整的依据。
存储从缓存分区淘汰的最近固定数量数据的元数据,其中的元数据可以通过从淘汰的数据中获取,具体实施方式如下所述。
本说明书实施例还包括:
在从所述缓存分区淘汰数据的情况下,将被淘汰的数据的元数据存储至所述第一存储区,其中,当所述读请求的待读取数据的元数据与所述第一存储区存储的元数据相同的情况下,确定所述读请求在所述第一存储区命中。
其中,淘汰数据可以理解为将数据从缓存中删除。
在实际应用中,在缓存中的数据包括数据本体和元数据,缓存分区淘汰数据的情况下,将数据本体丢弃,并将元数据存储至第一存储区。
例如,在每个缓存分区的后三个数据节点中设置为第二存储区,在每个缓存分区之外维护的仅存储元数据的数据结构,容量大小同样为三个数据节点,设置第一存储区。在缓存分区的后三个数据节点中淘汰了数据A,则将数据A的本体丢弃,并将数据A的元数据保存在第一存储区中。
又例如,沿用上述实施例,缓存变成标识为2、3和4的数据之后,因为标识为1的数据刚才被淘汰,则对应第一存储区中增加标识为1的数据的元数据,即表示标识为1的数据从缓存中淘汰。
本说明书实施例在第一存储区中仅存储元数据,利用了少量空间就可以达到模拟增加容量的效果,降低了资源使用的成本。
当读请求所请求的数据的元数据为第一存储区中的数据元数据的情况下,仅进行命中次数的统计,而不是从第一存储区中读取数据。具体如下所述。
本说明书实施例还包括:
在所述读请求在所述第一存储区命中的情况下,从所述第一存储区的缓存分区对应的闪存分区读取出所述待读取数据。
其中,待读取数据可以为读请求想要读取的数据。
在实际应用中,第一存储区是对缓存空间进行模拟,而不是缓存中的控件。由于第一存储区仅有元数据,数据仍需要到闪存中访问,第一存储区不能给读请求服务。也就是如果读请求在第一存储区“命中”的情况下,实际上是元数据的命中,所以仍然需要去闪存读数据。
例如,在缓存中当前的数据为空,缓存的容量为3个数据节点。第一次访问标识为1的数据,因为缓存为空,所以未命中;同时会从闪存读取这个数据到缓存中。缓存中的数据变为1,第二次访问标识为1的数据,因为缓存中已经存在该数据,所以命中。在之后第三、四和五次访问,分别访问了标识为2、3和4的数据,那么还会进行从闪存读取标识为2、3和4的数据到缓存中,缓存中的数据就会变成标识为2、3和4的数据。
本说明书实施例在第一存储区中仅存储元数据,利用了少量空间就可以达到模拟增加容量的效果,且,还可以基于读请求从闪存中获取数据,不影响正常的读取操作,避免了出现无法读取的问题。
步骤206:利用所述命中信息以及所述缓存分区对应的闪存分区的读延迟,预估为所述缓存分区增加第一容量的情况下,所述第一容量带来的读性能收益,以及,预估为所述缓存分区减少第二容量的情况下,所述第二容量带来的读性能损失。
其中,读延迟可以为闪存的读延迟。
读性能收益,是指缓存扩容的情况下读性能的提升。读性能损失,是指为缓存缩容的情况下读性能的减少。读性能可以理解为提供读服务的能力,具体可以通过各种指标来表示,例如,读请求的响应时间,再例如,读请求访问低延迟的内存页的占比,等等。以读性能通过读请求的响应时间来表示,读性能收益可以表现为缓存扩容的情况下,由于读请求命中缓存避免访问闪存而节省的响应时间,读性能损失可以表现为缓存缩容的情况下,由于读请求未命中缓存,需要访问闪存而耗费的响应时间。
在实际应用中,对于类型为任意一种类型的QLC闪存页,其读延迟可以为已知量。在运行过程中,统计每个缓存分区的第二存储区命中次数以及第一存储区命中次数,并据此计算每个分区容量缩减固定大小容量带来的性能损失以及容量增加固定大小容量带来的性能收益。
例如,固态盘对应的缓存大小为40GB,则将该缓存划分四个分区,分别对应QLC闪存中的,高延迟页、中高延迟页、中低延迟页和低延迟页,即,没各缓存分区的初始大小为10GB。在每个缓存分区的后三个数据节点中设置为第二存储区,在每个缓存分区之外维护的仅存储元数据的数据结构,容量大小同样为三个数据节点,设置第一存储区。其中,在一个周期内,统计缓存分区C中的第二存储区的命中次数为17,而缓存分区C中的第一存储区的命中次数为10。若缓存分区C对应的闪存分区的读延迟M,则读性能收益为10M,读性能损失为17M。
本说明书实施例借助于第二存储区和第一存储区的统计数据,在运行时周期性进行四个分区的容量调整收益计算,以实现基于容量调整收益做出容量调整决策。
在计算得到收益之后,就要确定对哪些缓存分区进行调整,具体实施方式如下所述。
步骤208:基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区。
其中,缩容可以理解为缩小容量,扩容可以理解为扩充容量。
具体地,所述基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区,包括:
比较各个缓存分区对应的所述读性能收益,根据比较结果选择需要扩容的缓存分区;
比较各个缓存分区对应的所述读性能损失,根据比较结果选择需要缩容的缓存分区,其中,所述需要扩容的缓存分区的读性能收益大于所述需要缩容的缓存分区的读性能损失。
在实际应用中,根据前一周期第二存储区和第一存储区的命中次数计数,结合相应闪存页读延迟,计算每个类型缓存分区的扩容收益和缩容损失。并据此做出容量调整决策。
例如,固态盘对应的缓存大小为40GB,则将该缓存划分四个分区,分别对应QLC闪存中的,高延迟页、中高延迟页、中低延迟页和低延迟页,即,没各缓存分区的初始大小为10GB。在每个缓存分区的后三个数据节点中设置为第二存储区,在每个缓存分区之外维护的仅存储元数据的数据结构,容量大小同样为三个数据节点,设置第一存储区。其中,在一个周期内,统计缓存分区C中的第二存储区的命中次数为17,而缓存分区C中的第一存储区的命中次数为10。若缓存分区C对应的闪存分区的读延迟M,则读性能收益为10M,读性能损失为17M。统计缓存分区C1中的第二存储区的命中次数为12,而缓存分区C1中的第一存储区的命中次数为19。若缓存分区C1对应的闪存分区的读延迟M,则读性能收益为19M,读性能损失为12M。统计缓存分区C2中的第二存储区的命中次数为56,而缓存分区C2中的第一存储区的命中次数为32。若缓存分区C2对应的闪存分区的读延迟M,则读性能收益为32M,读性能损失为56M。统计缓存分区C3中的第二存储区的命中次数为96,而缓存分区C3中的第一存储区的命中次数为8。若缓存分区C3对应的闪存分区的读延迟M,则读性能收益为8M,读性能损失为96M。根据读性能收益确定需要扩容的缓存分区,据读性能损失确定需要缩容的缓存分区。
本说明书实施例比较各个缓存分区对应的所述读性能收益,根据比较结果选择需要扩容的缓存分区;比较各个缓存分区对应的所述读性能损失,根据比较结果选择需要缩容的缓存分区,可以提高性能提升的程度。
优选地,所述根据比较结果选择需要扩容的缓存分区,包括:
根据比较结果选择读性能收益最大的缓存分区作为需要扩容的缓存分区;
所述根据比较结果选择需要缩容的缓存分区,包括:
根据比较结果选择读性能损失最小的缓存分区作为需要缩容的缓存分区。
在实际应用中,可以将损失最小的分区容量缩小,并将收益最大的分区容量增加。
例如,固态盘对应的缓存大小为40GB,则将该缓存划分四个分区,分别对应QLC闪存中的,高延迟页、中高延迟页、中低延迟页和低延迟页,即,没各缓存分区的初始大小为10GB。在每个缓存分区的后三个数据节点中设置为第二存储区,在每个缓存分区之外维护的仅存储元数据的数据结构,容量大小同样为三个数据节点,设置第一存储区。其中,在一个周期内,统计缓存分区C中的第二存储区的命中次数为17,而缓存分区C中的第一存储区的命中次数为10。若缓存分区C对应的闪存分区的读延迟M,则读性能收益为10M,读性能损失为17M。统计缓存分区C1中的第二存储区的命中次数为12,而缓存分区C1中的第一存储区的命中次数为19。若缓存分区C1对应的闪存分区的读延迟M,则读性能收益为19M,读性能损失为12M。统计缓存分区C2中的第二存储区的命中次数为56,而缓存分区C2中的第一存储区的命中次数为32。若缓存分区C2对应的闪存分区的读延迟M,则读性能收益为32M,读性能损失为56M。统计缓存分区C3中的第二存储区的命中次数为96,而缓存分区C3中的第一存储区的命中次数为8。若缓存分区C3对应的闪存分区的读延迟M,则读性能收益为8M,读性能损失为96M。选择其中性能收益最大的分区:缓存分区C2,选择其中性能损失最小的分区:缓存分区C1。将缓存分区C1作为要缩容的分区,将缓存分区C2作为要扩容的分区。
本说明书实施例将损失最小的分区容量缩小,并将收益最大的分区容量增加,以使性能提升可以达到更优的效果。
步骤210:将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量。
在实际应用中,系统运行过程中,根据第二存储区、第一存储区的命中次数统计,周期性计算4个缓存分区的性能收益以及性能损失,并选取性能损失最小的分区x以及性能收益最大的分区y。将x分区的容量转移至y分区。
沿用上例,在一个周期内,统计缓存分区C中的第二存储区的命中次数为17,而缓存分区C中的第一存储区的命中次数为10。若缓存分区C对应的闪存分区的读延迟M,则读性能收益为10M,读性能损失为17M。统计缓存分区C1中的第二存储区的命中次数为12,而缓存分区C1中的第一存储区的命中次数为19。若缓存分区C1对应的闪存分区的读延迟M,则读性能收益为19M,读性能损失为12M。统计缓存分区C2中的第二存储区的命中次数为56,而缓存分区C2中的第一存储区的命中次数为32。若缓存分区C2对应的闪存分区的读延迟M,则读性能收益为32M,读性能损失为56M。统计缓存分区C3中的第二存储区的命中次数为96,而缓存分区C3中的第一存储区的命中次数为8。若缓存分区C3对应的闪存分区的读延迟M,则读性能收益为8M,读性能损失为96M。选择其中性能收益最大的分区:缓存分区C2,选择其中性能损失最小的分区:缓存分区C1。将缓存分区C1作为要缩容的分区,将缓存分区C2作为要扩容的分区。则将缓存分区C1减少第二容量,将缓存分区C2增加第一容量。
例如,统计缓存分区C1中的第二存储区的命中次数为12,而缓存分区C1中的第一存储区的命中次数为19。若缓存分区C1对应的闪存分区的读延迟M,则读性能收益为19M,读性能损失为12M。统计缓存分区C2中的第二存储区的命中次数为56,而缓存分区C2中的第一存储区的命中次数为32。若缓存分区C2对应的闪存分区的读延迟M,则读性能收益为32M,读性能损失为56M。统计缓存分区C3中的第二存储区的命中次数为96,而缓存分区C3中的第一存储区的命中次数为88。若缓存分区C3对应的闪存分区的读延迟M,则读性能收益为88M,读性能损失为96M。其中性能收益最大的分区:缓存分区C3,选择其中性能损失最小的分区:缓存分区C3。将缓存分区C3作为要缩容的分区,将缓存分区C3作为要扩容的分区,则不进行调整。
本说明书实施例将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量,可以提高命中次数,从而减少读取数据的延迟。
在一种可实现的方式中,所述将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量,包括:
响应于所述需要扩容的缓存分区接收到读请求,判断所述读请求在所述需要扩容的缓存分区是否读取出对应数据;
如果否,在所述需要缩容的缓存分区中,减少预设单位容量,所述第二容量等于所述预设单位容量的整数倍,所述第一容量等于所述第二容量,在所述需要扩容的缓存分区中,增加所述预设单位容量;
判断所述需要扩容的缓存分区已增加的容量是否达到所述第二容量;
如果未达到,返回到所述响应于所述需要扩容的缓存分区接收到读请求,判断所述读请求在所述需要扩容的缓存分区是否读取出对应数据的步骤。
其中,预设单位容量可以为设置的单位大小的容量,例如,一个数据节点,一个数据节点可以理解为一个闪存页的数据。
在实际应用中,为避免缓存容量调整带来的性能波动,可以采取逐步调整的策略。具体做法为:首先根据以及选取缩容分区x以及扩容分区y,并记录待调整容量w;在系统后续读写运行过程中,若读缓存分区y发生读未命中,则淘汰x中的一个数据节点,为分区y的数据提供一个数据节点的空间,并更新待调整容量w为w-1。当待调整容量w减至0时,本周期容量调整结束,开始下一周期的命中次数统计。
例如,将缓存分区C1作为要缩容的分区,将缓存分区C2作为要扩容的分区。需要将缓存分区C1减少三个数据节点的容量,将缓存分区C2增加三个数据节点的容量。在缓存分区C2发生未命中的情况下,删除缓存分区C1中第一存储区的一个数据节点的容量,并将这一个数据节点的容量增加至缓存分区C2中。并继续在缓存分区C2发生未命中的情况下,删除缓存分区C1中第一存储区的一个数据节点的容量,直至将缓存分区C1的第一存储区三个数据节点的容量去除,并将三个数据节点的容量增加至缓存分区C2中。
本说明书实施例采取逐步调整的策略,平缓调整分区容量,避免调整过程中引入缓存命中率抖动。
在所述将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量之后,还包括:
重置所述读请求在所述缓存分区的命中信息,返回到所述记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息步骤。
其中,重置所述读请求在所述缓存分区的命中信息,可以理解为将命中次数归零。
在实际应用中,在一个周期容量调整结束后,开始下一周期的命中次数统计,以进行下一周期的容量调整。
例如,将缓存分区C1作为要缩容的分区,将缓存分区C2作为要扩容的分区。需要将缓存分区C1减少三个数据节点的容量,将缓存分区C2增加三个数据节点的容量。在缓存分区C2发生未命中的情况下,删除缓存分区C1中第一存储区的一个数据节点的容量,并将这一个数据节点的容量增加至缓存分区C2中。并继续在缓存分区C2发生未命中的情况下,删除缓存分区C1中第一存储区的一个数据节点的容量,直至将缓存分区C1第一存储区的三个数据节点的容量去除,并将三个数据节点的容量增加至缓存分区C2中。在将三个数据节点的容量增加至缓存分区C2中后,将第一存储区和第二存储区的命中次数归零。并继续记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息。
需要说明的是,以上说明书实施例可以与现有的基于数据布局的方案同时使用。
本说明书实施例提供一种设置缓存的方法以及装置,其中所述设置缓存的方法包括:为固态盘的多个闪存分区,分别设置对应的缓存分区;记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息;利用所述命中信息以及所述缓存分区对应的闪存分区的读延迟,预估为所述缓存分区增加第一容量的情况下,所述第一容量带来的读性能收益,以及,预估为所述缓存分区减少第二容量的情况下,所述第二容量带来的读性能损失;基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区;将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量。通过为缓存设置与闪存分区对应的缓存分区,并记录各分区的命中信息,从而通过命中信息调整各缓存分区的容量,以使达到降低固态盘的访问延迟的效果。
下述结合附图4,以本说明书提供的设置缓存的方法在QLC闪存的应用为例,对所述设置缓存的方法进行进一步说明。其中,图4示出了本说明书一个实施例提供的一种设置缓存的方法的处理过程流程图,具体包括以下步骤。
步骤402:读缓存分区格式化。
在实际应用中,首先,需要将读缓存进行分区格式化。将QLC固态盘的读缓存分为4个缓存分区,标注每个缓存分区末尾一段为第二存储区。为每个分区,另外维护一个第一存储区。初始化4组第二存储区、第一存储区的命中次数计数器。
步骤404:读操作时计数。
在实际应用中,QLC固态盘进行正常读操作。当读请求在缓存分区的第二存储区命中时,可直接向上层返回结果,并维护相应第二存储区的命中次数(加1);当读请求在第一存储区命中时,维护相应第一存储区的命中次数(加1),但由于第一存储区仅有元数据,数据仍需要到闪存中访问
步骤406:分区容量调整策略。
在实际应用中,根据前一周期第二存储区和第一存储区的命中次数计数,结合相应闪存页读延迟,计算每个类型缓存分区的扩容收益和缩容损失。并据此做出容量调整决策:将损失最小的分区容量缩小,并将收益最大的分区容量增加。
步骤408:缓存分区容量逐步调整。
在实际应用中,根据容量调整决策的结果,在后续读请求执行时进行容量调整。如果读请求访问的是待扩容分区所对应的QLC闪存页,并且发生了读请求未命中,那么淘汰待缩容分区的一个缓存节点,从而完成一个缓存节点的容量调整。
本说明书实施例通过为缓存设置与闪存分区对应的缓存分区,并记录各分区的命中信息,从而通过命中信息调整各缓存分区的容量,以使达到降低固态盘的访问延迟的效果。
与上述方法实施例相对应,本说明书还提供了设置缓存的装置实施例,图5示出了本说明书一个实施例提供的一种设置缓存的装置的结构示意图。如图5所示,该装置包括:
缓存分区模块502,被配置为固态盘的多个闪存分区,分别设置对应的缓存分区;
信息记录模块504,被配置为记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息;
性能计算模块506,被配置为利用所述命中信息以及所述缓存分区对应的闪存分区的读延迟,预估为所述缓存分区增加第一容量的情况下,所述第一容量带来的读性能收益,以及,预估为所述缓存分区减少第二容量的情况下,所述第二容量带来的读性能损失;
分区确定模块508,被配置为基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区;
分区调整模块510,被配置为将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量。
在一种可实现的方式中,信息记录模块504,还被配置为:
记录读请求在所述缓存分区的第一存储区的命中次数,以及,记录读请求在所述缓存分区的第二存储区的命中次数,所述第一存储区是位于所述缓存分区外的、第一容量大小的存储区,所述第一存储区用于存储从对应的所述缓存分区淘汰的数据的标识,所述第二存储区是位于所述缓存分区内出队列端的、第二容量大小的存储区,所述缓存分区是按照最近最久未使用算法淘汰数据的队列;
所述将需要缩容的缓存分区中减少所述第二容量,包括:
将所述需要缩容的缓存分区中减少位于第二存储区的第二容量。
在一种可实现的方式中,信息记录模块504,还被配置为:
在从所述缓存分区淘汰数据的情况下,将被淘汰的数据的元数据存储至所述第一存储区,其中,当所述读请求的待读取数据的元数据与所述第一存储区存储的元数据相同的情况下,确定所述读请求在所述第一存储区命中。
在一种可实现的方式中,信息记录模块504,还被配置为:
在所述读请求在所述第一存储区命中的情况下,从所述第一存储区的缓存分区对应的闪存分区读取出所述待读取数据。
在一种可实现的方式中,分区确定模块508,还被配置为:
比较各个缓存分区对应的所述读性能收益,根据比较结果选择需要扩容的缓存分区;
比较各个缓存分区对应的所述读性能损失,根据比较结果选择需要缩容的缓存分区,其中,所述需要扩容的缓存分区的读性能收益大于所述需要缩容的缓存分区的读性能损失。
在一种可实现的方式中,分区确定模块508,还被配置为:
根据比较结果选择读性能收益最大的缓存分区作为需要扩容的缓存分区;
所述根据比较结果选择需要缩容的缓存分区,包括:
根据比较结果选择读性能损失最小的缓存分区作为需要缩容的缓存分区。
在一种可实现的方式中,分区调整模块510,还被配置为:
响应于所述需要扩容的缓存分区接收到读请求,判断所述读请求在所述需要扩容的缓存分区是否读取出对应数据;
如果否,在所述需要缩容的缓存分区中,减少预设单位容量,所述第二容量等于所述预设单位容量的整数倍,所述第一容量等于所述第二容量,在所述需要扩容的缓存分区中,增加所述预设单位容量;
判断所述需要扩容的缓存分区已增加的容量是否达到所述第二容量;
如果未达到,返回到所述响应于所述需要扩容的缓存分区接收到读请求,判断所述读请求在所述需要扩容的缓存分区是否读取出对应数据的步骤。
在一种可实现的方式中,缓存分区模块502,还被配置为:
按照一一对应的原则,为固态盘的多个闪存分区,分别设置容量相同的缓存分区;
初始化各个缓存分区,初始化各个缓存分区的命中信息;
在所述将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量之后,还包括:
重置所述读请求在所述缓存分区的命中信息,返回到所述记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息步骤。
本说明书实施例提供一种设置缓存的方法以及装置,其中所述设置缓存的装置包括:为固态盘的多个闪存分区,分别设置对应的缓存分区;记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息;利用所述命中信息以及所述缓存分区对应的闪存分区的读延迟,预估为所述缓存分区增加第一容量的情况下,所述第一容量带来的读性能收益,以及,预估为所述缓存分区减少第二容量的情况下,所述第二容量带来的读性能损失;基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区;将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量。通过为缓存设置与闪存分区对应的缓存分区,并记录各分区的命中信息,从而通过命中信息调整各缓存分区的容量,以使达到降低固态盘的访问延迟的效果。
上述为本实施例的一种设置缓存的装置的示意性方案。需要说明的是,该设置缓存的装置的技术方案与上述的设置缓存的方法的技术方案属于同一构思,设置缓存的装置的技术方案未详细描述的细节内容,均可以参见上述设置缓存的方法的技术方案的描述。
图6示出了根据本说明书一个实施例提供的一种计算设备600的结构框图。该计算设备600的部件包括但不限于存储器610和处理器620。处理器620与存储器610通过总线630相连接,数据库650用于保存数据。
计算设备600还包括接入设备640,接入设备640使得计算设备600能够经由一个或多个网络660通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备640可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,networkinterface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,WirelessLocal Area Network)无线接口、全球微波互联接入(Wi-MAX,WorldwideInteroperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near FieldCommunication)接口,等等。
在本申请的一个实施例中,计算设备600的上述部件以及图6中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图6所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备600可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备600还可以是移动式或静止式的服务器。
其中,处理器620用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述设置缓存的方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的设置缓存的方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述设置缓存的方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述设置缓存的方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的设置缓存的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述设置缓存的方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述设置缓存的方法的步骤。
上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的设置缓存的方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述设置缓存的方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (11)
1.一种设置缓存的方法,包括:
为固态盘的多个闪存分区,分别设置对应的缓存分区;
记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息;
利用所述命中信息以及所述缓存分区对应的闪存分区的读延迟,预估为所述缓存分区增加第一容量的情况下,所述第一容量带来的读性能收益,以及,预估为所述缓存分区减少第二容量的情况下,所述第二容量带来的读性能损失;
基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区;
将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量。
2.根据权利要求1所述的方法,所述记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息,包括:
记录读请求在所述缓存分区的第一存储区的命中次数,以及,记录读请求在所述缓存分区的第二存储区的命中次数,所述第一存储区是位于所述缓存分区外的、第一容量大小的存储区,所述第一存储区用于存储从对应的所述缓存分区淘汰的数据的标识,所述第二存储区是位于所述缓存分区内出队列端的、第二容量大小的存储区,所述缓存分区是按照最近最久未使用算法淘汰数据的队列;
所述将需要缩容的缓存分区中减少所述第二容量,包括:
将所述需要缩容的缓存分区中减少位于第二存储区的第二容量。
3.根据权利要求2所述的方法,还包括:
在从所述缓存分区淘汰数据的情况下,将被淘汰的数据的元数据存储至所述第一存储区,其中,当所述读请求的待读取数据的元数据与所述第一存储区存储的元数据相同的情况下,确定所述读请求在所述第一存储区命中。
4.根据权利要求3所述的方法,还包括:
在所述读请求在所述第一存储区命中的情况下,从所述第一存储区的缓存分区对应的闪存分区读取出所述待读取数据。
5.根据权利要求1所述的方法,所述基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区,包括:
比较各个缓存分区对应的所述读性能收益,根据比较结果选择需要扩容的缓存分区;
比较各个缓存分区对应的所述读性能损失,根据比较结果选择需要缩容的缓存分区,其中,所述需要扩容的缓存分区的读性能收益大于所述需要缩容的缓存分区的读性能损失。
6.根据权利要求5所述的方法,所述根据比较结果选择需要扩容的缓存分区,包括:
根据比较结果选择读性能收益最大的缓存分区作为需要扩容的缓存分区;
所述根据比较结果选择需要缩容的缓存分区,包括:
根据比较结果选择读性能损失最小的缓存分区作为需要缩容的缓存分区。
7.根据权利要求1所述的方法,所述将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量,包括:
响应于所述需要扩容的缓存分区接收到读请求,判断所述读请求在所述需要扩容的缓存分区是否读取出对应数据;
如果否,在所述需要缩容的缓存分区中,减少预设单位容量,所述第二容量等于所述预设单位容量的整数倍,所述第一容量等于所述第二容量,在所述需要扩容的缓存分区中,增加所述预设单位容量;
判断所述需要扩容的缓存分区已增加的容量是否达到所述第二容量;
如果未达到,返回到所述响应于所述需要扩容的缓存分区接收到读请求,判断所述读请求在所述需要扩容的缓存分区是否读取出对应数据的步骤。
8.根据权利要求1所述的方法,所述为固态盘的多个闪存分区,分别设置对应的缓存分区,包括:
按照一一对应的原则,为固态盘的多个闪存分区,分别设置容量相同的缓存分区;
初始化各个缓存分区,初始化各个缓存分区的命中信息;
在所述将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量之后,还包括:
重置所述读请求在所述缓存分区的命中信息,返回到所述记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息步骤。
9.一种设置缓存装置,包括:
缓存分区模块,被配置为固态盘的多个闪存分区,分别设置对应的缓存分区;
信息记录模块,被配置为记录读请求在所述缓存分区待淘汰数据中的命中信息以及已淘汰的数据中的命中信息;
性能计算模块,被配置为利用所述命中信息以及所述缓存分区对应的闪存分区的读延迟,预估为所述缓存分区增加第一容量的情况下,所述第一容量带来的读性能收益,以及,预估为所述缓存分区减少第二容量的情况下,所述第二容量带来的读性能损失;
分区确定模块,被配置为基于各个缓存分区各自对应的所述读性能收益和所述读性能损失,确定需要扩容的缓存分区和需要缩容的缓存分区;
分区调整模块,被配置为将需要缩容的缓存分区中减少所述第二容量,将需要扩容的缓存分区中增加所述第一容量。
10.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至8任意一项所述设置缓存的方法的步骤。
11.一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现权利要求1至8任意一项所述设置缓存的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211297441.3A CN115827511A (zh) | 2022-10-21 | 2022-10-21 | 设置缓存的方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211297441.3A CN115827511A (zh) | 2022-10-21 | 2022-10-21 | 设置缓存的方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115827511A true CN115827511A (zh) | 2023-03-21 |
Family
ID=85525258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211297441.3A Pending CN115827511A (zh) | 2022-10-21 | 2022-10-21 | 设置缓存的方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827511A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578247A (zh) * | 2023-07-10 | 2023-08-11 | 西安羚控电子科技有限公司 | 一种基于元数据的数据存取方法及系统 |
-
2022
- 2022-10-21 CN CN202211297441.3A patent/CN115827511A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578247A (zh) * | 2023-07-10 | 2023-08-11 | 西安羚控电子科技有限公司 | 一种基于元数据的数据存取方法及系统 |
CN116578247B (zh) * | 2023-07-10 | 2023-10-13 | 西安羚控电子科技有限公司 | 一种基于元数据的数据存取方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11893238B2 (en) | Method of controlling nonvolatile semiconductor memory | |
CN110134514B (zh) | 基于异构内存的可扩展内存对象存储系统 | |
JP5674999B2 (ja) | Slc/mlc混成メモリのブロック管理構成 | |
CN111752484B (zh) | 一种ssd控制器、固态硬盘及数据写入方法 | |
CN109471594B (zh) | 一种mlc闪存读写方法 | |
US8572321B2 (en) | Apparatus and method for segmented cache utilization | |
CN110413537B (zh) | 一种面向混合固态硬盘的闪存转换层及转换方法 | |
CN113614702B (zh) | 基于检测到的读取命令活跃流的自适应预读高速缓存管理器 | |
CN111708481A (zh) | 一种基于超级块的固态硬盘ssd双区磨损均衡处理方法 | |
CN108829346A (zh) | 一种适应闪存页差异的固态硬盘的用户写请求处理方法 | |
US11138104B2 (en) | Selection of mass storage device streams for garbage collection based on logical saturation | |
US20170003911A1 (en) | Information processing device | |
US20100161890A1 (en) | Cache management method and cache device using sector set | |
CN112394874A (zh) | 一种键值kv的存储方法、装置及存储设备 | |
CN115827511A (zh) | 设置缓存的方法以及装置 | |
Yao et al. | An advanced adaptive least recently used buffer management algorithm for SSD | |
CN116364148A (zh) | 一种面向分布式全闪存储系统的磨损均衡方法及系统 | |
CN111352593A (zh) | 一种区分快写和正常写的固态硬盘数据写入方法 | |
CN113590505A (zh) | 地址映射方法、固态硬盘控制器及固态硬盘 | |
CN116185287A (zh) | 一种降低读延时的方法、装置及固态硬盘 | |
KR20220052353A (ko) | 조정된 파라미터를 사용한 메모리 컴포넌트의 가비지 수집 | |
CN113608867B (zh) | 基于强化学习的多数据ssd中的闪存资源分配方法 | |
US11797183B1 (en) | Host assisted application grouping for efficient utilization of device resources | |
CN109189348B (zh) | 基于电荷捕获型3d tlc闪存的存储系统的读性能优化方法 | |
CN114546247A (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 |