CN105793835B - 用于支持计算环境中的i/o虚拟化的系统和方法 - Google Patents

用于支持计算环境中的i/o虚拟化的系统和方法 Download PDF

Info

Publication number
CN105793835B
CN105793835B CN201480063821.8A CN201480063821A CN105793835B CN 105793835 B CN105793835 B CN 105793835B CN 201480063821 A CN201480063821 A CN 201480063821A CN 105793835 B CN105793835 B CN 105793835B
Authority
CN
China
Prior art keywords
data packet
vhba
equipment
disk
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480063821.8A
Other languages
English (en)
Other versions
CN105793835A (zh
Inventor
U·阿加沃尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US14/096,949 external-priority patent/US9104637B2/en
Priority claimed from US14/096,987 external-priority patent/US8898353B1/en
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN105793835A publication Critical patent/CN105793835A/zh
Application granted granted Critical
Publication of CN105793835B publication Critical patent/CN105793835B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2871Implementation details of single intermediate entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/064Linked list, i.e. structure using pointers, e.g. allowing non-contiguous address segments in one logical buffer or dynamic buffer space allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2205/00Indexing scheme relating to group G06F5/00; Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F2205/06Indexing scheme relating to groups G06F5/06 - G06F5/16
    • G06F2205/067Bidirectional FIFO, i.e. system allowing data transfer in two directions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Transfer Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Computer And Data Communications (AREA)

Abstract

系统和方法可以支持计算环境中的输入/输出(I/O)虚拟化。该系统包括包含与一个或多个虚拟主机总线适配器(vHBA)相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向一个或多个数据包缓冲区的缓冲区指针的主链表。此外,可以在与输入/输出(I/O)设备相关联的芯片上存储器中定义上下文表,其中上下文表维护指向为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表。I/O设备可以在其从物理主机总线适配器(HBA)接收到盘读取数据时打开上下文表、更新缓冲区指针的临时链表、以及当上下文表被关闭时,将临时链表合并到主链表中。

Description

用于支持计算环境中的I/O虚拟化的系统和方法
版权声明:
本专利文档公开内容的一部分包含受版权保护的素材。版权拥有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现那样进行的传真复制,但是除此之外在任何情况下都保留所有版权。
技术领域
本发明一般而言涉及计算机系统,并且具体而言,涉及支持计算环境中的输入/输出(I/O)虚拟化。
背景技术
已经看到InfiniBand(无限带宽,IB)技术日益增长地被部署为用于云计算架构的基础。此外,随着更大的云计算体系架构的引入,与传统的网络和存储相关联的性能和管理瓶颈已变成重要的问题。这是本发明的实施例旨在解决的大致领域。
发明内容
一种系统和方法可以支持计算环境中的输入/输出(I/O)虚拟化。该系统可以包括与网络架构上的服务器相关联的芯片。此外,该芯片与包含多个数据包缓冲区的外部存储器相关联。而且,芯片上存储器维护包含从物理主机总线适配器(HBA)接收到的盘读取数据的一个或多个数据包的状态。此外,该芯片操作来将所述一个或多个数据包在外部存储器上的多个数据包缓冲区中排队(en-queue)、基于所述一个或多个数据包的状态从外部存储器中读出所述一个或多个数据包、以及将所述一个或多个数据包发送给服务器。
一种系统和方法可以支持计算环境中的输入/输出(I/O)虚拟化。该系统包括包含与一个或多个虚拟主机总线适配器(vHBA)相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向一个或多个数据包缓冲区的缓冲区指针的主链表。此外,可以在与输入/输出(I/O)设备相关联的芯片上存储器中定义上下文表,其中上下文表维护指向为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表。I/O设备可以在其从物理主机总线适配器(HBA)接收到盘读取数据时打开上下文表、更新缓冲区指针的临时链表、以及当上下文表被关闭时,将临时链表合并到主链表中。
本文所描述的是可以支持计算环境中的输入/输出(I/O)虚拟化的系统和方法。该系统可以包括在存储器中的空闲缓冲区池。I/O设备操作来使用空闲缓冲区池存储从物理主机总线适配器(HBA)接收到的盘读取数据。空闲缓冲区池可以包含二维链表和一维链表。二维链表的每个条目包含在连续存储器位置中的多个数据包缓冲区,并且一维链表的每个条目包含单个数据包缓冲区。
附图说明
图1示出了利用不同的存储器接口支持输入/输出(I/O)虚拟化的示图。
图2示出了根据本发明的实施例的、利用单个存储器接口支持输入/输出(I/O)虚拟化的示图。
图3示出了根据本发明的实施例的、支持用于利用单个存储器接口处理入口流量的方案的示图。
图4示出了根据本发明的实施例的、在I/O设备上启动盘读取操作的示图。
图5示出了根据本发明的实施例的、在I/O设备上提取请求IOCB的示图。
图6示出了根据本发明的实施例的、在I/O设备上处理盘读取数据的示图。
图7示出了根据本发明的实施例的、在I/O设备上处理盘读取操作的完成的示图。
图8示出了根据本发明的实施例的、利用多个虚拟主机总线适配器(vHBA)支持I/O虚拟化的示图。
图9示出了根据本发明的实施例的、支持虚拟主机总线适配器(vHBA)中的多个上下文的示图。
图10示出了根据本发明的实施例的、利用芯片上存储器来维护在外部存储器中排队的数据包的状态的示图。
图11示出了根据本发明的实施例的、用于利用单个存储器接口支持输入/输出(I/O)虚拟化的示例性流程图。
图12示出了根据本发明的实施例的、利用空闲缓冲区池来支持多个虚拟主机总线适配器(vHBA)的示图。
图13示出了根据本发明的实施例的、利用混合链表结构来支持盘读取操作的示图。
图14示出了根据本发明的实施例的、利用混合链表结构来避免队头阻塞(head-of-line blocking)的示图。
图15示出了根据本发明的实施例的、用于利用混合链表结构来避免队头阻塞的示例性流程图。
图16示出了根据本发明的实施例的、支持用于I/O设备的二维链表结构的示图。
图17示出了根据本发明的实施例的、支持I/O设备的高效存储器利用率的示图。
图18示出了根据本发明的实施例的、用于支持计算环境中的高效数据包处理的示例性流程图。
具体实施方式
本发明是作为例子而不是作为限制在附图中说明的,并且在附图中,相同的标号指示相似的元件。应当指出,在本公开内容中对“一个”或“一种”或“一些”实施例的引用不一定指同一实施例,并且这种引用意味着至少一个。
以下本发明的描述使用InfiniBand(无限带宽,IB)网络作为高性能网络的例子。对本领域技术人员来说,将很显然,可以使用其它类型的高性能网络,而没有限制。此外,以下本发明使用光纤通道(FC)存储网络作为存储网络的例子。对于本领域技术人员来说,将很显然,可以使用其它类型的存储网络,而没有限制。
本文所描述的是可以利用一个或多个虚拟主机总线适配器(vHBA)支持输入/输出(I/O)虚拟化的系统和方法。
输入/输出(I/O)虚拟化
可以基于两种不同的存储器接口支持IB架构上的I/O虚拟化。
图1示出了利用不同的存储器接口支持输入/输出(I/O)虚拟化的示图。如在图1中所示,I/O设备100可以使用光纤通道(FC)域101和InfiniBand(IB)域102来处理入口流量,诸如从存储网络105到IB架构104的盘读取数据。
如在图1中所示,光纤通道(FC)域101可以连接到物理主机总线适配器(HBA)103。物理HBA 103可以例如利用FC命令执行盘读取操作,并且可以例如利用外围组件互连快速(PCI Express或PCIe)命令将数据和上下文发送给FC域101。
FC域101可以维护FC上下文列表121,其可以包括各种虚拟主机总线适配器(vHBA)有关的信息和上下文。此外,FC域101可以将接收到的盘读取数据和/或上下文存储到外部存储器中,例如同步动态随机存取存储器(SDRAM)111。
如在图1中所示,FC域101和IB域102直接利用串行互连连接。此外,IB域102可以从FC域101接收FC数据和上下文,并且可以将接收到的FC数据和上下文映射到IB上下文列表122中的不同队列对(QP),用于序列排序和上下文管理。另外,IB域102可以在例如SDRAM112的外部存储器中存储可以是IB格式的接收到的盘读取数据和上下文。然后,IB域102可以将该信息传输到IB架构104。
因此,系统可以使用多个不同的存储器接口用于处理从存储网络105到IB架构104的入口流量。
单个存储器接口
根据本发明的实施例,系统可以使用单个存储器接口来支持I/O虚拟化,诸如为在IB架构上创建的不同虚拟HBA为入口流量和出口流量两者管理并行的FC上下文。
图2示出了根据本发明的实施例的、利用单个存储器接口支持输入/输出(I/O)虚拟化的示图。如在图2中所示,I/O设备200可以使用表示单个FC/IB域201的芯片来处理入口流量,诸如从存储网络205到IB架构204的盘读取数据。
单个FC/IB域201可以直接连接到物理主机总线适配器(HBA)203,其可以利用FC命令执行盘读取操作。物理HBA 203可以利用PCIe命令将盘读取数据和上下文发送给FC/IB域201。然后,FC/IB域201可以利用IB协议将接收到的盘读取数据和上下文发送给IB架构204。
如在图2中所示,FC/IB域201可以维护vHBA/QP信息列表220,该信息列表220将接收到的FC数据和上下文映射到IB上下文列表中的不同队列对(QP),用于序列排序和上下文管理。另外,FC/IB域201可以将IB格式的盘读取数据和上下文存储到外部存储器(例如SDRAM 210)中。
根据本发明的实施例,FC上下文列表与IB可靠连接(RC)队列对(QP)列表的合并允许使用单个存储器接口,而不是两个不同的存储器接口。例如,系统可以在将临时列表映射到IB域之前维护外部存储器缓冲区的该临时上下文列表的动态列表。这种方法可以避免使用两个不同的外部存储器,并且也可以避免将背压消息(back pressure message)从IB域发送给FC域。因此,系统可以避免多次存储相同的数据和/或上下文,并且可以改善延迟时间。此外,使用单个芯片和存储器接口,而不是两个不同的芯片和存储器接口可以降低系统的成本。
此外,系统消除了对在两个不同域之间进行通信的外部(例如,特定于供应商的)接口的依赖性。由于使用了单个存储器接口,因此FC/IB域201知道缓冲区的大小,并且可以避免超过(overrun)在例如SDRAM 210的外部存储器中的缓冲区。这种单个存储器接口方法也允许在vHBA操作失灵(go down)时进行更好的刷新操作。由于没有消息在IB域和FC域之间来回传递,因此刷新操作可以以干净和快速的方式来执行。
图3示出了根据本发明的实施例的、支持用于利用单个存储器接口处理入口流量的方案300的示图。如在图3中所示,可以使用与单个存储器接口相关联的FC/IB域320来处理从连接到存储网络的物理主机总线适配器(HBA)330到IB架构上的服务器310的入口流量。
在步骤301,服务器310可以通过例如作为RC发送消息将初始化块发送给FC/IB域320来发起盘读取操作。然后,在步骤302,FC/IB域320可以向服务器310确认消息的接收。
接着,在步骤303,服务器310可以更新用于描述符环的写索引,并且可以向FC/IB域320指示存在一个或多个新的输入/输出控制块(IOCB)。然后,在步骤304,FC/IB域320可以向服务器310确认消息的接收。
此外,FC/IB域320可以将接收到的写索引值与读索引值进行比较。如果不同,则在步骤305,FC/IB域320可以尝试利用RDMA读取命令从服务器310获取一个或多个IOCB。然后,在步骤306,服务器310可以将一个或多个IOCB作为RDMA读取响应数据发送给FC/IB域320。
一旦FC/IB域320从服务器310接收到IOCB,FC/IB域320就可以打开上下文,如果它可用的话。这里,上下文是利用芯片上存储器维护在芯片上的特定命令的状态。然后,FC/IB域320可以将该IOCB命令推送到物理HBA 330。
例如,在步骤307,FC/IB域320可以更新指针(例如响应写索引),该指针向HBA 330指示请求IOCB可用。然后,在步骤308,HBA 330可以尝试读取请求IOCB,并且在步骤309,FC/IB域320可以将IOCB请求读数据发送给HBA 330。因此,HBA 330可以相应地执行盘读取操作。
根据本发明的实施例,以上步骤301-309可以并发发生,以用于处理并行的服务器IOCB命令,即,FC/IB域320可以同时维护和处理多个并行的上下文。
此外,在步骤311-319,HBA 330可以将盘读取数据发送给FC/IB域320,FC/IB域320在步骤321-329继而可以执行RDMA写操作来将盘读取数据发送给IB架构上的服务器310。
根据本发明的实施例,系统可以确保盘读取数据被完全传送到服务器310或主机。在步骤331,服务器310可以发送消息到FC/IB域320,以用于确认盘读取数据的接收。
此外,在步骤332,一旦完整盘读取数据已通过物理HBA 330传送,物理HBA 330就可以发送响应IOCB到FC/IB域320来指示对应的IOCB请求已被完全处理。相应地,在步骤333,FC/IB域320可以利用RC发送消息将响应IOCB发送给服务器310。
最后,在步骤334,服务器可以确认响应IOCB的接收,并且在步骤335,FC/IB域320可以更新指针(例如响应读取索引),该指针向HBA 330指示响应IOCB已被发送给服务器310。
根据本发明的实施例,FC/IB域320可以处理入口数据路径中不同类型的流量,诸如对vHBA上的上下文的RDMA读取请求、来自物理HBA的盘读取数据、以及从物理HBA接收到的对vHBA上的上下文的响应IOCB。这里,用于盘写入数据取回的RDMA读取请求可以由FC/IB域320内部产生,而盘读取数据和响应IOCB可以经由PCI-Express总线从物理HBA接收。
图4示出了根据本发明的实施例的、在I/O设备上启动盘读取操作的示图。如在图4中所示,I/O设备400(诸如表示FC/IB域401的芯片)可以从IB架构上的服务器402获得写索引412。
FC/IB域401可以将获得的写索引412的值与读索引值的拷贝进行比较。如果不同,则FC/IB域401可以利用RDMA读取命令413从服务器402取回一个或多个请求IOCB 411。此外,这些RDMA读取命令413可以被转换为IB格式,并且可以存储在与FC/IB域401相关联的外部入口存储器410中的空闲缓冲区池420中。
这里,在将RDMA读取命令421存储在入口DRAM 410之前,排队逻辑可以确保在外部入口存储器410中有可用的缓冲区用于RDMA读取请求。然后,FC/IB域401可以继续处理从物理HBA 403到服务器402的入口流量。
图5示出了根据本发明的实施例的、在I/O设备上提取请求IOCB的示图。如在图5中所示,I/O设备500(诸如表示FC/IB域501的芯片)可以从IB架构上的服务器502接收RDMA读取响应数据。
一旦如所期望的,利用IB协议从服务器502接收到完整RDMA读取响应数据512,FC/IB域501就可以使在外部入口存储器510中的空闲缓冲区池520中存储的RDMA读取请求命令521离队。然后,FC/IB域501可以将接收到的RDMA读取响应数据512与存储的RDMA读取请求521进行匹配。
此外,FC/IB域501可以解析接收到的RDMA读取响应数据512,并且在将请求IOCB511传递到HBA 503之前提取包含在RDMA读取响应数据512中的请求IOCB 511。
图6示出了根据本发明的实施例的、在I/O设备上处理盘读取数据的示图。如在图6中所示,I/O设备600(诸如表示FC/IB域601的芯片)可以在将IOCB 613传递到HBA 603之前为请求IOCB 613打开上下文612。
根据本发明的实施例,FC/IB域601可以确保在为请求IOCB 613打开上下文612之前有足够的空间(例如,在外部入口存储器610中预留的DRAM空间621)来存储来自HBA 603的用于请求IOCB命令613的盘读取数据611。因此,系统可以确保一旦发出盘读取命令(例如,在请求ICOB 613中),FC/IB域601不背压物理HBA 603。
此外,在从FC/IB域601接收到IOCB命令613中的盘读取命令之后,HBA 603可以在储存器上执行实际的盘读取操作(例如,利用FC协议),并且HBA 603可以利用PCI/PCIe写事务将盘读取数据611返回给FC/IB域601。
由于当打开上下文时,FC/IB域601已经在外部入口存储器610中的空闲缓冲区池620中为盘读取命令预留了空间621,因此FC/IB域601可以开始将接收到的盘读取数据611写入到外部入口存储器610中的数据包缓冲区中。此外,FC/IB域601可以在将盘读取数据写入到外部入口存储器610中的数据包缓冲区之前,将IB头部和序列号添加到为盘读取数据611接收到的数据包。因此,为盘读取数据611接收到的存储的数据包可以是IB格式的。
此外,当完整消息(例如,RDMA读取请求)可用时,或者当IB最大传输单元(MTU)数据包(例如RDMA只写数据包)可用时,FC/IB域601可以读出在外部入口存储器610中存储的盘读取数据611。随后,FC/IB域601可以将从外部入口存储器610中的空闲缓冲区池620中读出的IB数据包作为盘读取数据631发送给IB架构上的服务器602。
图7示出了根据本发明的实施例的、在I/O设备上处理盘读取操作的完成的示图。如在图7中所示,可以使用I/O设备700(诸如表示FC/IB域701的芯片)来处理从物理HBA 703到IB架构上的服务器702的入口流量。
一旦盘读取数据已被完全传输,HBA 703就可以发送响应IOCB711到FC/IB域701,以指示与上下文712相关联的对应的IOCB请求731已被完全处理。然后,FC/IB域701可以将IB头部和序列号添加到响应IOCB 711,并且可以将响应IOCB 721存储在外部入口存储器710中的空闲缓冲区池720中。
一旦消息或数据包准备好要被发送出,FC/IB域701就可以利用IB协议将响应IOCB721发送给主机/服务器702。然后,主机/服务器702可以在接收到响应IOCB 713之后,知道盘读取请求IOCB命令731已被硬件完全处理。
此外,在为有关的上下文712发送响应IOCB 721之后,FC/IB域701可以关闭该上下文(即,可以清除状态存储器,并且删除在外部入口存储器710中预留的空间)。
多个上下文
图8示出了根据本发明的实施例的、利用多个虚拟主机总线适配器(vHBA)支持I/O虚拟化的示图。如在图8中所示,可以使用I/O设备800(例如表示FC/IB域801的芯片)来处理入口流量830。入口流量830可以包括从物理HBA 803传输到IB架构上的服务器802的多个数据包,例如数据包831-839。
此外,FC/IB域801可以支持一个或多个vHBA,例如vHBA A-B 851-853,其中每个可以对应于与IB服务器802相关联的队列对(QP),例如QP A-C 841-843。
此外,FC/IB域801可以使用外部入口存储器810来存储一个或多个接收到的数据包。FC/IB域801可以将诸如vHBA A-C 851-853的FC上下文信息与诸如QP A-C 841-843的IB上下文列表合并,以便支持使用单个存储器接口。
如在图8中所示,外部入口存储器810可以提供空闲缓冲区池820。空闲缓冲区池820包括一个或多个缓冲区列表,例如缓冲区列表A-C 821-823,其中每个可以用来存储针对特定QP(或vHBA)的一个或多个接收到的数据包。
例如,FC/IB域801可以将针对QP A 841的数据包832和839在与vHBA A 851相关联的缓冲区列表A 821中排队。此外,FC/IB域801可以将针对QP B 842的数据包833和838在与vHBA B 852相关联的缓冲区列表B 822中排队,并且FC/IB域801可以将针对QP C 843的数据包831在与vHBA C 853相关联的缓冲区列表C 823中排队。
此外,FC/IB域801可以包括控制结构811,其可以维护多个接收到的数据包831-839的状态。另外,FC/IB域801可以使用读取逻辑812读出一个或多个存储的数据包831-839。
根据本发明的实施例,FC/IB域801可以在vHBA A-C 851-853中打开多个上下文,以便对IB域中的QP支持多个盘读取命令、RDMA读取请求和RC发送命令的复用。
图9示出了根据本发明的实施例的、支持虚拟主机总线适配器(vHBA)中的多个上下文的示图。如在图9中所示,I/O设备(例如表示FC/IB域900的芯片)可以在单个vHBA 901中打开多个上下文(诸如上下文I 910和上下文II 920),例如用于在物理HBA 903上对QP904执行多个盘读取命令。
例如,上下文I 910可以包括从物理HBA 903接收到的若干个数据包,诸如C1D1911、C1D2 912和C1D3 913。这里,C1D1 911可以包含用于上下文I 910的盘读取数据D1,C1D2 912可以包含用于上下文I 910的盘读取数据D2,并且C1D3 913可以包含用于上下文I910的盘读取数据D1。
此外,上下文II 920可以包括从物理HBA 903接收到的若干个数据包,诸如C2D1921和C2D2 922。这里,C2D1 921可以包含用于上下文II 920的盘读取数据D1,并且C2D2922可以包含用于上下文II 920的盘读取数据D2。
此外,在将从物理HBA 903接收到的数据包发送给IB架构上的QP 904之前,FC/IB域900可以添加对应的序列号(PSN)和不同的IB头部。
根据本发明的实施例,针对同一QP(例如QP 904(即与vHBA 901相关联))的所有数据包可以在IB域内共享单个PSN空间902。如在图9中所示,在PSN空间902内,数据包可以在序列中按照从P0、P1至P(N)的次序进行组织。这里,P1等于P0加1、P2等于P1加1、并且每个后续的数据包会具有下一个序列号。
另一方面,在IB域中共享PSN空间902会复杂化将IB头部和序列号添加到基于单个存储器接口在不同上下文中从HBA 803接收到的数据包,因为它可能无法利用IB域中的PSN号分配方案实时地(on the fly)改变传出数据包的次序。
如在图9中所示,当用于上下文II 920的盘读取数据在用于上下文I 910的盘读取数据的处理被完全处理之前到达时,可能会在vHBA 901中发生对头阻塞问题。例如,这种情况会在当系统正在执行盘写入操作时,当FC/IB域900试图安排对另一个磁盘写入操作的RDMA读取请求时出现。
图10示出了根据本发明的实施例的、利用芯片上存储器来维护在外部存储器中排队的一个或多个数据包的状态的示图。如在图10中所示,I/O设备1000(例如表示FC/IB域1000的芯片)可以在单个VHBA/QP 1003中同时打开多个上下文,例如上下文I 1010和上下文II 1020。每个上下文可以包括一个或多个数据包,例如上下文I1010包括数据包C1D11011、C1D2 1012和C1D3 1013,并且上下文II 1020包括数据包C2D1 1021和C2D2 1022。
根据本发明的实施例,FC/IB域1000可以将序列号和各种IB头部添加到从物理HBA1005接收到的每个数据包。IB头部可以包括当特定数据包被发送给IB架构1004时可应用到该特定数据包的IB命令。
例如,如果用于上下文的盘读取数据的大小等于IB最大传输单元(MTU)的大小,则在IB头部中排队的IB命令可以是具有在上下文存储器中指向的虚拟地址(VA)的“RDMA只写”命令。否则,如果用于给定上下文的盘读取数据的大小超过IB MTU的大小,则盘读取数据可以被分割成多个数据包。在IB头部中排队的用于每个数据包的命令可以是以下中的一个:“RDMA写第一个”命令、“RDMA写中间”命令和“RDMA写最后一个”命令,其中上下文存储器指向VA。取决于盘读取的长度,可能存在零个或多个以“RDMA写中间”命令排队的数据包。
如在图10中所示,起始PSN是P0,并且盘读取数据大于IB MTU。当第一个数据包(C1D1 1011)到达时,系统可以将“RDMA写第一个”命令连同PSN(P0)一起添加到数据包。此外,当下一个数据包(C1D2 1012)到达时,系统可以将“RDMA写中间”命令连同PSN(P1(P0+1))一起添加。然后,当第三个数据包(C2D1 1021)到达时,系统可以将“RDMA写第一个”命令连同PSN(P2(即,P1+1))一起添加到数据包。此外,当数据包(C2D2 1022)到达时,系统可以将“RDMA写最后一个”命令连同PSN(P3(即P2+1))一起添加到数据包。
在以上动作序列中存在一致性问题。添加到数据包C1D2 1012的IB命令是“RDMA写中间”命令。取决于盘读取的长度,系统可以期望添加到下一个数据包的命令为或者“RDMA写中间”命令或者为“RDMA写最后一个”命令。如在图10中所示,由于下一个数据包即C2D11021来自不同的上下文II 1020,因此FC/IB域1000可以将新的命令,即“RDMA写第一个”命令或“RDMA只写”命令添加到数据包(尽管PSN是正确的)。此外,当FC/IB域1000试图或者为了描述符取回或者为了执行用于另一个上下文的RC发送IOCB响应将RDMA读取请求排队时,会出现类似的问题。
为了解决这个问题,系统可以相应地更新与先前排队的数据包相关联的IB命令。例如,在FC/IB域1000接收到数据包C2D1 1021之后,用于C1D2 1012的IB命令即“RDMA写中间”1007可以被改变为“RDMA写最后一个”1008。
根据本发明的实施例,为了确保一致性,FC/IB域1000可以维护芯片上存储器1002来存储外部存储器1001上的排队的数据包1006的状态1009。
这种芯片上存储器1002可以在不同的方面是有利的。首先,可以确保只有当数据包已被完全排队并且与数据包相关联的IB命令已被更新时,如果有必要,读取逻辑才从外部存储器读出数据包(并且将数据包发送给主机)。其次,与先前排队的数据包相关联的IB命令可以相应地被更新,以便支持多个上下文。
例如,芯片上存储器1002可以是两比特宽(和64K深)。用于芯片上存储器1002中的条目的第一比特(例如比特0)可以指示IB命令是否需要被改变或更新,并且第二比特(例如比特1)可以指示在FC/IB域1000中的读取逻辑是否可以将排队的数据包从外部存储器1001中取回。
以下表1示出了当数据包序列到达时,存储在示例性芯片上存储器中的不同数据包状态。
表1
如在以上表1中所示,当第一数据包即C2D1被排队时,芯片上状态存储器是2'b00,其指示读取逻辑不能将这个数据包读出。这是因为系统可能在以后当来自其它上下文的数据包到达时必须改变这个数据包的命令。
当下一个数据包C2D2到来时,前一个数据包即C2D1的芯片上状态被改变为2′b10,其向读取逻辑指示数据包已被成功地排队并且已准备好被读出。在这种情况下不需要改变命令,因为C2D2来自同一上下文II(C2)。
此外,当第三数据包即C1D1到达时,用于C2D2的芯片上存储器的状态被改变为2′b11,其向读取逻辑指示数据包已被排队并且命令可能需要在读取侧被改变。读取逻辑可以读出数据包并且在将数据包发送出之前将命令从“RDMA写中间”改变为“RDMA写最后一个”。
图11示出了根据本发明的实施例的、用于利用单个存储器接口支持输入/输出(I/O)虚拟化的示例性流程图。如在图11中所示,在步骤1101,系统可以提供与网络架构上的服务器相关联的芯片,其中该芯片与包含多个数据包缓冲区的外部存储器相关联。此外,在步骤1102,系统可以在芯片上存储器中维护包含从物理主机总线适配器(HBA)接收到的盘读取数据的一个或多个数据包的状态。此外,在步骤1103,系统允许芯片将所述一个或多个数据包在外部存储器上的多个数据包缓冲区中排队、基于所述一个或多个数据包的状态从外部存储器中读出所述一个或多个数据包、并且将所述一个或多个数据包发送给网络架构上的服务器。
混合链表结构
根据本发明的实施例,系统可以使用混合链表结构来处理与虚拟主机总线适配器(vHBA)中的多个上下文相关联的入口流量。这种混合链表结构可以包括主链表和临时链表。
图12示出了根据本发明的实施例的、利用空闲缓冲区池来支持多个虚拟主机总线适配器(vHBA)的示图。如在图12中所示,I/O设备1200(例如表示FC/IB域1204的芯片)可以使用空闲缓冲区池1210来处理可能与不同的虚拟主机总线适配器(vHBA)(例如vHBA I-II1201-1202)相关联的入口流量1203。
此外,每个vHBA可以维护缓冲区指针的一个或多个链表,用于支持将从入口流量1203接收到的各种数据包存储在空闲缓冲区池1210中的数据包缓冲区中。例如,vHBA I1201可以维护主链表I 1211,而vHBA II 1202可以维护主链表II 1212。
图13示出了根据本发明的实施例的、利用混合链表结构来支持各种盘读取操作的示图。如在图13中所示,I/O设备1300(例如表示FC/IB域的芯片)可以在单个vHBA 1303中打开多个上下文(例如上下文A 1301和上下文B 1302),用于并行地执行多个盘读取操作。
根据本发明的实施例,FC/IB域可以在芯片上存储器中定义用于每个盘读取操作的上下文表。例如,当FC/IB域接收到用于上下文A 1301的盘读取数据时,FC/IB域可以在芯片上存储器1310中打开上下文表A 1311。此外,上下文表A 1311可以维护缓冲区指针的临时链表1321,缓冲区指针指向从空闲缓冲区池1320中分配的一个或多个数据包缓冲区。上下文表A 1311也可以维护用于给定事务的虚拟地址。
此外,当用于上下文A 1301的入口数据到来时,盘数据可以连同添加的IB头部和PSN号一起写入到外部SDRAM存储器中的空闲缓冲区池1320中。如在图13中所示,只有上下文存储器中的缓冲区指针的临时链表1321被更新,而用于给定vHBA的缓冲区指针的主链表1330保持不变。
根据本发明的实施例,可以打开多个上下文用于不同的盘读取操作。当用于新打开的上下文的盘读取数据到达时,系统可以从外部SDRAM存储器中读出用于先前打开的上下文的存储的数据,并且如果需要,则更新在上下文列表的末尾处的IB头部中的命令。例如,如果用于给定上下文的盘读取数据大于IB MTU,则在IB头部中排队的命令“RDMA写第一个”可以被改变为“RDMA只写”,并且如果在IB头部中排队的命令是“RDMA写中间”,则它可以被改变为“RDMA写最后一个”。
如在图13中所示,当FC/IB域从不同的上下文B 1302接收到数据时,临时链表1321可以合并到用于vHBA 1303的主链表1330。例如,用于vHBA 1303的主链表1330的尾指针可以被改变为临时链表1321的头指针,并且临时链表1321的尾指针可以变为主链表1330的新的尾指针。然后,用于新的上下文的数据可以与新的PSN一起写入到新的上下文存储器中,并且用于那个上下文的临时指针可以被相应地更新。
类似地,当系统需要在新的上下文中执行诸如“RDMA只写”命令、“RDMA写最后一个”命令、“只发送”命令、以及RDMA读取请求的命令时,先前打开的上下文可以被关闭并且临时链表1321可以合并到主链表1330中。
图14示出了根据本发明的实施例的、利用混合链表结构来避免队头阻塞的示图。如在图14中所示,当上下文A 1401被关闭并且用于vHBA 1403的主链表1430被更新之后,I/O设备1400(例如表示FC/IB域的芯片)可以在芯片上存储器1410中打开用于上下文B 1402的新的上下文表B 1412。此外,上下文表B 1412可以维护新的临时链表B 1422,该临时链表B 1422包含指向从空闲缓冲区池1420中分配的数据包缓冲区的缓冲区指针。
如在图14中所示,在系统可以避免其中在上下文B 1402中接收到的盘读取数据(或RDMA读取请求)的处理被在上下文A1401中接收到的盘读取数据的处理阻塞的队头阻塞之后,因此,用于给定vHBA中不同上下文的盘读取数据可以被并行处理。
图15示出了根据本发明的实施例的、用于利用混合链表结构来避免队头阻塞的示例性流程图。如在图5中所示,在步骤1501,系统可以提供包含与在网络环境中的一个或多个虚拟主机总线适配器(vHBA)相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向空闲缓冲区池中的一个或多个数据包缓冲区的缓冲区指针的主链表。此外,在步骤1502,系统可以在与输入/输出(I/O)设备相关联的芯片上存储器中定义上下文表,其中上下文表维护指向从空闲缓冲区池中为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表。然后,在步骤1503,系统可以允许I/O设备在该I/O设备从执行盘读取操作的物理主机总线适配器(HBA)中接收到盘读取数据时打开上下文表、更新缓冲区指针的临时链表、以及当上下文表被关闭时将缓冲区指针的临时链表合并到缓冲区指针的主链表中。
统一存储器结构
根据本发明的实施例,当盘读取数据来自HBA芯片时,系统可以在统一存储器结构中将盘读取数据存储在各种数据缓冲区中。
图16示出了根据本发明的实施例的、支持用于I/O设备的二维链表结构的示图。如在图16中所示,系统可以在空闲缓冲区池1600中使用两维链表1610来管理入口数据包缓冲区。二维链表1610可以包括多个条目,其中每个条目可以是超级块(例如超级块1601至1609)。
根据本发明的实施例,超级块1601至1609可以表示存储在连续存储器位置中的多个数据包。此外,每个超级块1601至1609可以在内部指向用于缓冲区管理的数据包缓冲区列表。因此,二维链表结构在芯片上资源利用率的角度看可以是非常高效的,并且系统可以在最大化缓冲的数据包的数量的同时,最小化芯片上链表存储器的大小。
例如,为了容纳各种大小的IB数据包(包括额外开销),二维链表1610可以包括8K个超级块。此外,每个超级块可以是可容纳八个数据包(每个具有8KB的大小)的64KB(512Kb)的大小。如在图16中所示,超级块1601可以包括八个数据包缓冲区,诸如数据包缓冲区1611至1618。
此外,二维链表1610允许FC/IB域存储针对IB域中不同QP的盘读取数据。如在图16中所示,FC/IB域可以使用不同的指针来访问二维链表1610中的各种超级块链表。例如,FC/IB域可以维护指向包括超级块1602、超级块1604和超级块1608的超级块链表的QP A头部指针1621(和/或QP A尾指针1622)。此外,FC/IB域芯片可以维护指向包括超级块1606、超级块1605和超级块1609的超级块链表的QP B头部指针1623(和/或QP B尾指针1624)。
根据本发明的实施例,系统可以通过动态地将二维混合链表1610与用于给定Infiniband(IB)RC QP连接的一维链表合并来支持外部DRAM存储器的高效使用。因此,系统可以避免在其中大小固定的超级块中存储小尺寸数据包而浪费存储器空间。
例如,FC/IB域可以向空闲缓冲区池1600查询执行盘读取请求的缓冲区。然后,如果在空闲缓冲区池1600中有足够的数据包缓冲区可用,则FC/IB域可以将盘读取请求IOCB提交(post)给物理HBA。由盘读取请求所请求的缓冲区的量可以在空闲缓冲区池中预留,并且不能被任何其它后续的请求使用,直到当前的上下文被FC/IB域释放为止。
此外,系统可以定义用于存储RDMA读取请求的缓冲区列表(例如4K缓冲区)。系统可以确保每当发出RDMA读取请求时,在外部存储器中保证的空间可用于RDMA读取请求并且RDMA读取请求不会被RDMA写操作阻塞。
如果只使用二维链表1610,则系统可能需要在存储器中预留64K(超级块的大小)*4K*128字节,以便提供跨128个队列对(或vHBA)共享的用于RDMA读取请求的保证的4K数据包缓冲区。这种方法会是浪费的,因为它明显大于8K(数据包缓冲区的大小)*4K*128字节的数据包缓冲区存储器使用。
图17示出了根据本发明的实施例的、支持I/O设备的高效存储器利用率的示图。如在图17中所示,I/O设备1700(例如表示FC/IB域的芯片)可以使用空闲缓冲区池1701来支持各种数据包的排队1730。空闲缓冲区池1701可以包括可包含超级块1711-1719的二维链表1710以及包括数据包缓冲区1721-1729的一维链表1720。这里,二维链表1710可以类似于如在图16中所示的二维链表1610。
根据本发明的实施例,不同类型的事务可以在空闲缓冲区池1701中排队。例如,可以使用这些事务来执行RDMA写命令1742和RDMA读取请求1741。
当数据包被排队1730时,基于事务的类型,空闲缓冲区可以或者从二维链表1710中或者从单个一维链表1720中进行分配。
此外,系统可以在芯片上维护链表控制结构1740,以维护各种缓冲的数据包的状态。例如,控制结构1740可以存储存储器超级块位置的头指针(例如具有13比特的SBLKHEAD)、在超级块中的数据包偏移位置的头指针(例如具有3比特的PKTHEAD)、用于存储器超级块位置的尾指针(例如具有13比特的SBLKTAIL)、用于超级块中的数据包偏移位置的尾指针(例如具有3比特的PKTTAIL)、以及指示数据包缓冲区是从二维链表还是一维链表进行分配的标志(例如具有1比特的LISTTYPE)。此外,控制结构1740可以基于QP/vHBA的数量存储深度信息,并且可以基于所需的控制信息存储宽度信息。
根据本发明的实施例,系统可以支持不同的排队方案。
如果排队的事务是用于RDMA写命令的,则系统可以从二维链表1710得到缓冲区或超级块。
否则,如果排队的事务是用于RDMA读取请求的,则当在为先前排队的事务分配的超级块中没有剩余数据包缓冲区时,系统可以从一维链表1720得到缓冲区。
另一方面,用于RDMA读取请求的排队的事务会在RDMA写操作正在进行时发生。如果数据包缓冲区可用,则系统可以在为RDMA写操作分配的超级块中的当前数据包位置处将RDMA读取请求排队。
此外,来自单链表1720的数据包缓冲区可以预留给特定的QP/vHBA。来自单链表1720的这个预留的缓冲区可以被RDMA写数据包或者被RDMA读取请求数据包使用。此外,系统可以在控制存储器中标记LISTTYPE字段,使得离队逻辑和/或读取逻辑知道在单链表1720中存在一个排队的数据包。
因此,系统可以实现高效的数据包处理,并且可以避免浪费外部存储器。
图18示出了根据本发明的实施例的、用于支持计算环境中的高效数据包处理的示例性流程图。如在图18中所示,在步骤1801,系统可以在存储器中提供空闲缓冲区池,其中空闲缓冲区池包含二维链表和一维链表。此外,在步骤1802,系统可以允许二维链表的每个条目包含在连续存储器位置中的多个数据包缓冲区,并且一维链表的每个条目包含单个数据包缓冲区。然后,在步骤1803,I/O设备可以使用空闲缓冲区池来存储从物理主机总线适配器(HBA)接收到的盘读取数据。
本发明的实施例包括用于支持计算环境中的I/O虚拟化的系统,包括:包含与网络环境中的一个或多个虚拟主机总线适配器(vHBA)相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向空闲缓冲区池中的一个或多个数据包缓冲区的缓冲区指针的主链表;以及用于在与输入/输出(I/O)设备相关联的芯片上存储器中定义的上下文表的装置,其中上下文表维护指向从空闲缓冲区池为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表;以及其中I/O设备操作来在其从执行盘读取操作的物理主机总线适配器(HBA)接收到盘读取数据时打开上下文表、更新缓冲区指针的临时链表、并且当上下文表被关闭时将缓冲区指针的临时链表合并到缓冲区指针的主链表中。
如以上所提供的系统,其中I/O设备允许InfiniBand(IB)架构上的服务器发起盘读取操作。
如以上所提供的系统,其中I/O设备将IB头部和序列号添加到从物理HBA接收到的每个数据包。
如以上所提供的系统,其中当完整消息可用时或者当IB最大传输单元(MTU)数据包可用时,I/O设备操作来读出存储在外部存储器中的盘读取数据。
如以上所提供的系统,其中每个虚拟HBA在IB域中维护单独的数据包序列号(PSN)空间。
如以上所提供的系统,其中I/O设备为与所述vHBA相关联的不同盘读取操作维护不同的上下文表。
如以上所提供的系统,其中上下文表在I/O设备打开与虚拟HBA相关联的另一个上下文表时被关闭。
如以上所提供的系统,其中所述另一个上下文表维护指向从空闲缓冲区池中分配的一个或多个数据包缓冲区的缓冲区指针的新的临时链表。
如以上所提供的系统,其中当虚拟HBA从另一个盘读取操作接收到数据时,I/O设备打开另一个上下文表。
如以上所提供的系统,其中当虚拟HBA接收作为RDMA只写命令、RDMA写最后一个命令、只发送命令和RDMA读取请求命令中的一个的命令时,I/O设备打开另一个上下文表。
本发明的实施例包括用于支持计算环境中的高效数据包处理的方法,包括:提供包含与网络环境中的一个或多个虚拟主机总线适配器(vHBA)相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向空闲缓冲区池中的一个或多个数据包缓冲区的缓冲区指针的主链表;在与输入/输出(I/O)设备相关联的芯片上存储器中定义上下文表,其中上下文表维护指向从空闲缓冲区池中为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表;以及允许I/O设备在该I/O设备从执行盘读取操作的物理主机总线适配器(HBA)接收到盘读取数据时打开上下文表、更新缓冲区指针的临时链表、以及当上下文表被关闭时将缓冲区指针的临时链表合并到缓冲区指针的主链表中。
如以上所提供的方法,允许InfiniBand(IB)架构上的服务器发起盘读取操作。
如以上所提供的方法,还包括将IB头部和序列号添加到从物理HBA接收到的每个数据包。
如以上所提供的方法,还包括当完整消息可用时或者当IB最大传输单元(MTU)数据包可用时,读出存储在外部存储器中的盘读取数据。
如以上所提供的方法,还包括配置每个虚拟HBA,以在IB域中维护单独的数据包序列号(PSN)空间。
如以上所提供的方法,还包括为与所述vHBA相关联的不同盘读取操作维护不同的上下文表。
如以上所提供的方法,还包括在I/O设备打开与虚拟HBA相关联的另一个上下文表时关闭上下文表。
如以上所提供的方法,还包括配置所述另一个上下文表,以维护指向从空闲缓冲区池中分配的一个或多个数据包缓冲区的缓冲区指针的新的临时链表。
如以上所提供的方法,还包括当虚拟HBA从另一个盘读取操作接收到数据或者接收到RDMA只写命令、RDMA写最后一个命令、只发送命令和RDMA读取请求命令中的一个命令时,打开另一个上下文表。
本发明的实施例包括其上存储有指令的非临时性机器可读存储介质,所述指令在被执行时,使得系统执行包括以下各项的步骤:提供包含与网络环境中的一个或多个虚拟主机总线适配器(vHBA)相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向空闲缓冲区池中的一个或多个数据包缓冲区的缓冲区指针的主链表;在与输入/输出(I/O)设备相关联的芯片上存储器中定义上下文表,其中上下文表维护指向从空闲缓冲区池中为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表;以及允许I/O设备在该I/O设备从执行盘读取操作的物理主机总线适配器(HBA)接收到盘读取数据时打开上下文表、更新缓冲区指针的临时链表、以及当上下文表被关闭时将缓冲区指针的临时链表合并到缓冲区指针的主链表中。
本发明的实施例包括用于支持计算环境中的输入/输出(I/O)虚拟化的系统,包括:存储器中的空闲缓冲区池,其中空闲缓冲区池包含二维链表和一维链表,其中二维链表的每个条目包含在连续存储器位置中的多个数据包缓冲区,并且一维链表的每个条目包含单个数据包缓冲区,以及其中I/O设备操作来使用空闲缓冲区池存储从物理主机总线适配器(HBA)接收到的盘读取数据。
如以上所提供的系统,其中I/O设备允许InfiniBand(IB)架构上的服务器发起盘读取操作。
如以上所提供的系统,其中I/O设备将一个或多个IB头部和序列号添加到从物理HBA接收到的每个数据包。
如以上所提供的系统,其中当完整消息可用时或者当IB最大传输单元(MTU)数据包可用时,I/O设备操作来读出存储在外部存储器中的盘读取数据。
如以上所提供的系统,其中I/O设备支持一个或多个虚拟主机总线适配器(vHBA),其中每个vHBA在IB域中维护单独的数据包序列号(PSN)空间。
如以上所提供的系统,其中如果数据包执行远程直接存储器存取(RDMA)写事务或RDMA读取请求事务中的一个,则I/O设备操作来将数据包在外部存储器中排队。
如以上所提供的系统,其中如果数据包的排队是为了RDMA写,则I/O设备操作来从二维链表中分配超级块。
如以上所提供的系统,其中如果数据包的排队是为了RDMA读取请求事务的并且在超级块中剩余一个或多个数据包缓冲区,则I/O设备操作来从一维链表中分配数据包缓冲区。
如以上所提供的系统,其中如果排队事务是为了RDMA读取请求事务的并且在超级块中没有剩余数据包缓冲区,则I/O设备操作来从二维链表中分配超级块。
如以上所提供的系统,其中I/O设备操作来在简单链表中为所述vHBA预留数据包缓冲区。
本发明的实施例包括用于支持网络环境中的高效数据包处理的方法,包括:在存储器中提供空闲缓冲区池,其中空闲缓冲区池包含二维链表和一维链表;允许二维链表的每个条目包含在连续存储器位置中的多个数据包缓冲区,并且允许一维链表中的每个条目包含单个数据包缓冲区;以及经由I/O设备利用空闲缓冲区池来存储从物理主机总线适配器(HBA)接收到的盘读取数据。
如以上所提供的方法,其中允许InfiniBand(IB)架构上的服务器发起盘读取操作。
如以上所提供的方法,还包括将一个或多个IB头部和序列号添加到从物理HBA接收到的每个数据包。
如以上所提供的方法,还包括当完整消息可用时或者当IB最大传输单元(MTU)数据包可用时,读出存储在外部存储器中的盘读取数据。
如以上所提供的方法,还包括支持一个或多个虚拟主机总线适配器(vHBA),其中每个vHBA在IB域中维护单独的数据包序列号(PSN)空间。
如以上所提供的方法,还包括如果数据包执行远程直接存储器存取(RDMA)写事务或RDMA读取请求事务中的一个,则将数据包在外部存储器中排队。
如以上所提供的方法,还包括如果数据包的排队是为了RDMA写,则从二维链表中分配超级块。
如以上所提供的方法,还包括如果数据包的排队是为了RDMA读取请求事务的并且在超级块中剩余一个或多个数据包缓冲区,则从一维链表中分配数据包缓冲区。
如以上所提供的方法,还包括如果排队事务是为了RDMA读取请求事务的并且在超级块中没有剩余数据包缓冲区,则从二维链表中分配超级块,以及在简单链表中为所述vHBA预留数据包缓冲区。
本发明的实施例包括其上存储有指令的非临时性机器可读存储介质,所述指令在被执行时,使得系统执行包括以下各项的步骤:在存储器中提供空闲缓冲区池,其中空闲缓冲区池包含二维链表和一维链表;允许二维链表的每个条目包含在连续存储器位置中的多个数据包缓冲区,并且允许一维链表的每个条目包含单个数据包缓冲区;以及经由I/O设备利用空闲缓冲区池来存储从物理主机总线适配器(HBA)接收到的盘读取数据。
本发明的许多特征可以在硬件、软件、固件或其组合中、利用硬件、软件、固件或其组合、或者在硬件、软件、固件或其组合的帮助下执行。因此,本发明的特征可以利用处理系统(例如,包括一个或多个处理器)来实现。
本发明的特征可以在计算机程序产品中、利用计算机程序产品、或者在计算机程序产品的帮助下执行,其中计算机程序产品是其上/其中存储有可用来编程处理系统以执行本文所呈现的任何特征的指令的存储介质或计算机可读介质。存储介质可以包括但不限于,任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微驱动器、以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪存存储器设备、磁或光卡、纳米系统(包括分子存储器IC)、或适于存储指令和/或数据的任何类型的媒体或设备。
存储在任何一种机器可读介质中,本发明的特征可以被结合到软件和/或固件中,用于控制处理系统的硬件,并且用于使处理系统能够利用本发明的结果与其它机制交互。这种软件或固件可以包括但不限于,应用代码、设备驱动程序、操作系统和执行环境/容器。
本发明的特征也可以利用例如诸如专用集成电路(ASIC)的硬件部件在硬件中实现。实现硬件状态机使得执行本文所描述的功能对相关领域的技术人员将是显而易见的。
此外,本发明可以方便地利用一个或多个常规的通用或专用数字计算机、计算设备、机器或微处理器来实现,其中包括一个或多个处理器、存储器和/或根据本公开内容的教导编程的计算机可读存储介质。适当的软件编码可以容易地由熟练的程序员基于本公开内容的教导来准备,如对软件领域的技术人员将显而易见的。
虽然以上已经描述了本发明的各种实施例,但是应该理解,它们已作为例子而不是限制给出。对相关领域的技术人员来说,将很显然,在不背离本发明的精神和范围的情况下,其中可以做出各种形式和细节上的变化。
本发明已经借助说明具体功能及其关系的执行的功能构建块进行了描述。这些功能构建块的边界在本文中通常是为了方便描述而任意定义的。可以定义可替代的边界,只要具体的功能及其关系被适当地执行。任何这种可替代的边界因此在本发明的范围和精神之内。
本发明的以上描述是为了说明和描述的目的提供。它不是穷尽的或者要把本发明限定到所公开的精确形式。本发明的广度和范围不应该由任何上述示例性实施例来限制。许多修改和变化对本领域技术人员来说将显而易见。修改和变化包括所公开特征的任何相关组合。实施例的选择与描述是为了最好地解释本发明的原理及其实践应用,从而使本领域其他技术人员能够理解本发明用于各种实施例并且可以进行适于预期特定用途的各种修改。本发明的范围要由以下权利要求及其等价物来定义。

Claims (20)

1.一种用于支持计算环境中的I/O虚拟化的系统,包括:
包含与所述计算环境中的一个或多个虚拟主机总线适配器vHBA相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向所述空闲缓冲区池中的一个或多个数据包缓冲区的缓冲区指针的主链表;
在与输入/输出I/O设备相关联的芯片上存储器中定义的上下文表,其中所述上下文表维护指向从所述空闲缓冲区池为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表;及
其中所述I/O设备操作来:
当I/O设备从执行盘读取操作的物理主机总线适配器HBA接收到盘读取数据时,打开所述上下文表,
更新所述缓冲区指针的临时链表,及
当所述上下文表被关闭时,将所述缓冲区指针的临时链表合并到所述缓冲区指针的主链表中。
2.如权利要求1所述的系统,其中:
所述I/O设备允许InfiniBand(IB)架构上的服务器发起盘读取操作。
3.如权利要求1或2所述的系统,其中:
所述I/O设备将IB头部和序列号添加到从物理HBA接收到的每个数据包。
4.如权利要求1或2所述的系统,其中:
当完整消息可用时或者当IB最大传输单元(MTU)数据包可用时,所述I/O设备操作来读出存储在外部存储器中的盘读取数据。
5.如权利要求1或2所述的系统,其中:
每个vHBA在IB域中维护单独的数据包序列号(PSN)空间。
6.如任何权利要求1或2所述的系统,其中:
所述I/O设备为与所述vHBA相关联的不同盘读取操作维护不同的上下文表。
7.如权利要求1或2所述的系统,其中:
在所述I/O设备打开与所述vHBA相关联的另一个上下文表时所述上下文表被关闭。
8.如权利要求7所述的系统,其中:
所述另一个上下文表维护指向从所述空闲缓冲区池中分配的一个或多个数据包缓冲区的缓冲区指针的新的临时链表。
9.如权利要求7所述的系统,其中:
当vHBA从另一个盘读取操作接收到数据时,所述I/O设备打开另一个上下文表。
10.如权利要求7所述的系统,其中:
当vHBA接收到作为RDMA只写命令、RDMA写最后一个命令、只发送命令和RDMA读取请求命令中的一个的命令时,所述I/O设备打开另一个上下文表。
11.一种用于支持计算环境中的高效数据包处理的方法,包括:
提供包含与所述计算环境中的一个或多个虚拟主机总线适配器vHBA相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向所述空闲缓冲区池中的一个或多个数据包缓冲区的缓冲区指针的主链表;
在与输入/输出I/O设备相关联的芯片上存储器中定义上下文表,其中所述上下文表维护指向从所述空闲缓冲区池中为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表;及
允许所述I/O设备操作来:
当所述I/O设备从执行盘读取操作的物理主机总线适配器HBA接收到盘读取数据时,打开所述上下文表,
更新所述缓冲区指针的临时链表,及
当所述上下文表被关闭时,将所述缓冲区指针的临时链表合并到所述缓冲区指针的主链表中。
12.如权利要求11所述的方法,还包括:
允许InfiniBand(IB)架构上的服务器发起盘读取操作。
13.如权利要求11或12所述的方法,还包括:
将IB头部和序列号添加到从物理HBA接收到的每个数据包。
14.如权利要求11或12所述的方法,还包括:
当完整消息可用时或者当IB最大传输单元(MTU)数据包可用时,读出存储在外部存储器中的盘读取数据。
15.如权利要求11或12所述的方法,还包括:
配置每个vHBA,以在IB域中维护单独的数据包序列号(PSN)空间。
16.如权利要求11或12所述的方法,还包括:
为与所述vHBA相关联的不同盘读取操作维护不同的上下文表。
17.如权利要求11或12所述的方法,还包括:
在所述I/O设备打开与所述vHBA相关联的另一个上下文表时关闭所述上下文表。
18.如权利要求17所述的方法,还包括:
配置所述另一个上下文表,以维护指向从所述空闲缓冲区池中分配的一个或多个数据包缓冲区的缓冲区指针的新的临时链表。
19.如权利要求17所述的方法,还包括:
当vHBA从另一个盘读取操作接收到数据或者接收到RDMA只写命令、RDMA写最后一个命令、只发送命令和RDMA读取请求命令中的一个命令时,打开另一个上下文表。
20.一种其上存储有指令的非临时性机器可读存储介质,所述指令在被执行时,使得系统执行包括以下各项的步骤:
提供包含与网络环境中的一个或多个虚拟主机总线适配器vHBA相关联的多个数据包缓冲区的空闲缓冲区池,其中每个所述vHBA维护指向所述空闲缓冲区池中的一个或多个数据包缓冲区的缓冲区指针的主链表;
在与输入/输出I/O设备相关联的芯片上存储器中定义上下文表,其中所述上下文表维护指向从所述空闲缓冲区池中为盘读取操作分配的一个或多个数据包缓冲区的缓冲区指针的临时链表;及
允许所述I/O设备来:
当所述I/O设备从执行盘读取操作的物理主机总线适配器HBA接收到盘读取数据时,打开所述上下文表,
更新所述缓冲区指针的临时链表,及
当所述上下文表被关闭时,将所述缓冲区指针的临时链表合并到所述缓冲区指针的主链表中。
CN201480063821.8A 2013-12-04 2014-10-21 用于支持计算环境中的i/o虚拟化的系统和方法 Active CN105793835B (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US14/096,987 2013-12-04
US14/097,009 2013-12-04
US14/097,009 US9311044B2 (en) 2013-12-04 2013-12-04 System and method for supporting efficient buffer usage with a single external memory interface
US14/096,949 US9104637B2 (en) 2013-12-04 2013-12-04 System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface
US14/096,949 2013-12-04
US14/096,987 US8898353B1 (en) 2013-12-04 2013-12-04 System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface
PCT/US2014/061640 WO2015084506A1 (en) 2013-12-04 2014-10-21 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

Publications (2)

Publication Number Publication Date
CN105793835A CN105793835A (zh) 2016-07-20
CN105793835B true CN105793835B (zh) 2018-09-07

Family

ID=51894217

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480063821.8A Active CN105793835B (zh) 2013-12-04 2014-10-21 用于支持计算环境中的i/o虚拟化的系统和方法

Country Status (5)

Country Link
US (1) US9311044B2 (zh)
EP (1) EP3077914B1 (zh)
JP (3) JP6492083B2 (zh)
CN (1) CN105793835B (zh)
WO (1) WO2015084506A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160026605A1 (en) * 2014-07-28 2016-01-28 Emulex Corporation Registrationless transmit onload rdma
CN109669788A (zh) * 2018-12-10 2019-04-23 西安微电子技术研究所 面向直接内存访问互连通信的多核芯片的mpi实现方法
EP3942749A4 (en) 2019-05-23 2023-06-07 Hewlett Packard Enterprise Development LP OPTIMIZED ADAPTIVE ROUTING TO REDUCE THE NUMBER OF JUMPS
CN112463654A (zh) * 2019-09-06 2021-03-09 华为技术有限公司 一种带预测机制的cache实现方法
CN110968530B (zh) * 2019-11-19 2021-12-03 华中科技大学 一种基于非易失性内存的键值存储系统和内存访问方法
CN113608686B (zh) * 2021-06-30 2023-05-26 苏州浪潮智能科技有限公司 一种远程内存直接访问方法及相关装置
CN117389733B (zh) * 2023-10-25 2024-04-26 无锡众星微系统技术有限公司 一种减少开关链开销的sas i/o调度方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682553A (en) * 1995-04-14 1997-10-28 Mitsubishi Electric Information Technology Center America, Inc. Host computer and network interface using a two-dimensional per-application list of application level free buffers
CN102609215A (zh) * 2012-04-11 2012-07-25 成都市华为赛门铁克科技有限公司 数据处理方法及装置
US8458306B1 (en) * 2010-08-25 2013-06-04 Oracle International Corporation Coalescing change notifications in an I/O virtualization system

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030037096A1 (en) 1995-04-07 2003-02-20 Ruey Kao Method and apparatus for the management of queue pointers by multiple processors in a digital communications network
FI991334A (fi) 1999-06-10 2000-12-11 Nokia Networks Oy Menetelmä kaksisuuntaisen jonon toteuttamiseksi muistissa ja muistijär jestely
US6594712B1 (en) * 2000-10-20 2003-07-15 Banderacom, Inc. Inifiniband channel adapter for performing direct DMA between PCI bus and inifiniband link
US7613821B1 (en) 2001-07-16 2009-11-03 Advanced Micro Devices, Inc. Arrangement for reducing application execution based on a determined lack of flow control credits for a network channel
US20030145012A1 (en) 2002-01-31 2003-07-31 Kurth Hugh R. Shared resource virtual queues
JP4088611B2 (ja) * 2004-01-30 2008-05-21 インターナショナル・ビジネス・マシーンズ・コーポレーション シングル・チップ・プロトコル・コンバーター
US8145785B1 (en) 2004-02-13 2012-03-27 Habanero Holdings, Inc. Unused resource recognition in real time for provisioning and management of fabric-backplane enterprise servers
US9264384B1 (en) 2004-07-22 2016-02-16 Oracle International Corporation Resource virtualization mechanism including virtual host bus adapters
US7386637B2 (en) 2005-02-25 2008-06-10 International Business Machines Corporation System, method, and computer program product for a fully trusted adapter validation of incoming memory mapped I/O operations on a physical adapter that supports virtual adapters or virtual resources
US20060193327A1 (en) 2005-02-25 2006-08-31 International Business Machines Corporation System and method for providing quality of service in a virtual adapter
US20070136554A1 (en) 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US7783788B1 (en) 2006-04-28 2010-08-24 Huawei Technologies Co., Ltd. Virtual input/output server
US20080059686A1 (en) 2006-08-31 2008-03-06 Keith Iain Wilkinson Multiple context single logic virtual host channel adapter supporting multiple transport protocols
US7782869B1 (en) 2007-11-29 2010-08-24 Huawei Technologies Co., Ltd. Network traffic control for virtual device interfaces
US7711789B1 (en) 2007-12-07 2010-05-04 3 Leaf Systems, Inc. Quality of service in virtual computing environments
JP4972670B2 (ja) 2009-06-05 2012-07-11 株式会社日立製作所 仮想計算機システム、そのアクセス制御方法及び通信装置
JP4990940B2 (ja) 2009-07-06 2012-08-01 株式会社日立製作所 計算機装置及びパス管理方法
US9973446B2 (en) * 2009-08-20 2018-05-15 Oracle International Corporation Remote shared server peripherals over an Ethernet network for resource virtualization
US8340120B2 (en) 2009-09-04 2012-12-25 Brocade Communications Systems, Inc. User selectable multiple protocol network interface device
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US8935707B2 (en) * 2011-05-16 2015-01-13 Oracle International Corporation System and method for providing a messaging application program interface
US9021155B2 (en) 2011-06-01 2015-04-28 International Business Machines Corporation Fibre channel input/output data routing including discarding of data transfer requests in response to error detection
US8751701B2 (en) * 2011-12-26 2014-06-10 Mellanox Technologies Ltd. Host channel adapter with pattern-type DMA
US8898353B1 (en) 2013-12-04 2014-11-25 Oracle International Corporation System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682553A (en) * 1995-04-14 1997-10-28 Mitsubishi Electric Information Technology Center America, Inc. Host computer and network interface using a two-dimensional per-application list of application level free buffers
US8458306B1 (en) * 2010-08-25 2013-06-04 Oracle International Corporation Coalescing change notifications in an I/O virtualization system
CN102609215A (zh) * 2012-04-11 2012-07-25 成都市华为赛门铁克科技有限公司 数据处理方法及装置

Also Published As

Publication number Publication date
US20150154004A1 (en) 2015-06-04
JP6757808B2 (ja) 2020-09-23
JP2019091482A (ja) 2019-06-13
JP6492083B2 (ja) 2019-03-27
JP6763984B2 (ja) 2020-09-30
CN105793835A (zh) 2016-07-20
EP3077914A1 (en) 2016-10-12
JP2017501492A (ja) 2017-01-12
JP2019091483A (ja) 2019-06-13
EP3077914B1 (en) 2018-12-26
US9311044B2 (en) 2016-04-12
WO2015084506A1 (en) 2015-06-11

Similar Documents

Publication Publication Date Title
CN105793835B (zh) 用于支持计算环境中的i/o虚拟化的系统和方法
US9323560B2 (en) Interpreting I/O operation requests from pageable guests without host intervention
US10095526B2 (en) Technique for improving performance in multi-threaded processing units
US9619177B2 (en) Memory system including non-volatile memory, buffer memory, and controller controlling reading data from non-volatile memory
CN104871493B (zh) 用于高性能计算网络中的通信信道故障切换的方法和设备
US9405550B2 (en) Methods for the transmission of accelerator commands and corresponding command structure to remote hardware accelerator engines over an interconnect link
US10380058B2 (en) Processor core to coprocessor interface with FIFO semantics
TW200406672A (en) Free list and ring data structure management
CA2706737A1 (en) A multi-reader, multi-writer lock-free ring buffer
US9842008B2 (en) Cache affinity and processor utilization technique
CN103262021A (zh) 用于网络处理器的缓冲器管理方案
US10152275B1 (en) Reverse order submission for pointer rings
WO2016202120A1 (zh) 一种队列存储空间管理方法及装置、计算机存储介质
CN105408875B (zh) 在存储器接口上的分布式过程执行和文件系统
CN109388338A (zh) 云计算环境中的基于NVMe的存储系统的混合框架
US20210019261A1 (en) Memory cache-line bounce reduction for pointer ring structures
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
US20180052659A1 (en) Sending and receiving data between processing units
US9697060B2 (en) Reserving space in a mail queue
US9288163B2 (en) Low-latency packet receive method for networking devices
US8898353B1 (en) System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface
US20230054696A1 (en) User-level services for multitenant isolation
CN104769553A (zh) 用于支持集群中的工作共享复用的系统和方法
CN109426562A (zh) 优先级加权轮转调度器
US9104637B2 (en) System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant