掌桥专利:专业的专利平台
掌桥专利
首页

控制与键-值数据库相关联的输入/输出流的服务质量

文献发布时间:2023-06-19 11:29:13


控制与键-值数据库相关联的输入/输出流的服务质量

技术领域

本公开总体上涉及一种存储器子系统,并且更具体地,涉及永久性存储架构的操作。

背景技术

存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可以是例如非易失性存储器装置和易失性存储器装置。主机系统通常可以利用存储器子系统将数据存储在存储器装置处并从存储器装置中检索数据。

发明内容

在一方面,本公开涉及一种方法,所述方法包括:接收与一或多个键-值数据库相关联的一或多个输入/输出流;检查所述一或多个输入/输出流的相应标签;基于通过检查所述相应标签而获得的标识数据来确定要配设给所述一或多个输入/输出流的相应带宽量,以满足与和所述一或多个输入/输出流相关联的预定服务质量(QoS)参数有关的阈值标准;以及跨所述一或多个键-值数据库利用所述相应配设带宽量动态地对所述一或多个输入/输出流进行节流,以根据所述QoS参数调节所述一或多个输入/输出流中的输入/输出操作的处理时间。

在另一方面,本公开涉及一种系统,所述系统包括:多个存储器组件;以及处理装置,所述处理装置操作性地耦接到所述存储器组件以执行包括以下的操作:提供接口,以将相应标签分配给与一或多个键-值数据库相关联的一或多个输入/输出流,其中相应标签含有关于输入/输出流与哪个键-值数据库相关联的标识数据;基于从所述相应标签获得的标识数据来确定要配设给所述一或多个输入/输出流的带宽量,以满足阈值等待时间值;以及跨所述一或多个键-值数据库利用相应配设带宽量动态地对所述一或多个输入/输出流进行节流,以根据所述阈值等待时间值调节所述一或多个输入/输出流中的输入/输出操作的处理时间。

在另外的方面,本公开涉及一种非暂时性计算机可读媒体,所述非暂时性计算机可读媒体包括指令,所述指令当由处理器执行时使所述处理器执行包括以下的操作:接收与一或多个键-值数据库相关联的一或多个输入/输出流;检查所述一或多个输入/输出流的相应标签;基于通过检查所述相应标签而获得的标识数据来确定要配设给所述一或多个输入/输出流的相应带宽量,以满足与和所述一或多个输入/输出流相关联的预定服务质量(QoS)参数有关的阈值标准;以及跨所述一或多个键-值数据库利用所述相应配设带宽量动态地对所述一或多个输入/输出流进行节流,以根据所述QoS参数调节所述一或多个输入/输出流中的输入/输出操作的处理时间。

附图说明

根据下文给出的详细描述和本公开的各种实施方案的附图,将更充分地理解本公开。

图1展示了根据本公开的一些实施例的包含与存储器子系统耦接的主机系统的示例计算系统。

图2展示了根据本公开的一些实施例的由从一或多个键-值数据库(KVDB)接收输入/输出(I/O)流的服务质量(QoS)模块进行的带宽配设和动态节流。

图3展示了根据本公开的一些实施例的具有内置QoS控制的存储堆栈架构。

图4展示了根据本公开的一些实施例的I/O标签用于促进QoS控制的分组方案。

图5是根据本公开的一些实施例的控制数据库I/O流的QoS的示例方法的流程图。

图6是本公开的实施方案可以在其中操作的示例计算机系统的框图。

具体实施方式

本公开的各方面涉及在基于被称为键-值数据库(KVDB)的非关系数据库的类型构建的存储架构中实施服务质量(QoS)特征。QoS特征可以为放置在可以跨越多个KVDB的处理队列中的KVDB输入/输出(I/O)流提供一致的带宽和可预测的等待时间。KVDB是耦接到存储器子系统的主机系统中的键-值集(kvset)(也被称为键-值存储(KVS))的集合的例子。存储器子系统可以是存储装置、存储器模块或存储装置和存储器模块的混合体。下文结合图1描述了存储装置和存储器模块的实例。主机系统通常可以利用包含如存储数据的存储器装置等一或多个存储器组件的存储器子系统。主机系统可以提供数据以存储在存储器子系统处并且可以请求从存储器子系统中检索数据。

