CN112231250B - 存储设备的性能隔离 - Google Patents
存储设备的性能隔离 Download PDFInfo
- Publication number
- CN112231250B CN112231250B CN201910582095.5A CN201910582095A CN112231250B CN 112231250 B CN112231250 B CN 112231250B CN 201910582095 A CN201910582095 A CN 201910582095A CN 112231250 B CN112231250 B CN 112231250B
- Authority
- CN
- China
- Prior art keywords
- access request
- network interface
- interface device
- storage device
- 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.)
- Active
Links
- 238000002955 isolation Methods 0.000 title abstract description 11
- 230000004044 response Effects 0.000 claims description 36
- 239000000872 buffer Substances 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 33
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 239000004744 fabric Substances 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
-
- 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/18—Handling requests for interconnection or transfer for access to memory bus based on priority 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/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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
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)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer And Data Communications (AREA)
Abstract
根据本公开的实现,提出了一种存储设备的性能隔离的方案。根据该方案,网络接口设备接收针对存储设备的访问请求,其中访问请求包括指示该访问请求的优先级的信息。网络接口设备确定是否经由总线与存储设备连接,并且当确定网络接口设备经由总线与该存储设备连接时,网络接口设备基于该访问请求的优先级而将该访问请求插入到优先级队列,以便被发送至该存储设备。根据该方案,提供了存储设备对于不同访问请求的性能隔离。
Description
背景技术
随着计算机技术的发展,存储设备的访问速度获得了极大的提升。例如,基于高速串行计算机扩展总线(PCIe)的闪速存储设备能够为人们提供较高吞吐量和更低延迟的存储服务。这样的存储设备一般被绑定到对应的主机设备(例如,服务器)来提供存储服务。然而,由于人们对于主机设备的存储需求可能发生变化,这种静态配置存储设备的方式可能导致配置过多或过少存储资源。一些方案通过存储“解聚合(disaggregation)”的方式来提供动态容量的存储资源,例如,可以通过允许主机设备(例如,服务器)访问非本地的存储设备来提高主机设备能够管理的存储容量,进而减轻主机设备的负担。
然而,在主机设备中可能同时部署有不同类型的应用,例如延迟敏感的应用(例如,搜索引擎应用)和吞吐量敏感的应用(例如,存储备份应用)。存储设备可能同时接收到来自不同主机设备中的不同类型应用的访问请求,而传统的方案难以实现对不同类型的访问请求(例如,来自延迟敏感应用的访问请求和来自吞吐量敏感应用的访问请求)的性能隔离。
发明内容
根据本公开的实现,提出了一种支持存储设备的性能隔离的方案。根据该方案,网络接口设备接收针对存储设备的访问请求,其中访问请求包括指示该访问请求的优先级的信息。网络接口设备确定是否经由总线与存储设备连接,并且当确定网络接口设备经由总线与该存储设备连接时,网络接口设备基于该访问请求的优先级而将该访问请求插入到优先级队列,以便被发送至该存储设备。根据该方案,提供了针对存储设备的性能隔离。
提供发明内容部分是为了简化的形式来介绍对概念的选择,其在下文的具体实施方式中将被进一步描述。发明内容部分无意标识要求保护的主题的关键特征或主要特征,也无意限制要求保护的主题的范围。
附图说明
图1示出了能够在其中实施本公开的多个实现的计算环境的框图;
图2示出了根据本公开的一些实现的存储管理的流程图;
图3示出了根据本公开的一些实现的网络接口设备的示意图;
图4示出了根据本公开的一些实现的接收访问请求的过程的流程图;
图5示出了根据本公开的一些实现的确定存储设备是否经由总线连接的过程的流程图;以及
图6示出了根据本公开的一些实现的网络接口设备的示意性框图。
这些附图中,相同或相似参考符号用于表示相同或相似元素。
具体实施方式
现在将参照若干示例实现来论述本公开。应当理解,论述了这些实现仅是为了使得本领域普通技术人员能够更好地理解且因此实现本公开,而不是暗示对本主题的范围的任何限制。
如本文所使用的,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。术语“基于”要被解读为“至少部分地基于”。术语“一个实现”和“一种实现”要被解读为“至少一个实现”。术语“另一个实现”要被解读为“至少一个其他实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上文所讨论的,一些方案可以通过允许主机设备访问远程存储设备来实现存储资源的动态配置。例如,一些方案可以通过网络接口设备(例如,可编程网络接口卡(NIC))来实现对于本地存储设备和远程存储设备的访问。考虑到被部署在主机设备上的应用的多样性,期望能够在网络接口设备根据来自不同主机设备上的不同应用的访问请求的性能需求进行动态调整,以提供存储设备针对不同应用的性能隔离。
根据本公开的实现,提出了一种支持存储设备的性能隔离的方案。具体地,网络接口设备接收针对存储设备的访问请求,其中访问请求包括指示该访问请求的优先级的信息。网络接口设备确定是否经由总线与存储设备连接,并且当确定网络接口设备经由总线与该存储设备连接时,网络接口设备基于该访问请求的优先级而将该访问请求插入到优先级队列,以便被发送至该存储设备。
根据该方案,提供了针对存储设备的不同访问请求的性能隔离。不同类型的访问请求可以被设定预定的优先级,根据所接收的本地访问请求或远程访问请求的优先级,网络接口设备可以优先将具有较高的优先级的访问请求发送到存储设备以执行,从而提高存储系统的性能。
以下参考附图来说明本公开的基本原理和若干示例实现。
示例环境
图1示出了能够在其中实施本公开的多个实现的计算环境100的框图。应当理解,图1所示出的计算环境100仅仅是示例性的,而不应当构成对本公开所描述的实现的功能和范围的任何限制。如图1所示,计算环境100包括一个或多个主机设备110-1和110-2(单独或统一地称为主机设备110),其中主机设备110包括一个或多个存储设备(存储设备128-1、存储设备130-1、存储设备128-2和存储设备130-2)。
如图1所示,主机设备110-1和110-2中可以分别部署一个或多个应用(应用112-1、应用114-1、应用116-1、应用112-2、应用114-2和应用116-2),并且运行相应的文件系统118-1和文件系统118-2。此外,主机设备110-1和110-2中还可以包括访问库120-1和120-2、访问驱动122-1和122-2,以及用于连接存储设备和网络接口设备126-1和126-2的总线124-1和124-2。
主机设备110是具有一定计算和存储能力的电子设备,例如可以是计算机或者处理器。以主机设备110-1为例,主机设备110-1上运行有一个或多个应用(例如,应用112-1、应用114-1和应用116-1)以及文件系统118-1。如图1所示,主机设备110还包括访问库120-1,其可以被配置为向应用116-1或文件系统118-1提供用户级应用编程接口(API),以使得上层应用(例如应用116-1)和文件系统118-1能够像访问本地存储设备一样来访问远程的存储设备。基于访问库120-1,应用116-1或者文件系统118-1可以提交针对本地的存储设备(例如,存储设备128-1和存储设备130-1)和远程的存储设备(例如,存储设备128-2和存储设备130-2)的访问请求。
在一些实现中,应用或者租户也可以在所递交的访问请求中附加指示优先级的信息。例如,同一个应用可以为不同类型的访问请求设置不同的优先级,并将该优先级信息附加到访问请求中。
在一些实现中,可以由访问库120-1来确定访问请求的优先级。在一些实现中,访问库120-1可以基于与提交该访问请求的应用或租户来确定优先级。例如,访问库120-1可以确定与该访问请求相关联的应用或租户的标识,其中租户表示在主机设备中部署该应用的企业或个人。访问库可以进一步根据所确定的应用或租户的标识来确定与该访问请求相对应的优先级。在一些实现中,每个应用或租户可以与唯一的标识相对应。例如,访问库120-1可以预先存储应用或租户的标识与对应优先级之间的映射,并基于该映射来查询与该访问请求对应的优先级。在一些实现中,与时间敏感应用(例如,搜索引擎应用)相关联的访问请求可以被分配以较高的优先级。
在一些实现中,访问库120-1可以通过不同大小的数字(例如,1-10)来表示不同的优先级,其中较小的数字例如可以指示更高的优先级。进一步地,访问库120-1在访问请求中附加所确定的优先级的信息,并将更新后的访问请求递送到网络接口设备126-1。例如,访问库120-1可以在访问请求中添加8位的域以用于存储指示访问请求的优先级的信息。
如图1所示,主机设备110-1还可以包括访问驱动122-1,其可以被配置为初始化网络接口设备126-1,以使得网络接口设备126-1上的片上存储空间对于访问库120-1可见,并使得访问库120-1的地址空间对于网络接口设备126-1可见。
在一些实现中,网络接口设备126-1和网络接口设备126-2(单独或统一称为网络接口设备126)可以是基于现场可编程门阵列(FPGA)实现的可编程网络接口卡(NIC)。基于访问驱动122-1,访问库120-1可以将从文件系统118-1接收的访问请求或者直接从应用116-1接收访问请求递送至网络接口设备126-1,以将访问请求传输至访问请求所针对的存储设备。
响应于从访问库120-1接收到该访问请求,网络接口设备126-1能够确定访问请求所针对的存储设备是否经由总线124-1与网络接口设备126-1连接。如图1所示,与网络接口设备126-1位于同一主机设备110-1中的存储设备128-1和存储设备130-1被配置为经由总线124-1与网络接口设备126-1连接。在一些实现中,总线124-1可以包括PCIe总线。
在一些实现中,网络接口设备126-1可以(例如,根据存储设备的标识)确定该存储设备是否经由总线124-1与网络接口设备126-1连接。在一些实现中,存储设备的标识可以包括存储设备的网络地址标识,网络接口设备126-1可以通过比较存储设备的网络地址与主机设备110-1的网络地址来确定存储设备是否经由总线124-1来与网络设备126-1连接。备选地,网络接口设备126-1还可以存储存储设备的标识与连接关系的对应表,并通过查询该对应表来确定该存储设备是否经由总线124-1与网络接口设备126-1连接。
响应于确定该访问请求所针对的存储设备(例如,存储设备128-1)经由总线124-1与网络接口设备126-1连接,网络接口设备126-1进一步可以基于访问请求的优先级而将该访问请求插入到位于网络接口设备126-1中的优先级队列(图中未示出)中,以便经由网络接口设备126-1将访问请求按照优先级顺序被发送到存储设备中以用于执行。
在一些实现中,网络接口设备126-1可以直接读取访问请求已经能确定的优先级信息。例如,网络接口设备126-1可以通过读取特定域中的值来获取该访问请求的优先级。在一些实现中,也可以由网络接口设备126-1来确定访问请求的优先级。例如,网络接口设备126-1可以基于预先配置的优先级规则,并基于所接收访问请求中所指示的用户或者租户的唯一标识来确定该访问请求所对应的优先级。
在一些实现中,响应于确定该访问请求所针对的存储设备(例如,存储设备128-2)未经由总线124-1与网络接口设备126-1连接,网络接口设备126-1可以将访问请求例如封装为数据分组,并经由网络140将该包含该访问请求的数据分组发送至与存储设备128-2相对应的另一网络接口设备126-2,以实现对远程存储设备的访问。当网络接口设备126-2接收到该数据分组时,网络接口设备126-2可以通过解析该数据分组来获取访问请求,并直接访问访问请求所针对的存储设备128-2,进而减少了所需的主机设备110-2中的处理器或存储器资源。
类似地,网络接口设备126-1还能够从另一网络接口设备126-2接收针对存储设备的访问请求。与以上针对本地访问请求所描述的过程类似,网络接口设备126-1能够确定该访问请求所针对的存储设备是否经由总线124-1与网络接口设备126-1连接。响应于确定该存储设备(例如存储设备128-1)经由总线124-1与网络接口设备126-1连接,网络接口设备126-1可以将该访问请求插入到位于网络接口设备126-1中的优先级队列中,以便经由网络接口设备126-1将访问请求按照优先级顺序被发送到存储设备中以用于执行。
基于这样的方式,网络接口设备126能够对于针对存储设备的不同访问请求进行优先级排序,并优先执行具有较高优先级的访问请求,从而实现能够实现存储设备针对不同应用或租户的性能隔离。
示例过程
图2示出了根据本公开一些实现的存储管理的过程200的流程图。过程200可以由网络接口设备126来实现。为了方便描述,以下以图1中的网络接口设备126-1作为示例来描述过程200。
在框202,网络接口设备126-1接收针对存储设备的访问请求,访问请求包括指示访问请求的优先级的信息。如参考图1所描述的,该存储设备可以是网络接口设备126-1本地的存储设备(例如,存储设备128-1和存储设备130-1),该存储设备也可以是远程的存储设备(例如,存储设备128-2和存储设备130-2)。
在一些实现中,网络接口设备126-1可以从访问请求中直接获得优先级。例如,优先级可以是由租户或者应用在提交访问请求时所附加的,或者可以是由图1所述的访问库120-1所附加的。
在一些实现中,网络接口设备126-1也可以基于访问请求的应用或租户的标识来确定优先级。在一些实现中,每个应用或租户可以与唯一的标识相对应。例如,网络接口设备126-1可以查询预先存储的应用或租户的标识与对应优先级之间的映射,并基于该映射来查询与该访问请求对应的优先级。作为示例,与时间敏感应用(例如,搜索引擎应用)相关联的访问请求可以被分配以较高的优先级。
在一些实现中,网络接口设备126-1可以从访问库120-1获取由在本地的主机设备110-1的应用(例如,应用112-1,应用114-1或应用116-1)递交的一个或多个访问请求。
在一些实现中,为了实现网络接口设备126-1的吞吐量与降低对于网络接口设备126-1上所需存储空间的平衡,在将访问请求递送到网络接口设备126-1之前,访问库120-1还可以将从文件系统或不同应用接收的较大的访问请求拆分为多个较小的访问请求。例如,访问库120-1可以将一个较大的访问请求(例如,16KB)分割为多个4KB大小的子访问请求。
在一些实现中,网络接口设备126-1可以通过直接存储器访问(DMA)来获取来自访问库120-1的访问请求。具体地,图3示出了根据本公开的一些实现的网络接口设备126的示意图。如图3所示,网络接口设备126可以包括DMA引擎320,其可以被配置为与主机设备110-1的本地存储器(例如,动态随机存取存储器(DRAM))进行交互。在一些实现中,当接收到来自应用的访问请求时,访问库120-1例如可以向DMA引擎320发送关于传递访问请求的指示。响应于接收到该指示,网络接口设备126-1可以经由DMA引擎320来与主机设备110-1中的本地存储器(未示出)进行交互,以从存储器中读取一个或多个访问请求。在一些实现中,如图3所示,网络接口设备126还可以包括DMA转换器334,其可以被配置为基于访问请求的目标地址(例如,虚拟存储地址)确定访问请求所针对存储设备的唯一标识,并将该标识添加到访问请求中以转发至交换架构336。
在一些实现中,网络接口设备126-1还可以从另一网络接口设备126-2接收来自另一主机设备110-2中部署的应用(例如,应用112-2、应用114-2或应用116-2)的访问请求。以下将结合图4来描述框202的过程。图4示出了根据本公开的一些实现的接收访问请求的过程的流程图400。
在框402,网络接口设备126-1可以从与网络接口设备126-1不同的另一网络接口设备126-2处接收数据分组。在一些实现中,网络接口设备126-1可以监控主机设备110-1的特定网络端口来从另一网络接口设备126-1接收数据分组。例如,可以基于轻量级传输协议(LTL)来实现网络接收设备126-1与网络接口设备126-2之间通信,其中LTL使用基于用户数据报协议(UDP)格式的数据分组来实现不同计算设备之间的通信。例如,网络接收设备126-2可以将访问请求封装为基于LTL的数据分组,并将该数据分组经由网络140发送到网络接收设备126-1的特定网络端口。
如图3所示,网络接收设备126-1中可以包括与路由器330连接的网络栈310。响应于网络接口设备126-1通过监听预定的UDP端口而获取另一网络接口设备126-2的数据分组时,网络接口设备126-1可以将所接收的数据分组缓存在网络栈310中以进行后续处理。
在框404,网络接口设备126-1可以通过解析所接收的数据分组以获取访问请求。在一些实现中,如图3所示,网络接口设备126-1还可以包括网络通信转换器332,其可以被配置为解析网络栈310中所缓存的数据分组以获得访问请求,例如可以采用LTL转换器以作为网络通信转换器332。
基于这样的方式,来自本地主机设备110-1的访问请求和来自远程主机设备110-2中的应用的访问请求将以统一的格式被传递给网络接口设备126-1。基于这样的方式,网络接口设备126-1可以以统一的处理逻辑来处理访问请求,从而降低硬件的复杂性。
继续参考图2,在框204,网络接口设备126-1确定存储设备是否经由总线124-1与网络接口设备126-1连接。在一些实现中,网络接口设备126-1可以通过存储设备的标识来确定该存储设备是否经由总线124-1与网络接收设备126-1连接。以下将参考图5来描述框204的具体过程。图5示出了根据本公开的一些实现的确定存储设备是否经由总线连接的过程的流程图500。
在框502,基于访问请求,网络接口设备126-1可以确定存储设备的标识。在一些实现中,存储设备的标识可以包括主机设备标识和索引标识,其中主机设备标识(例如,主机设备的网络地址)可以用于唯一地标识存储设备所位于的主机设备,索引标识可以用于从主机设备本地的多个存储设备中唯一地标识所对应的存储设备。应当理解,可以采用除网络地址外的任何合适的标识来唯一地指示存储设备所在的主机设备。
以图1中的存储设备128-1作为示例,其标识可以包括主机设备110-1的网络地址以及存储设备128-1在主机设备110-1中的索引(例如,1)。基于存储设备的标识,网络接口设备126-1能够准确地定位该存储设备所处的位置。
在框504,网络接口设备126-1可以确定该标识是否指示存储设备是本地的。响应于在框504确定该标识指示存储设备是本地的,过程可以进行到框506,其中网络接口设备126-1可以确定存储设备经由总线与网络接口设备连接。在一些实现中,网络接收设备126-1例如可以将存储设备标识(例如,网络地址)与本地的主机设备110-1的标识(例如,网络地址)进行比较,以确定该标识是否指示本地的存储设备。
响应于在框504确定该标识指示存储设备不是本地的,过程可以进行到框508,其中网络接口设备126-1可以确定存储设备未经由总线124-1与网络接口设备126-1连接。
继续参考图2,响应于在框204确定存储设备经由总线124-1与网络接口设备连接,过程200进行到框206,其中网络接口设备126-1基于优先级将访问请求插入优先级队列,以便经由网络接口设备126-1被发送至存储设备。
如图3所示,路由器330中还可以包括交换架构336和一个或多个NVMe转换器338-1至338-N(单独或统一称为NVMe转换器338),其中多个NVMe转换器338中的每一个与本地的多个存储设备(例如,存储设备128-1和存储设备130-1)中的每一个相对应。在一些实现中,交换架构336可以基于存储设备的标识中的索引标识而从多个NVMe转换器338-1至338-N(单独或统一称为NVMe转换器338)中确定与该存储设备相对应的NVMe转换器。例如,交换架构336可以基于存储设备128-1的索引标识(例如,1)来确定NVMe转换器338-1。
进一步地,如图3所示,网络接口设备110-1还可以包括一个或多个非易失性存储器标准(NVMe)栈340,其中每一个NVMe栈340与对应的NVMe转换器338相连接,该NVMe栈340中进一步可以设置优先级队列342。在一些实现中,NVMe转换器338可以将所接收到的访问请求转换为NVMe格式,并基于优先级而将经转换的NVMe格式的访问请求插入到位于NVMe栈340中的优先级队列342中。
在一些实现中,优先级队列342可以基于移位寄存器和比较器来实现,网络接口设备126-1可以通过将接收的访问请求与优先级队列342中已经存储的项进行顺序比较,以确定是否需要更新该项或者移动到优先级队列342中的下一项。基于这样的方式,网络接口设备126-1可以基于优先级来确定该访问请求在优先级队列342中的位置。
附加地,NVMe栈340中还包括缓冲器管理器346,其中缓冲器管理器346可以包括预定大小(例如,512KB)的片上存储,以作为数据缓冲区。该缓冲区可以用于缓存访问请求所针对的数据。在一些实现中,为了保证最小数据粒度的一致性,缓冲区中的单个块可以被设置为与访问库120-1所拆分的单个访问请求大小(例如,4KB)相同的大小。
在一些实现中,为了避免网络接口设备126-1在没有缓冲资源的情况下仍然递交访问请求,网络接口设备126-1可以确定网络接口设备126-1中是否存在空闲的缓冲区。在一些实现中,网络接口设备126-1可以维护一个与缓冲区中的每个块对应的编号队列,以指示每个块的状态。例如,每个块可以依次被编号为1-10,其中当第一个块被使用时,网络接口设备126-1可以将编号1分配给该访问请求,即将第一个缓冲块标记为已用。网络接口设备126-1可以通过查询该队列来快速地确定是否还有空闲的缓冲区。
在一些实现中,响应于确定网络接口设备中存在空闲的缓冲区,网络接口设备126-1可以为访问请求分配空闲的缓冲区中的至少一部分,以用于缓存访问请求所针对的数据。例如,对于写入访问请求,网络接口设备126-1可以将待写入的数据缓存到所分配的缓冲区中,以用于后续写入到存储设备。在完成缓冲区分配后,网络接口设备126-1才基于优先级将访问请求插入到优先级队列中的对应的位置。基于这样的方式,可以保证网络接口设备126-1同时处理的访问请求的数量不会超出片上存储资源的上限。在一些实现中,如果网络接口设备126-1中没有空闲的缓冲区,网络接口设备126-1可以先挂起该访问请求,而暂不插入到优先级队列342。
在一些实现中,响应于接收到来自存储设备的已执行访问请求的消息,网络接口设备126-1可以释放所分配的空闲的缓冲区中的至少一部分。例如,网络接口设备126-1可以将所与该访问请求所对应的编号返回到编号队列,以指示与该编号相对应的缓冲块可以被释放以重新使用。
基于这样的方式,网络接收设备126-1可以将来自不同主机设备中不同应用的访问请求执行统一的处理,并按照访问请求的优先级来将访问请求插入到优先级队列中,以使得来自不同应用的访问请求能够根据预设的优先级而被顺序地发送到存储设备。通过在网络接口设备实现优先级的管理,本公开的实施例能够降低主机设备的处理器等资源的消耗,提高存储设备的访问效率。
在一些实施例中,网络接口设备126-1还可以从优先级队列342中确定目标访问请求,其中该目标访问请求具有最高的优先级。网络接口设备126-1随后可以向存储设备发送目标访问请求。在一些实现中,网络接口设备126-1可以优先级队列的顺序依次发送具有更高优先级的访问请求。
如图3所示,NVMe栈340中还可以包括I/O队列344和PCIe管理器348。在一些实现中,I/O队列344可以包括递交队列和完成队列。网络接口设备126-1可以顺序地将优先级队列342中具有最高优先级的访问请求所分配的请求标识添加到递交队列中,并通过PCIe管理器348来将访问请求转换为基于PCIe的命令,以发送到存储设备(例如,存储设备128-1)。在一些实现中,响应于接收到来自存储设备的已执行访问请求的消息,网络接口设备126-1可以将该访问请求添加到完成队列以指示该请求已经执行完成。
在一些实现中,为了保证发送到同一个存储设备的访问请求数量不会超过该存储设备的承载上限,网络接口设备126-1还可以为每个NVMe栈设置最大的访问请求并发数目。具体地,在将目标访问请求发送到存储设备之前,网络接口设备126-1还可以确定存储设备的当前并发的访问请求的数目是否达到阈值数目。响应于当前并发的数目未达到阈值数目,网络接口设备126-1才执行将访问请求添加到I/O队列中的递交队列的动作。
继续参考图2,响应于在框204确定存储设备未经由总线124-1与网络接口设备126-1连接,方法200可以进行到框208,其中,网络接口设备126-1将访问请求封装为数据分组。如上文所描述的,可以基于轻量级传输协议(LTL)来实现网络接收设备126-1与网络接口设备126-2之间通信。例如,网络接收设备126-1可以将访问请求封装为基于LTL的数据分组。
随后,在框210,网络接口设备126-1可以将将数据分组发送至与存储设备对应的另一网络接口设备126-2。如上文所描述的,网络接口设备126-1可以基于LTL的数据分组发送到另一网络接口设备126-2的指定UDP端口。
示例网络接口设备
图6示出了根据本公开的一些实现的网络接口设备600的示意性框图。如上文所描述的网络接口设备126可以被实现为网络接口设备600。如图6所示,网络接口设备600包括存储器614,其包括优先级队列616,其中优先级队列616可以包括如图3所示的优先级队列342。如图6所示,网络接口设备600还包括控制逻辑612,其被配置为接收针对存储设备的访问请求,访问请求包括指示访问请求的优先级的信息;确定存储设备是否经由总线与网络接口设备连接;以及响应于确定存储设备经由总线与网络接口设备连接,基于优先级将访问请求插入优先级队列,以便经由网络接口设备被发送至存储设备。
在一些实现中,控制逻辑612可以被配置为实现图3中所示的网络通信转换器332、DMA转换器334、交换架构336、NVMe转换器338、缓冲器管理器346和PCIe管理器348的功能的至少一部分。
在一些实现中,接收访问请求包括:通过直接存储器存取(DMA)来获取访问请求。
在一些实现中,接收访问请求包括:从与网络接口设备不同的另一网络接口设备处接收数据分组;以及通过解析数据分组以获取访问请求。
在一些实现中,确定存储设备是否经由总线与网络接口设备连接包括:基于访问请求,确定存储设备的标识;以及响应于标识指示存储设备是本地的,确定存储设备经由总线与网络接口设备连接。
在一些实现中,控制逻辑还被配置为:响应于确定存储设备未经由总线与网络接口设备连接,将访问请求封装为数据分组;以及将数据分组发送至与存储设备对应的另一网络接口设备。
在一些实现中,将访问请求插入优先级队列包括:响应于确定网络接口设备中存在空闲的缓冲区,为访问请求分配空闲的缓冲区中的至少一部分,以用于缓存访问请求所针对的数据;以及基于优先级,将访问请求插入到优先级队列中的对应的位置。
在一些实现中,控制逻辑还被配置为:响应于接收到来自存储设备的已执行访问请求的消息,释放所分配的空闲的缓冲区中的至少一部分。
在一些实现中,控制逻辑还被配置为:从优先级队列中确定目标访问请求,目标访问请求具有最高的优先级;以及向存储设备发送目标访问请求。
在一些实现中,发送目标访问请求包括:确定存储设备的当前并发的访问请求的数目是否达到阈值数目;以及响应于数目未达到阈值数目,向存储设备发送目标访问请求。
在一些实现中,指示优先级的消息包括以下中的至少一项:递交访问请求的应用的标识;以及递交访问请求的租户的标识。
在一些实现中,网络接口设备包括可编程的网络接口卡(NIC)。
示例实现方式
以下列出了本公开的一些示例实现方式。
在第一方面,提供了一种在网络接口设备处实现的方法。该方法包括:接收针对存储设备的访问请求,访问请求包括指示访问请求的优先级的信息;确定存储设备是否经由总线与网络接口设备连接;以及响应于确定存储设备经由总线与网络接口设备连接,基于优先级将访问请求插入优先级队列,以便经由网络接口设备被发送至存储设备。
在一些实现中,接收访问请求包括:通过直接存储器存取(DMA)来获取访问请求。
在一些实现中,接收访问请求包括:从与网络接口设备不同的另一网络接口设备处接收数据分组;以及通过解析数据分组以获取访问请求。
在一些实现中,确定存储设备是否经由总线与网络接口设备连接包括:基于访问请求,确定存储设备的标识;以及响应于标识指示存储设备是本地的,确定存储设备经由总线与网络接口设备连接。
在一些实现中,该方法还包括:响应于确定存储设备未经由总线与网络接口设备连接,将访问请求封装为数据分组;以及将数据分组发送至与存储设备对应的另一网络接口设备。
在一些实现中,将访问请求插入优先级队列包括:响应于确定网络接口设备中存在空闲的缓冲区,为访问请求分配空闲的缓冲区中的至少一部分,以用于缓存访问请求所针对的数据;以及基于优先级,将访问请求插入到优先级队列中的对应的位置。
在一些实现中,该方法还包括:响应于接收到来自存储设备的已执行访问请求的消息,释放所分配的空闲的缓冲区中的至少一部分。
在一些实现中,该方法还包括:从优先级队列中确定目标访问请求,目标访问请求具有最高的优先级;以及向存储设备发送目标访问请求。
在一些实现中,发送目标访问请求包括:确定存储设备的当前并发的访问请求的数目是否达到阈值数目;以及响应于数目未达到阈值数目,向存储设备发送目标访问请求。
在一些实现中,指示优先级的消息包括以下中的至少一项:递交访问请求的应用的标识;以及递交访问请求的租户的标识。
在一些实现中,网络接口设备包括可编程的网络接口卡(NIC)。
在第二方面,提供了一种网络接口设备。该网络接口设备包括:存储器,包括优先级队列;以及控制逻辑,被配置为:接收针对存储设备的访问请求,访问请求包括指示访问请求的优先级的信息;确定存储设备是否经由总线与网络接口设备连接;以及响应于确定存储设备经由总线与网络接口设备连接,基于优先级将访问请求插入优先级队列,以便经由网络接口设备被发送至存储设备。
在一些实现中,接收访问请求包括:通过直接存储器存取(DMA)来获取访问请求。
在一些实现中,接收访问请求包括:从与网络接口设备不同的另一网络接口设备处接收数据分组;以及通过解析数据分组以获取访问请求。
在一些实现中,确定存储设备是否经由总线与网络接口设备连接包括:基于访问请求,确定存储设备的标识;以及响应于标识指示存储设备是本地的,确定存储设备经由总线与网络接口设备连接。
在一些实现中,控制逻辑还被配置为:响应于确定存储设备未经由总线与网络接口设备连接,将访问请求封装为数据分组;以及将数据分组发送至与存储设备对应的另一网络接口设备。
在一些实现中,将访问请求插入优先级队列包括:响应于确定网络接口设备中存在空闲的缓冲区,为访问请求分配空闲的缓冲区中的至少一部分,以用于缓存访问请求所针对的数据;以及基于优先级,将访问请求插入到优先级队列中的对应的位置。
在一些实现中,控制逻辑还被配置为:响应于接收到来自存储设备的已执行访问请求的消息,释放所分配的空闲的缓冲区中的至少一部分。
在一些实现中,控制逻辑还被配置为:从优先级队列中确定目标访问请求,目标访问请求具有最高的优先级;以及向存储设备发送目标访问请求。
在一些实现中,发送目标访问请求包括:确定存储设备的当前并发的访问请求的数目是否达到阈值数目;以及响应于数目未达到阈值数目,向存储设备发送目标访问请求。
在一些实现中,指示优先级的消息包括以下中的至少一项:递交访问请求的应用的标识;以及递交访问请求的租户的标识。
在一些实现中,网络接口设备包括可编程的网络接口卡(NIC)。
在第三方面,本公开提供了一种计算机程序产品,计算机程序产品被有形地存储在计算机存储介质中并且包括机器可执行指令,机器可执行指令在由设备执行时使设备执行上述第一方面的方法。
在第四方面,本公开提供了一种计算机可读介质,其上存储有机器可执行指令,机器可执行指令在由设备执行时使设备执行上述第一方面的方法。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实现的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (18)
1.一种在网络接口设备处实现的方法,包括:
接收针对存储设备的访问请求,所述访问请求包括指示所述访问请求的优先级的信息,其中指示所述优先级的所述信息包括以下中的至少一项:递交所述访问请求的应用的标识,以及递交所述访问请求的租户的标识;
确定所述存储设备是否经由总线与所述网络接口设备连接;以及
响应于确定所述存储设备经由总线与所述网络接口设备连接,基于指示所述优先级的所述信息中包括的所述标识将所述访问请求插入优先级队列,以便经由所述网络接口设备被发送至所述存储设备。
2.根据权利要求1所述的方法,其中接收所述访问请求包括:
通过直接存储器存取(DMA)来获取所述访问请求。
3.根据权利要求1所述的方法,其中接收所述访问请求包括:
从与所述网络接口设备不同的另一网络接口设备处接收数据分组;以及
通过解析所述数据分组以获取所述访问请求。
4.根据权利要求1所述的方法,其中确定所述存储设备是否经由所述总线与所述网络接口设备连接包括:
基于所述访问请求,确定所述存储设备的标识;以及
响应于所述标识指示所述存储设备是本地的,确定所述存储设备经由总线与所述网络接口设备连接。
5.根据权利要求1所述的方法,还包括:
响应于确定所述存储设备未经由总线与所述网络接口设备连接,将所述访问请求封装为数据分组;以及
将所述数据分组发送至与所述存储设备对应的另一网络接口设备。
6.根据权利要求1所述的方法,其中将所述访问请求插入所述优先级队列包括:
响应于确定所述网络接口设备中存在空闲的缓冲区,为所述访问请求分配所述空闲的缓冲区中的至少一部分,以用于缓存所述访问请求所针对的数据;以及
基于所述优先级,将所述访问请求插入到所述优先级队列中的对应的位置。
7.根据权利要求6所述的方法,还包括:
响应于接收到来自所述存储设备的已执行所述访问请求的消息,释放所分配的所述空闲的缓冲区中的至少一部分。
8.根据权利要求1所述的方法,还包括:
从所述优先级队列中确定目标访问请求,所述目标访问请求具有最高的优先级;以及
向所述存储设备发送所述目标访问请求。
9.根据权利要求8所述的方法,其中发送所述目标访问请求包括:
确定所述存储设备的当前并发的访问请求的数目是否达到阈值数目;以及
响应于所述数目未达到所述阈值数目,向所述存储设备发送所述目标访问请求。
10.一种网络接口设备,包括:
存储器,包括优先级队列;以及
控制逻辑,被配置为:
接收针对存储设备的访问请求,所述访问请求包括指示所述访问请求的优先级的信息,其中指示所述优先级的所述信息包括以下中的至少一项:递交所述访问请求的应用的标识,以及递交所述访问请求的租户的标识;
确定所述存储设备是否经由总线与所述网络接口设备连接;以及
响应于确定所述存储设备经由总线与所述网络接口设备连接,基于指示所述优先级的所述信息中包括的所述标识将所述访问请求插入优先级队列,以便经由所述网络接口设备被发送至所述存储设备。
11.根据权利要求10所述的网络接口设备,其中接收所述访问请求包括:
通过直接存储器存取(DMA)来获取所述访问请求。
12.根据权利要求10所述的网络接口设备,其中接收所述访问请求包括:
从与所述网络接口设备不同的另一网络接口设备处接收数据分组;以及
通过解析所述数据分组以获取所述访问请求。
13.根据权利要求10所述的网络接口设备,其中确定所述存储设备是否经由所述总线与所述网络接口设备连接包括:
基于所述访问请求,确定所述存储设备的标识;以及
响应于所述标识指示所述存储设备是本地的,确定所述存储设备经由总线与所述网络接口设备连接。
14.根据权利要求10所述的网络接口设备,所述控制逻辑还被配置为:
响应于确定所述存储设备未经由总线与所述网络接口设备连接,将所述访问请求封装为数据分组;以及
将所述数据分组发送至与所述存储设备对应的另一网络接口设备。
15.根据权利要求10所述的网络接口设备,其中将所述访问请求插入所述优先级队列包括:
响应于确定所述网络接口设备中存在空闲的缓冲区,为所述访问请求分配所述空闲的缓冲区中的至少一部分,以用于缓存所述访问请求所针对的数据;以及
基于所述优先级,将所述访问请求插入到所述优先级队列中的对应的位置。
16.根据权利要求15所述的网络接口设备,所述控制逻辑还被配置为:
响应于接收到来自所述存储设备的已执行所述访问请求的消息,释放所分配的所述空闲的缓冲区中的至少一部分。
17.根据权利要求10所述的网络接口设备,所述控制逻辑还被配置为:
从所述优先级队列中确定目标访问请求,所述目标访问请求具有最高的优先级;以及
向所述存储设备发送所述目标访问请求。
18.根据权利要求17所述的网络接口设备,其中发送所述目标访问请求包括:
确定所述存储设备的当前并发的访问请求的数目是否达到阈值数目;以及
响应于所述数目未达到所述阈值数目,向所述存储设备发送所述目标访问请求。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910582095.5A CN112231250B (zh) | 2019-06-30 | 2019-06-30 | 存储设备的性能隔离 |
PCT/US2020/034462 WO2021002979A1 (en) | 2019-06-30 | 2020-05-25 | Performance isolation for storage devices |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910582095.5A CN112231250B (zh) | 2019-06-30 | 2019-06-30 | 存储设备的性能隔离 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112231250A CN112231250A (zh) | 2021-01-15 |
CN112231250B true CN112231250B (zh) | 2024-06-04 |
Family
ID=71083754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910582095.5A Active CN112231250B (zh) | 2019-06-30 | 2019-06-30 | 存储设备的性能隔离 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112231250B (zh) |
WO (1) | WO2021002979A1 (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010018025A1 (en) * | 2008-08-15 | 2010-02-18 | International Business Machines Corporation | Remote management of storage controllers |
CN108958649A (zh) * | 2018-05-17 | 2018-12-07 | 天津飞腾信息技术有限公司 | 一种用于存储系统的安全隔离方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628353B2 (en) * | 2014-03-08 | 2020-04-21 | Diamanti, Inc. | Enabling use of non-volatile media-express (NVMe) over a network |
US20190102287A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Remote persistent memory access device |
-
2019
- 2019-06-30 CN CN201910582095.5A patent/CN112231250B/zh active Active
-
2020
- 2020-05-25 WO PCT/US2020/034462 patent/WO2021002979A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010018025A1 (en) * | 2008-08-15 | 2010-02-18 | International Business Machines Corporation | Remote management of storage controllers |
CN108958649A (zh) * | 2018-05-17 | 2018-12-07 | 天津飞腾信息技术有限公司 | 一种用于存储系统的安全隔离方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112231250A (zh) | 2021-01-15 |
WO2021002979A1 (en) | 2021-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9935899B2 (en) | Server switch integration in a virtualized system | |
US8660133B2 (en) | Techniques to utilize queues for network interface devices | |
EP4160424A2 (en) | Zero-copy processing | |
KR101142733B1 (ko) | 처리관리장치, 컴퓨터 시스템, 분산처리방법 및 컴퓨터프로그램 | |
CN111880750A (zh) | 磁盘读写资源的分配方法、装置、设备及存储介质 | |
US20190243757A1 (en) | Systems and methods for input/output computing resource control | |
US20130247056A1 (en) | Virtual machine control method and virtual machine | |
US20130318333A1 (en) | Operating processors over a network | |
JP2021515318A (ja) | NVMeベースのデータ読み取り方法、装置及びシステム | |
EP3077914B1 (en) | System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface | |
US20240176656A1 (en) | System and Method for Queuing Work within a Virtualized Scheduler Based on In-Unit Accounting of In-Unit Entries | |
CN111258932A (zh) | 加速ufs协议处理的方法与存储控制器 | |
EP3588879A1 (en) | Technologies for buffering received network packet data | |
CN115185880A (zh) | 一种数据存储方法及装置 | |
US9519514B2 (en) | Interfacing with a buffer manager via queues | |
US11671382B2 (en) | Technologies for coordinating access to data packets in a memory | |
US11042394B2 (en) | Method for processing input and output on multi kernel system and apparatus for the same | |
US20050249228A1 (en) | Techniques for providing scalable receive queues | |
CN112231250B (zh) | 存储设备的性能隔离 | |
US10270715B2 (en) | High performance network I/O in a virtualized environment | |
US8924683B2 (en) | Storage apparatus and data control method using a relay unit and an interface for communication and storage management | |
US11409553B1 (en) | System and method for isolating work within a virtualized scheduler using tag-spaces | |
CN109167740B (zh) | 一种数据传输的方法和装置 | |
CN113778319A (zh) | 网卡的数据处理方法以及网卡 | |
CN113886310A (zh) | 桥接模块、数据传输系统和数据传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |