CN109725829B - 用于数据存储系统的端到端QoS解决方案的系统和方法 - Google Patents
用于数据存储系统的端到端QoS解决方案的系统和方法 Download PDFInfo
- Publication number
- CN109725829B CN109725829B CN201711026814.2A CN201711026814A CN109725829B CN 109725829 B CN109725829 B CN 109725829B CN 201711026814 A CN201711026814 A CN 201711026814A CN 109725829 B CN109725829 B CN 109725829B
- Authority
- CN
- China
- Prior art keywords
- request
- priority
- host
- token
- storage
- 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/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/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
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (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
背景技术
通常,随着正在存储的信息量的增加,有效地存储和管理这些信息可能是有益的。虽然有很多技术可以用于存储和管理信息,但是每个技术都可能有可靠性与效率之间的折衷。
发明内容
在一个示例实施方式中,一种由一个或多个计算设备执行的方法可以包括但不限于通过计算设备接收I/O请求,其中I/O请求可以包括主机I/O优先级信息。至少部分基于主机I/O优先级信息,可以确定I/O请求与多个令牌桶中的一令牌桶相关联。如果多个令牌桶中的该令牌桶具有用于I/O请求的足够的令牌,则可以将I/O请求发送到块堆栈用于处理,并且如果多个令牌桶中的该令牌桶没有用于I/O请求的足够的令牌,则可以拒绝I/O请求。
可以包括以下示例特征中的一个或多个。优先级信息可以从主机侧被发送。优先级信息可以被封装成公共协议驱动结构。可以以不同的速率向多个令牌桶中的每个令牌桶添加令牌,其中不同的速率可以至少部分基于向多个令牌桶分配的相应优先级等级。将I/O请求向下发送到块堆栈用于处理可以包括将I/O请求放置到多个优先级队列中的一优先级队列中,其中该优先级队列可以基于I/O请求的主机I/O优先级信息而被加权。多个优先级队列可以在块堆栈的多核高速缓存部分中。可以发送I/O请求以用于放置到块堆栈的多核RAID部分中的第二多个优先级队列中的第二优先级队列中,其中第二优先级队列可以基于I/O请求的主机I/O优先级信息而被加权。
在另一示例实施方式中,一种计算系统可以包括一个或多个处理器和一个或多个存储器,其被配置为执行可以包括但不限于接收I/O请求的操作,其中I/O请求可以包括主机I/O优先级信息。至少部分基于主机I/O优先级信息,可以确定I/O请求与多个令牌桶中的一令牌桶相关联。如果多个令牌桶中的该令牌桶具有用于I/O请求的足够的令牌,则可以将I/O请求向下发送到块堆栈用于处理,并且如果多个令牌桶中的该令牌桶没有用于I/O请求的足够的令牌,则可以拒绝I/O请求。
可以包括以下示例特征中的一个或多个。优先级信息可以从主机侧被发送。优先级信息可以被封装成公共协议驱动结构。可以以不同的速率向多个令牌桶中的每个令牌桶添加令牌,其中不同的速率可以至少部分基于向多个令牌桶分配的相应优先级等级。将I/O请求向下发送到块堆栈用于处理可以包括将I/O请求放置到多个优先级队列中的一优先级队列中,其中该优先级队列可以基于I/O请求的主机I/O优先级信息而被加权。多个优先级队列可以在块堆栈的多核高速缓存部分中。可以发送I/O请求以用于放置到块堆栈的多核RAID部分中的第二多个优先级队列中的第二优先级队列中,其中第二优先级队列可以基于I/O请求的主机I/O优先级信息而被加权。
在另一示例实现中,一种计算机程序产品可以驻留在其上存储有多个指令的计算机可读存储介质上,这些指令当在一个或多个处理器上被执行时可以使得一个或多个处理器中的至少部分处理器执行可以包括但不限于接收I/O请求的操作,其中I/O请求可以包括主机I/O优先级信息。至少部分基于主机I/O优先级信息,可以确定I/O请求与多个令牌桶中的一令牌桶相关联。如果多个令牌桶中的该令牌桶具有用于I/O请求的足够的令牌,则可以将I/O请求向下发送到块堆栈用于处理,并且如果多个令牌桶中的该令牌桶没有用于I/O请求的足够的令牌,则可以拒绝I/O请求。
可以包括以下示例特征中的一个或多个。优先级信息可以从主机侧被发送。优先级信息可以被封装成公共协议驱动结构。可以以不同的速率向多个令牌桶中的每个令牌桶添加令牌,其中不同的速率可以至少部分基于向多个令牌桶分配的相应优先级等级。将I/O请求向下发送到块堆栈用于处理可以包括将I/O请求放置到多个优先级队列中的一优先级队列中,其中该优先级队列可以基于I/O请求的主机I/O优先级信息而被加权。多个优先级队列可以在块堆栈的多核高速缓存部分中。可以发送I/O请求以用于放置到块堆栈的多核RAID部分中的第二多个优先级队列中的第二优先级队列中,其中第二优先级队列可以基于I/O请求的主机I/O优先级信息而被加权。
在附图和下面的描述中阐述了一个或多个示例实施方式的细节。其他可能的示例特征和/或可能的示例优点将从说明书、附图和权利要求书变得明显。一些实施方式可能不具有那些可能的示例特征和/或可能的示例优点,并且这样的可能的示例特征和/或可能的示例优点可能不一定是一些实施方式所必需的。
附图说明
图1是根据本公开的一个或多个示例实施方式的耦合到示例性分布式计算网络的优先级过程的示例性示意图;
图2是根据本公开的一个或多个示例实施方式的图1的计算机的示例性示意图;
图3是根据本公开的一个或多个示例实施方式的图1的存储目标的示例性示意图;
图4是根据本公开的一个或多个示例实施方式的优先级过程的示例流程图;
图5是根据本公开的一个或多个示例实施方式的分层软件模块的示例的示例性示意图;
图6是根据本公开的一个或多个示例实施方式的主机侧优先级的示例性示意图;
图7是根据本公开的一个或多个示例实施方式的示例性多令牌桶框图的示例性示意图;
图8是根据本公开的一个或多个示例实施方式的用于优先级标记的I/O的MCx处理的示例性示意图;以及
图9是根据本公开的一个或多个示例实施方式的用于优先级标记的I/O的示例性MCC处理的示例性示意图。
各附图中相同的附图标记表示相同的元件。
具体实施方式
系统概述:
在一些实施方式中,本公开可以被实施为方法、系统或计算机程序产品。因此,在一些实施方式中,本公开可以采用完全硬件实现、完全软件实现(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实现的形式,其在本文中通常都可以称为“电路”、“模块”或“系统”。此外,在一些实施方式中,本公开可以采用其中实施有计算机可用程序代码的计算机可用存储介质上的计算机程序产品的形式。
在一些实施方式中,可以使用任何合适的计算机可用或计算机可读介质。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可用或计算机可读存储介质(包括与计算设备或客户端电子设备相关联的存储设备)可以是例如但不限于电子、磁性、光学、电磁、红外、或半导体系统、装置、设备或前述的任何合适的组合。计算机可读介质的更具体的示例(非详尽列表)可以包括以下:具有一条或多条线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、数字通用盘(DVD)、静态随机存取存储器(SRAM)、记忆棒、软盘、诸如在其上记录有指令的凹槽中的打孔卡或凸起结构等机械编码设备、诸如支持因特网或内联网的介质、或磁存储设备。注意,计算机可用或计算机可读介质甚至可以是在其上程序以适当的方式被存储、扫描、编译、解释、或根据需要以其他方式被处理并且然后存储在计算机存储器中的适当的介质。在本公开的上下文中,计算机可用或计算机可读的存储介质可以是可以包含或存储用于由或结合指令执行系统、装置或设备来使用的程序的任何有形介质。
在一些实施方式中,计算机可读信号介质可以包括其中实施有计算机可读程序代码的传播的数据信号,例如在基带中或作为载波的一部分。在一些实施方式中,这样的传播信号可以采用各种形式中的任何形式,包括但不限于电磁、光学或其任何合适的组合。在一些实施方式中,计算机可读程序代码可以使用任何适当的介质来传输,包括但不限于互联网、有线、光纤电缆、RF等。在一些实施方式中,计算机可读信号介质可以是任何如下的计算机可读介质,其不是计算机可读存储介质但是可以传送、传播或传输程序用于由或结合指令执行系统、装置或设备来使用。
在一些实施方式中,用于执行本公开的操作的计算机程序代码可以是汇编器指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的编程语言,诸如Smalltalk、C++等。以及所有基于Java的商标和标志是Oracle和/或其附属公司的商标或注册商标。然而,用于执行本公开的操作的计算机程序代码也可以以传统的程序编程语言(诸如“C”编程语言、PASCAL或类似的编程语言)以及以脚本语言(诸如Javascript、PERL或Python)来编写。程序代码可以完全在用户的计算机上执行,部分地在用户的计算机上,作为独立的软件包来执行,部分地在用户的计算机上并且部分地在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过局域网(LAN)或广域网(WAN)连接到用户的计算机,或者可以进行到外部计算机的连接(例如,通过互联网使用因特网服务提供商)。在一些实施方式中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或其他硬件加速器、微控制器单元(MCU)或可编程逻辑阵列(PLA))可以通过利用计算机可读程序指令的状态信息个性化电子电路来执行计算机可读程序指令/代码,以便执行本发明的各方面。
在一些实施方式中,附图中的流程图和框图示出了根据本公开的各种实施方式的装置(系统)、方法和计算机程序产品的可能实现的架构、功能和操作。流程图和/或框图中的每个框、以及流程图和/或框图中的框的组合可以表示代码的模块、分段或部分,其包括用于实现所规定的逻辑功能/动作的一个或多个可执行计算机程序指令。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得可以经由计算机或其他可编程数据处理装置的处理器执行的计算机程序指令创建实现在流程图和/或框图或其组合中规定的一个或多个功能/动作的能力。应当注意,在一些实施方式中,框中记载的功能可以不按照图中所示的顺序来发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者框有时可以以相反的顺序执行。
在一些实施方式中,这些计算机程序指令还可以存储在计算机可读存储器中,其可以引导计算机或其他可编程数据处理装置以特定方式工作,使得存储在计算机可读存储器中的指令产生包括实现在流程图和/或框图或其组合中规定的功能/动作的指令装置的制品。
在一些实施方式中,计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,以引起一系列操作步骤在计算机或其他可编程装置上被执行(不一定以特定顺序)以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现在流程图和/或框图或其组合中规定的功能/动作(不一定以特定顺序)的步骤。
现在参考图1的示例实施方式,示出了可以驻留在计算机(例如,计算机12)上并且可以由计算机执行的优先级过程10,计算机可以连接到网络(例如,网络14)(例如,互联网或局域网)。计算机12(和/或下面提到的一个或多个客户端电子设备)的示例可以包括但不限于存储系统(例如,网络附接存储(NAS)系统、存储区域网络(SAN))、个人计算机、膝上型计算机、移动计算设备、服务器计算机、一系列服务器计算机、大型计算机、或计算云。如本领域已知的,SAN可以包括一个或多个客户端电子设备,包括RAID设备和NAS系统。在一些实施方式中,上述中的每个可以一般地被描述为计算设备。在某些实施方式中,计算设备可以是物理或虚拟设备。在很多实施方式中,计算设备可以是能够执行操作的任何设备,诸如专用处理器、处理器的一部分、虚拟处理器、虚拟处理器的一部分、虚拟设备的一部分、或虚拟设备。在一些实施方式中,处理器可以是物理处理器或虚拟处理器。在一些实施方式中,虚拟处理器可以对应于一个或多个物理处理器的一个或多个部分。在一些实施方式中,指令/逻辑可以在一个或多个虚拟或物理的处理器上分布和执行,以执行指令/逻辑。计算机12可以执行操作系统,例如但不限于 RedMobile、Chrome OS、Blackberry OS、Fire OS或自定义操作系统。(Microsoft和Windows是Microsoft公司在美国、其他国家或两者的注册商标;Mac和OS X是Apple Inc.在美国、其他国家或两者的注册商标;Red Hat是Red Hat公司在美国、其他国家或两者的注册商标;Linux是Linus Torvalds在美国、其他国家或两者的注册商标)。
在一些实施方式中,如下面将更详细地讨论的,优先级过程(诸如图1的优先级过程10)可以通过计算设备接收I/O请求(例如,I/O15),其中I/O请求可以包括主机I/O优先级信息。至少部分基于主机I/O优先级信息,可以确定I/O请求与多个令牌桶中的一令牌桶相关联。如果多个令牌桶中的该令牌桶具有用于I/O请求的足够的令牌,则可以将I/O请求向下发送到块堆栈用于处理,并且如果多个令牌桶中的该令牌桶没有用于I/O请求的足够的令牌,则可以拒绝I/O请求。
在一些实施方式中,可以存储在耦合到计算机12的存储设备(诸如存储设备16)上的优先级过程10的指令集和子例程可以由包括在计算机12内的一个或多个处理器和一个或多个存储器架构来执行。在一些实施方式中,存储设备16可以包括但不限于:硬盘驱动器;所有形式的闪存存储设备;磁带驱动器;光驱;RAID阵列(或其他阵列);随机存取存储器(RAM);只读存储器(ROM);或其组合。在一些实施方式中,存储设备16可以被组织为区段(extent)、区段池、RAID区段(例如,示例4D+1P R5,其中RAID区段可以包括例如可以从例如五个不同的存储设备所分配的五个存储设备区段)、映射RAID(例如,RAID区段的集合)、或其组合。
在一些实施方式中,例如,网络14可以连接到一个或多个次级网络(例如,网络18),其示例可以包括但不限于:局域网;广域网;或内联网。
在一些实施方式中,计算机12可以包括数据存储,诸如数据库(例如,关系数据库、面向对象的数据库、三元组表存储数据库等),并且可以位于任何合适的存储器位置内,诸如耦合到计算机12的存储设备16。在一些实施方式中,贯穿本公开描述的数据、元数据、信息等可以存储在数据存储中。在一些实施方式中,计算机12可以使用任何已知的数据库管理系统,诸如但不限于DB2,以便提供对诸如上述关系数据库等一个或多个数据库的多用户访问。在一些实施方式中,数据存储也可以是自定义数据库,诸如平面文件数据库或XML数据库。在一些实施方式中,也可以使用数据存储结构和/或组织的任何其他形式。在一些实施方式中,优先级过程10可以是数据存储的部件、与上述数据存储接口的独立应用、和/或经由客户端应用22、24、26、28而被访问的小程序/应用。在一些实施方式中,上述数据存储可以全部或部分地分布在云计算拓扑中。以这种方式,计算机12和存储设备16可以指代也可以分布在整个网络中的多个设备。可以与本公开一起使用的示例云计算环境可以包括但不限于例如来自马萨诸塞州霍普金顿的Dell EMCTM的弹性云存储(ECSTM)。在一些实施方式中,在不脱离本公开的范围的情况下,可以使用其他云计算环境。
在一些实施方式中,计算机12可以执行存储管理应用(例如,存储管理应用21),其示例可以包括但不限于例如存储系统应用、云计算应用、数据同步应用、数据迁移应用、垃圾回收应用、或者允许在集群(或非集群)环境(或类似)中实现和/或管理数据的其他应用。在一些实施方式中,优先级过程10和/或存储管理应用21可以经由客户端应用22、24、26、28中的一个或多个来访问。在一些实施方式中,优先级过程10可以是独立应用,或者可以是可以与存储管理应用21、存储管理应用21的部件、和/或客户端应用22、24、26、28中的一个或多个交互、和/或在其内执行的小应用/应用/脚本/扩展。在一些实施方式中,存储管理应用21可以是独立的应用程序,或者可以是可以与优先级过程10、优先级过程10的部件、和/或客户端应用22、24、26、28中的一个或多个交互、和/或在其内执行的小应用/应用/脚本/扩展。在一些实施方式中,客户端应用22、24、26、28中的一个或多个可以是独立应用,或者可以是可以与优先级过程10和/或存储管理应用21的部件交互、和/或在其内执行、和/或作为其的小应用/应用/脚本/扩展。客户端应用22、24、26、28的示例可以包括但不限于例如存储系统应用、云计算应用、数据同步应用、数据迁移应用、垃圾收集应用、或者允许在集群(或非群集)环境(或类似)中实现和/或管理数据的其他应用、标准和/或移动网络浏览器、电子邮件应用(例如,电子邮件客户端应用)、文本和/或图形用户界面、定制网络浏览器、插件、应用编程接口(API)、或定制应用。可以存储在耦合到客户端电子设备38、40、42、44的存储设备30、32、34、36上的客户端应用22、24、26、28的指令集和子例程可以由被并入到客户端电子设备38、40、42、44中的一个或多个处理器和一个或多个存储器架构来执行。
在一些实施方式中,存储设备30、32、34、36中的一个或多个可以包括但不限于:硬盘驱动器;闪存驱动器,磁带驱动器;光驱;RAID阵列、随机存取存储器(RAM);和只读存储器(ROM)。客户端电子设备38、40、42、44(和/或计算机12)的示例可以包括但不限于个人计算机(例如,客户端电子设备38)、膝上型计算机(例如,客户端电子设备40)、智能/数据启用的蜂窝电话(例如,客户端电子设备42)、笔记本计算机(例如,客户端电子设备44)、平板电脑、服务器、电视、智能电视、媒体(例如,视频、照片等)捕获设备、和专用网络设备。客户端电子设备38、40、42、44每个可以执行操作系统,其示例可以包括但不限于AndroidTM、OSMobile、Chrome OS、Blackberry OS、Fire OS、或自定义操作系统。
在一些实施方式中,客户端应用22、24、26、28中的一个或多个可以被配置为实现优先级过程10的一些或全部功能(反之亦然)。因此,在一些实施方式中,优先级过程10可以是由客户端应用22、24、26、28中的一个或多个和/或优先级过程10协作执行的纯服务器侧应用、纯客户端侧应用、或混合的服务器侧/客户端侧应用。
在一些实施方式中,客户端应用22、24、26、28中的一个或多个可以被配置为实现存储管理应用21的一些或全部功能(反之亦然)。因此,在一些实施方式中,存储管理应用21可以是由客户端应用22、24、26、28和/或存储管理应用21中的一个或多个协作执行的纯服务器侧应用、纯客户端侧应用、或混合的服务器侧/客户端侧应用。虽然客户端应用22、24、26、28中的一个或多个、优先级过程10和存储管理应用21单独地或以任何组合可以实现上述功能中的一些或全部,但是经由客户端应用22、24、26、28中的一个或多个、优先级过程10、存储管理应用21、或其组合来实现这样的功能的任何描述、以及用于执行这样的功能的客户端应用22、24、26、28中的一个或多个、优先级过程10、存储管理应用21、或其组合之间的任何描述的交互应当仅作为示例,而不是限制本公开的范围。
在一些实施方式中,用户46、48、50、52中的一个或多个可以通过网络14或者通过次级网络18直接访问计算机12和优先级过程10(例如,使用客户端电子设备38、40、42、44中的一个或多个)。此外,计算机12可以通过次级网络18连接到网络14,如幻象(phantom)链路线路54所示。优先级过程10可以包括一个或多个用户界面,诸如浏览器和文本或图形用户界面,用户46、48、50、52可以通过其来访问优先级过程10。
在一些实施方式中,各种客户端电子设备可以直接或间接地耦合到网络14(或网络18)。例如,客户端电子设备38被示出为经由硬连线网络连接直接耦合到网络14。此外,客户端电子设备44被示出为经由硬连线网络连接直接耦合到网络18。客户端电子设备40被示出经由无线通信信道56无线地耦合到网络14,无线通信信道56建立在客户端电子设备40与被示出为直接耦合到网络14的无线接入点(即,WAP)58之间。WAP 58可以是例如能够在客户端电子设备40与WAP 58之间建立无线通信信道56的IEEE 802.11a、802.11b、802.11g、802.11n、802.11ac、RFID、和/或BluetoothTM(包括低功耗BluetoothTM)设备。客户端电子设备42被示出为经由无线通信信道60无线地耦合到网络14,无线通信信道60建立在客户端电子设备42与被示出为例如直接耦合到网络14的蜂窝网络/网桥62之间。
在一些实施方式中,IEEE 802.11x规范中的一些或全部可以使用以太网协议和具有冲突避免的载波侦听多路访问(即,CSMA/CA)以用于路径共享。各种802.11x规范可以使用例如相移键控(即PSK)调制或互补码键控(即CCK)调制。BluetoothTM(包括低功耗BluetoothTM)是使得例如移动电话、计算机、智能电话和其他电子设备能够使用短距离无线连接而互连的电信行业规范。也可以使用其他形式的互连(例如,近场通信(NFC))。
在一些实施方式中,各种I/O请求(例如,I/O请求15)可以从例如客户端应用22、24、26、28发送到例如计算机12。I/O请求15的示例可以包括但不限于数据写请求(例如,将内容写入计算机12的请求)和数据读请求(例如,从计算机12读取内容的请求)。
数据存储系统:
还参考图2-3的示例实施方式(例如,其中计算机12可以被配置为数据存储系统,诸如但不限于来自Dell EMCTM的VNX存储系统),计算机12可以包括存储处理器100和多个存储目标(例如,存储目标102、104、106、108、110)。在一些实施方式中,存储目标102、104、106、108、110可以包括任何上述存储设备。在一些实施方式中,存储目标102、104、106、108、110可以被配置为提供各种级别的性能和/或高可用性。例如,存储目标102、104、106、108、110可以被配置为形成非完全重复的容错数据存储系统(诸如非完全重复的RAID数据存储系统),其示例可以包括但不限于:RAID 3阵列、RAID4阵列、RAID 5阵列和/或RAID 6阵列。应当理解,在不脱离本公开的范围的情况下,可以使用各种其他类型的RAID阵列。
虽然在该特定示例中,计算机12被示出为包括五个存储目标(例如,存储目标102、104、106、108、110),但是这仅是示例目的,并不意图限制本公开。例如,存储目标的实际数目可以根据例如所需要的冗余/性能/容量等级而增加或减少。
此外,与计算机12一起被包括的存储目标(例如,存储目标102、104、106、108、110)可以被配置为形成多个离散存储阵列。例如,并且仅用于示例目的,假定计算机12包括例如十个离散的存储目标,(十个存储目标中的)前五个目标可以被配置成形成第一RAID阵列并且(十个存储目标中的)第二个五个目标可以被配置为形成第二RAID阵列。
在一些实施方式中,存储目标102、104、106、108、110中的一个或多个可以被配置为存储经编码的数据(例如,经由存储管理应用21),其中这样的编码数据可以实现在存储目标102、104、106、108、110中的一个或多个上的丢失/损坏的数据的再生。这样的编码数据的示例可以包括但不限于奇偶校验数据和Reed-Solomon数据。这样的编码数据可以跨所有存储目标102、104、106、108、110分布,或者可以存储在特定的存储目标中。
存储目标102、104、106、108、110的示例可以包括一个或多个数据阵列,其中存储目标102、104、106、108、110的组合(以及与存储管理应用21相关联的任何处理/控制系统)可以形成数据阵列112。
计算机12的实现方式可以根据例如所需要的冗余/性能/容量等级而变化。例如,计算机12可以被配置为SAN(即,存储区域网络),其中存储处理器100可以是例如专用计算系统并且存储目标102、104、106、108、110中的每个均可以是RAID设备。
在其中计算机12被配置为SAN的示例中,计算机12的各种部件(例如,存储处理器100和存储目标102、104、106、108、110)可以使用网络基础设施114来耦合,网络基础设施114的示例可以包括但不限于以太网(例如,层2或层3)网络、光纤通道网络、无限带宽技术网络、或任何其他电路交换/分组交换网络。
如上所述,可以生成各种I/O请求(例如,I/O请求15)。例如,这些I/O请求可以从例如客户端应用22、24、26、28发送到例如计算机12。另外地/替代地(例如,当存储处理器100被配置为应用服务器等时),这些I/O请求可以在存储处理器100内在内部生成(例如,经由存储管理应用21)。I/O请求15的示例可以包括但不限于数据写请求116(例如,将内容118写入计算机12的请求)和数据读请求120(例如,从计算机12读取内容118的请求)。
在一些实施方式中,在存储处理器100的操作期间,要写入计算机12的内容118可以由存储处理器100接收和/或处理(例如,经由存储管理应用21)。另外地/替代地(例如,当存储处理器100被配置为应用服务器等时),要写入计算机12的内容118可以由存储处理器100在内部生成(例如,经由存储管理应用21)。
如上所述,可以存储在被包括在计算机12内的存储设备16上的存储管理应用21的指令集和子例程可以由与计算机12一起被包括的一个或多个处理器和一个或多个存储器架构来执行。因此,除了在存储处理器100上执行之外,存储管理应用21(和/或优先级过程10)的指令集和子例程中的一些或全部可以由与数据阵列112一起被包括的一个或多个处理器执行和一个或多个存储器架构来执行。
在一些实施方式中,存储处理器100可以包括前端高速缓存存储器系统122。前端高速缓存存储器系统122的示例可以包括但不限于易失性固态高速缓存存储器系统(例如,动态RAM高速缓存存储器系统)、非易失性固态高速缓存存储器系统(例如,基于闪存的高速缓存存储器系统)、和/或任何上述存储设备。
在一些实施方式中,存储处理器100最初可以将内容118存储在前端高速缓存存储器系统122内。取决于前端高速缓存存储器系统122被配置的方式,存储处理器100(例如,经由存储管理应用21)可以立即将内容118写入数据阵列112(例如,如果前端高速缓存存储器系统122被配置为直写高速缓存),或者可以随后将内容118写入数据阵列112(例如,如果前端高速缓存存储器系统122被配置为回写高速缓存)。
在一些实施方式中,存储目标102、104、106、108、110中的一个或多个可以包括后端高速缓存存储器系统。后端高速缓存存储器系统的示例可以包括但不限于易失性固态高速缓存存储器系统(例如,动态RAM高速缓存存储器系统)、非易失性固态高速缓存存储器系统(例如,基于闪存的高速缓存存储器系统)、和/或任何上述存储设备。存储目标:
如上所述,存储目标102、104、106、108、110中的一个或多个可以是RAID设备。例如,还参考图3,示出了示例目标150,其中目标150可以是例如存储目标102、存储目标104、存储目标106、存储目标108、和/或存储目标110的RAID实现的一个示例实现。存储设备154、156、158、160、162的示例可以包括一个或多个电机硬盘驱动器、一个或多个固态/闪存设备、和/或任何上述存储设备。应当理解,虽然可能通篇使用术语“盘”或“驱动器”,但是这些可以指代任何类型的适当的存储设备并且可与其互换地使用,因为存储设备的上下文和功能允许。
在一些实施方式中,目标150可以包括存储处理器152和多个存储设备(例如,存储设备154、156、158、160、162)。存储设备154、156、158、160、162可以被配置为提供各种级别的性能和/或高可用性(例如,经由存储管理应用21)。例如,存储设备154、156、158、160、162(或任何上述存储设备)中的一个或多个可以被配置为RAID0阵列,其中数据跨存储设备被条带化。通过跨多个存储设备对数据进行条带化,可以实现改进的性能。但是,RAID 0阵列可能无法提供高可用性级别。因此,存储设备154、156、158、160、162(或任何上述存储设备)中的一个或多个可以被配置为RAID 1阵列,其中数据在存储设备之间被镜像。通过在存储设备之间对数据进行镜像,可以实现高可用性级别,因为数据的多个副本可以存储在存储设备154、156、158、160、162内。
尽管上面讨论了存储设备154、156、158、160、162被配置为RAID 0或RAID 1阵列,但是这仅是示例目的,而非旨在限制本公开,因为其他配置是可能的。例如,存储设备154、156、158、160、162可以被配置为RAID 3、RAID 4、RAID 5或RAID 6阵列。
虽然在该特定示例中,目标150被示出为包括五个存储设备(例如,存储设备154、156、158、160、162),但是这仅是示例目的,而非旨在限制本公开。例如,可以取决于例如所需要的冗余/性能/容量等级来增加或减少存储设备的实际数目。
在一些实施方式中,存储设备154、156、158、160、162中的一个或多个可以被配置为存储(例如,经由存储管理应用21)经编码的数据,其中这样的编码数据可以实现在存储设备154、156、158、160、162中的一个或多个上的丢失/损坏的数据的再生。这样的编码数据的示例可以包括但不限于奇偶校验数据和Reed-Solomon数据。这样的编码数据可以跨所有存储设备154、156、158、160、162分布,或者可以存储在特定的存储设备中。
目标150被实现的方式可以取决于例如所需要的冗余/性能/容量等级而变化。例如,目标150可以是RAID设备,其中存储处理器152是RAID控制器卡并且存储设备154、156、158、160、162是单独的“可热插拔的”硬盘驱动器。目标150的另一示例可以是RAID系统,其示例可以包括但不限于NAS(即,网络附接存储)设备或SAN(即,存储区域网络)。
在一些实施方式中,存储目标150可以执行存储管理应用21的全部或部分。可以存储在耦合到存储处理器152的存储设备(例如,存储设备164)上的存储管理应用21的指令集和子例程可以由与存储处理器152一起被包括的一个或多个处理器和一个或多个存储器架构来执行。存储设备164可以包括但不限于任何上述存储设备。
如上所述,计算机12可以被配置为SAN,其中存储处理器100可以是专用计算系统并且存储目标102、104、106、108、110中的每个可以是RAID设备。因此,当存储处理器100处理数据请求116、120时,存储处理器100(例如,经由存储管理应用21)可以将适当的请求/内容(例如,写请求166、内容168和读请求170)提供给例如存储目标150(其代表存储目标102、104、106、108和/或110)。
在一些实施方式中,在存储处理器152的操作期间,要写入目标150的内容168可以由存储处理器152来处理(例如,经由存储管理应用21)。存储处理器152可以包括高速缓存存储器系统172。高速缓存存储器系统172的示例可以包括但不限于易失性固态高速缓存存储器系统(例如,动态RAM高速缓存存储器系统)和/或非易失性固态高速缓存存储器系统(例如,基于闪存的高速缓存存储器系统)。在存储处理器152的操作期间,要写入目标150的内容168可以由存储处理器152来接收(例如,经由存储管理应用21)并且最初存储在前端高速缓存存储器系统172中(例如,经由存储管理应用21)。
通常,服务质量(QoS)可以是服务的整体性能的描述或测量,特别是用户所看到的性能。另一方面,对于企业存储,QoS是系统每秒I/O(IOPS)、吞吐量、I/O响应时间和其他特性可以提前得到测量、改进和保证的想法。
对于一些存储系统,可以使用QoS来提供对工作负荷的控制以有效地管理其对其他存储系统的影响。例如,一些存储系统可以限制可以由存储阵列来服务的主机块I/O的数目。作为几个非限制性示例,服务提供商可能想要根据客户具有的订阅来设置最大服务级别,或者存储管理员可能想要控制要处理的来自非基本工作负荷的I/O请求的数量,从而它们不会占用有价值的存储资源并且影响关键工作负荷。通常,I/O限制可以使用例如IOPS、每秒千字节(KBPS)、IOPS和KBPS(以先到者为准)来定义。
通常,可以将I/O限制(例如,经由存储管理应用21)应用于单个LUN或一组LUN。当应用于一组LUN时,并且当不共享限制时,可以对该组中的每个LUN应用相同的限制。当共享限制时,来自组中所有LUN的组合活动可以受到限制。一旦达到限定的限制,I/O可以被延迟(例如,排队)。如果主机服务器设置了其未完成的I/O,这可能会减慢其I/O处理。控制可以被实现(例如,经由存储管理应用21)为块协议栈下的驱动程序(主机侧)。没有限制的I/O请求可以照常处理。具有限制的I/O请求可以由存储管理应用21分类为其相应的控制对象(例如,桶),其在进一步处理之前对照其相应的限制被验证。
一些QoS层可以仅考虑基于与用户限定的策略相关联的容量(例如,LUN空间)来限制IOPS的策略,其中该策略的主要目的可以是限制LUN的突发(例如,速率和时间)。通常,基于I/O的质量不是目标。
通常,多核高速缓存MCC(例如,DRAM缓存)和多核RAID MCR可以由模块(例如,MCx)终止。MCx模块可以是I/O的终结器,并且MCx模块可以包括MCC和MCR。一般而言,对于MCC,MCx软件部件(通过存储管理应用21)可以优化存储处理器的DRAM以增加主机写入和读取性能。被设计为跨多个CPU内核有效地缩放,MCC可以将所有其他MCx部件捆绑在一起,并且为所有相关联的软件层提供写高速缓存。
通常,对于MCR,MCx部件可以为任何创建的存储池定义、管理、创建和维护RAID保护,并且可以被设计为跨多个CPU内核有效地缩放,其中MCR操作不需要与单个内核隔离。
对于一些存储系统,优先级标记的I/O可以由MCC和MCR来服务。通常,仅来自存储前端的写I/O将根据后端状态被分类为低优先级和高优先级两个级别,并且所有的读I/O都被作为高优先级来服务。I/O请求(IRP)可以用MCC内的优先级标志来标记,并且可以被传输到MCR,其中MCR可以根据优先级标记来服务于I/O请求,以实现差异化的服务质量。
通常,已知的存储系统可能不支持端到端优先级分类机制(例如,QoS模块和MCx标记的I/O机制通常不能实现应用级敏感的服务质量保证)。例如,已知的QoS模块可能只支持与基于LUN的令牌桶算法相关联的I/O限制,其中模块的主要目的是“流量整形”,从而限制LUN的突发,吞吐量和时间响应保证不需要被仔细考虑。如果这些是仅有的保证,则可能无法满足时间关键的应用级别的粒度。
MCx标记的I/O机制可以简单地支持一些特殊条件,并且可以仅可用于写I/O。另外,通常从后端条件在MCx内部判断I/O优先级,其可能不反映实际的前端主机优先级要求,即使可以在一定程度上实现QoS,因为可以在MCx内实现节流算法。因此,已知的QoS通常基于LUN,其通常可能不能实现基于I/O的粒度。更具体地,目前的QoS解决方案通常通过测量的内部参数在分层驱动内单独实现,这可能导致无法从应用客户端直接获得QoS要求,因此QoS只是间接的。
如将在下面更详细地讨论的,优先级过程10可以通过分层数据路径软件栈来实现新的端到端QoS解决方案。因此,至少例如通过使用具有优先级信息的SCSI协议栈来确保服务质量的基于I/O的粒度,并且通过提供多重优先级分类算法来使得时间敏感和任务关键型应用能够具有它们需要的资源,与此同时允许其他应用获得响应,优先级过程10可以具有实现更好的QoS以保证任务关键型应用的吞吐量的优点,使得可以在可接受的时间量内处理它们的事务,从而改善整体用户体验。
如下面将要讨论的,优先级过程10可以至少帮助例如改进现有的存储技术,这种存储技术必须植根于计算机技术中,以便克服在数据存储领域中具体存在的示例和非限制性问题。例如,优先级过程10可以使用有效的过程来提高QoS。
优先级过程:
如上所述并且还至少参考图4-9所的示例实施方式,优先级过程10可以通过计算设备接收400I/O请求,其中I/O请求可以包括主机I/O优先级信息。至少部分基于主机I/O优先级信息,优先级过程10可以确定402I/O请求与多个令牌桶中的一令牌桶相关联。如果多个令牌桶中的该令牌桶具有用于I/O请求的足够的令牌,则优先级过程10可以将I/O请求向下发送404到块堆栈用于处理,并且如果多个令牌桶中的该令牌桶没有用于I/O请求的足够的令牌,则优先级过程10可以拒绝406I/O请求。
虽然本公开可以使用基于VNX的存储系统来描述,但是应当理解,在不脱离本公开的范围的情况下,可以使用其他类型的存储系统。因此,所描述的特定存储系统应当仅作为示例,而不以其他方式限制本公开的范围。
在一些实施方式中,并且至少参考图5的示例实施方式,示出了分层软件模块500的示例。在该示例中,“端到端”QoS实现可以涉及例如主机(例如,应用客户端)、微型端口、主机侧(TCD和TDD)、多优先级QoS模块和MCx部件。如下所述,主机侧、微型端口、主机侧、QoS、MCC和MCR可以是改进的QoS解决方案中涉及的主要(但不仅是)参与者。
在一些实施方式中,优先级过程10可以通过计算设备接收400I/O请求,其中I/O请求可以包括主机I/O优先级信息。例如,仅用于示例目的,假定客户端发送访问数据的I/O请求。在该示例中,优先级过程10可以接收400I/O请求,I/O请求可以包括主机I/O优先级信息。例如,优先级过程10可以改变通信标准协议(例如,SAM-3)以适应对任务属性字段的扩展从而允许不同的优先级。例如,仅用于示例目的,假定应用客户端通过调用例如SCSI传输协议服务来请求对例如SCSI命令的处理,其协作操作可以在以下过程调用中在概念上被建模:
Service Response=Execute Command(IN(I_T_L_Q Nexus,CDB,TaskAttribute,[Data-In Buffer Size],[Data-Out Buffer],[Data-Out Buffer Size],[Command Reference Number],[Priority]),OUT([Data-In Buffer],[Sense Data],[Sense Data Length],Status))
在一些实施方式中,优先级标记可以是被分配给任务的附加标志。优先级过程10可以设置除了零以外的优先级值,其指定任务的相对调度重要性。例如,优先级0x1h可以是最高优先级,其中优先级值越高表示调度重要性越低(反之亦然)。优先级字段的大小可以是例如4比特,并且优先级可以包含例如从0x1h到0xFh的15个等级。应当理解,可以使用更多或更少的优先级等级。
在一些实施方式中,如果优先级被设置为零或者没有被包含在SCSI传输协议服务指示内,则可以将优先级代码分配给I_T_L关系(nexus),I_T_L关系可以由任务管理器(经由优先级过程10)使用以确定除其供应商特定的排序规则之外还用于处理任务的顺序。
在一些实施方式中,可以在应用客户端发起基于IO的QoS基础时引入SCSI传输协议服务中的优先级标记。应用客户端可以意识到任务关键型I/O,其可以根据任务的紧急性以不同的优先级来标记I/O,并且最终应用可以实现I/O级别的优先级粒度。为了实现该功能,应用客户端启动器驱动可以支持每命令优先级标记标准(或类似的标准)。
在一些实施方式中,关于标记的SCSI命令的主机侧处理,单独的驱动程序(经由优先级过程10)可以实现I/O处理的每个逻辑上不同的层(如图5所示)。例如,最底层中的驱动程序可以操纵物理设备(例如,RAID组或后端驱动器)。然后可以将其他驱动程序分层在设备驱动程序之上。这些较高级别的驱动程序可能不知道有关物理设备的任何细节。通过I/O管理器的帮助,较高级别的驱动程序(经由优先级过程10)可以简单地将逻辑I/O请求向下传递到设备驱动程序,其可以代表它们来实现访问物理设备。为了将优先级信息传递给较低层,优先级过程10可以使用I/O请求来处理它。主机侧(经由优先级过程10)可以将标记的SCSI命令处理为具有优先级信息的I/O请求。主机可以包括远程客户端,远程客户端可以例如通过用于FC的以太网发起到存储系统的写/读I/O。主机侧(经由优先级过程10)可以是分层软件模块之一,其可以直接接收/处理来自主机的I/O请求,并且从CDB中提取信息,其中它可以被封装成IRP格式(下面更详细地讨论)。
在一些实施方式中,主机侧(经由优先级过程10)可以是能够用于与前端(例如,双模式iSCSI和FC)驱动程序通信的部件之一。双模式通常可以是指这些驱动程序可以(经由优先级过程10)启动I/O并且服务于到逻辑单元(LU)的目标I/O的这一事实。主机侧部件(经由优先级过程10)可以处理SCSI语义,并且可以将读缓冲器/写缓冲器SCSI请求向下传递到I/O堆栈作为IOCTL。
对于前端,存储系统可以呈现一组端口以使得主机能够访问阵列的存储特征。这些端口可以分为两大类(例如,以太网和光纤信道)。以太网端口可以用于文件和块服务两者,而光纤通道端口可以仅用于块服务。前端端口可以由被插入到存储处理器背面的SLIC来提供。用于这些端口的设备驱动程序可以在两个位置提供,诸如例如用于网络设备(也使用LINUX TCP/IP堆栈)的LINUX内核以及在用户空间数据路径容器中。
块服务可以部分地取决于同一组LINUX设备驱动程序和TCP/IP堆栈,但是可以使用不同的方法将数据从LINUX内核移动到数据路径容器(DPC)中用于处理。这可以主要用于iSCSI服务。光纤通道服务可以代表块服务世界的其他部分。用户空间容器(例如,SAFE)可以在其内部运行光纤通道设备驱动程序,使用助手(例如,CSX助手)内核中的容器来桥接内核与用户空间之间的划分。来自iSCSI和光纤通道驱动程序两者的请求可以进入TCD/TDD层(称为主机侧)用于SCSI命令处理。主机侧(经由优先级过程10)可以将传入的CDB请求转换为向下到数据路径栈的不同操作。
在一些实施方式中,主机侧可以具有两个驱动程序(例如,TCD和TDD)。TCD(经由优先级过程10)可以提供控制/配置接口以创建/改变/删除的功能。另一功能可以是从微型端口驱动程序接收SCSI命令,并且将主机SCSI命令引导到LUN/卷,其中命令可以被寻址到存在的LU并且可以发送到TDD驱动程序。TDD(经由优先级过程10)可以负责为被寻址到磁盘的SCSI命令提供正确的语义。它可以将SCSI转换为IRP(I/O请求分组)以用于可以发送到下层数据堆栈的内部命令。
在一些实施方式中,优先级信息可以从主机侧发送。例如,优先级信息可以使用SCSI命令从主机发送,这与上述SPC3中的SET PRIORITY不同,因为优先级可以是在SCSI传输协议中以“执行命令”过程标记的每命令优先级。如上所述,命令优先级可以是在0x1h到0xFh的范围内的值。
关于I/O请求接口,微型端口驱动程序(经由优先级过程10)可以接收SCSI命令过程并且设置其公共协议驱动器(CPD)接口。CPD接口可以主要包括一组基本的I/O请求,其次可以包括小型端口(经由优先级过程10)可以直接调用的TCD例程以及TCD可以直接调用的微型端口例程。在一些实施方式中,优先级过程10可以将优先级信息封装成公共协议驱动器结构。例如:
在由TCD驱动程序得到优先级信息之后,可以将每个SCSI CDB与优先级信息复制(经由优先级过程10)到主机侧内部结构(例如,AcceptCCB)中。AcceptCCB可以与每个到达的SCSI CDB相关联。AcceptCCB可以保持存在,直到状态被发送到主机之后,直到请求被清除。例如:
ISR处的“ScsiTargAcceptCallback()”可以由微型端口驱动程序直接调用(经由优先级过程10),以向该驱动程序提交接受CCB。该功能可以在中断处理程序(例如,DIRQLn)处执行。该功能可以将CCB保存在循环列表上。循环列表可以由延迟过程调用(DPC)来处理。
之后,可能需要从预先分配的池来分配IRP。通过IRP,分层软件栈可以在分层驱动程序之间交换数据和请求。因此,与通过IOCTRL接口相比,IRP可以是用于传递优先级信息的优选方式。
磁盘侧可以表示主机侧之下的堆栈的层。对于每个IRP,优先级过程10可以定义“EMCPAL_IRP_STACK_FLAGS”宏,并且“CacheIrpFlags”类中的“SetFlags()”和“GetFlags”包绕IRP标志数据类型。如上所述,可以为IRP标志定义作为示例数目的15个优先级。相对于AcceptCCB中的CCB_Priority,IRP标志可以由TDD(经由优先级过程10)来设置。例如:
#define SL_K10_PER_SCSI_PRIORITY_00H
#define SL_K10_PER_SCSI_PRIORITY_01H
#define SL_K10_PER_SCSI_PRIORITY_02H
…
#define SL_K10_PER_SCSI_PRIORITY_0FH
然后,主机侧调用“IoCallDriver()”可以将I/O IRP向下发送到下部磁盘侧驱动器。在图6的示例实施方式中示出了用于主机侧优先级过程的该数据流过程600的示例。
在一些实施方式中,优先级过程10可以至少部分基于主机I/O优先级信息来确定I/O请求与多个令牌桶中的一令牌桶相关联。应当理解,术语“桶”可以应用于任何类型的控制对象,并且因此,这样的术语不必限于任何特定类型的控制对象。在一些实施方式中,令牌桶可以是优先级过程10在分组交换计算机网络和电信网络中使用的算法。它可以用于检查分组形式的数据传输是否符合定义的带宽和突发限制(例如,对业务流量的不均匀性或变化的测量)。它也可以用作调度算法来确定符合为带宽和突发设置的限制的传输的定时。
在针对流量整形的网络流量控制中可以使用令牌桶;其中吞吐量可以由分配给桶的令牌来控制。每个令牌可以表示一些量的I/O,并且令牌可以以固定速率被分配给桶,例如,1K IOPS限制表示每秒有1K令牌被分配(例如,经由优先级过程10)给桶。当I/O通过时,令牌被减少,并且如果令牌用尽,则I/O可以被拒绝(例如,经由优先级过程10),并且可以通知主机(例如,经由优先级过程10)。
通常,令牌桶算法可以是有效的流量整形工具,但是可能仅在突发避免或噪声邻居降级关键客户端性能保证时才有效。换言之,主机I/O优先级通常可能不被这种方法考虑。然而,通过优先级过程10实现多个令牌桶方法,这可以被克服。
在一些实施方式中,如果多个令牌桶中的该令牌桶具有用于I/O请求的足够的令牌,则优先级过程10可以将I/O请求向下发送404到块堆栈用于处理,并且如果多个令牌桶中的该令牌桶没有用于I/O请求的足够的令牌,则优先级过程10可以拒绝406I/O请求。例如,令牌桶算法可以使用以下非限制性示例来在概念上理解:
令牌可以每1/r秒被添加到桶中。桶可以容纳最多b个令牌。如果令牌在桶已满时到达,则它可以被丢弃。当n个I/O请求到达时,可以从桶中去除n个令牌,并且可以发送404I/O请求用于处理。如果少于n个令牌可用,则通常不从桶中移除令牌,并且可以拒绝406I/O。
在一些实施方式中,优先级过程10可以以不同的速率向多个令牌桶中的每个令牌桶添加令牌,其中不同的速率可以至少部分基于向多个令牌桶分配的相应优先级等级。例如,多个令牌桶可以涉及优先级,其中优先级p可以从IRP得到,并且P的范围可以是0x1到0xf。考虑到这些变化,变化的因素可以针对例如15个等级使令牌增加速度。对于(p+1)每1/r秒添加的令牌的数目,每个优先级等级可以具有带有不同的令牌增加速度的自己的桶。因此,例如,可以为15个不同等级的I/O优先级定义15个桶。每个优先级的令牌桶大小可以用f(p)定义。
在一些实施方式中,优先级过程10可以创建令牌,消耗令牌,并且确定I/O是否应当通过以用于进一步处理。可能涉及的示例参数可以包括例如令牌添加速度(其是CIR(承诺信息)/EIR(超额信息速率))和令牌桶大小CBS(承诺突发大小)/EBS(超额突发大小)。可以通过这两个参数来调整多个令牌桶算法,用于多个等级优先级的多个令牌桶。在图7的示例实施方式中示出了示例性多令牌桶框图700。
在一些实施方式中,阵列软件栈可以是分层架构,并且对于任何I/O请求,它可以根据该层来被处理(例如,经由优先级过程10)。例如,MCC和MCR可以是分层I/O堆栈的终结器。当从主机接收到I/O请求时,主机侧驱动程序可以实现对启动器的存储LUN功能和SCSI语义的访问。I/O请求可以被传递到映射器层单元(MLU),映射器层单元可以是可以提供精简配置和存储池的分层驱动器,其然后可以被发送到高速缓存(例如,DRAM高速缓存)。对于写请求,I/O可以被同步到对等阵列控制器,然后I/O写完成可以被确认。背景线程(例如,经由优先级过程10)可以将脏高速缓存页面刷新到后端存储器(例如RAID组)。在数据被写入后端存储设备(例如,磁盘)之后,写入I/O成功完成。对于读请求,I/O可以作为同步模式运行,其中可以向MCR发起后端读请求,并且在读取之后,可以将内容返回到MLU,在此可以确认I/O请求。因此,MCx处理的一方面可以是使得基于Raid组或基于LUN的粒度成为基于IO的粒度。对于多个队列,该队列分类可以通过I/O优先级等级数来决定。具有优先级的每个I/O可以被放置在其特定队列中。
一些存储系统可以使MCC仅以两个优先级对前部I/O进行分类,例如高和低。正常I/O可以是低优先级,并且如果存在关键条件,诸如后端慢或单循环故障或RAID重建、或者可能导致数据丢失的任何情况,则需要立即持久保留数据,并且因此可以是高优先级。MCR(例如,经由优先级过程10)可以处理I/O并且以更多信用来调度高优先级I/O以刷新到磁盘。
在一些实施方式中,将I/O请求向下发送404到块堆栈用于处理可以包括将I/O放置410到多个优先级队列中的优先级队列中,其中优先级队列可以基于I/O请求的主机I/O优先级信息被加权。在一些实施方式中,多个优先级队列可以在块堆栈的多核高速缓存部分中。例如,至少参考图8的示例实施方式,示出了优先级标记I/O的MCx处理的示例框图800。在该示例中,优先级过程10可以用待决I/O队列中的多个优先级队列来增强MCC。待决I/O队列可以是其中I/O在被发送到后端之前等待的队列,其中I/O可能需要处于待决到等待后端信用的队列中。信用可以代表支持的后端的队列深度。MCC通常必须在被发送到MCR之前获得每个I/O的信用,以避免I/O拥塞。然而,与基本的高/低优先级队列不同,优先级过程10可以涉及可以由不同权重设置的多级优先级队列。具有其优先级信息的相应I/O请求可以被放置到其适当的队列中,其中队列权重确定发送到后端的I/O的速度。在该示例中,与较低优先级I/O相比,较高优先级I/O可以被更快地调度。
在一些实施方式中,优先级过程10可以发送412I/O请求用于放置到块堆栈的多核RAID部分中的多个第二优先级队列中的第二优先级队列中,其中第二优先级队列可以基于I/O请求的主机I/O优先级信息被加权。例如,至少参考图9的示例实施方式,示出了优先级标记I/O的示例MCC处理。在该示例中,MCR(例如,经由优先级过程10)可以以不同的策略来处理传入的I/O请求。对于MCR,RAID组(经由图8示出)可以使用背景信用(不同于I/O信用)作为平衡内部I/O的机制。然而,用户I/O优先级可以通过上述I/O优先级信息来测量。例如,MCR优先级队列可以在RAID组模块内以例如15个等级引入。待决I/O可以逐周期地重新调度。在每个重新调度周期中,RAID可以被重新调度,例如,与低1个等级的较低优先级I/O相比,对于高优先级I/O为15倍的背景信用。在其各自优先级等级队列中具有相同优先级的I/O可以以先入先出(FIFO)方式被重新调度。
本文中使用的术语仅用于描述特定实现的目的,而不意在限制本公开。如本文中使用的,单数形式“一个(a)”、“一个(an)”和“该(the)”也旨在包括复数形式,除非上下文另有明确指示。如本文中使用的,语言“A、B和C中的至少一个”(等)应当被解释为覆盖仅A、仅B、仅C、或三者的任何组合,除非上下文另有明确指示。进一步理解,当在本说明书中使用时,术语“包括(comprises)”和/或“包括(comprising)”规定所述特征、整体、步骤(不一定以特定顺序)、操作、元素和/或部件的存在,但是不排除一个或多个其他特征、整体、步骤(不一定以特定顺序)、操作、元素、部件和/或其组合的存在或添加。
可以在权利要求中的相应的结构、材料、动作和等同物(例如,所有手段或步骤加上功能元件)旨在包括用于结合其他要求保护的元素来执行功能的任何结构、材料或动作,如具体所要求保护的。本公开的描述被呈现用于说明和描述的目的,而非旨在穷举或限于所公开的形式的公开内容。在不脱离本公开的范围和精神的情况下,对本领域普通技术人员来说,很多修改、变型、替换及其任何组合将是明显的。选择和描述实现,以便解释本公开的原理和实际应用,并且以便使得本领域普通技术人员能够了解具有适合于预期的特定用途的实现的各种修改和/或任何组合的各种实现的公开内容。
已经通过参考其实现详细描述了本申请的公开内容,将明显的是,在不脱离在所附权利要求中限定的本公开的范围的情况下,修改、变化和实现的任何组合(包括任何修改、变化、替换、及其组合)是可能的。
Claims (12)
1.一种计算机实现的方法,包括:
通过计算设备接收I/O请求,其中所述I/O请求包括主机I/O优先级信息;
至少部分基于所述主机I/O优先级信息,确定所述I/O请求与多个令牌桶中的一令牌桶相关联;以及
如果所述多个令牌桶中的所述令牌桶具有用于所述I/O请求的足够的令牌,则:
将所述I/O请求向下发送到块堆栈用于处理,其中将所述I/O请求向下发送到块堆栈用于处理包括将所述I/O请求放置到所述块堆栈的多核高速缓存部分中多个优先级队列中的一优先级队列中,其中该优先级队列基于所述I/O请求的所述主机I/O优先级信息而被加权,以及
发送所述I/O请求以用于放置到所述块堆栈的多核RAID部分中的第二多个优先级队列中的第二优先级队列中,其中所述第二优先级队列基于所述I/O请求的所述主机I/O优先级信息而被加权;以及
如果所述多个令牌桶中的所述令牌桶没有用于所述I/O请求的足够的令牌,则拒绝所述I/O请求。
2.根据权利要求1所述的计算机实现的方法,其中所述优先级信息从主机侧被发送。
3.根据权利要求1所述的计算机实现的方法,其中所述优先级信息被封装在公共协议驱动结构中。
4.根据权利要求1所述的计算机实现的方法,还包括以不同的速率向所述多个令牌桶中的每个令牌桶添加令牌,其中所述不同的速率至少部分基于向所述多个令牌桶分配的相应优先级等级。
5.一种驻留在非暂态计算机可读存储介质上的计算机程序产品,所述计算机可读存储介质上存储有多个指令,所述多个指令当在一个或多个处理器上被执行时使得所述一个或多个处理器的至少一部分执行操作,所述操作包括:
接收I/O请求,其中所述I/O请求包括主机I/O优先级信息;
至少部分基于所述主机I/O优先级信息,确定所述I/O请求与多个令牌桶中的一令牌桶相关联;以及
如果所述多个令牌桶中的所述令牌桶具有用于所述I/O请求的足够的令牌,则:
将所述I/O请求向下发送到块堆栈用于处理,其中将所述I/O请求向下发送到块堆栈用于处理包括将所述I/O请求放置到所述块堆栈的多核高速缓存部分中多个优先级队列中的一优先级队列中,其中该优先级队列基于所述I/O请求的所述主机I/O优先级信息而被加权,以及
发送所述I/O请求以用于放置到所述块堆栈的多核RAID部分中的第二多个优先级队列中的第二优先级队列中,其中所述第二优先级队列基于所述I/O请求的所述主机I/O优先级信息而被加权;以及
如果所述多个令牌桶中的所述令牌桶没有用于所述I/O请求的足够的令牌,则拒绝所述I/O请求。
6.根据权利要求5所述的计算机程序产品,其中所述优先级信息从主机侧被发送。
7.根据权利要求5所述的计算机程序产品,其中所述优先级信息被封装在公共协议驱动结构中。
8.根据权利要求5所述的计算机程序产品,其中所述操作还包括以不同的速率向所述多个令牌桶中的每个令牌桶添加令牌,其中所述不同的速率至少部分基于向所述多个令牌桶分配的相应优先级等级。
9.一种计算系统,所述计算系统包括一个或多个处理器和一个或多个存储器,所述计算系统被配置为执行操作,所述操作包括:
接收I/O请求,其中所述I/O请求包括主机I/O优先级信息;
至少部分基于所述主机I/O优先级信息确定所述I/O请求与多个令牌桶中的一令牌桶相关联;以及
如果所述多个令牌桶中的所述令牌桶具有用于所述I/O请求的足够的令牌,则:
将所述I/O请求向下发送到块堆栈用于处理,其中将所述I/O请求向下发送到块堆栈用于处理包括将所述I/O请求放置到所述块堆栈的多核高速缓存部分中多个优先级队列中的一优先级队列中,其中该优先级队列基于所述I/O请求的所述主机I/O优先级信息而被加权,以及
发送所述I/O请求以用于放置到所述块堆栈的多核RAID部分中的第二多个优先级队列中的第二优先级队列中,其中所述第二优先级队列基于所述I/O请求的所述主机I/O优先级信息而被加权;以及
如果所述多个令牌桶中的所述令牌桶没有用于所述I/O请求的足够的令牌,则拒绝所述I/O请求。
10.根据权利要求9所述的计算系统,其中所述优先级信息从主机侧被发送。
11.根据权利要求9所述的计算系统,其中所述优先级信息被封装在公共协议驱动结构中。
12.根据权利要求9所述的计算系统,其中所述操作还包括以不同的速率向所述多个令牌桶中的每个令牌桶添加令牌,其中所述不同的速率至少部分基于向所述多个令牌桶分配的相应优先级等级。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711026814.2A CN109725829B (zh) | 2017-10-27 | 2017-10-27 | 用于数据存储系统的端到端QoS解决方案的系统和方法 |
US15/883,287 US10496333B2 (en) | 2017-10-27 | 2018-01-30 | System and method for end to end QoS solution for data storage systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711026814.2A CN109725829B (zh) | 2017-10-27 | 2017-10-27 | 用于数据存储系统的端到端QoS解决方案的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109725829A CN109725829A (zh) | 2019-05-07 |
CN109725829B true CN109725829B (zh) | 2021-11-05 |
Family
ID=66243840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711026814.2A Active CN109725829B (zh) | 2017-10-27 | 2017-10-27 | 用于数据存储系统的端到端QoS解决方案的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10496333B2 (zh) |
CN (1) | CN109725829B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413210B (zh) | 2018-04-28 | 2023-05-30 | 伊姆西Ip控股有限责任公司 | 用于处理数据的方法、设备和计算机程序产品 |
KR20190130831A (ko) * | 2018-05-15 | 2019-11-25 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
US11025745B2 (en) * | 2018-06-28 | 2021-06-01 | Intel Corporation | Technologies for end-to-end quality of service deadline-aware I/O scheduling |
CN110737400B (zh) | 2018-07-20 | 2023-10-10 | 伊姆西Ip控股有限责任公司 | 用于双处理器存储系统的方法、电子设备和计算机程序产品 |
US10958527B2 (en) * | 2019-06-12 | 2021-03-23 | International Business Machines Corporation | Transaction fencing in a multi-domain network |
US11190588B2 (en) * | 2020-04-28 | 2021-11-30 | International Business Machines Corporation | Host initiated link reset in a storage area network |
CN112087401B (zh) * | 2020-09-10 | 2024-05-28 | 北京星辰天合科技股份有限公司 | 分布式存储中实现服务质量的方法和装置 |
CN113742114A (zh) * | 2020-09-28 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种系统限流的方法和装置 |
CN112306415B (zh) * | 2020-11-02 | 2023-04-11 | 成都佰维存储科技有限公司 | Gc流控方法、装置、计算机可读存储介质及电子设备 |
CN112821977B (zh) * | 2021-04-16 | 2021-07-09 | 之江实验室 | 一种异步低延时时间敏感数据处理方法 |
US11726713B2 (en) * | 2021-06-25 | 2023-08-15 | Western Digital Technologies, Inc. | Systems and methods for priority command data fetching management |
US11580058B1 (en) | 2021-08-30 | 2023-02-14 | International Business Machines Corporation | Hierarchical ring-based interconnection network for symmetric multiprocessors |
CN114760327B (zh) * | 2022-03-30 | 2024-03-26 | 阿里巴巴(中国)有限公司 | 云盘资源配置的调整方法及装置 |
CN114860334B (zh) * | 2022-04-24 | 2024-01-26 | 曙光信息产业(北京)有限公司 | 虚拟机启动风暴的处理方法、装置、设备及介质 |
CN114781312B (zh) * | 2022-04-29 | 2024-08-27 | 上海概伦电子股份有限公司 | 半导体器件建模调参计算辅助方法、系统及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6862265B1 (en) * | 2000-04-13 | 2005-03-01 | Advanced Micro Devices, Inc. | Weighted fair queuing approximation in a network switch using weighted round robin and token bucket filter |
CN1977176A (zh) * | 2003-02-05 | 2007-06-06 | 诺基亚有限公司 | 在使用消息队列的消息传输中促进端到端服务质量的系统和方法 |
US20100332696A1 (en) * | 2009-06-30 | 2010-12-30 | Muppirala Kishore Kumar | Managing I/O Request in Storage System |
CN104937584A (zh) * | 2012-12-19 | 2015-09-23 | 赛门铁克公司 | 基于共享资源的质量向经优先级排序的虚拟机和应用程序提供优化的服务质量 |
CN105531972A (zh) * | 2013-09-13 | 2016-04-27 | 微软技术许可有限责任公司 | 控制数据存储输入/输出请求 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6813767B1 (en) * | 2000-06-30 | 2004-11-02 | Intel Corporation | Prioritizing transaction requests with a delayed transaction reservation buffer |
US6925055B1 (en) * | 2001-03-05 | 2005-08-02 | Advanced Micro Devices, Inc. | Systems and methods for traffic shaping |
JP4318914B2 (ja) * | 2002-12-26 | 2009-08-26 | 富士通株式会社 | ストレージシステム及びその動的負荷管理方法 |
US6839740B1 (en) * | 2002-12-27 | 2005-01-04 | Veritas Operating Corporation | System and method for performing virtual device I/O operations |
US7366800B2 (en) * | 2003-10-09 | 2008-04-29 | International Business Machines Corporation | System and method for dynamically assigning I/O priority |
CN101346634B (zh) * | 2005-11-04 | 2012-10-24 | 甲骨文国际公司 | 用于通信网络中的网守的系统和方法 |
US7380074B2 (en) * | 2005-11-22 | 2008-05-27 | International Business Machines Corporation | Selecting storage clusters to use to access storage |
US7719968B2 (en) * | 2005-12-30 | 2010-05-18 | Extreme Networks, Inc. | Multi-priority multi-color markers for traffic metering |
CN101217495A (zh) * | 2008-01-11 | 2008-07-09 | 北京邮电大学 | 用于t-mpls网络环境下的流量监控方法和装置 |
US8000235B2 (en) * | 2008-10-05 | 2011-08-16 | Contextream Ltd. | Bandwidth allocation method and apparatus |
US20110083175A1 (en) * | 2009-10-06 | 2011-04-07 | Sonus Networks, Inc. | Methods and Apparatuses for Policing and Prioritizing of Data Services |
US8855189B1 (en) * | 2010-04-12 | 2014-10-07 | UV Networks, Inc. | Multi-stream transcoding system with cache memory management |
US8477610B2 (en) * | 2010-05-31 | 2013-07-02 | Microsoft Corporation | Applying policies to schedule network bandwidth among virtual machines |
CN101964758A (zh) * | 2010-11-05 | 2011-02-02 | 南京邮电大学 | 一种基于区分服务的队列调度方法 |
CN102035732B (zh) * | 2010-11-25 | 2013-12-04 | 华为技术有限公司 | 业务调度方法及装置 |
US8250257B1 (en) * | 2010-12-08 | 2012-08-21 | Emc Corporation | Techniques for balancing system I/O load |
US9247023B2 (en) * | 2011-07-27 | 2016-01-26 | Qualcomm Incorporated | System and method for prioritizing requests to a SIM |
WO2013042163A1 (en) * | 2011-09-21 | 2013-03-28 | Hitachi, Ltd. | Storage system and data migration processing control method |
-
2017
- 2017-10-27 CN CN201711026814.2A patent/CN109725829B/zh active Active
-
2018
- 2018-01-30 US US15/883,287 patent/US10496333B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6862265B1 (en) * | 2000-04-13 | 2005-03-01 | Advanced Micro Devices, Inc. | Weighted fair queuing approximation in a network switch using weighted round robin and token bucket filter |
CN1977176A (zh) * | 2003-02-05 | 2007-06-06 | 诺基亚有限公司 | 在使用消息队列的消息传输中促进端到端服务质量的系统和方法 |
US20100332696A1 (en) * | 2009-06-30 | 2010-12-30 | Muppirala Kishore Kumar | Managing I/O Request in Storage System |
CN104937584A (zh) * | 2012-12-19 | 2015-09-23 | 赛门铁克公司 | 基于共享资源的质量向经优先级排序的虚拟机和应用程序提供优化的服务质量 |
CN105531972A (zh) * | 2013-09-13 | 2016-04-27 | 微软技术许可有限责任公司 | 控制数据存储输入/输出请求 |
Also Published As
Publication number | Publication date |
---|---|
US10496333B2 (en) | 2019-12-03 |
CN109725829A (zh) | 2019-05-07 |
US20190129653A1 (en) | 2019-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109725829B (zh) | 用于数据存储系统的端到端QoS解决方案的系统和方法 | |
US11221975B2 (en) | Management of shared resources in a software-defined storage environment | |
US11580041B2 (en) | Enabling use of non-volatile media—express (NVME) over a network | |
US9792060B2 (en) | Optimized write performance at block-based storage during volume snapshot operations | |
US9998532B2 (en) | Computer-based, balanced provisioning and optimization of data transfer resources for products and services | |
US10241724B1 (en) | Storage area network emulation | |
WO2016196766A2 (en) | Enabling use of non-volatile media - express (nvme) over a network | |
US8918474B2 (en) | Determining priorities for cached objects to order the transfer of modifications of cached objects based on measured network bandwidth | |
US11914894B2 (en) | Using scheduling tags in host compute commands to manage host compute task execution by a storage device in a storage system | |
US10701154B2 (en) | Sharding over multi-link data channels | |
US10776173B1 (en) | Local placement of resource instances in a distributed system | |
US9514072B1 (en) | Management of allocation for alias devices | |
US10592165B1 (en) | Method, apparatus and computer program product for queueing I/O requests on mapped RAID | |
US11079968B1 (en) | Queue management in multi-site storage systems | |
US11500577B2 (en) | Method, electronic device, and computer program product for data processing | |
US20180210650A1 (en) | Virtual machine storage management queue | |
US11748376B1 (en) | Selection of data for transmission from different asynchronous data replication sessions running on a storage system | |
CN110798366B (zh) | 任务逻辑的处理方法、装置及设备 | |
US11606437B2 (en) | System and method for boosting up performance of NVMe-TCP transport | |
US11921658B2 (en) | Enabling use of non-volatile media-express (NVMe) over a network | |
US10942875B2 (en) | System and method for regulating host IOs and internal background operations in a storage system | |
US11252232B2 (en) | NVME-of queue management in host clusters | |
US20230359359A1 (en) | Elastic request handling technique for optimizing workload performance |
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 |