键-值数据结构接受键-值对(即,包含键和值)并且被配置成对与键有关的查询作出响应。键-值数据结构可以包含如字典(例如,图、哈希图等)等结构,其中键被存储在链接(或含有)相应值的列表中。虽然这些数据结构在存储器中(例如,在主存储器或系统状态存储器中,如与长期存储相反的)有用,但这些数据结构在永久性存储(例如,长期磁盘上存储)中的存储表示可能效率低下。

在一些实施例中,KVDB使用树数据结构(如日志结构的合并tee或LSM树)来提高永久性存储架构中的效率。树数据结构包含基于键的预定推导在父节点与子节点之间具有连接的节点。节点包含KVS的时间顺序序列。KVS含有呈按键排序的结构的键-值对。一旦写入,KVS也是不可变的。通过维护节点的KVS,KVS树实现高写入吞吐量和改善的搜索。KVS包含排序的键并且在实例中包含键度量(如布隆过滤器(bloom filter)、最小和最大键等),以提供高效搜索。在许多实例中,KVS树可以通过将键与值分离并且合并较小的KVS集合来改善其它类型的树结构的临时存储问题。另外,KVS树可以通过对KVS进行各种维护操作来减少写入放大。进一步地,由于节点中的KVS是不可变的,因此如永久性存储装置(例如,固态装置(SSD))上的写入损耗等问题可以由数据结构来管理,从而减少了装置本身的垃圾收集活动。这具有释放内部装置资源(例如,总线带宽、处理周期等)的附加益处,所述附加益处产生了更好的外部驱动器性能(例如,读取或写入速度)。

尽管KVS树是用于各种存储任务的灵活且强大的数据结构,但通过将多个KVS树组合成KVS树数据库(被称为KVDB),可以获得更高的效率。与KVDB相关联的输入/输出(I/O)流(即,来源(例如,主机系统)与目的地(例如,永久性存储媒体)之间的I/O操作序列)包含用户发起的I/O流以及管理I/O流两者以维护KVDB。用户I/O流可以包含与主机系统上运行的需要对KVDB中的数据进行存取的应用程序相关联的I/O操作。管理I/O流可以包含作为内部维护相关操作的一部分的I/O操作,所述内部维护相关操作由系统管理员周期性地(手动地或自动地)运行,以便高效地组织KVDB内的数据结构。

在没有适当的内部维护的情况下,KVDB中的树数据结构的形状(即,不同节点之间的层级)变得非最佳,并且完成用户发起的I/O操作可能会花费更长时间,即,用户发起的操作的等待时间可能会高得无法接受,这进而对永久性存储架构可以递送到用户的QoS产生负面影响。QoS是经常用于描述系统内的操作等待时间的分布的常见行业术语。QoS控制是常规数据库(包含常规非关系数据库,所述常规非关系数据库中的一些常规非关系数据库基于开源软件)中的许多数据库中不可用的特征。常规数据库通常将用户发起的操作(例如,读取和/或写入请求)和内部维护操作放置在同一处理队列中。替代地,在一些常规数据库中,用户发起的操作始终是以比内部维护操作更高的优先级进行处理的,从而由于数据结构维护不良,导致等待时间逐渐劣化。这些方法都不能提供对I/O处理时间的细粒度动态控制以保证用户发起的I/O流的可预测的等待时间。此外,在现有的基于KVS的数据库中,KVS是在文件系统上创建的,并且没有机构用于实现跨越KVDB的多个例子的QoS控制。

本公开的各方面通过将QoS模块与处理数据库I/O流的存储堆栈集成来解决以上和其它不足。存储堆栈是实施数据库管理系统用来更新数据库中的数据的存储引擎的一套软件。QoS模块基于I/O流被标记的标签中含有的信息来动态地向与KVDB相关联的I/O流配设带宽。QoS模块跨一或多个KVDB对I/O流进行节流和/或复用。I/O节流调节I/O流中包含的I/O操作的处理时间。复用涉及在多个I/O流中高效地划分处理时间。

