CN109710175A - 用于数据存储管理的设备和方法 - Google Patents
用于数据存储管理的设备和方法 Download PDFInfo
- Publication number
- CN109710175A CN109710175A CN201811122826.XA CN201811122826A CN109710175A CN 109710175 A CN109710175 A CN 109710175A CN 201811122826 A CN201811122826 A CN 201811122826A CN 109710175 A CN109710175 A CN 109710175A
- Authority
- CN
- China
- Prior art keywords
- data
- write
- queue
- data storage
- priority
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
- G06F13/30—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal with priority control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
-
- 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/061—Improving I/O performance
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
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)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
根据各个方面,配置用于数据存储管理的方法和设备包括管理一个或多个队列,每个队列包括用于写入数据存储布置或从数据存储布置读取的多个未决输入/输出(I/O),每个未决I/O根据I/O优先级方案具有相应的优先级;接收新I/O;根据I/O优先级方案将优先级分配给新I/O;从一个或多个队列中选择队列并修改队列以添加新I/O,其中队列的选择和在队列中新I/O的位置基于其被分配的优先级;并执行如所修改的一个或多个队列的I/O。
Description
技术领域
各种实施例总体上涉及数据存储布置和方法。
背景技术
随着现代技术变得更依赖于从网络基础结构的多个组件获取的大量数据,将需要用于高效处理数据的高效方法和设备来适应不断增加的数据量和数据流量。例如,需要用于较高效地存储和处理数据的设备和方法以便针对广泛的应用提供提高的性能。在现代数据存储***中,远程存储在例如除了数据用户的实际位置之外的一个或多个存储***中(即在数据中心中)的数据,需要易于访问以便改善总体***性能。
键值(KV)存储(即,对象存储)是用于在数据中心中存储数据的主要的且快速增长的方式。它通常使用对数结构合并(LSM)树或其他基于树的变体(例如,二叉树,B+树等等)来实现。
附图说明
在整个附图中,应该注意,使用类似的附图标记来描绘相同或相似的元件、特征和结构。附图不一定按比例绘制,而是通常将重点放在说明本发明的原理上。在以下描述中,参照以下附图描述了本发明的各种实施例,其中:
图1示出了根据一些方面的数据存储方案的图和一个或多个数据存储介质的示意图;
图2示出了根据一些方面的计算***;
图3示出了根据一些方面的示出控制器的组件的示意性框图;
图4示出了根据一些方面的NVMe架构;
图5示出了一些方面的优先化模块的示意图;
图6示出了根据一些方面的通信***的示意图;
图7示出了根据一些方面的控制器的内部配置的示意图;以及
图8示出了根据一些方面的流程图。
具体实施方式
以下具体实施方式参考附图,其以举例说明的方式示出了可以实践本发明的具体细节和实施例。足够详细地描述这些实施例以使本领域技术人员能够实践本发明。可以利用其他实施例,并且可以在不脱离本发明的范围的情况下进行结构、逻辑和电学改变。各种实施例不一定是相互排斥的,因为一些实施例可以与一个或多个其他实施例组合以形成新的实施例。结合方法描述各种实施例,并且结合设备描述各种实施例。然而,可以理解的是,结合方法描述的实施例可以类似地应用于设备,反之亦然。
本文使用词语“示例性”来表示“用作示例、实例或说明”。在此描述为“示例性”的任何实施例或设计不一定被解释为比其他实施例或设计优选或有利。
术语“至少一个”和“一个或多个”可以理解为包括大于或等于1的任何整数,即一个、两个、三个、四个,等等。术语“多个”可以理解为包括大于或等于2的任何整数,即两个、三个、四个、五个,[...]等。
关于一组元件的短语“至少一个”在本文中可用于表示来自由元件组成的组中的至少一个元件。例如,关于一组元素的短语“至少一个”在本文中可用于表示以下选择:所列元素之一,复数个所列元素中的一个,复数个单独列出的元素,或复数个多个列出的元素。
说明书和权利要求书中的词语“复数”和“多个”明确地指代大于一的量。因此,任何明确地调用上述单词的短语(例如,“复数个[对象]”,“多个[对象]”)指的是一定数量的对象明确地指的是一个以上的所述对象。在说明书和权利要求书中术语“(…的)组”,“(…的)集”,“(…的)集合”,“(…的)系列”,“(…的)序列”,“(…的)群组”等等,如果有的话,指的是等于或大于1的量,即一个或多个。
本文使用的术语“数据”可以被理解为包括任何合适的模拟或数字形式的信息,例如,作为文件、文件的一部分、一组文件、信号或流、信号或流的一部分、一组信号或流、KV数据库中使用的键和/或值等来提供。此外,术语“数据”还可用于表示对信息的引用,例如以指针的形式。
如本文所使用的术语“电路”或“电路***”被理解为任何种类的逻辑实现实体,其可以包括专用硬件或执行软件的处理器。因此,电路可以是模拟电路、数字电路、混合信号电路、逻辑电路、处理器、微处理器、中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列FPGA)、集成电路、专用集成电路(ASIC)等或其任何组合。将在下面进一步详细描述的相应功能的任何其他类型的实现也可以被理解为“电路”。应该理解,本文详述的任何两个(或更多)电路可以被实现为具有基本上等同的功能的单个电路,并且相反,本文中详述的任何单个电路可以被实现为具有基本上等同的功能的两个(或更多个)独立电路。另外,对“电路”的引用可以指共同形成单个电路的两个或更多个电路。术语“电路装置”可以指代单个电路、电路集合和/或由一个或多个电路组成的电子设备。
例如本文使用的术语“处理器”或“控制器”可以被理解为允许处理数据的任何类型的实体。可以根据由处理器或控制器执行的一个或多个特定功能来处理数据。此外,本文使用的处理器或控制器可以理解为任何类型的电路,例如任何类型的模拟或数字电路。例如本文使用的术语“处置”或“处理”指的是数据处理、文件处理或请求处理,可以理解为任何类型的操作,例如I/O操作,理解为例如存储(也称为写入)和读取、或任何类型的逻辑运算。
因此,处理器或控制器可以是或包括模拟电路、数字电路、混合信号电路、逻辑电路、处理器、微处理器、中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、集成电路、专用集成电路(ASIC)等,或其任何组合。下面将进一步详细描述的相应功能的任何其他类型的实现方式也可以被理解为处理器、控制器或逻辑电路。应当理解,本文详述的处理器、控制器或逻辑电路中的任何两个(或更多个)可以实现为具有等同功能等的单个实体等等,并且相反地,本文详述的任何单个处理器、控制器或逻辑电路可以被实现为具有等同功能等的两个(或更多个)独立实体等等。
在当前技术中,软件和硬件实现的数据处理之间的差异可能模糊,因此必须理解,本文详述的处理器、控制器或电路可以用软件、硬件或包括软件和硬件的混合实现方式来实现。
术语“软件”是指任何类型的可执行指令,包括固件。
本文详细描述的术语“***”(例如,存储***、服务器***、客户端***、访客***等)可以被理解为一组交互元素,其中作为示例而非限制的,元素可以是一个或多个机械组件、一个或多个电子组件、一个或多个指令(例如,编码在存储介质中)、一个或多个处理器等。
本文中详细描述的术语“存储”(例如,存储设备、主存储、存储***等)可以被理解为任何合适类型的存储器或存储器设备,例如固态驱动器(SSD)、硬盘驱动器(HDD)、独立磁盘冗余阵列(RAID)、直接连接的NVM设备等中的一个或多个,或其任何组合。
本文中详细描述的术语“高速缓存存储”(例如,高速缓存存储设备)或“高速缓冲存储器”可以被理解为任何合适类型的快速可存取存储器或存储器设备、固态驱动器(SSD)等。根据各种实施例,高速缓冲存储设备或高速缓冲存储器可以是具有高I/O性能(例如,高读/写速度,低延迟等)的特殊类型的存储设备或存储器。通常,高速缓存设备可以具有比主存储较高的I/O性能,其中主存储相对于存储空间通常可以更具成本效益。根据各种实施例,存储设备可以包括高速缓冲存储器和主存储器。根据各种实施例,存储设备可以包括用于将数据分发到高速缓冲存储器和主存储器的控制器。
如本文所使用的,“存储器”、“存储器设备”等可被理解为其中可存储数据或信息以供取回的非暂时性计算机可读介质。因此,对本文包括的“存储器”的引用可以理解为指易失性或非易失性存储器,包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、固态存储装置、磁带、硬盘驱动器、光驱、3D交叉点(3DXP)等,或其任何组合。此外,应当意识到,寄存器、移位寄存器、处理器寄存器、数据缓冲器等也在本文中由术语存储器包含。应当意识到,被称为“存储器”或“一个存储器”的单个组件可以由多于一种不同类型的存储器组成,并且因此可以指代包括一种或多种类型的存储器的集合组件。容易理解的是,任何单个存储器组件可以分成多个共同等同的存储器组件,反之亦然。此外,虽然存储器可以被描绘为与一个或多个其他组件分开(例如在附图中),但是应当理解,存储器可以集成在另一组件内,例如在公共集成芯片上。
易失性存储器可以是需要电力来维持由介质存储的数据的状态的存储介质。易失性存储器的非限制性示例可以包括各种类型的RAM,诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)。可以在存储器模块中使用的一种特定类型的DRAM是同步动态随机存取存储器(SDRAM)。在一些方面,存储器组件的DRAM可以符合联合电子设备工程委员会(JEDEC)颁布的标准,例如用于双倍数据速率(DDR)SDRAM的JESD79F、用于DDR2SDRAM的JESD79-2F、用于DDR3SDRAM的JESD79-3F、用于DDR4SDRAM的JESD79-4A、用于低功率DDR(LPDDR)的JESD209、用于LPDDR2的JESD209-2、用于LPDDR3的JESD209-3和用于LPDDR4的JESD209-4(这些标准可在www.jedec.org上获得)。这些标准(和类似标准)可以被称为基于DDR的标准,并且实现这种标准的存储设备的通信接口可以被称为基于DDR的接口。
可以将各个方面应用于包括非易失性存储器的任何存储器设备。在一个方面,存储器设备是块可寻址存储器设备,诸如基于负AND(NAND)逻辑或负OR(NOR)逻辑技术的那些存储器设备。存储器还可以包括下一代非易失性设备,例如3DXP存储器设备,或其他字节可寻址的就地写入非易失性存储器设备。3DXP存储器可以包括无晶体管的可堆叠交叉点架构,其中存储器单元位于字线和位线的交叉处并且可单独寻址,并且其中位存储基于体电阻的变化。
在一些方面,存储器设备可以是或可包括使用硫属化物玻璃的存储器设备、多阈值级别NAND闪存、NOR闪存、单级或多级相变存储器(PCM)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、反铁电存储器、结合忆阻器技术的磁阻随机存取存储器(MRAM)存储器、、包括金属氧化物基、氧空位基和导电桥随机存取存储器(CB-RAM)的电阻存储器、或自旋转移力矩(STT)-MRAM、基于自旋电子磁结存储器的器件、基于磁隧道结(MTJ)的器件、基于DW(畴壁)和SOT(自旋轨道转移)的器件、基于晶闸管的存储器设备或者任何上述存储器设备的组合或其他存储器。术语存储器或存储器设备可以指管芯本身和/或封装的存储器产品。
除非明确指定,否则术语“发送”涵盖直接传输(点对点)和间接传输(经由一个或多个中间点)。类似地,术语“接收”既包括直接接收,也包括间接接收。此外,术语“发送”、“接收”、“通信”和其他类似术语包括物理传输(例如,无线电信号的传输)和逻辑传输(例如,在逻辑软件级连接上传输数字数据)。例如,处理器可以与另一处理器以无线电信号的形式发送或接收数据,其中物理传输和接收由诸如RF收发器和天线之类的无线电层部件处理,并且逻辑传输和接收由处理器来执行。术语“通信”包括发送和接收中的一个或两个,即在传入和传出方向中的一个或两个方向上的单向或双向通信。术语“计算”包括经由数学表达式/公式/关系的“直接”计算和经由查找或哈希表和其他数组索引或搜索操作的“间接”计算。
由于后台操作(读取和写入)对前台主机读取操作(即客户端获取(Get)命令)的干扰,用于KV存储的当前实现方式和方法具有差的读取性能和服务质量(QoS)。实际上,后台操作,即后台I/O,是KV算法在数据存储中发出的绝大多数操作,其读取增幅和写入增幅范围分别从4到400和3到15。尽管高增幅场景,本公开的方法和设备改善了突发读取性能和读取QoS。
尽管本文的描述可以在包括固态驱动器(SSD)的存储介质上运行的KV应用的上下文中被记录和解释,但是其同样也适用于其他存储介质类型,即硬盘驱动器(HDD)、独立磁盘冗余阵列(RAID)、持久性存储器等。
根据各个方面,一种用于高效数据存储实现的数据存储方法和数据存储布置,包括可操作地耦合到一个或多个处理器的一个或多个存储介质,所述一个或多个处理器被配置为维护一个或多个队列(在主机上或在设备上),所述一个或多个队列包括在一个或多个存储介质中的至少一个存储介质上的多个未决输入/输出(I/O),每个未决I/O根据I/O优先级方案被分配了相应的优先级;接收一个或多个新I/O;根据I/O优先级方案将优先级分配给一个或多个新I/O;修改所述一个或多个队列以添加所述一个或多个新I/O,其中所述一个或多个队列中的所述一个或多个新I/O的位置中的每一个位置基于其被分配的优先级;并处理一个或多个队列。在数据存储布置使用多个队列的情况下,可以将更多队列分配给较高优先级的I/O,并将更少的队列分配给更低优先级的I/O。
根据各个方面,优先级方案可以相对于后台操作(例如,较低级别的数据结构之间的数据压缩)使客户端I/O优先化(即,通过应用接口获取或者放置)。在进一步的方面中,优先级方案可以可选地将读取优先于写入,即使获取(Get)命令优先于放置(Put)命令。在另一方面中,优先级方案可以可选地使得刷新预写日志(WAL)所需的读取和/或写入优先于较低级别的存储器之间的数据传输。在另一方面,数据方案可以使得较高级别的存储器之间的数据传输(例如压缩)优先于较低级别的存储器之间的数据传输。
根据各个方面,可以取决于所使用的存储介质来具体定制优先级方案。例如,对于快速NVM(NVMe)固态驱动器(SSD),可以通过使用加权循环(WRR)或其他供应商特定机制来简化优先化方案并进行硬件加速。
图1示出了具有分层结构100的数据存储方案的示图和一个或多个数据存储介质150的示意图。虽然示图100和随后的解释关于对数结构化合并树(LSM树)进行了详细描述,但是应该意识到,本公开的方法和设备可以类似地适用于在后台操作中使用分层/树级结构和/或重定位数据的其他方案。可以意识到的是,图1所示的示图在本质上是示例性的,并且因此为了说明的目的可以简化。
LSM树被实现在数据存储中,并为具有高***和删除速率的KV存储库提供高效的索引,从而使它们对具有高***量的数据流(例如事务日志数据)具有吸引力。类似于其他搜索树,LSM树将KV对数据维持在多个层中。为了充分利用LSM树数据存储技术所提供的优势,数据存储实现方式和技术应该专门针对每个存储介质特别定制,以最大限度地提高***性能。例如,数据结构设计中的关键因素之一应该是存储介质中的高效批量同步,例如,在SSD中。
LSM树使写入到大段进行推迟并成批量以使用硬驱动器的高顺序带宽。LSM树由指数增加的大小112-118的多个存储组件(即层)组成。第一组件(未画出)可以作为暂时性易失性缓冲区驻留在主机存储器上,而其他组件(级别0(L0),级别1(L1),...,最后级别(LN))112-118驻留在磁盘上。在Put期间,可首先将KV对添加到盘上顺序日志文件,即预写日志(WAL)120,然后可将KV对添加到暂时性缓冲器。包含Put数据的存储器内数据缓冲区不需要总是排序,只需要在数据放置在磁盘上(例如写入L0)时进行排序。为了本公开的目的,L0是存储上的最高级数据,即数据存储布置中的最高级。因此,在一些方面,WAL可能不需要被刷新到L0,并且优先级3和4可以从表1中移除(稍后讨论)。在这种情况下,L0写入磁盘,即排序到磁盘后写入存储器内中的数据缓冲区,可以在表1中替换为优先级3,而表1的其他较低优先级(即压缩所需要的磁盘读取和写入)可以使优先级级别上移(例如,对于i=0到N-1,优先级“将Li压缩到Li+1所需的数据读取”移位到4+2i)。
这允许对最近***的KV对进行快速和高效的读取(即Get)。一旦第一级(即暂时性易失性缓冲区达到其容量(或在预定时间),数据被合并到磁盘的最高级(即L0 112),并被排序。来自较高级数据结构的数据与较低级别合并的过程称为压缩。新合并的树(例如,包括用于压缩112和114之间的数据的来自压缩前112和114的数据)将被顺序写入114。这种从112到114的压缩发生,直到114达到预定极限,并且然后执行类似的过程以将数据移动到116,等等,即朝向118。每个数据等级可以在数据容量上比其之前的等级成指数级地大,即,较低级别的数据容量比较高级别的数据容量更大,例如116具有比114更大的存储容量。
为了执行来自客户端/应用的Get命令,数据存储处理器可能需要搜索从最高级别112开始的LSM树数据存储结构的多个级别112-118。然而,搜索被促进,因为最近添加的数据包含在较高的级别,因此,以这种方式,更容易访问最新的和/或动态的数据。为了检索KV对,LSM树算法开始以最高级别(即112)搜索,并沿着较低级别(即朝向118)的方向扫描。
在一些方面,与预写日志(WAL)120相关联的读取和/或写入可以受制于优先化方法和算法。
数据存储介质150的示例性示意图示出串联工作的固态驱动器(SSD)和硬盘驱动器(HDD),但是可以意识到的是,在本公开的方面中可以在数据存储***中独立地实现或可被配置为与其他类型的数据存储介质类型(例如,RAID、永久存储器等)一起操作。在其他方面,本文中的公开内容可以独立于SSD或HDD使用而使用其他存储介质类型(例如,RAID)来实现。
而且,尽管在150中示出了一个SSD和一个HDD,但是可以意识到,每种类型(或任何其他存储介质类型)的任何数量可以被实现到数据存储***中,即0、1或者大于1的任何数量。
尽管本文的描述可以描述在主机上运行并且将I/O发布到存储设备的算法,但是应该意识到,该描述不旨在仅限于该配置并且也可以类似地被实现为驻留在这样的存储设备中的KV算法。在几个方面,虽然KV算法是在LSM树和基于散列的算法的上下文中提出的,但KV算法同样适用于可以在后台重定位数据和/或使用分层/树级结构的其他存储方案。
在一些方面中,方法、算法和设备针对发布KV请求的应用提供改进的突发读取(即,Get)性能和读取QoS。这是通过针对LSM(或基于树)算法和HashDB算法中的不同类型的读取和写入实现重要性级别,通过I/O的智能优先级来实现的。本文介绍的优先级算法将重要性较高的读取优先于较不重要的读取和写入。
在一些方面,用于优先化由一个或多个处理器发布到存储介质(例如,SSD)的I/O的新的KV算法感知策略可以包括:使客户端Get命令优先于客户端Put命令,使客户端Put命令优先于与后台I/O相关联的I/O(例如WAL刷新、压缩、重定位等)以及取决于数据压缩中涉及的相应级别来优先化后台I/O(例如,具有更近期数据的级别优先于具有较旧数据的级别)。
在一些方面中,呈现了用于实现特定于硬件和/或软件能力的前述优先化算法的设备和方法,例如,对于包括具有多个队列的存储介质的数据存储布置,用于强制I/O优先级能力同时防止饥饿的针对NVMe SSD的加权循环(WRR)。
图2示出了根据一些方面的计算***200。可以意识到的是,计算***200本质上是示例性的,并且因此可以为了本公开的目的而被简化。
客户端202a-202d可以是通常是被配置为向/从网络204提供和/或请求数据的任何设备的主机设备(例如,计算机、移动设备、传感器、照相机等)。客户端202a-202d中的每个可以经由物理连接(例如以太网)或无线(例如,实现任何无线通信技术,例如5G、LTE、3G无线电接入技术(RAT)、Wifi、WiMax、蓝牙等)连接到网络204。此外,集群202a-202d中的客户端中的每个可以是被配置为将Get和/或Put命令发送到网络204的物理设备或虚拟设备。
网络204可以被配置为根据任何合适的通信协议进行操作,所述合适的通信协议诸如无线通信协议,包括但不限于WiFi、无线吉比特联盟(WiGig)标准、毫米波标准、第三代合作伙伴计划(3GPP)无线电通信技术标准等或其他通信标准下的通信协议,例如以太网、Infiniband等。
控制器206可以是单个处理单元或多个处理单元,包括一个或多个微处理器以及包括非易失性存储存储器的一个或多个***存储器组件。如果控制器206是多个处理单元,则每个处理单元可以具有其自己的微处理器和***存储器,并且可以通过计算***200内的专用网络与控制器206的其他处理单元互连。存储***208可以包括一个或多个存储设备,例如SSD、HHD、RAID等,它们连接到控制器206并由此连接到网络。在另一方面,存储***208可以直接连接到网络204,并且控制器206可以通过网络204操作性地配置存储***208的各个方面。控制器206也可以实现为存储***服务器(即,数据库服务器)的一部分。
控制器206可以直接(如图2所示)或通过网络(未示出)管理存储***208。控制器206可以处置旨在用于和/或由存储***208进行的写入和读取请求的处理。在另一方面,控制器206可以嵌入存储***208中,或者可替代地,可以具有在存储***208外部(如图所示2)和内部(未示出)的组件。
存储***208可以包括任何合适的存储介质中的一个或多个,例如,SSD、HDD、其他类型的非易失性随机存取存储器(NVRAM)、持久性存储器、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等。在本公开的方面中,存储***208可以包括根据NVMe规范运行的一个或多个SSD。
存储***208可以被配置为可以使用对象和/或键值(KV)对来存储数据的数据库管理***。通常,存储***208可以被配置为使用关系技术以用于存储和检索分级或树级结构(例如,日志结构合并(LSM)树)中的数据,或者诸如哈希表(HashDB)等之类的非分层***中的数据。
在若干方面中,数据库可以被组织为具有信息(即,“值”)字段的“键”的集合。在存储***208和客户端202a-202d上存储的实际物理数据之间,通过网络204使用控制器206来执行事务处理。
通常,计算***200可以包括多种配置的任意数量的客户端、控制器和/或存储***,例如,控制器206位于存储***208内部或外部,多个控制器206位于计算***200的不同部分以用于冗余和/或备份。为了清楚起见,计算***200的配置被示为示例性配置,并且在其他方面中,可以选择其他合适的***配置。
图3示出了说明控制器206的组件的示意性框图。应意识到,图3在本质上是示例性的,因此为了解释的目的可以被简化。
如上面关于图2所描述的,尽管控制器206可以在图3中示出为单个单元,但是可以意识到,控制器206的功能也可以分布在多个设备上,例如,用于将优先级分配给I/O的控制器以及用于处理I/O队列的控制器,各个I/O具有相应的优先级,每个都具有其自己的处理器302和存储器304以及其他组件。
控制器206被配置为管理存储***208,并且因此可以位于存储***208的内部和/或外部。控制器206上的存储器304可以存储子例程、可执行指令和其他数据,处理器302被配置为访问这些子例程、可执行指令和其他数据以执行如本文所述的用于优先化数据存储管理的方法和算法。存储器304可以包括用于缓冲写入和/或读取数据的缓冲器。在一些方面,单独的缓冲器310可以被配置在存储器304的外部并且可操作地耦合到处理器302。
除了也耦合到处理器302的存储器304之外,控制器206还可以包括非易失性存储器(NVM)306组件。NVM 306可以是位于存储器304外部的永久性高速缓存或高速缓冲存储器,并且可以被实现为保留数据,而与控制器206的电源的状况无关。NVM 306可用于向控制器206提供进一步的操作支持,以便执行本文所述的算法和方法。
优先化模块308可以包括硬件、软件或其任何组合,并且被配置为与控制器206的其他组件(如图3所示)分开配置,或者可以与控制器206的其他组件相结合配置,例如,作为用于指示一个或多个处理器302以执行本公开的方法和/或算法的存储器304上的一组或多组子例程,或者其可作为指令被包括在处理器302的存储器组件上。在一些方面中,优先化模块308可以包括用于基于LSM树的存储***的由键值(KV)***发布的I/O的优先化的默认优先化表,例如或类似于表1。在一些方面,可以将一个或多个查找表(LUT)存储在控制器206的存储器304上,以便能够将优先级分配给相应的I/O。因此,控制器206的一个或多个处理器可以被配置为访问一个或多个LUT以便将优先级分配给I/O。
表1:基于LSM树由KV***发布的I/O的(默认)优先级
在表1中,第一行,即处理客户端Get命令所需的磁盘读取,被分配最高优先级,即1,并且随后的I/O类型以降低的优先级被分配指示的优先级(即,通过渐增数字指示的较低优先级)。表1的前两行(优先级号1和2)表示前台操作,即直接从客户端接收的命令。其余四行(优先级号3和较高)表示后台操作,即用于将WAL刷新到LSM树结构的第一级(L0)的读取和/或写入(优先级号3和4),以及从一个级别压缩到另一级别(优先级5和较高)的磁盘读取和/或者写入。可以意识到的是,可以根据需要实施优先级,例如,WAL是可选特征,并且因此,可以修改优先级方案以考虑WAL何时未实现。
在一些方面,可以将不同的优先级分配给不同的客户端(即,可以将不同的优先级分配给图2的客户端202a-202d)、不同的应用和/或不同的虚拟机(VM),这可以作为子优先级并入表1的优先级1和2。例如,来自客户端202a的读取和/或写入可以优先于来自客户端202b的读取和/或写入,使得源自客户端202a的读取/写入将优先于来自202b的读取/写入。例如,这可以基于每个客户端的活动(202a可以比202b在I/O请求中更活跃)来完成,或者202a可以相比于202b与较高优先级的应用(例如,安全应用)相关联。类似地,向网络请求I/O的某些应用(例如安全应用)可以优先于其他应用。
控制器206可以被配置为实现/操作优先化模块308作为管理程序/管理员/文件***来定制不同类型的I/O的优先级。例如,如果应用B比应用C具有较高的优先级,则管理程序可以被配置为覆盖表1的默认优先级,以指定应用B的写入比应用C的读取具有较高的优先级,并且相应地修改算法的优先化参数。
另一方面,应用和/或客户端可以选择降低或提高其自己的I/O的优先级并通知网络,网络可以相应地更新控制器306的优先化模块308。
对于进行后台压缩的基于非树的算法,I/O的默认优先级将与表1中所描述的类似,其中所有前台操作优先于后台操作并且所有后台操作被视为写入到级别1(i=-1)。
优先化模块308可以包括优先级分配器和优先级处理器,如果控制器被配置为单个单元,该优先级分配器和优先级处理器可以被包括在相同的优先化模块308中,或者如果控制器被配置为多个单独的单元,优先级分配器和优先级处理器可以包含在每个控制器单元中或可以智能地分配在不同的控制单元中。
在一些方面中,控制器206可以被配置为应用特定于存储***208的硬件的优先化策略,例如,如表1中所示的优先级。例如,控制器206可以被配置为实现饥饿预防机制,使得后台I/O不被完全忽略。因此,可以提供调度算法作为***内核的一部分,以便公平地分配资源,即分配资源使得I/O优先级不被永久拒绝执行。
例如,如果存储***配置有根据NVMe标准的SSD,则可以使用加权循环(WRR)或其他硬件特定机制来对优先级进行映射和硬件加速,例如按照NVMe规范v1.3的3.1.1节中的规定,控制器功能(CAP)寄存器的每个位18:17。因此,在将表1的优先级映射到WRR机制的示例中,可以如表2所示映射得到的I/O优先级策略。
表2:I/O优先级到NVMe WRR的示例默认映射
在表2中,来自表1(在表2中,在列1中示出)中的每个I/O优先级被映射到如根据NVMe标准所描述的三个特定WRR优先级(列3中的高、中和低)。以这种方式,较高的I/O优先级被分配较高的WRR优先级和/或较大数量的提交队列。表2中的提交队列号可以对应于图4中的核的I/O提交队列,例如其中较高优先级提交队列对应于较低号码核心号。
如表2所示的WRR优先级桶实施中的优先级强制是通过控制器将更多提交队列分配给较高优先级的I/O来实现的。例如,尽管优先级2和优先级3都被分类为具有高WRR优先级,但是优先级2的I/O接收比优先级3的I/O更多的提交队列:分别是2个提交队列相对于1个提交队列。
在一些方面,实现了专门映射到硬件和/或其他协议的优先级方案的增强和变化。例如,在NVMe中,如果设备限制提交队列的数量,则可以组合多个优先级号,即,优先级1和2可以被组合,因为它们都是前台操作。另外,可以基于设备特定的和/或网络特定的考虑来定制高/中/低优先级中每个的权重以及每个优先级的队列数量,以便实现较高级别的性能和/或QoS,这取决于数据存储***中使用的设备。此外,本公开的设备和方法可以被配置为利用NVMe的WRR紧急优先权特征,例如通过为控制器的处理器提供额外的子例程指令来防止饥饿并发出具有紧急优先级的特定优先级1请求。
控制器206可以包括缓冲器310,缓冲器310可以可选地被包括在存储器304内部,并且可以被配置为存储未决I/O请求以用于处理。在一些方面,缓冲器310的可操作性可以被配置为特定于存储***208的硬件,例如,如关于NVMe标准所描述的,以便实施WRR方法。
此外,控制器206可以包括被配置为根据一个或多个通信协议与网络通信的一个或多个网络接口320以及被配置为根据一个或多个协议(例如根据NVMe标准)与存储***208进行通信的一个或多个存储接口325。
图4示出了一些方面的NVMe架构400。可以意识到,NVMe架构400是示例性的,并且因此为了解释的目的可以简化。NVMe是用于经由快速PCI或其他结构连接的非易失性存储器存储介质(例如SSD)的逻辑设备接口规范。它允许主机硬件和软件来利用SSD的并行性水平,从而与以前的逻辑设备接口相比,减少了I/O开销并提高了性能。可以意识到,可以包括NVMe架构400的附加组件,诸如NVMe控制器402与控制器管理和核心之间的可选MSI-X接口,但为了解释的目的未示出。简而言之,NVMe是一种用于通过快速PCI(PCIe)接口连接SSD和控制器的存储协议。
如NVMe架构400所示,支持多个核心,每个核心具有I/O提交队列和完成队列。以这种方式,NVMe可以并行处理大量的I/O。它在主机存储器中具有成对的提交和竞争队列机制,其中主机软件将命令放入提交队列中。NVMe控制器402将命令完成置于相对应的完成队列中,其中多个I/O提交队列可以将完成报告到单个公共完成队列上。
图5示出了一些方面中的优先化模块308的示意图。可以意识到的是,图5在本质上是示例性的,并且因此为了解释的目的可以被简化。
组件502-508中的每一个可以被实现为硬件、软件或其任何组合,并且可以在本地位于单个控制器中或跨多个彼此一致地运行的控制器分布。
管理器502被配置为管理包括用于数据存储***的多个I/O未决执行的一个或多个队列。在一些方面中,管理器502可以包括缓冲器组件,其本身用于管理一个或多个队列,或者在其他方面,管理器502利用未决的I/O来管理位于外部的缓冲器。
分配器504被配置为将优先级分配给新I/O。这些I/O可能来自客户端/应用,或者它们可能来自数据存储***本身,例如为用于压缩所需的读取和/或写入的形式。
修改器506被配置为基于其被分配的优先级来修改一个或多个队列以添加一个或多个新I/O。因此,修改器506可以例如被配置为从对应于新I/O的优先级的一个或多个队列中选择队列,并且修改队列以添加新I/O。
执行器508被配置为在由修改器506修改的一个或多个队列上执行未决I/O。以此方式,较高优先级I/O可具有在较低优先级I/O上执行的较高可能性。
图6示出了根据一些方面的通信***600的示意图。可以意识到的是,图6在本质上是示例性的,并且因此为了本公开的目的可以被简化。
应用602通过网络向KV***提交以下命令中的任何一个:包括键(K)和对应值(V)的Put命令,包括K的Get命令或者包括K的删除(Delete)命令。KV***604(通过控制器206)被配置为接收这些客户端命令(本文,“客户端命令”广泛地指从客户端、应用等接收的任何命令)并且利用优先级分配器614将优先级分配给各个命令中的每个命令。优先级分配器614被配置为识别相应的客户端命令是读取还是写入。为了将命令标识为获取或放置,***可以经由应用编程接口(API)调用来识别命令的操作码或检测操作码。例如,如果客户端命令被标识为Get,则它被分配优先级1(作为默认表1的第1行的客户端Get命令),并且如果客户端被标识为Put,则它被分配优先级为2作为写入(作为默认表1的第2行的客户端Put命令)。因此,优先级分配器614可以被配置为识别客户端命令以便确定将分配哪个优先级给它们。虽然未在图6中明确示出,但是在一些方面中,在KV***604中可以存在额外的优先级分配器,其被配置为在将其添加到一个或多个处理队列之前向后台I/O分配优先级。
例如,应用602可以请求Get(员工X标识);(注意:“逻辑块寻址范围(LBA范围)”可以映射到KV存储中的键)。在这种情况下,员工X标识是存储在存储***606中的键,其具有用于员工X标识的对应值。KV***604(例如可以是多个众所周知的KV***中的任何一个)然后将该Get请求分配为例如Read(扇区1234,优先级1),其中扇区号(1234)对应于员工X标识所在的并且根据表1的默认优先级其优先级为1的存储***位置。
在展示本公开的方法和算法的益处的示例性场景中,首先呈现基准情景。在基准情景中,KV***可能有20个未决后台写入和30个未决后台读取,这些已被发布到SSD(即存储***)。KV***然后可以从应用(或客户端)接收新的Get命令。KV***将其转换为读取命令到磁盘,并发出命令。仅在处理之前正在进行的50个未决后台写入和读取操作(20个写入+30个读取)之后,SSD才可以提供与应用的Get命令对应的读取的数据。如果每次读取需要100μs,并且每次写入平均需要1ms,那么应用的Get命令将不得不等待大约100μs*30+1ms*20或大约23ms。
然而,通过实现本公开的方法和算法,设备能够显著在这个时间上得到改进,并因此改善突发读取性能和QoS。考虑到上述基准示例的相同场景(即,20个未决后台写入和30个未决后台读取以及接收应用Get命令),KV***将应用Get命令转换为读取命令到磁盘,并将其发布为优先级1,从而在未决后台操作(已经被分配了较低的优先级,例如按照表1)之前将其移动到未决处理线的头部,并且可以在100μs中提供数据,这是响应时间的改进,比基准场景高出230倍。
图7示出了根据一些方面的控制器206的内部配置的另一示意图。如图7所示,控制器206可以包括处理器702和存储器704。处理器702可以是单个处理器或多个处理器,并且可以被配置为检索和执行程序代码以执行如本文所述的发送和接收、信道资源分配和集群管理。处理器602可以通过作为无线信号物理发送的软件级连接或通过连接物理地发送和接收数据。存储器704可以是存储用于管理子例程704a、分配子例程704b和/或修改子例程704c中的一个或多个的指令的非暂时性计算机可读介质。
管理子例程704a、分配子例程704b和修改子例程704c可以相应是包括可执行指令的指令集,所述可执行指令在由处理器702检索和执行时执行如本文所述的控制器206的功能。具体而言,处理器702可以执行管理子例程704a以管理未决I/O的一个或多个队列;处理器702可以执行分配子例程704b以向一个或多个新I/O分配优先级;和/或处理器702可以执行修改子例程704c以基于其优先级来修改一个或多个队列以包括一个或多个新I/O。尽管在存储器704内单独地示出,但可以意识到的是,子例程704a-704c可以组合成表现出类似的总功能的单个子例程,例如,管理子例程704a和修改子例程704c可以一起合并成单个子例程,以用于管理/修改未决I/O的一个或多个队列。通过执行子例程704a-704c中的一个或多个,数据存储控制器可以改进用于数据存储的突发读取性能和QoS。
图8示出了本公开的一些方面中的流程图800。可以意识到的是,流程图800本质上是示例性的,并且因此为了解释的目的可以被简化。
存储***控制器可以被配置为在条件为在等待执行的一个或多个队列上存在未决I/O(例如,未决读取和/或写入)的情况下执行如流程图800中所描述的方法或其类似方法。
在802中,存储***接收新I/O(在一些方面,接收多个I/O并且每个根据本文描述的方法被处理)。该请求(或这些请求)可以来自应用/客户端,或者可以来自存储***本身以用于数据重新分配目的,例如,压缩。在804中,根据I/O优先级方案将优先级分配给一个或多个新I/O中的每一个。在806中,选择和修改来自一个或多个队列的队列以添加新I/O,其中队列的选择和新I/O在队列中的位置基于其被分配的优先级。在808中,未决I/O在经修改的一个或多个队列中执行。
可以意识到,本公开中所描述的优先化策略对其他硬件和/或标准特定方案的应用包括在本公开中。
在下文中,参照上述实施例提供各种示例。
在示例1中,一种数据存储布置,包括通信地耦合到一个或多个处理器的一个或多个存储介质,所述一个或多个存储介质被配置为使用键值(KV)***存储数据,所述一个或多个处理器被配置为管理一个或多个队列,所述一个或多个队列包括用于向所述一个或多个存储介质写入或从所述一个或多个存储介质读取的多个未决输入/输出(I/O),每个未决I/O根据I/O优先级方案的具有相应的优先级;接收新I/O;根据I/O优先级方案将优先级分配给新I/O;选择并修改一个或多个队列中的一个队列以添加新I/O,其中队列的选择和在队列中新I/O的位置基于其被分配的优先级;并执行如所修改的一个或多个队列的I/O。
在示例2中,示例1的主题可以包括一个或多个处理器被配置为将新I/O标识为前台I/O,新I/O包括客户端获取或放置命令。
在示例3中,示例1-2的主题可以包括一个或多个处理器被配置为将新I/O标识为后台I/O,所述后台I/O包括用于将预写日志(WAL)刷新到一个或多个存储介质的读取或写入或者用于将来自存储介质的多个级别中的一个级别的数据压缩到存储介质的多个级别中的另一级别的读取或写入。
在示例4中,示例1-3的主题可以包括一个或多个处理器被配置为将未决I/O中的每个标识为读取或写入。
在示例5中,示例1-4的主题可以包括:其中I/O优先级方案使得前台I/O优先于后台I/O,其中前台I/O包括分别处理客户端获取和放置命令所需的读取和/或写入,并且后台I/O包括用于将来自存储介质的多个级别中的一个级别的数据压缩到存储介质的多个级别中的另一级别的读取或写入。
在示例5中,示例5的主题可以包括其中后台I/O包括用于将预写日志(WAL)刷新到一个或多个存储介质的读取和/或写入。
在示例7中,示例1-6的主题可以包括其中I/O优先级方案使得读取优先于写入。
在示例8中,示例5-7的主题可以包括其中I/O优先级方案使得用于压缩来自存储介质的较高级别的数据的读取和/或写入优先于用于压缩来自存储介质的较低级别的读取和/或写入,其中较高级别的存储介质级别包括较新的写入。
在示例9中,示例1-8的主题可以包括其中最高级别是包括较新的写入的多个级别中的第一级别,并且多个级别中的每个后续级别包括比其先前级别的数据容量更大的数据容量。
在示例10中,示例1-9的主题可以包括一个或多个处理器被配置为将队列中的I/O的多个优先级映射到较少数量的选项。
在示例11中,示例10的主题可以包括一个或多个处理器还被配置为实现用于执行一个或多个队列的I/O的饥饿预防机制。
在示例12中,示例10-11的主题可以包括其中较小数量的选项中的每个的优先级表示指示多个I/O的每个I/O的优先级的次序。
在示例13中,示例10-12的主题可以包括一个或多个处理器被配置为基于可用数量的队列将一个或多个队列中的I/O的多个优先级映射到较少数量的选项。
在示例14中,示例10-13的主题可以包括一个或多个处理器被配置为应用加权循环(WRR)方案以用于映射到较少数量的选项。
在示例15中,示例1-14的主题可以包括一个或多个处理器被配置为定制特定于一个或多个存储介质硬件的优先级划分方案。
在示例16中,示例15的主题可以包括其中所述一个或多个存储介质硬件中的至少一个根据快速非易失性存储器(NVMe)协议进行操作。
在示例17中,示例1-16的主题可以包括其中一个或多个队列包括多个队列。
在示例18中,示例17的主题可以包括其中多个队列中的更多数量的队列被分配给较高优先级的I/O。
在示例19中,示例17-18的主题可以包括其中包括客户端获取或放置命令的前台I/O与包括后台读取或写入的后台I/O相比被分配了多个队列中的更多的队列。
在示例20中,数据存储控制器包括一个或多个处理器被配置为管理一个或多个队列,所述一个或多个队列包括用于向通信地耦合到数据存储控制器的数据存储布置(例如,一个或多个存储介质)写入或从数据存储布置读取的多个未决输入/输出(I/O),每个未决I/O根据I/O优先级方案具有相应的优先级;接收新I/O;根据I/O优先级方案将优先级分配给新I/O;选择并修改所述一个或多个队列中的一个队列以添加新I/O,其中,所述一个队列中的新I/O的位置基于其被分配的优先级;并执行如所修改的一个或多个队列的I/O。
在示例21中,示例20的主题可以包括一个或多个处理器被配置为将新I/O标识为前台I/O,新I/O包括客户端获取或放置命令。
在示例22中,示例20-21的主题可以包括一个或多个处理器被配置为将新I/O标识为后台I/O,后台I/O包括用于将预写日志(WAL)刷新到一个或多个存储介质的读取或写入或者用于将来自存储介质的多个级别中的一个级别的数据压缩到存储介质的多个级别中的另一级别的读取或写入。
在示例23中,示例20-22的主题可以包括一个或多个处理器被配置为将每个未决I/O标识为读取或写入。
在示例24中,示例20-23的主题可以包括:其中I/O优先级方案使得前台I/O优先于后台I/O,其中前台I/O包括分别处理客户端获取和放置命令所需的读取和/或写入,并且后台I/O包括用于将来自存储介质的多个级别中的一个级别的数据压缩到存储介质的多个级别中的另一级别的读取或写入。
在示例25中,示例24的主题可以包括:其中后台I/O包括用于将预写日志(WAL)刷新到一个或多个存储介质的读取和/或写入。
在示例26中,示例20-25的主题可以包括其中I/O优先级方案使得读取优先于写入。
在示例27中,示例24-26的主题可以包括其中I/O优先级方案使得用于压缩来自存储介质的较高级别的数据的读取和/或写入优先于用于压缩来自存储介质的较低级别的数据的读取和/或写入,其中较高级别包括较新的写入。
在示例28中,示例20-27的主题可以包括其中最高级别是包括更近期写入的一个或多个存储介质的多个级别中的第一级别,并且多个级别中的每个后续级别包括与其先前级别包括的数据容量相比更大的数据容量。
在示例29中,示例20-28的主题可以包括一个或多个处理器被配置为将一个或多个队列中的I/O的多个优先级映射到较少数量的选项。
在示例30中,示例29的主题可以包括一个或多个处理器还被配置为实现用于执行一个或多个队列的I/O的饥饿预防机制。
在示例31中,示例29-30的主题可以包括其中较小数量的选项中的每个的优先级表示指示多个I/O中的每个I/O的优先级的次序。
在示例32中,示例29-31的主题可以包括一个或多个处理器被配置为基于可用数量的队列将一个或多个队列中的I/O的多个优先级映射到较少数量的选项。
在示例33中,示例29-32的主题可以包括一个或多个处理器被配置为应用加权循环(WRR)方案以用于映射到较少数量的选项。
在示例34中,示例20-33的主题可以包括一个或多个处理器被配置为定制特定于一个或多个存储介质硬件的优先化方案。
在示例35中,示例34的主题可以包括其中所述一个或多个存储介质硬件中的至少一个根据快速非易失性存储器(NVMe)协议进行操作。
在示例36中,示例20-35的主题可以包括其中一个或多个队列包括多个队列。
在示例37中,示例36的主题可以包括其中多个队列中的更多数量的队列被分配给较高优先级的I/O。
在示例38中,示例37的主题可以包括其中包括客户端获取或放置命令的前台I/O与包括后台读取或写入的后台I/O相比被分配了多个队列中的更多的队列。
在示例39中,一种用于管理(例如读取和/或写入、存储)数据存储布置中的数据的方法,所述方法包括管理一个或多个队列,每个队列包括用于向所述数据存储布置(例如,一个或多个存储介质)写入数据或从所述数据存储布置读取数据的多个未决输入/输出(I/O),每个未决I/O根据I/O优先级方案具有相应的优先级;接收新I/O;根据I/O优先级方案将优先级分配给新I/O;从一个或多个队列中选择一个队列并修改该队列以添加新I/O,其中队列的选择和在队列中新I/O的位置基于其被分配的优先级;并执行如所修改的一个或多个队列的I/O。
在示例40中,示例39的主题可以包括将新I/O标识为前台I/O,新I/O包括客户端获取或放置命令。
在示例41中,示例39-40的主题可以包括将新I/O标识为后台I/O,后台I/O包括用于将预写日志(WAL)刷新到一个或多个存储介质的读取或写入或者用于将来自存储介质的多个级别中的一个级别的数据压缩到存储介质的多个级别中的另一级别的读取或写入。
在示例42中,示例39-41的主题可以包括将未决的I/O中的每个标识为读取或写入。
在示例43中,示例39-42的主题可以包括其中I/O优先级方案使得前台I/O优先于后台I/O,其中前台I/O包括分别处理客户端获取和放置命令所需的读取和/或写入,并且后台I/O包括用于将来自存储介质的多个级别中的一个级别的数据压缩到存储介质的多个级别中的另一级别的读取或写入。
在示例44中,示例43的主题可以包括其中后台I/O包括用于将预写日志(WAL)刷新到一个或多个存储介质的读取和/或写入。
在示例45中,示例39-44的主题可以包括其中I/O优先级方案使读取优先于写入。
在示例46中,示例43-45的主题可以包括其中I/O优先级方案使得用于压缩来自存储介质的较高级别的数据的读取和/或写入优先于用于压缩来自存储介质的较低级别的数据的读取和/或写入,其中较高级别级别包括较新的写入。
在示例47中,示例39-46的主题可以包括其中最高级别是包括更近期写入的多个级别中的第一级别,并且多个级别中的每个后续级别包括比其先前级别的数据容量更大的数据容量。
在示例48中,示例39-47的主题可以进一步包括将队列中I/O的多个优先级映射到较少数量的选项。
在示例49中,示例48的主题可以包括实现用于执行队列的I/O的饥饿预防机制。
在示例50中,示例48-49的主题可以包括其中较小数量的选项中的每个的优先级表示反映多个I/O的每个I/O的优先级的次序。
在示例51中,示例48-50的主题可以包括基于可用的队列数量将队列中的I/O的多个优先级映射到较小数量的选项。
在示例52中,示例48-51的主题可以包括应用加权循环(WRR)方案以用于映射到较少数量的选项。
在示例53中,示例39-52的主题可以包括定制特定于一个或多个存储介质硬件的优先级划分方案。
在示例54中,示例53的主题可以包括其中所述一个或多个存储介质硬件中的至少一个根据快速非易失性存储器(NVMe)协议进行操作。
在示例55中,示例39-54的主题可以包括其中一个或多个队列包括多个队列。
在示例56中,示例55的主题可以包括其中多个队列中的更多数量的队列被分配给较高优先级的I/O。
在示例57中,示例56的主题可以包括:其中包括客户端获取或放置命令的前台I/O与包括后台读取或写入的后台I/O相比被分配了多个队列中更多的队列。
在示例58中,其上存储有指令的一个或多个非暂时性计算机可读介质,所述指令当由至少一个处理器执行时指示至少一个处理器如任何上述示例中所述的执行方法或实现设备。
虽然以上描述和连接的附图可以将设备组件描绘为分离的元件,但是技术人员将会意识到将离散元件组合或集成为单个元件的各种可能性。这可以包括组合两个或更多个电路以形成单个电路,将两个或更多个电路安装到公共芯片或机箱上以形成集成元件,在公共处理器核心上执行离散软件组件等。相反,技术人员将认识到将单个元件分离成两个或更多个分立元件的可能性,例如将单个电路分成两个或更多个分离的电路,将芯片或机箱分离成最初提供在其上的分立元件,将软件组件分离成两个或更多个部分并在单独的处理器核心上执行每个部分,等等。
应该意识到,本文详述的方法/算法的实现本质上是示例性的,并且因此被理解为能够在对应的设备中实现。同样地,可以意识到的是,本文详述的设备的实现方式被理解为能够被实现为相对应的方法和/或算法。因此可以理解,与本文详述的方法相对应的设备可以包括被配置为执行相关方法的每个方面的一个或多个组件。
以上描述中定义的所有首字母缩写词还附加地在本文包括的所有权利要求中成立。
虽然已经参照具体方面具体示出和描述了本发明,但是本领域技术人员应该理解,可以在其中进行形式和细节上的各种改变而不脱离由所附权利要求限定的本发明的精神和范围。因此,本发明的范围由所附权利要求表示,并且因此旨在涵盖落入权利要求的等同物的含义和范围内的所有变化。
Claims (18)
1.一种用于管理键值(KV)数据存储布置中的数据的方法,所述方法包括:
管理一个或多个队列,每个队列包括用于向所述数据存储布置写入或从其中读取的多个未决输入/输出(I/O),每个未决I/O根据I/O优先级方案具有相应的优先级;
接收新I/O;
根据所述I/O优先级方案将优先级分配给所述新I/O;
从所述一个或多个队列中选择一个队列并且修改所述队列以添加所述新I/O,其中,所述队列的选择和在所述队列中所述新I/O的位置是基于其被分配的优先级的;以及
执行如所修改的所述一个或多个队列的I/O。
2.如权利要求1所述的方法,还包括将所述新I/O标识为前台I/O,所述新I/O包括客户端获取命令或放置命令。
3.如权利要求1所述的方法,还包括将所述新I/O标识为后台I/O,所述后台I/O包括用于将预写日志(WAL)刷新到所述数据存储布置的读取或写入,或者用于将来自所述数据存储布置的多个级别中的一个级别的数据压缩到所述数据存储布置的多个级别中的另一级别的读取或写入。
4.如权利要求1所述的方法,还包括将所述未决I/O中的每个标识为读取或写入。
5.如权利要求1所述的方法,其中,所述数据存储布置的最高级别是包括较新的写入的所述多个级别中的第一级别,并且所述多个级别中的每个后续级别包括与其先前级别包括的数据容量相比更大的数据容量。
6.如权利要求1-5中的任一项所述的方法,其中,所述I/O优先级方案使得前台I/O优先于后台I/O,其中,前台I/O包括分别处理客户端获取命令和放置命令所需的读取和/或写入,并且后台I/O包括用于将来自所述数据存储布置的多个级别中的一个级别的数据压缩到所述数据存储布置的多个级别中的另一级别的读取和/或写入。
7.如权利要求6所述的方法,其中,后台I/O包括用于将预写日志(WAL)刷新到所述数据存储布置的读取和/或写入。
8.如权利要求6所述的方法,其中,所述I/O优先级方案使得用于压缩来自所述数据存储布置的较高级别的数据的读取和/或写入优先于用于压缩来自所述数据存储布置的较低级别的数据的读取和/或写入,其中,较高级别包括较新的写入。
9.如权利要求1-5中的任一项所述的方法,还包括将所述队列中的所述I/O的多个优先级映射到较少数量的选项。
10.如权利要求9所述的方法,还包括基于可用数量的队列将所述队列中的所述I/O的所述多个优先级映射到所述较少数量的选项。
11.如权利要求9所述的方法,还包括应用加权循环(WRR)方案以用于映射到所述较少数量的选项。
12.如权利要求1-5中的任一项所述的方法,其中,所述一个或多个队列包括多个队列。
13.如权利要求12所述的方法,其中,所述多个队列中的更多数量的队列被分配给较高优先级的I/O。
14.一种数据存储控制器,其包括一个或多个处理器,所述一个或多个处理器被配置为:
管理一个或多个队列,所述一个或多个队列包括用于向通信地耦合到所述数据存储控制器的数据存储布置写入或从其中读取的多个未决输入/输出(I/O),每个未决I/O根据I/O优先级方案具有相应的优先级;
接收新I/O;
根据所述I/O优先级方案将优先级分配给所述新I/O;
选择并且修改所述一个或多个队列中的一个队列以添加所述新I/O,其中,所述队列的选择和在所述队列中所述新I/O的位置是基于其被分配的优先级的;以及
执行如所修改的所述一个或多个队列的I/O。
15.如权利要求14所述的数据存储控制器,所述一个或多个处理器被配置为将所述新I/O标识为前台I/O,所述新I/O包括客户端获取命令或放置命令。
16.如权利要求14所述的数据存储控制器,所述一个或多个处理器被配置为将所述新I/O标识为后台I/O,所述后台I/O包括用于将预写日志(WAL)刷新到所述数据存储布置的读取或写入、或者用于将来自所述数据存储布置的多个级别中的一个级别的数据压缩到所述数据存储布置的多个级别中的另一级别的读取或写入。
17.如权利要求14-16中的任一项所述的数据存储控制器,其中,所述I/O优先级方案使得前台I/O优先于后台I/O,其中,前台I/O包括分别处理客户端获取命令和放置命令所需的读取和/或写入,以及后台I/O包括用于将来自所述数据存储布置的多个级别中的一个级别的数据压缩到所述数据存储布置的多个级别中的另一级别的读取和/或写入。
18.一种包括代码的机器可读介质,所述代码当被执行时,使得机器执行如权利要求1-13中的任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/794,013 | 2017-10-26 | ||
US15/794,013 US20190129876A1 (en) | 2017-10-26 | 2017-10-26 | Devices and methods for data storage management |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109710175A true CN109710175A (zh) | 2019-05-03 |
Family
ID=63683627
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811122826.XA Pending CN109710175A (zh) | 2017-10-26 | 2018-09-26 | 用于数据存储管理的设备和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190129876A1 (zh) |
EP (1) | EP3477461A1 (zh) |
CN (1) | CN109710175A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110275681A (zh) * | 2019-06-27 | 2019-09-24 | 深圳前海微众银行股份有限公司 | 一种数据存储方法及数据存储*** |
CN110362275A (zh) * | 2019-07-10 | 2019-10-22 | 深圳大普微电子科技有限公司 | 提升固态硬盘服务质量的方法及固态硬盘 |
CN112087402A (zh) * | 2020-09-16 | 2020-12-15 | 盛科网络(苏州)有限公司 | 基于hash算法的队列分配方法及*** |
CN112698790A (zh) * | 2020-12-31 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种存储***中处理突发I/O的QoS控制方法及*** |
CN115840541A (zh) * | 2023-02-23 | 2023-03-24 | 成都体育学院 | 一种运动数据存储方法、***和介质 |
WO2024060709A1 (zh) * | 2022-09-24 | 2024-03-28 | 华为技术有限公司 | 一种数据访问方法、***以及节点 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11556391B2 (en) * | 2019-10-21 | 2023-01-17 | EMC IP Holding Company LLC | CPU utilization for service level I/O scheduling |
KR20210099291A (ko) * | 2020-02-04 | 2021-08-12 | 삼성전자주식회사 | 다중-호스트를 지원하도록 구성된 스토리지 장치 및 그것의 동작 방법 |
US11675539B2 (en) | 2021-06-03 | 2023-06-13 | International Business Machines Corporation | File system operations for a storage supporting a plurality of submission queues |
US11704071B1 (en) * | 2022-03-28 | 2023-07-18 | Lenovo Global Technology (United States) Inc. | Delegating low priority tasks to a passive storage controller |
US11853563B1 (en) * | 2022-06-17 | 2023-12-26 | Western Digital Technologies, Inc. | Key value data storage device with tiers |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173292B1 (en) * | 1998-03-04 | 2001-01-09 | International Business Machines Corporation | Data recovery in a transactional database using write-ahead logging and file caching |
JP3908482B2 (ja) * | 2001-06-22 | 2007-04-25 | 富士通株式会社 | 入出力制御装置及び入出力制御方法並びに情報記憶システム |
US7136883B2 (en) * | 2001-09-08 | 2006-11-14 | Siemens Medial Solutions Health Services Corporation | System for managing object storage and retrieval in partitioned storage media |
US20060080486A1 (en) * | 2004-10-07 | 2006-04-13 | International Business Machines Corporation | Method and apparatus for prioritizing requests for information in a network environment |
US8959263B2 (en) * | 2013-01-08 | 2015-02-17 | Apple Inc. | Maintaining I/O priority and I/O sorting |
US9021228B2 (en) * | 2013-02-01 | 2015-04-28 | International Business Machines Corporation | Managing out-of-order memory command execution from multiple queues while maintaining data coherency |
US9772959B2 (en) * | 2014-05-30 | 2017-09-26 | Apple Inc. | I/O scheduling |
US9792051B2 (en) * | 2016-02-24 | 2017-10-17 | Samsung Electronics Co., Ltd. | System and method of application aware efficient IO scheduler |
-
2017
- 2017-10-26 US US15/794,013 patent/US20190129876A1/en not_active Abandoned
-
2018
- 2018-09-05 EP EP18192837.5A patent/EP3477461A1/en not_active Withdrawn
- 2018-09-26 CN CN201811122826.XA patent/CN109710175A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110275681A (zh) * | 2019-06-27 | 2019-09-24 | 深圳前海微众银行股份有限公司 | 一种数据存储方法及数据存储*** |
CN110362275A (zh) * | 2019-07-10 | 2019-10-22 | 深圳大普微电子科技有限公司 | 提升固态硬盘服务质量的方法及固态硬盘 |
CN112087402A (zh) * | 2020-09-16 | 2020-12-15 | 盛科网络(苏州)有限公司 | 基于hash算法的队列分配方法及*** |
CN112698790A (zh) * | 2020-12-31 | 2021-04-23 | 浪潮云信息技术股份公司 | 一种存储***中处理突发I/O的QoS控制方法及*** |
WO2024060709A1 (zh) * | 2022-09-24 | 2024-03-28 | 华为技术有限公司 | 一种数据访问方法、***以及节点 |
CN115840541A (zh) * | 2023-02-23 | 2023-03-24 | 成都体育学院 | 一种运动数据存储方法、***和介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3477461A1 (en) | 2019-05-01 |
US20190129876A1 (en) | 2019-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109710175A (zh) | 用于数据存储管理的设备和方法 | |
TWI711930B (zh) | 具有嵌入於積體電路記憶體封裝中之控制器之記憶體系統 | |
US20230315342A1 (en) | Memory system and control method | |
JP7051546B2 (ja) | メモリシステムおよび制御方法 | |
US11687446B2 (en) | Namespace change propagation in non-volatile memory devices | |
US9836419B2 (en) | Efficient data movement within file system volumes | |
US11435900B2 (en) | Namespace size adjustment in non-volatile memory devices | |
TW202129501A (zh) | 記憶體系統 | |
TWI710912B (zh) | 記憶體系統及實施於記憶體系統中之方法,以及非暫時性電腦儲存媒體 | |
CN104765575B (zh) | 信息存储处理方法 | |
JP2017021805A (ja) | 不揮発性メモリ装置内でデータ属性基盤データ配置を利用可能にするインターフェイス提供方法及びコンピュータ装置 | |
KR20230039769A (ko) | 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법 | |
US20130159609A1 (en) | Processing unit reclaiming requests in a solid state memory device | |
US20190050255A1 (en) | Devices, systems, and methods for lockless distributed object input/output | |
JP2017016691A (ja) | テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法 | |
US11151052B2 (en) | Reading sequential data from memory using a pivot table | |
CN110059033A (zh) | 数据中心中的共享存储器控制器 | |
CN106990915A (zh) | 一种基于存储介质类型和加权配额的存储资源管理方法 | |
CN105320608A (zh) | 用于控制存储器设备处理访问请求的存储器控制器和方法 | |
JP2019133391A (ja) | メモリシステムおよび制御方法 | |
US20170123975A1 (en) | Centralized distributed systems and methods for managing operations | |
TW202219763A (zh) | 電腦實施系統、用於儲存元件的系統以及操作用於儲存元件的系統的方法 | |
KR20220063756A (ko) | 저장 장치 내의 호스트 인터페이스 계층 및 그에 의해 서브미션 큐들로부터의 요청들을 처리하는 방법 | |
JP2020123040A (ja) | メモリシステムおよび制御方法 | |
LU102091B1 (en) | Zone hints for zoned namespace storage devices |
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 |