本公开的优点在于,描述的系统使用户能够选择标签以便以不同的优先级标记用户发起的I/O流。系统还允许KVDB管理员标记内部维护相关的I/O流,使得内部维护相关的I/O流可以与用户发起的I/O流区分开。基于标签信息,QoS模块可以确定适当的节流和/或复用方案,使得存储堆栈可以递送应用程序的目标QoS。通过将QoS控制与存储堆栈集成,显著减少了应用程序到媒体的I/O路径长度。I/O路径长度的减少导致I/O等待时间减少并且带宽过度配设成本降低。

图1展示了根据本公开的一些实施例的包含存储器子系统110的示例计算系统100。存储器子系统110可以包含媒体,如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类存储器装置的组合。

存储器子系统110可以是存储装置、存储器模块或存储装置和存储器模块的混合体。存储装置的实例包含固态驱动器(SSD)、闪存驱动器、通用串行总线(USB)闪存驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用闪存存储(UFS)驱动器、安全数字(SD)卡和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。

计算系统100可以是计算装置,如台式计算机、膝上型计算机、网络服务器、移动装置、车辆(例如,飞机、无人机、火车、汽车或其它交通工具)、物联网(IoT)启用装置、嵌入式计算机(例如,包含在车辆、工业装备或联网商用装置中的计算机)或包含存储器和处理装置的此类计算装置。

计算系统100可以包含耦接到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦接到不同类型的存储器子系统110。图1展示了耦接到一个存储器子系统110的主机系统120的一个实例。如本文所使用的,“耦接到……”或“与……耦接”通常指组件之间的连接,所述连接可以是间接的通信连接或直接的通信连接(例如,无中间组件),无论是有线的或无线的,包含如电、光学、磁性等连接。

主机系统120可以包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可以包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120使用存储器子系统110例如将数据写入存储器子系统110并且从存储器子系统110读取数据。

主机系统120可以通过物理主机接口耦接到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接的SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM插槽接口)等。物理主机接口可以用于在主机系统120与存储器子系统110之间传输数据。当存储器子系统110通过PCIe接口与主机系统120耦接时,主机系统120可以进一步利用NVM快速(NVMe)接口来对组件(例如,存储器装置130)进行存取。物理主机接口可以提供用于在存储器子系统110与主机系统120之间传递控制、地址、数据和其它信号的接口。图1展示了存储器子系统110作为实例。主机系统120通常可以通过同一通信连接、多个单独的通信连接和/或通信连接的组合来对多个存储器子系统进行存取。

存储器装置130、140可以包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(RAM),如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。

非易失性存储器装置(例如,存储器装置130)的一些实例包含非-与(与非)型闪存存储器和原地写入存储器,如三维交叉点(“3D交叉点”)存储器。非易失性存储器的交叉点阵列可以结合可堆叠交叉网格数据存取阵列基于体电阻的改变来执行位存储。另外,相比于许多基于闪存的存储器,交叉点非易失性存储器可以执行原地写入操作,其中可以对非易失性存储器单元进行编程而无需预先擦除非易失性存储器单元。与非型闪存存储器包含例如二维与非(2D与非)和三维与非(3D与非)。

存储器装置130中的每个存储器装置可以包含一或多个存储器单元阵列。一种类型的存储器单元例如单级单元(SLC)可以每个单元存储一个位。其它类型的存储器单元如多级单元(MLC)、三级单元(TLC)和四级单元(QLC)可以每个单元存储多个位。在一些实施例中,存储器装置130中的每个存储器装置可以包含一或多个存储器单元阵列,如SLC、MLC、TLC、QLC或此类存储器单元的任何组合。在一些实施例中,特定的存储器装置可以包含存储器单元的SLC部分和MLC部分、TLC部分或QLC部分。存储器装置130的存储器单元可以被分组为页面,所述页面可以指用于存储数据的存储器装置的逻辑单元。利用一些类型的存储器(例如,与非),可以将页面分组以形成块。

尽管描述了非易失性存储器组件如非易失性存储器单元的3D交叉点阵列和与非型闪存存储器(例如,2D与非、3D与非),但是存储器装置130可以基于任何其它类型的非易失性存储器,如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻式随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、非-或(或非)闪存存储器、电可擦可编程只读存储器(EEPROM)以及非易失性存储器单元的交叉点阵列。

存储器子系统控制器115(或为简单起见,控制器115)可以与存储器装置130通信以执行如在存储器装置130处读取数据、写入数据或擦除数据等操作以及其它此类操作。存储器子系统控制器115可以包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可以包含具有专用(即,硬编码)逻辑来执行本文所描述的操作的数字电路系统。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。

存储器子系统控制器115可以包含被配置成执行存储在本地存储器119中的指令的处理器117(例如,处理装置)。在所展示的实例中,存储器子系统控制器115的本地存储器119包含嵌入式存储器,所述嵌入式存储器被配置成存储用于执行控制存储器子系统110的操作的各种过程、操作、逻辑流程和例程(包含处理存储器子系统110与主机系统120之间的通信)的指令。

在一些实施例中,本地存储器119可以包含存储存储器指针、所获取数据等的存储器寄存器。本地存储器119还可以包含用于存储微代码的只读存储器(ROM)。尽管图1中的示例存储器子系统110已经被展示为包含存储器子系统控制器115,但是在本公开的另一个实施例中,存储器子系统110不包含存储器子系统控制器115,而是可以依赖于(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供的)外部控制。

存储器子系统控制器115通常可以从主机系统120接收命令或操作并且可以将命令或操作转化成指令或适当的命令以实现对存储器装置130的期望存取。存储器子系统控制器115可以负责其它操作,如损耗均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作以及与存储器装置130相关联的在逻辑地址(例如,逻辑块地址(LBA)名称空间)与物理地址和物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可以进一步包含主机接口电路系统,以通过物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收的命令转化成命令指令以对存储器装置130进行存取并将与存储器装置130相关联的响应转化成用于主机系统120的信息。

存储器子系统110还可以包含未展示的另外的电路系统或组件。在一些实施例中,存储器子系统110可以包含高速缓存或缓冲器(例如,DRAM)和可以从存储器子系统控制器115接收地址并解码所述地址以对存储器装置130进行存取的地址电路系统(例如,行解码器和列解码器)。

在一些实施例中,存储器装置130包含本地媒体控制器135,所述本地媒体控制器结合存储器子系统控制器115操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器子系统控制器115)可以从外部管理存储器装置130(例如,在存储器装置130上执行媒体管理操作)。在一些实施例中,存储器装置130是受管理存储器装置,所述受管理存储器装置是与本地控制器(例如,本地控制器135)组合以用于同一存储器装置封装内的媒体管理的原始存储器装置。受管理存储器装置的实例是受管理与非(MNAND)装置。

主机系统120包含KVDB 125A到125N的一或多个例子。主机系统120还包含QoS模块126,所述QoS模块可以基于标签来识别哪些I/O操作是用户发起的并且哪些I/O操作与KVDB中的数据结构的内部维护相关。QoS模块可以包含在存储器管理系统中(例如,图3所示的m池362)。控制器115可以包含被配置成执行存储在本地存储器119中的用于执行本文所描述的操作中的一些操作的指令的处理器117(处理装置)。

图2展示了由从一或多个键-值数据库(KVDB)接收I/O流的服务质量(QoS)模块126进行的带宽配设和动态节流。图2示出了KVDB的仅两个例子(即,KVDB(0)和KVDB(1)),但是本公开的范围不限于任何特定数量的KVDB。为了清楚起见,仅针对KVDB(0)(125A)示出了示出I/O流的箭头,但是KVDB(1)(125B)和任何其它KVDB例子(未示出)也可以具有指向QoS模块126的I/O流。如上文所描述的,每个KVDB包含一或多个KVS 225A到225N。来自在主机系统上运行的应用程序的一或多个I/O操作请求222A到222N涉及对对应KVS 225A到225N进行存取。I/O操作请求被放入I/O流中。存储器管理系统(例如,图3所示的m池362)使一或多个标签能够例如通过如图3所示的组件364等命令行接口与I/O流相关联。例如,I/O流232可以包含标签229,所述标签可以通知QoS模块126所述I/O流中的I/O操作的相应优先级水平。注意,标签229可以包括多个标签,所述多个标签含有关于不同I/O操作的不同优先级水平的信息。在此实例中,I/O流232仅具有用户发起的I/O操作并且没有内部维护相关的I/O操作(即,没有与维护KVDB内的树数据结构中的节点的层级相关的操作)。

每个KVDB可以具有内部维护模块227,所述内部维护模块可以是脏数据高速缓存模块。每个内部维护模块包含数据组织组件228(例如,228A、228B、228C——尽管实例中示出了三个组件,但是可以使用任何任意数量的组件)以周期性地重新组织KVS225A到225N。数据组织组件228对树数据结构执行各种维护操作,以保持树的最佳形状。在某些实施例中,组件228A、228B和22C可以是记录模块、摄取模块等。I/O流234A、234B和234C指示可以包含用户发起的I/O操作(例如,222A到222N)和内部维护相关的I/O操作两者的I/O流。标签231A、231B和231C含有相关信息,以将用户发起的I/O操作与内部维护相关的I/O操作区分开。将KVDB连同其对应I/O流(带有相应标签)一起映射到QoS模块126中。例如,带宽配设模块245A和245B分别映射KVDB(0)和KVDB(1)。基于检查标签和标签中含有的信息,用于KVDB(0)的带宽配设模块245A可以在I/O流232、234A、234B和234C之间分配可用带宽(例如,从而当树数据结构的节点最佳地分布时,使用户发起的I/O操作优先于内部维护相关的I/O操作,或者由于树数据结构的节点的次优分布,当经历写入或读取等待时间时,使内部维护相关的I/O操作优先于用户发起的I/O操作)。例如,在一种情景中,当I/O流234C中的内部维护相关的I/O操作被优先化时,I/O流232可以具有10%的带宽,I/O流234A和234B可以各自具有10%的带宽并且其余70%的带宽可以分配给I/O流234C。可以利用加权轮询或其它技术来完成此百分比分配。模块245A可以指示动态节流和复用模块250根据那些百分比来服务I/O流。注意,这些示例百分比是出于说明性目的并且不限制本公开的范围。QoS模块可以基于与I/O流相关联的预定QoS参数来动态地改变分配的带宽的这些百分比。在一个实例中,图3所示的QoS调整API模块378可以控制动态带宽分配功能。

QoS模块126包含对应于每个KVDB的带宽配设模块。例如,带宽配设模块245B可以在来自KVDB(1)(125B)的I/O流(未示出)之间分配可用带宽。根据KVDB的数量,QoS模块126可以在指向动态节流和复用模块250的I/O流之间分布总可用带宽。例如,I/O流247A可以将来自KVDB(0)的所有I/O流引导到动态节流和复用模块250,包含来自标签229、231A、231B和231C的所有信息。类似地,I/O流247B可以将来自KVDB(1)的所有I/O流引导到动态节流和复用模块250,包含所有标签信息(未示出)。动态节流和复用模块250根据预定QoS参数调节一或多个输入/输出流中的输入/输出操作的处理时间,如下文进一步详细描述的。

图3展示了根据本公开的一些实施例的具有内置QoS控制的存储堆栈架构。具体地,从KVDB(325A,B)到存储器装置(374A,B,C)的I/O流路径中的QoS模块层(370A,B,C)展示了存储堆栈中QoS模块126(图1和2中所示)的集成。在此示例实施例中,较粗较深的箭头指示与QoS控制相关的信息流,而较细较浅的箭头指示从KVDB到媒体374A、374B、374C的I/O流。尽管出于说明性目的示出了三个媒体,但是可以使用任何数量的媒体。媒体374A-C可以是图1所示的存储器装置140。而且,KVDB 325A和325B可以是图1和图2所示的KVDB(0)125A和KVDB(1)125B。注意,尽管在图3中仅示出了两个KVDB,但是QoS组件可以与任何数量KVDB集成,所述任何数量的KVDB与任何数量的媒体耦接。

具体地,块360是供管理员配置QoS参数使得QoS模块126(示出在图2中)可以针对传入的I/O流采用适当的节流方案的命令行接口(CLI)。QoS参数可以与一或多个I/O流的等待时间相关联。例如,如果一或多个I/O流的等待时间不满足阈值等待时间,那么存储架构无法递送通过管理配置的目标QoS参数。QoS模块可以动态地改变一或多个I/O流的I/O处理时间,以满足配置的QoS参数。

QoS模块126的组件可以驻留在存储器池(m池)362中。存储器池是管理不同存储器装置的存储模块。在图3所示的I/O路径中,m池可以将数据写入存储器装置并且执行数据保护操作。M池362可以具有另一个命令行接口364,以将标签分配给来自KVDB325A和325B的I/O流。任选地,I/O路径中包含数据保护块366。数据保护块可以基于纠删码(EC)或其它类型的数据保护方案,如独立磁盘冗余阵列(RAID)。QoS模块层(370A,370B和370C)实施在媒体不可知的通用物理层(368A,368B和368C)与根据媒体类型充当接口适配器的媒体特定的物理层(372A,372B和372C)之间。例如,如果媒体是SSD,则媒体特定的物理层可以是NVMeSSD。媒体特定的物理层引导与物理媒体的接口,而媒体不可知的通用物理层提供到m池内的QoS模块层(370A,B,C)的接口。QoS模块层使用队列实施实际的节流机制。QoS模块拦截I/O流以检查标签并且将I/O操作发布到节流队列。QoS模块还可以通过提供关于标记有各种标签的各种I/O流中的等待时间和带宽分布的统计资料来提供系统概述。

除了QoS层之外,QoS模块的内部架构还可以包括策略引擎380、策略存储库382和各种应用程序编程接口(API),如QoS API 384、QoS查询API 376和QoS调整API 378。

策略存储库382为QoS模块提供永久性数据存储。当存储堆栈被加载时,读取来自策略存储库382的数据。当没有存储策略时,加载默认策略(所述默认策略可以被硬编码)。管理员可以具有修改策略并且使策略永久的特权。策略引擎380维护策略存储库382的存储器中数据结构。API可以查询策略引擎380以将I/O标签转换至运行时节流队列。

QoS API 384限定用于与I/O路径中的策略引擎通信的接口。QoS查询API为用户和/或管理员提供用于查询策略的接口。例如,可以通过QoS API报告系统性能统计资料。QoS调整API 378负责自动调整不同类型的I/O,如用户发起的I/O和内部维护相关的I/O。例如,如果KVDB确定需要在内部维护相关的I/O与用户发起的I/O之间重新平衡以改善数据库中的树结构,则将此类重新平衡请求连同内部维护相关的I/O与用户发起的I/O之间的带宽分配一起发送到QoS调整API。QoS调整API模块处理重新平衡请求并且跨节流队列重新分布带宽。然后将新的带宽分配信息发送到策略引擎。在一些实施例中,KVDB从QoS得到反馈。KVDB使用反馈来了解QoS调整的效果。例如,反馈可以包含每个I/O流的当前吞吐量和I/O等待时间。

图4展示了根据本公开的一些实施例的I/O标签用于促进QoS控制的分组方案。可以对KVDB的I/O标签进行分组。用户可以通过接口来选择已经被预先设置了适当的优先级水平的标签。用户还可以选择标签将被分配到的组。所述组可以具有预定权重。尽管具有不同优先级水平的各个标签提供了最细粒度来分配带宽,但KVDB可能难以针对每个标签确定最佳的带宽百分比。因此,分组提供了高效带宽分配的替代性方法。例如,图4示出了标记为(0,1,……,7)的8个I/O标签。标记为0、1、2、3、4、6和7的I/O标签放置在被共同分配了X%的带宽的组0中。这些标签可以覆盖除内部维护相关的I/O之外的所有I/O。I/O标签5放置在被分配了Y%的带宽(其中X+Y=100)的组1中并且覆盖所有内部维护相关的I/O。注意,只要分配的带宽百分比加起来达到100%,组的数量就可以大于两个。为了找到给不同标签组的带宽分配的权重百分比,实施QoS模块126的处理逻辑电路可以使用各种数学技术,如加权轮询(WRR)。选择的技术可以取决于组的数量。

图5是根据本公开的一些实施例的控制数据库I/O流的QoS的示例方法500的流程图。方法500可以由处理逻辑执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500可以由图1的主机系统120的QoS组件126执行。尽管以特定序列或顺序示出,但除非另外指定,否则可以修改过程的顺序。因此,展示的实施例应被理解为只是实例,并且展示的过程可以按不同的顺序执行,并且一些过程可以并行地执行。另外,在各个实施例中可以省略一或多个过程。因此,并非在每一个实施例中都需要所有过程。其它过程流程是可能的。

在操作510处,处理逻辑接收与一或多个KVDB相关联的一或多个I/O流。I/O流可以起源于运行用户发起的应用程序的主机系统处。I/O流中的至少一个I/O流包含与存取数据相关联的一或多个用户发起的I/O操作,所述数据存储在与所述一或多个KVDB耦接的存储器子系统中。I/O流中的一些I/O流可以起源于KVDB自身中并且可以包含用于一或多个KVDB的内部维护相关的输入/输出操作。用标签来标记I/O流。含有QoS模块126的存储器管理系统可以向用户提供接口以便对用户发起的I/O操作加标签,其中所述标签具有关于I/O流的标识数据。标识数据的实例是在主机系统处执行的哪个应用程序发起了I/O流中的I/O操作。标签中含有的标识数据的另一个实例可以是哪个KVDB与相应I/O流相关联。

在某些实施方案中,图3所示的命令行接口364使用户能够针对I/O流选择适当的标签。标签可以与不同的优先级标记相关联,并且用户可以选择具有适当优先级水平的标签来标记I/O流中的I/O操作。另外,用户或管理员可以将多个标签分组为一组,如关于图4所描述的。

在操作520处,处理逻辑检查I/O流的相应标签。I/O流可以具有多个标签,从而向QoS模块提供不同的标识数据。在一个实施例中,QoS模块126检查标签是否与用户发起的I/O操作或内部维护相关的I/O操作相关联。QoS模块126还检查带标签的I/O流对应于哪个KVDB。进一步地,QoS模块可以标识标签与之相关联的用户发起的应用程序以及哪个QoS参数与所述用户发起的应用程序相关联。

在操作530处,基于通过检查标签而获得的标识数据,处理逻辑确定要配设给I/O流的相应带宽量,以满足与和I/O流相关联的预定QoS参数有关的阈值标准。预定QoS参数可以由管理员例如使用图3所示的QoS CLI模块360来限定。与QoS参数相关联的阈值标准可以是用户发起的I/O操作所经历的最大等待时间,而没有可察觉的性能退化。如上文参考图2所描述的,带宽配设可以在与KVDB的特定例子相关联的I/O流内。当有多个KVDB例子时,QoS模块中的处理器在跨越所述多个KVDB例子的I/O流中配设总可用带宽。在某些实施例中,与含有内部维护相关操作的I/O流相比,可以向含有用户发起的操作的I/O流配设更多带宽。然而,如关于图3所示的QoS调整API模块360所描述的,如果内部KVS树数据结构变得杂乱无章以至于完成用户发起的I/O操作变得效率低下,则可以重新分布跨节流队列的带宽。

在操作540处,处理逻辑跨一或多个KVDB利用相应配设带宽量动态地对I/O流进行节流。动态节流涉及调节I/O流中的I/O操作的处理时间。动态节流可以由图2所示的模块250来完成。图3中的I/O路径中的QoS模块层370A-C通过经由模块384与策略引擎380通信来完成动态节流。在基于标签中含有的信息进行适当带宽分配的情况下,节流本身不会影响QoS。此外,可以由模块250在KVDB之间复用I/O流。

图6展示了计算机系统600的示例机器,在所述计算机系统内,可以执行用于使机器执行本文所讨论的方法中的任何一或多种方法的指令集。例如,计算机系统600可以对应于包含、耦接到或利用存储器子系统(例如,图1的主机系统110)的主机系统(例如,图1的主机系统120)或可以用于执行控制器的操作(例如,执行操作系统以执行对应于图1的QoS模块126的操作)。在替代性实施方案中,机器可以连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可以在客户端-服务器网络环境中以服务器或客户端机器的能力、在对等(或分布式)网络环境中作为对等机器或在云计算基础架构或环境中作为服务器或客户端机器进行操作。

机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web器具、服务器、网络路由器、交换机或网桥或能够(顺序地或以其它方式)执行指定所述机器要采取的动作的指令集的任何机器。进一步地,尽管展示了单个机器,但是术语“机器”还应被视为包含单独地或联合地执行指令集(或多个指令集)以执行本文所讨论的方法中的任何一或多种方法的机器的任何集合。

示例计算机系统600包含通过总线630彼此通信的处理装置602、主存储器604(例如,只读存储器(ROM)、闪存存储器、动态随机存取存储器(DRAM)(如同步DRAM(SDRAM)或兰巴斯(Rambus)DRAM(RDRAM)等))、静态存储器606(例如,闪存存储器、静态随机存取存储器(SRAM)等)和数据存储装置618。

处理装置602表示一或多个通用处理装置,如微处理器、中央处理单元等。更具体地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器或实施指令集的组合的处理器。处理装置602还可以是一或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602被配置成执行用于执行本文所讨论的操作和步骤的指令6026。计算机系统600可以进一步包含网络接口装置608以通过网络620进行通信。数据存储装置618可以包含其上存储有使本文所描述的方法或功能中的任何一或多种方法或功能具体化的一或多个指令集或软件626的机器可读存储媒体624(也被称为计算机可读媒体)。在由计算机系统600执行指令626期间,所述指令还可以完全地或至少部分地驻留在主存储器604内和/或处理装置602内,主存储器604和处理装置602还构成机器可读存储媒体。机器可读存储媒体624、数据存储装置618和/或主存储器604可以对应于图1的存储器子系统110。

在一个实施方案中,指令626包含用于实施与特定组件(例如,图1的QoS模块126)相对应的功能的指令。尽管机器可读存储媒体624在示例实施方案中被示出为单个媒体,但是术语“机器可读存储媒体”应被视为包含存储所述一或多个指令集的单个媒体或多个媒体(例如,集中式或分布式数据库和/或相关联的高速缓存存储器和服务器)。术语“机器可读存储媒体”还应被视为包含能够存储或编码用于由机器执行并且使机器执行本公开的方法中的任何一或多种方法的指令集的任何媒体。因此,术语“机器可读存储媒体”应被视为包含但不局限于固态存储器、光学媒体和磁性媒体。

已经在对计算机存储器内的数据位的操作的算法和符号表示方面呈现了前面详细描述的说明的一些部分。这些算法描述和表示是数据处理领域的技术人员用来向本领域的其它技术人员最有效地传递其工作实质的方式。算法在这里并且通常被认为是产生期望的结果的操作的自相一致序列。操作是需要物理操纵物理量的操作。通常但不一定,这些量采用能够被存储、组合、比较和以其它方式操纵的电或磁信号的形式。已经证明,主要出于通用的原因,有时将这些信号称作比特、值、元素、符号、字符、术语、数字等是便利的。

然而,应当记住的是,这些和类似术语中的全部术语应与适当的物理量相关联并且仅是应用于这些量的方便标签。除非另外特别说明,否则如根据以上讨论而显而易见的,应理解,贯穿本说明书,利用如“接收”、“服务”或“发出”等术语进行的讨论是指计算机系统或类似电子计算装置的动作和过程,所述动作和过程将被表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和变换成被类似地表示为计算机系统存储器或寄存器或其它此类信息存储装置内的物理量的其它数据。

本公开还涉及用于执行本文的操作的设备。此设备可以被专门构造成用于预期目的,或者此设备可以包括通过通用计算机中存储的计算机程序选择性地激活或重新配置的计算机。此类计算机程序可以存储在计算机可读存储媒体中,所述计算机可读存储媒体如但不限于各自耦接到计算机系统总线的任何类型的盘(包含软盘、光盘、CD-ROM和磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡或者适合于存储电子指令的任何类型的媒体。

本文所提出的算法和显示并非固有地与任何特定计算机或其它设备相关。各种通用系统可以与根据本文的教导的程序一起使用,或者可以证明,构造用于执行所述方法的更具专用性的设备是方便的。用于各种这些系统的结构将如下文的描述中阐述那样显现。另外,本公开不参考任何特定的编程语言进行描述。应理解,可以使用各种编程语言来实施如本文描述的本公开的教导。

本公开可以被提供为计算机程序产品或软件,所述计算机程序产品或软件可以包含其上存储有指令的机器可读媒体,所述指令可以用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、闪存储存器装置等。

在前述说明书中,已经参考本公开的具体示例实施方案对本公开的实施方案进行描述。将显而易见的是,在不脱离如以下权利要求中阐述的本公开的实施方案的更广泛的精神和范围的情况下,可以对所述实施方案进行各种修改。因此,说明书和附图应被视为说明性意义的,而不是限制性意义的。

相关技术
  • 控制与键-值数据库相关联的输入/输出流的服务质量
  • 与键-值式数据库系统相关联的锁管理
技术分类

06120112941688