CN109478171A - 提高openfabrics环境中的吞吐量 - Google Patents
提高openfabrics环境中的吞吐量 Download PDFInfo
- Publication number
- CN109478171A CN109478171A CN201780029882.6A CN201780029882A CN109478171A CN 109478171 A CN109478171 A CN 109478171A CN 201780029882 A CN201780029882 A CN 201780029882A CN 109478171 A CN109478171 A CN 109478171A
- Authority
- CN
- China
- Prior art keywords
- data
- header
- buffer area
- written
- placement information
- 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.)
- Granted
Links
Classifications
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
- G06F2213/2806—Space or buffer allocation for DMA transfers
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 Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文公开了用于提高OpenFabrics和远程直接存储器存取(RDMA)计算环境中的吞吐量的系统、方法和过程。接收数据和标头。标识要在其中写入数据和标头的缓冲区。基于每个缓冲区的大小、数据的页面边界对齐以及标头的标头对齐来确定用于数据和标头的放置信息。使用放置信息将数据和标头写入缓冲区。在此类计算环境中,可以通过在倒数第二缓冲区中将数据写在页面边界上并且将标头写在标头边界上来提高吞吐量。
Description
技术领域
本公开涉及吞吐量。具体地讲,本公开涉及提高OpenFabrics计算环境中的吞吐量。
相关技术描述
OpenFabrics Enterprise Distribution(OFEDTM)是用于远程直接存储器存取(RDMA)和内核旁路应用程序的开源计算技术。OFED可以在需要高效网络、存储连接和并行计算的计算环境中使用。OFED提供内核级驱动器、RDMA发送/接收操作、并行消息传递(MPI)服务、操作系统(OS)的内核旁路以及内核和用户级应用程序编程接口(API)。因此,OFED可用于需要高效计算、线速消息传递、微秒延迟以及存储和文件系统的快速输入/输出(I/O)的应用程序。
RDMA涉及从一个计算系统的存储器进入另一计算系统的存储器的直接存储器存取(DMA),而不涉及计算系统的OS。除其他功能之外,RDMA还提供远程直接存储器存取、异步工作队列和内核旁路。RDMA实现了增加的吞吐量以及低延迟。
OFED API可以接受输入参数(例如,以标头和一个或多个数据分组的形式)。因为标头通常较小(例如,与数据相比),因此合并数据和标头以使RDMA写入的数量最小化是有效的。然而,合并数据和标头同时保持数据页面边界对齐可能引起线上浪费(例如,通过网络发送或传送的数据的量)。
发明内容
本文公开了用于提高OpenFabrics计算环境中的吞吐量的方法、系统和过程。一种这样的方法涉及接收数据和标头,以及标识要在其中写入数据和标头的缓冲区。至少部分地基于每个缓冲区的大小、数据的页面边界对齐以及标头的标头对齐来确定用于数据和标头的放置信息。然后,使用放置信息来将数据和标头写入一个或多个缓冲区。
在此示例中,将数据写在页面边界上,并且将标头写在标头边界上。在某些实施方案中,使用放置信息导致:利用最小数量的缓冲区;以及当数据被写入最小数量的缓冲区时,该数据是页面边界对齐的;并且使线上浪费最少(或为零)。放置信息包括用于将数据和标头写入倒数第二缓冲区的指令。
在一些实施方案中,通过基于放置信息将包含在多个源缓冲区中的标头和数据映射到一个(或多个)目标缓冲区来将标头和数据合并(组合)到远程直接存储器存取(RDMA)写入中。将RDMA写入(其包括并伴有包含元数据的32位数据空间)连同放置信息一起发送或传输到目标。
在其他实施方案中,如果数据不能在最小数量的缓冲区中页面边界对齐,则可以选择一个或多个附加缓冲区。在此示例中,缓冲区包括多个目标缓冲区,并且最小数量的缓冲区包括一个或多个目标缓冲区。
以上内容是概述,因此必然包含对细节的简化、概括和省略;因此本领域的技术人员将会理解,该概述仅是说明性的,并不意图以任何方式进行限制。如由权利要求单独定义的那样,本公开的其他方面、特征和优点将在以下阐述的非限制性详细描述中变得显而易见。
附图说明
通过参考附图,可以更好地理解本公开,并且其多个目的和特征对于本领域的技术人员而言是显而易见的。
图1是根据本公开的一个实施方案的OFED计算系统的框图。
图2是根据本公开的一个实施方案的实现OFED API的源计算系统的框图。
图3A是根据本公开的一个实施方案的未合并的数据单元和标头的框图。
图3B是根据本公开的一个实施方案的在缓冲区的起点写入的标头的框图。
图3C是根据本公开的一个实施方案的紧接在数据之后写入的标头的框图。
图3D是根据本公开的一个实施方案的由OFED API提供的32位数据空间的框图。
图3E是根据本公开的一个实施方案的在对齐的末尾写入的标头的框图。
图4A是根据本公开的一个实施方案的在倒数第二缓冲区中在对齐的末尾写入的标头的框图。
图4B是根据本公开的一个实施方案的在不存在附加缓冲区的情况下在对齐的末尾写入的标头的框图。
图4C是根据本公开的一个实施方案的写入倒数第二缓冲区的标头的框图。
图5A是示出根据本公开的一个实施方案的用于用数据和标头填充缓冲区的过程的流程图。
图5B是示出根据本公开的一个实施方案的用于组合标头和数据的过程的流程图。
图6是示出根据本公开的一个实施方案的用于确定标头和数据的放置/映射信息的过程的流程图。
图7是示出根据本公开的一个实施方案的用于使用RDMA生成和传输数据和标头的过程的流程图。
图8是根据本公开的一个实施方案的计算系统的框图,示出了如何在软件中实现某些模块。
图9是根据本公开的一个实施方案的联网系统的框图,示出了各种设备可如何经由网络进行通信。
虽然本公开容许各种修改,但是在附图和详细描述中作为示例提供了本公开的特定实施方案。附图和详细描述并非旨在将本公开限制于所公开的特定形式。相反,意图是覆盖落入由所附权利要求书定义的本公开的精神和范围内的所有修改、等同物和替代物。
具体实施方式
介绍
在某些计算环境中,两个(或更多个)计算系统之间的数据传送可以涉及将数据和伴随标头(以及其他元数据)从一个计算系统的存储器(例如,从多个源缓冲区)直接发送到另一计算系统的存储器(例如,到一个或多个目标缓冲区)。因为标头通常较小(例如,1k),因此仅执行写入操作以将标头从一个计算系统的存储器传送到另一计算系统的存储器是低效的,更不用说是资源密集型的。
因此,合并(或组合)数据和标头以减少所执行的写入操作的数量并提高应用程序吞吐量可能是有利的。作为合并的一部分,可以将包含在多个源缓冲区中的数据和标头映射到单个目标缓冲区(或多个目标缓冲区)。然后,作为单个写入操作的一部分,可以将该放置(或映射)信息连同数据和标头一起从源缓冲区传输到一个或多个目标缓冲区。
其中可以有利地使用上述方法的系统的示例是实现Open Fabrics EnterpriseDistribution(OFEDTM)(或OpenFabrics Software(OFS))的系统。OFED是用于远程直接存储器存取(RDMA)和内核旁路应用程序的开源软件。OFED可以在需要高效网络、存储连接和并行计算的计算环境中实现。除其他特征之外,OFED还提供内核级驱动器、面向信道的RDMA和发送/接收操作、操作系统(OS)的内核旁路以及内核和用户级应用程序编程接口(API)(例如,用于RDMA传送的OFED API)。OFED还提供用于并行消息传递(MPI)、套接字数据交换(例如,会话描述协议(SDP))、网络附加存储(NAS)和存储区域网络(SAN)存储以及文件系统的服务。
RDMA涉及从一个计算系统(例如,源计算系统)的存储器进入另一计算系统(例如,目标计算系统)的存储器的直接存储器存取(DMA),而不涉及目标计算系统的OS。例如,源计算系统的网络适配器可以向目标计算系统的网络适配器发送消息,所述消息允许目标计算系统的网络适配器向(或从)目标计算系统直接存取数据。
RDMA中的消息可以包含至少两种类型的消息。第一类型为RDMA写入。RDMA写入包括地址和要在该地址处放置(或写入)的数据。RDMA写入允许接收RDMA写入的网络适配器在指定地址处写入(或放置)所提供的数据。第二类型为RDMA读出。RDMA读出包括地址和长度。RDMA读出允许网络适配器生成回复,该网络适配器接收RDMA读出,该回复指示在所请求的地址处发送回数据。在RDMA中,这两种类型的消息都为“单边的”,所述消息由接收它们的网络适配器处理,而不涉及计算系统上的接收消息的中央处理单元(CPU)。
在某些计算系统中,可以经由异步接口(也称为“verbs”接口)来访问网络适配器。为了使用网络适配器(例如,为了执行RDMA操作),可以创建称为队列对(或QP)的对象。QP涉及一对工作队列(发送队列和接收队列),以及完成队列(CQ)。可以将RDMA操作发布到工作队列(例如,作为请求)。然后,同步执行RDMA操作,并且当完成时,网络适配器将工作完成信息添加到CQ的末尾。然后,可以从CQ检索完成信息以确定哪些请求已经完成。
以这种方式异步操作使得在RDMA计算环境中的计算和通信更容易重叠。应当指出的是,除单边RDMA操作之外,启用了RDMA的网络适配器还支持“双边”发送/接收操作。此外,应当理解,RDMA计算环境中的网络适配器还可以允许用户空间进程利用硬件直接执行快速路径操作(例如,发布工作请求和检索工作完成)而不涉及内核(从而节省与系统调用开销相关联的时间)。因此,RDMA允许高吞吐量和低延迟联网(例如,这在并行计算集群中特别有用)。
如先前所指出的,OFED为RDMA数据传送提供API。如果OFED API用于RDMA数据传送,则客户端的消息将包括标头和一个或多个数据分组。因为标头的大小与数据的大小相比通常较小,所以独立地写入数据和标头是无效的(例如,作为两个单独的RDMA写入)。可以合并(或组合)数据和标头(例如,作为单个RDMA写入的一部分)以使RDMA写入的总数减少。
作为每个RDMA写入的一部分,OFED API还提供32位数据空间以供私人使用(也称为32位直接数据或私有数据)。除与标头本身相关联的信息(例如,指示标头在标头边界上的位置的标头偏移)之外,该32位数据空间还可以用于存储缓冲区位置信息以及与RDMA写入相关联的其他元数据。
遗憾的是,合并(组合)数据和标头(例如,通过将源缓冲区映射到目标缓冲区)以进行RDMA数据传送提出了若干挑战。首先,应用程序(例如,在目标计算系统145上执行的一个或多个应用程序)要求数据是页面边界对齐的。例如,计算系统将数据以字大小的块(例如,32位系统上的4字节块)或更大的形式读出或写入到存储器地址。
页面边界对齐(或数据结构对齐)涉及在等于字长的某个倍数的存储器地址处写入数据,以便提高计算系统的性能(例如,由于某些存储器管理系统管理存储器的方式)。为将数据页面边界对齐,可能需要将一些字节无意义地(或视之为无意义的)(“不必考虑”)(称为浪费)插入在上一数据结构的末尾和下一数据结构的起点之间(例如,填充)。因此,要求数据保持页面边界对齐可能引起在线上不必要地和冗余地发送的浪费(例如,通过网络进行传输,作为RDMA数据传送的一部分)。
第二,合并数据和标头可能引起附加的冗余的RDMA写入(例如,可能需要一个或多个附加目标缓冲区以将标头写在标头边界的起点、维持页面边界对齐等等)。因此,使写入数据和标头所使用的目标缓冲区(或所执行的RDMA写入)的数量最小化也是重要的考虑因素。
第三,并且如所指出的那样,系统(诸如实现OFED的那些)采用(或可修改为采用)OFED API,所述OFED API提供32位信息存储区域(例如,作为RDMA写入的一部分)以维护缓冲区位置信息、RDMA写入元数据、标头位置信息等等。由于32位数据空间中只有几个位可用于维护标头位置信息(例如,标头偏移),因此当在此类系统中合并数据和标头时,标头的放置也是另一重要的考虑因素(和限制因素)。
本文公开了用于合并数据和标头并提高诸如OFED RDMA计算系统的系统中的吞吐量,同时有效地利用所提供的32位数据空间,使RDMA写入的数量最小化(例如,使用于写入数据和标头的目标缓冲区的数量减少),维持数据的页面边界对齐,并使线上浪费最小化的方法、系统和过程。
计算系统中的示例性具体实施
图1是根据一个实施方案的实现并使用RDMA技术的计算系统的框图。图1的计算系统包括经由网络180通信地耦接的源计算系统105和目标计算系统145。网络180可以包括任何类型的网络或互连(例如,互联网、广域网(WAN)、SAN等等)。
源计算系统105包括源处理器110和源网络适配器115。源处理器110和源网络适配器115通信地耦接到源存储器120。源存储器120包括源驱动器125、源OS 130和实现源缓冲区140(1)-(N)的应用程序135。类似地,目标计算系统145包括通信地耦接到目标存储器150的目标处理器175和目标网络适配器170。目标存储器150包括目标缓冲区155(1)-(N)、目标驱动器160和目标OS 165。
图1的计算系统允许从源计算系统105的源存储器120进入目标计算系统145的存储器的远程直接存储器存取,而不涉及源OS 130或目标OS 165(反之亦然)。例如,源计算系统105的源网络适配器115可以向目标计算系统145的目标网络适配器170发送消息(例如,客户端消息),所述消息允许目标计算系统145的目标网络适配器170向(或从)目标存储器150直接存取数据(反之亦然)。
在一些实施方案中,源网络适配器115和目标网络适配器170允许用户空间进程(分别在源计算系统105和目标计算系统145上)通过绕过它们相应的内核并避免系统调用(例如,通过绕过如图1所示的源OS 130和目标OS 165)来执行RDMA操作(或可修改为诸如本文所述的那些的方法的其他基于缓冲区的操作)。可以使用OFED API来管理和促进RDMA操作。
图2是根据一个实施方案的实现OFED API的源计算系统的框图。如图2所示,源计算系统105包括应用程序编程接口(API)205,诸如OpenFabrics Enterprise Distribution(OFEDTM)API。源计算系统105还包括RDMA模块210、缓冲区选择器215、数据和标头合并器220以及页面边界对齐计算器225。应当指出的是,RDMA模块210(或其他可比支持模块)、缓冲区选择器215、数据和标头合并器220以及页面边界对齐计算器225可以实现为硬件或软件,并且可以作为源计算系统105的一部分或单独地实现(例如,作为RDMA服务器、软件设备、虚拟机或某种其他类型的计算设备的一部分)。
源计算系统105还包括源存储器120。源存储器120包括源缓冲区140(1)-(N)。每个源缓冲区都包含数据,或者数据和标头的组合。例如,如图2所示,并且如通过RDMA模块210映射到目标缓冲区一样,源缓冲区140(1)包含数据230(1)(例如,具有一个或多个数据单元),源缓冲区140(N-2)包含数据230(2),源缓冲区140(N-1)(例如,倒数第二缓冲区)包括数据230(N-1)和标头240,并且源缓冲区140(N)包含数据230(N)。
RDMA模块210管理、促进、协调和执行一个或多个RDMA操作。例如,RRDMA模块210可以执行RDMA写入操作或RDMA读出操作。缓冲区选择器215选择一个或多个缓冲区(例如,目标缓冲区155(1)-(N))来用数据或者数据和标头填充(或写入)。数据和标头合并器220通过合并(或组合)数据和标头(例如,在单个缓冲区(例如,目标缓冲区140(N-1))中作为单个RDMA写入/分组的一部分)来将源缓冲区映射到目标缓冲区。最后,页面边界对齐计算器225确定数据在目标缓冲区155(1)-(N)中的放置,使得数据是页面边界对齐的。
相结合地,RDMA模块210、缓冲区选择器215、数据和标头合并器220以及页面边界对齐计算器225确定数据和标头在一个或多个(可用)缓冲区(例如,目标缓冲区155(1)-(N))之间的放置以便提高基于OFED的RDMA计算环境中的吞吐量。
写入数据和标头的示例
在一个实施方案中,源计算系统105接收标头和数据(例如,包含在一个或多个源缓冲区中和/或来自由一个或多个主机、服务器等执行的应用程序)。缓冲区选择器215标识要在其中写入数据和标头的目标缓冲区(例如,目标缓冲区155(1)-(N))。
然后,数据和标头合并器220确定数据和标头的(适当的)映射和放置。在一些实施方案中,基于至少三个因素来确定数据和标头的映射和放置。首先,基于利用最小数量的目标缓冲区(例如,以便减少RDMA写入的数量)来确定数据和标头的放置。第二,基于(在最小数量的目标缓冲区中)数据是页面边界对齐的来确定数据和标头的放置。第三,基于所述放置使线上浪费最小化(例如,减少通过网络发送的浪费(或填充)的量)来确定数据和标头的放置。基于至少这三个因素,RDMA模块210将数据和标头写入目标缓冲区(例如,将数据写在页面边界上并将标头写在标头边界上)。在其他实施方案中,RDMA模块210生成RDMA写入。
RDMA写入包括合并到单个RDMA分组中(例如,使用数据和标头合并器220)的标头和数据。在某些实施方案中,RDMA写入伴有32位数据空间(例如,32位数据空间并非客户端数据空间的一部分),并使用RDMA传输到目标计算系统145。在该示例中,32位数据空间用于包括标头的偏移(例如,作为将数据和标头写入目标缓冲区的一部分)。
在其他实施方案中,缓冲区选择器215基于每个缓冲区的大小来确定数据和标头所需的缓冲区的最小数量。如果数据不能在最小数量的缓冲区中页面边界对齐,则缓冲区选择器215选择一个或多个附加缓冲区。在某些实施方案中,每个缓冲区都为目标缓冲区,并且OFED API允许将多个源缓冲区映射到单个目标缓冲区。
合并数据和标头的示例
图3A是根据一个实施方案的未合并的数据单元和标头的框图。应当指出的是,为了说明起见,图3A至图3E和图4A至图4C中的源缓冲区140(1)-(N)的大小(以及接收/目标缓冲区155(1)-(N)的尺寸)为8k并且数据为4k对齐的。然而,在另选的实施方式和实施方案中,源缓冲区140(1)-(N)和目标缓冲区155(1)-(N)可以为任何大小(例如,16k、32k等等),并且数据的页面边界对齐也可以不同(例如,数据可以为2k、3k或6k对齐的)。
如图3A所示,在一些实施方案中,数据(例如,数据单元305(1)-(13))和标头(例如,标头235)并未合并(例如,未组合到单个目标缓冲区或单个RDMA写入中)。在该示例中,数据为13k(例如,数据单元305(1)-(13)),并且标头为1k(例如,标头235)。数据(例如,13k的数据,其为4k页面边界对齐的)需要(并使用)两个缓冲区(例如,目标缓冲区155(1)和155(2),如图3A所示)。如果数据和标头未合并,则标头235将需要单独的和附加的缓冲区(例如,目标缓冲区155(3))。因此,尽管不存在线上浪费,但RDMA写入操作会占用三个目标缓冲区。因此,作为数据和标头的RDMA传送的一部分,将需要三个RDMA写入。
图3B是根据一个实施方案的在缓冲区的起点写入的标头的框图。在一些实施方案中,在缓冲区(例如,目标缓冲区140(1))的起点写入标头(例如,标头235)。但如先前所指出的,RDMA计算环境中的应用程序通常要求在页面边界处写入数据(例如,如果数据为4k页面边界对齐的,则在8k缓冲区中在0k或4k处)。
因此,如图3B所示,在缓冲区的起点写入标头可能导致在标头的末尾和数据的起点之间出现线上浪费,因为数据必须从页面对齐的边界开始(例如,数据单元305(1)必须从4k页面边界开始),并且所需的缓冲区数量也没有减少(例如,三个缓冲区)。
图3C是根据一个实施方案的紧接在数据之后写入的标头的框图。在该示例中,写入13k的数据(例如,数据单元305(1)-(13))需要两个缓冲区(例如,目标缓冲区155(1)和155(2))。在一些实施方案中,紧接在数据之后(例如,在数据单元305(13)之后)写入标头235。如先前所指出的,OFED API为程序员提供32位空间,其中每个RDMA写入都供私人使用。目标计算系统145可以使用该32位值来定位适当的缓冲区并使用关于缓冲区的信息(例如,RDMA写入)来进一步处理。
然而,使用基于OFED的RDMA计算环境作为示例,还需要该32位数据空间的一部分来指示特定缓冲区中的精确标头偏移。在图3C的示例中,如果紧接在数据之后写入标头235(例如,8k缓冲区的8字节对齐),则表示标头偏移将需要比从直接数据的32位数据空间可用的更多空间(例如,10位)。遗憾的是,在诸如前述的许多场景中,在已经拥挤的32位数据空间中找到10个(空闲)位可能是不可能的。因此,尽管图3C的示例中的标头和数据放置引起零线上浪费并且使用最小数量的目标缓冲区,但此种解决方案可能是不可行的,因为表示标头偏移(例如,特别是在标头没有写在标头边界处的情况下)需要来自32位数据空间的更多的位。
图3D是根据一个实施方案的由OFED API提供的32位数据空间的框图。如图3D所示,32位直接数据310包含包括以下各项的信息:缓冲区标识符315;标志320;元数据325;源标识符330;客户端标识符335;以及空闲位340(1)-(N)(例如,可用于标头偏移表示)。除其他信息之外,关于缓冲区标识符、标志、元数据、源标识符和客户端标识符的信息占据了32位直接数据310的大部分空间(例如,位)。因此,空闲位340(1)-(N)表示可用于标头偏移表示的少量位。因此,为了准确地表示可用空间(例如,空闲位)中的标头偏移信息,在一些实施方案中,将标头写在标头边界处(例如,使得可以使用空闲位340(1)-(N)来完全且准确地表示标头偏移信息)。
图3E是根据一个实施方案的在对齐的末尾写入的标头的框图。如图3E所示,并且在某些实施方案中,在特定对齐的末尾(例如,在2k对齐的末尾)以及在标头边界处(例如,在8k缓冲区中的6k处)写入标头235。在该示例中,如果数据要被写入(例如,到诸如目标缓冲区155(1)和155(2)的一个或多个缓冲区),则基于可能可用的位数(例如,用于标头放置)来确定标头235的对齐。可用的空闲位越多,浪费越少。
例如,如果在图3E中只有两个位可用于对齐,则可将标头(例如,在2k处对齐)放置在(或写入)四个可能的偏移(例如,8k缓冲区中的0k、2k、4k和6k)。在此示例中,最大可能的线上浪费为2k。然而,如果在图3E中有三个位可用于对齐,则可将标头(例如,在1k处对齐)放置在(或写入)八个可能的偏移,从而将最大可能的线上浪费减少到1k。因此,如图3E所示在对齐的末尾写入标头也产生一定浪费,但最少(例如,与如图3A所示在缓冲区的起点写入标头相比)。
标头和数据放置的示例
图4A是根据一个实施方案的在倒数第二缓冲区中在对齐的末尾写入的标头的框图。如图4A所示,并且在一些实施方案中,基于标头大小(例如,1k,如图4A所示)和对齐(例如,基于标头边界)来在倒数第二缓冲区(例如,目标缓冲区140(N-1))中,在(例如,目标缓冲区155(N-1)的)最后一个(可用的)标头对齐的偏移(例如,6k)处写入标头235。在某些实施方案中,缓冲区选择器215将目标缓冲区155(N-1)标识为倒数第二缓冲区,并选择目标缓冲区155(N-1)用于标头放置。然后,页面边界对齐计算器225计算可以写入目标缓冲区155(N-1)的数据(例如,数据单元305(1)-305(6))的页面边界对齐,而数据和标头合并器220确保有足够的空间可用于标头放置(例如,1k)、标头表示(例如,在32位直接数据310中)和标头对齐(例如,在6k处)。
因此,如图4A所示,并且在一些实施方案中,在倒数第二缓冲区中在对齐的末尾写入标头会引起零线上浪费,并且不需要附加的缓冲区。图4B是根据其他实施方案的在不存在(无需)附加缓冲区的情况下在对齐的末尾写入的标头的框图。例如,如果缓冲区中(例如,在写入数据之后)的可用空间(例如,位)允许2k标头对齐(例如,以便能够以尽可能少的字节量捕获标头偏移),则在对齐的末尾(例如,在目标缓冲区155(N)中)写入标头235允许写入比原本可能的更多数据(例如,数据单元305(14))。如果直到边缘数据都未被填充(例如,直到并包括数据单元305(14)),则引入1k间隙(例如,线上浪费)。然而,在该示例中,可以在数据之后(例如,在14个数据单元之后)写入标头235。应当理解,该示例中的标头和数据放置不会引起线上浪费,也不需要附加的(目标)缓冲区。
与图4A类似,图4C是根据一个实施方案的写入到倒数第二缓冲区的标头的框图。如图4C所示,标头235被写入目标缓冲区155(N-1),该目标缓冲区为倒数第二缓冲区。标头235,如在32位直接数据310中包括标头偏移的需要所要求的,是在标头边界(例如,6k)处标头对齐的。最后一个缓冲区中的可用空间完全由数据(例如,数据单元305(7)-(14))填充。数据单元305(1)-(6)被写入目标缓冲区155(N-1)。这两个目标缓冲区155(N-1)和155(N)中的数据是页面边界对齐的,并且标头235也在标头边界处对齐。因此,在该示例中,使用写入数据和标头所需的最小数量的缓冲区,并且不存在线上浪费。
应当理解,当诸如本文所述的那些的计算系统(例如,如图1所示)具有多于一个接收缓冲区(例如,目标缓冲区155(1)-(N))时并且当接收/目标缓冲区的总大小超过对齐标头和页面边界对齐数据的总和时,在倒数第二缓冲区中在对齐的末尾写入标头会导致缓冲区的最小利用率并减少(或消除)线上浪费。还应当理解,以这种方式合并标头和数据可以提高I/O性能和应用程序吞吐量。
用于合并标头和数据的示例性过程
图5A是示出根据一个实施方案的用于用数据和标头填充缓冲区的过程的流程图。该过程开始于在505处,接收标头(例如,标头235)和数据(例如,数据单元305(1)-(14)),例如作为来自主机、虚拟机或通信地耦接到源计算系统105的一些其他类型的计算系统的,或者来自在源计算系统105上执行的一个或多个应用程序的输入参数。在510处,该过程确定标头和数据所需的缓冲区的数量(例如,通过使用缓冲区选择器215并基于作为数据的一部分所接收的数据单元的大小)。在515处,该过程(例如,通过使用页面边界对齐计算器225)将数据页面(边界)对齐并记录该映射。
在520处,该过程确定是否存在要填充(例如,要写入数据(单元))的仅数据缓冲区。如果存在要填充的仅数据缓冲区,则该过程在525处,用数据填充缓冲区(例如,目标缓冲区155(1)-(N-2))。如果不存在要填充的仅数据缓冲区,则该过程在530处,确定标头在倒数第二缓冲区(例如,目标缓冲区155(N-1))上的位置。在535处,该过程将数据填充直到目标缓冲区155(N-2)。在540处,该过程将数据和标头填充在目标缓冲区155(N-1)中(例如,如图4A和图4C所示)。在545处,该过程用剩余数据填充最后一个缓冲区(例如,目标缓冲区155(N))。该过程结束于在550处,确定是否存在另一要处理的消息。
图5B是示出根据一个实施方案的用于组合标头和数据的过程的流程图。该过程开始于在555处,接收包含在源缓冲区中的数据和标头。在560处,该过程发起标头和数据放置分析(例如,使用RDMA模块210)。在565处,该过程计算可用缓冲区的大小(例如,8k、16k、32k等等)。在570处,该过程确定数据和标头所需的缓冲区的数量(例如,最小值)(例如,基于所接收的数据单元的大小)。在575处,该过程确定所标识的缓冲区内的数据的页面边界对齐(例如,使用页面边界对齐计算器225)。应该指出的是,页面边界对齐计算器225还可以确定标头的标头边界。
在580处,该过程确定标头在倒数第二缓冲区(例如,在目标缓冲区155(N-1))中的位置。例如,该过程可以确定标头235在目标缓冲区155(N-1)中在页面边界对齐数据的末尾(例如,在数据单元305(6)之后,如图4A和图4C所示)和在标头边界处的位置(例如,对于1k标头的2k对齐,从6k开始,也如图4A和图4C所示)。在585处,该过程用数据和标头填充目标缓冲区,使得利用最小数量的目标缓冲区并且数据是页面边界对齐的。在590处,该过程将组合的标头和数据连同单个RDMA写入中的放置/映射信息(例如,通过RDMA发送的消息)一起发送到目标(例如,目标计算系统145)。该过程结束于在595处,确定是否存在要处理的另一标头和(更多)数据。
图6是示出根据一个实施方案的用于确定标头和数据的放置/映射信息的过程的流程图。该过程开始于在605处,接收数据和标头。在610处,该过程确定写入数据和标头所需的缓冲区的最小数量。在615处,该过程确定数据和标头在所选择的缓冲区中的放置。在620处,该过程确定数据是否是页面边界对齐的,以及数据是否具有可能引起线上浪费的最小数量的间隙。如果数据并未页面边界对齐或者数据不具有可能引起线上浪费的最小数量的间隙(或零间隙),则该过程在625处,重新确定数据和标头在所选择的缓冲区中的放置以保持数据页面边界对齐并且具有最少的(或零)间隙。然而,如果数据是页面边界对齐的并且具有可能引起线上浪费的最小数量的间隙(或甚至零间隙),则该过程在630处,用数据和标头填充所选择的缓冲区(例如,如图4A和图4C所示)。该过程结束于在635处,确定是否存在要处理的另一标头和(更多)数据。
图7是示出根据一个实施方案的用于使用RDMA生成和传输数据和标头的过程的流程图。该过程开始于在705处,接收或存取数据和标头(例如,来自源缓冲区)。在710处,该过程将数据和标头写入缓冲区,使得最小数量的缓冲区被使用,数据是页面边界对齐的,标头是对齐的,并且存在最少的(或不存在)线上浪费。
在715处,该过程将标头偏移信息(例如,如果并且当标头被写入特定目标缓冲区时,标头的位置)包括在32位直接数据310(例如,作为API 205的一部分而提供的32位数据空间)中。在720处,该过程生成RDMA写入(例如,使用RDMA模块210)。在725处,该过程将RDMA写入连同32位直接数据310一起传输到目标(例如,传输到目标计算系统145)。该过程结束于在730处,确定是否存在要处理的另一标头和(更多)数据。
应当理解,通过将源缓冲区映射到一个或多个目标缓冲区来合并标头和数据,并基于确定的放置/映射信息来将标头和数据写入特别选择的目标缓冲区,有效地利用了目标缓冲区并减少(甚至消除)了基于OFED和RDMA的计算环境中的线上浪费。还应当理解,本文所述的系统、方法和过程还可以提高此类计算环境中的I/O性能和应用程序吞吐量。
示例性计算环境
图8是根据一个实施方案的计算系统的框图,示出了可如何在软件中实现放置和映射信息模块865。计算系统800在广义上表示能够执行计算机可读指令的任何单处理器或多处理器计算设备或系统。计算系统800的示例包括但不限于以下各种设备中的任何一者或多者:工作站;个人计算机;膝上型电脑;客户端侧终端;服务器;分布式计算系统;手持设备(例如,个人数字助理和移动电话);网络设备;存储控制器(例如,阵列、磁带驱动器或硬盘驱动器控制器)等等。计算系统800可以包括至少一个处理器855(例如,源处理器110或目标处理器175)和存储器860(例如,源存储器120或目标存储器150)。通过执行实现源计算系统105或目标计算系统145的软件,计算系统800变为被配置为提高OpenFabrics环境中的吞吐量的专用计算设备。
处理器855通常表示能够处理数据或解译和执行指令的任何类型或形式的处理单元。在某些实施方案中,处理器855可接收来自软件应用程序或模块的指令。这些指令可使处理器855执行本文描述和/或示出的实施方案中的一个或多个实施方案的功能。例如,处理器855可执行本文所述的操作中的全部或一些和/或可以是用于执行本文所述的操作中的全部或一些的装置。处理器855还可执行本文描述和/或示出的任何其他操作、方法或过程和/或可以是用于执行本文描述和/或示出的任何其他操作、方法或过程的装置。
存储器860通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。示例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器或任何其它合适的存储器设备。尽管并非必需,但是在某些实施方案中,计算系统800可包括易失性存储器单元和非易失性存储设备两者。在一个示例中,实现放置和映射信息模块865的程序指令可加载到存储器860(例如,源存储器120)中。
在某些实施方案中,除处理器855和/或存储器860之外,计算系统800还可包括一个或多个部件或元件。例如,如图8所示,计算系统800可包括存储器控制器820、输入/输出(I/O)控制器835和通信接口845,它们中的每一者都可经由通信基础设施805互连。通信基础设施805通常表示能够促进计算设备的一个或多个部件之间的通信的任何类型或形式的基础设施。通信基础设施805的示例包括但不限于通信总线(诸如工业标准架构(ISA)、外围部件互连(PCI)、PCI Express(PCIe)或类似的总线)和网络。
存储器控制器820通常表示能够处理存储器或数据或者控制计算系统800的一个或多个部件之间的通信的任何类型/形式的设备。在某些实施方案中,存储器控制器820可经由通信基础设施805控制处理器855、存储器860和I/O控制器835之间的通信。在某些实施方案中,存储器控制器820可单独或结合其他元件来执行本文描述和/或示出的操作或特征中的一个或多个和/或可以是用于单独或与其他元件组合来执行本文描述和/或示出的操作或特征中的一个或多个的装置。
I/O控制器835通常表示能够协调和/或控制虚拟机、设备、网关和/或计算系统的输入功能和输出功能的任何类型或形式的模块。例如,在某些实施方案中,I/O控制器835可控制或促进源计算系统105或目标计算系统145的一个或多个元件之间的数据传送,所述元件诸如处理器855(例如,源处理器110或目标处理器175)、存储器860(例如,源存储器120或目标存储器150)、通信接口845、显示适配器815、输入接口825和存储接口840。
通信接口845在广义上表示能够促进计算系统800与一个或多个其他设备之间的通信的任何类型或形式的通信设备或适配器。通信接口845可促进计算系统800与包括附加计算系统的私有或公共网络之间的通信。通信接口845的示例包括但不限于有线网络接口(诸如网络接口卡)、无线网络接口(诸如无线网络接口卡)、调制解调器以及任何其他合适的接口。通信接口845可经由与网络(诸如互联网)的直接链路提供到远程服务器的直接连接,并且还可通过例如局域网(诸如以太网网络)、个人区域网、电话或电缆网络、蜂窝电话连接、卫星数据连接或任何其他合适的连接来间接提供此类连接。
通信接口845还可表示主机适配器,该主机适配器被配置为经由外部总线或通信信道来促进计算系统800与一个或多个附加网络或存储设备之间的通信。主机适配器的示例包括:小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、电气与电子工程师协会(IEEE)1394主机适配器、串行高级技术附件(SATA)、串行SCSI(SAS)和外部SATA(eSATA)主机适配器、高级技术附件(ATA)和并行ATA(PATA)主机适配器、光纤信道接口适配器、以太网适配器等。通信接口845还可允许计算系统800执行分布式或远程计算(例如,通过从远程设备接收指令/将指令发送到远程设备,以供执行)。
如图8所示,计算系统800还可包括至少一个显示设备810,该显示设备经由显示适配器815耦接到通信基础设施805。显示设备810通常表示能够可视地显示由显示适配器815转发的信息的任何类型或形式的设备。类似地,显示适配器815通常表示被配置为转发来自通信基础设施805(或来自帧缓冲区,如本领域所已知)的图形、文本和其他数据以在显示设备810上显示的任何类型或形式的设备。计算系统800还可包括经由输入接口825耦接到通信基础设施805的至少一个输入设备830。输入设备830通常表示能够向计算系统800提供由计算机或人生成的输入的任何类型或形式的输入设备。输入设备830的示例包括键盘、指向设备、语音识别设备或任何其他输入设备。
计算系统800还可包括存储设备850,该存储设备经由存储接口840耦接到通信基础设施805。存储设备850通常表示能够存储数据和/或其他计算机可读指令的任何类型或形式的存储设备或介质。例如,存储设备850可包括磁盘驱动器(例如,所谓的硬盘驱动器)、软盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器等。存储接口840通常表示用于在存储设备850与计算系统800的其他部件之间传送和/或传输数据的任何类型或形式的接口或设备。
存储设备850可被配置为对被配置为存储计算机软件、数据或其他计算机可读信息的可移除存储单元执行读取和/或写入。合适的可移除存储单元的示例包括软盘、磁带、光盘、闪存存储器设备等。存储设备850还可包括用于允许将计算机软件、数据或其他计算机可读指令加载到计算系统800中的其他类似结构或设备。例如,存储设备850可被配置为读取和写入软件、数据或其他计算机可读信息。存储设备850还可以是计算系统800的一部分,或者可以是通过其他接口系统访问的独立设备。
可以将许多其他设备或子系统连接到计算系统800。相反地,图8所示的部件和设备不必都存在以实践本文所述和/或示出的实施方案。上文提及的设备和子系统也可以按照与图8所示不同的方式互连。
计算系统800也可采用任何数量的软件配置、固件配置和/或硬件配置。例如,本文公开的实施方案中的一个或多个实施方案可被编码为计算机可读存储介质上的计算机程序(也被称为计算机软件、软件应用程序、计算机可读指令或计算机控制逻辑)。计算机可读存储介质的示例包括磁存储介质(例如,硬盘驱动器和软盘)、光学存储介质(例如,CD-ROM或DVD-ROM)、电子存储介质(例如,固态驱动器和闪存介质)等。此类计算机程序也可被传输至计算系统800,以经由网络诸如互联网存储在存储器中或存储在载体介质上。可以将包含计算机程序的计算机可读介质加载到计算系统800中。
然后,可将存储在计算机可读介质上的计算机程序的全部或一部分存储在存储器860和/或存储设备850的各个部分中。当由处理器855执行时,加载到计算系统800中的计算机程序可使处理器855执行本文描述和/或示出的实施方案中的一个或多个实施方案的功能和/或可使处理器成为用于执行本文描述和/或示出的实施方案中的一个或多个实施方案的功能的装置。除此之外或另选地,可在固件和/或硬件中实现本文描述和/或示出的实施方案中的一个或多个实施方案。例如,计算系统800可被配置为适于实现本文公开的实施方案中的一个或多个实施方案的专用集成电路(ASIC)。
示例性联网环境
图9是根据一个实施方案的联网系统的框图,示出了各种设备可如何经由网络进行通信。在某些实施方案中,附网存储(NAS)设备可被配置为使用各种协议诸如网络文件系统(NFS)、服务器消息块(SMB)或通用互联网文件系统(CIFS)来与源计算系统105和/或目标计算系统145进行通信。网络180通常表示能够促进源计算系统105和/或目标计算系统145之间的通信的任何类型或形式的计算机网络或架构。
在某些实施方案中,通信接口(诸如图8中的通信接口845)可用于提供源计算系统105和/或目标计算系统145,和网络180之间的连接。应当注意,本文描述和/或示出的实施方案并非限于互联网或任何特定的基于网络的环境。例如,网络180可以为存储区域网络(SAN)。
在一个实施方案中,所公开的实施方案中的一个或多个的全部或一部分可被编码为计算机程序并且加载到源计算系统105和/或目标计算系统145或它们的任何组合上并加以执行。本文所公开的实施方案中的一个或多个的全部或一部分还可以被编码为计算机程序、存储在源计算系统105和/或目标计算系统145上,并且通过网络180分配。在一些示例中,源计算系统105和/或目标计算系统145的全部或一部分可表示基于云计算或网络的环境的部分。云计算环境可经由互联网提供各种服务和应用程序。这些基于云的服务(例如,软件即服务、平台即服务、基础设施即服务等)可通过网页浏览器或其它远程接口访问。本文所述的各种功能可通过远程桌面环境或任何其它基于云的计算环境提供。
此外,本文所述的部件中的一个或多个部件可将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。例如,放置和映射信息模块865可以改变源计算系统105和/或目标计算系统145的行为,以便使源计算系统105和/或目标计算系统145提高OpenFabrics和RDMA计算环境中的吞吐量。
尽管已结合若干实施方案描述了本公开,但是本公开并非旨在限于本文阐述的具体形式。相反地,本公开旨在覆盖可被合理地包括在由所附权利要求书限定的本公开的范围内的此类替代物、修改形式和等同物。
Claims (20)
1.一种方法,包括:
接收数据和标头;
标识要在其中写入所述数据和所述标头的多个缓冲区;
确定用于所述数据和所述标头的放置信息,其中
所述放置信息至少部分地基于以下项来确定:
所述多个缓冲区中的每个缓冲区的大小,
所述数据的页面边界对齐,以及
所述标头的标头对齐;并且
将所述数据和所述标头写入所述多个缓冲区,其中
所述数据的所述写入使用所述放置信息,
所述数据被写在页面边界上,并且
所述标头被写在标头边界上。
2.根据权利要求1所述的方法,其中
所述使用所述放置信息导致
利用所述多个缓冲区中的最小数量的缓冲区,
当所述数据被写入所述最小数量的缓冲区时,所述数据是页面边界对齐的,并且
使线上浪费最小化。
3.根据权利要求1所述的方法,其中
所述放置信息包括用于将所述数据和所述标头写入倒数第二缓冲区的指令。
4.根据权利要求1所述的方法,还包括:
通过基于所述放置信息将包含在多个源缓冲区中的所述标头和所述数据映射到所述多个缓冲区来将所述标头和所述数据合并到远程直接存储器存取(RDMA)写入中。
5.根据权利要求1所述的方法,还包括:
如果所述数据不能在所述最小数量的缓冲区中页面边界对齐,则选择所述多个缓冲区中的一个或多个附加缓冲区。
6.根据权利要求1所述的方法,其中
所述多个缓冲区包括多个目标缓冲区,并且
所述最小数量的缓冲区包括一个或多个目标缓冲区。
7.根据权利要求4所述的方法,其中
所述RDMA写入包括32位数据空间。
8.根据权利要求7所述的方法,还包括:
将所述标头的偏移包括在所述32位数据空间中。
9.一种非暂态计算机可读存储介质(CRM),所述非暂态CRM存储程序指令,所述程序指令能够执行以:
接收数据和标头;
标识要在其中写入所述数据和所述标头的多个缓冲区;
确定用于所述数据和所述标头的放置信息,其中
所述放置信息至少部分地基于以下项来确定:
所述多个缓冲区中的每个缓冲区的大小,
所述数据的页面边界对齐,以及
所述标头的标头对齐;并且
将所述数据和所述标头写入所述多个缓冲区,其中
所述数据的所述写入使用所述放置信息,
所述数据被写在页面边界上,并且
所述标头被写在标头边界上。
10.根据权利要求9所述的非暂态CRM,其中:
所述使用所述放置信息导致
利用所述多个缓冲区中的最小数量的缓冲区,
当所述数据被写入所述最小数量的缓冲区时,所述数据是页面边界对齐的,并且
使线上浪费最小化。
11.根据权利要求9所述的非暂态CRM,其中:
所述放置信息包括用于将所述数据和所述标头写入倒数第二缓冲区的指令。
12.根据权利要求9所述的非暂态CRM,还包括:
通过基于所述放置信息将包含在多个源缓冲区中的所述标头和所述数据映射到所述多个缓冲区来将所述标头和所述数据合并到远程直接存储器存取(RDMA)写入中,其中
所述RDMA写入包括32位数据空间;以及
将所述标头的偏移包括在所述32位数据空间中。
13.根据权利要求9所述的非暂态CRM,还包括:
如果所述数据不能在所述最小数量的缓冲区中页面边界对齐,则选择所述多个缓冲区中的一个或多个附加缓冲区。
14.根据权利要求9所述的非暂态CRM,其中:
所述多个缓冲区包括多个目标缓冲区,并且
所述最小数量的缓冲区包括一个或多个目标缓冲区。
15.一种系统,包括:
一个或多个处理器;和
存储器,所述存储器耦接到所述一个或多个处理器,其中所述存储器存储程序指令,所述程序指令能够由所述一个或多个处理器执行以用于:
接收数据和标头;
标识要在其中写入所述数据和所述标头的多个缓冲区;
确定用于所述数据和所述标头的放置信息,其中
所述放置信息至少部分地基于以下项来确定:
所述多个缓冲区中的每个缓冲区的大小,
所述数据的页面边界对齐,以及
所述标头的标头对齐;并且
将所述数据和所述标头写入所述多个缓冲区,其中
所述数据的所述写入使用所述放置信息,
所述数据被写在页面边界上,并且
所述标头被写在标头边界上。
16.根据权利要求15所述的系统,其中
所述使用所述放置信息导致
利用所述多个缓冲区中的最小数量的缓冲区,
当所述数据被写入所述最小数量的缓冲区时,所述数据是页面边界对齐的,并且
使线上浪费最小化。
17.根据权利要求15所述的系统,其中
所述放置信息包括用于将所述数据和所述标头写入倒数第二缓冲区的指令。
18.根据权利要求15所述的系统,还包括:
通过基于所述放置信息将包含在多个源缓冲区中的所述标头和所述数据映射到所述多个缓冲区来将所述标头和所述数据合并到远程直接存储器存取(RDMA)写入中,其中
所述RDMA写入包括32位数据空间;以及
将所述标头的偏移包括在所述32位数据空间中。
19.根据权利要求15所述的系统,还包括:
如果所述数据不能在所述最小数量的缓冲区中页面边界对齐,则选择所述多个缓冲区中的一个或多个附加缓冲区。
20.根据权利要求15所述的系统,其中
所述多个缓冲区包括多个目标缓冲区,并且
所述最小数量的缓冲区包括一个或多个目标缓冲区。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/168,449 US10375168B2 (en) | 2016-05-31 | 2016-05-31 | Throughput in openfabrics environments |
US15/168449 | 2016-05-31 | ||
PCT/US2017/033951 WO2017210015A1 (en) | 2016-05-31 | 2017-05-23 | Improving throughput in openfabrics environments |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109478171A true CN109478171A (zh) | 2019-03-15 |
CN109478171B CN109478171B (zh) | 2022-11-15 |
Family
ID=59215982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780029882.6A Active CN109478171B (zh) | 2016-05-31 | 2017-05-23 | 提高openfabrics环境中的吞吐量 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10375168B2 (zh) |
EP (1) | EP3465450B1 (zh) |
JP (1) | JP6788691B2 (zh) |
CN (1) | CN109478171B (zh) |
WO (1) | WO2017210015A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115115162A (zh) * | 2021-03-19 | 2022-09-27 | 通用汽车环球科技运作有限责任公司 | 制造系统吞吐量瓶颈指标分析 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9996463B2 (en) * | 2015-11-10 | 2018-06-12 | International Business Machines Corporation | Selection and placement of volumes in a storage system using stripes |
CN110888827B (zh) * | 2018-09-10 | 2021-04-09 | 华为技术有限公司 | 数据传输方法、装置、设备及存储介质 |
US11379404B2 (en) * | 2018-12-18 | 2022-07-05 | Sap Se | Remote memory management |
US11863469B2 (en) * | 2020-05-06 | 2024-01-02 | International Business Machines Corporation | Utilizing coherently attached interfaces in a network stack framework |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5491802A (en) * | 1992-05-29 | 1996-02-13 | Hewlett-Packard Company | Network adapter for inserting pad bytes into packet link headers based on destination service access point fields for efficient memory transfer |
US20030173522A1 (en) * | 2002-03-13 | 2003-09-18 | Spartiotis Konstantinos E. | Ganged detector pixel, photon/pulse counting radiation imaging device |
JP2004240711A (ja) * | 2003-02-06 | 2004-08-26 | Fujitsu Ltd | バッファメモリ装置及びバッファメモリ制御方法 |
CN101073062A (zh) * | 2004-12-10 | 2007-11-14 | 国际商业机器公司 | 在共享缓冲区中在系统和存储器之间传送数据 |
US20130290051A1 (en) * | 2008-12-02 | 2013-10-31 | Lemi Technology, Llc | Dynamic Talk Radio Program Scheduling |
CN104123236A (zh) * | 2013-04-29 | 2014-10-29 | 国际商业机器公司 | 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0574140A1 (en) * | 1992-05-29 | 1993-12-15 | Hewlett-Packard Company | Network adapter which places a network header and data in separate memory buffers |
WO1999034273A2 (en) | 1997-12-30 | 1999-07-08 | Lsi Logic Corporation | Automated dual scatter/gather list dma |
US6694392B1 (en) | 2000-06-30 | 2004-02-17 | Intel Corporation | Transaction partitioning |
US7376763B2 (en) | 2003-07-17 | 2008-05-20 | International Business Machines Corporation | Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency |
US8190796B2 (en) | 2004-11-02 | 2012-05-29 | Standard Microsystems Corporation | Hardware supported peripheral component memory alignment method |
JP5206788B2 (ja) * | 2008-05-29 | 2013-06-12 | 富士通株式会社 | データ中継装置、データ中継プログラム、データ受信装置および通信システム |
JP5482230B2 (ja) | 2010-01-25 | 2014-05-07 | 富士通株式会社 | 通信装置、情報処理装置、通信装置の制御方法及び制御プログラム |
US20160026605A1 (en) * | 2014-07-28 | 2016-01-28 | Emulex Corporation | Registrationless transmit onload rdma |
-
2016
- 2016-05-31 US US15/168,449 patent/US10375168B2/en active Active
-
2017
- 2017-05-23 CN CN201780029882.6A patent/CN109478171B/zh active Active
- 2017-05-23 WO PCT/US2017/033951 patent/WO2017210015A1/en unknown
- 2017-05-23 EP EP17733209.5A patent/EP3465450B1/en active Active
- 2017-05-23 JP JP2018561265A patent/JP6788691B2/ja active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5491802A (en) * | 1992-05-29 | 1996-02-13 | Hewlett-Packard Company | Network adapter for inserting pad bytes into packet link headers based on destination service access point fields for efficient memory transfer |
US20030173522A1 (en) * | 2002-03-13 | 2003-09-18 | Spartiotis Konstantinos E. | Ganged detector pixel, photon/pulse counting radiation imaging device |
JP2004240711A (ja) * | 2003-02-06 | 2004-08-26 | Fujitsu Ltd | バッファメモリ装置及びバッファメモリ制御方法 |
CN101073062A (zh) * | 2004-12-10 | 2007-11-14 | 国际商业机器公司 | 在共享缓冲区中在系统和存储器之间传送数据 |
US20130290051A1 (en) * | 2008-12-02 | 2013-10-31 | Lemi Technology, Llc | Dynamic Talk Radio Program Scheduling |
CN104123236A (zh) * | 2013-04-29 | 2014-10-29 | 国际商业机器公司 | 用于使用预提升缓冲器的高吞吐量硬件加速的方法和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115115162A (zh) * | 2021-03-19 | 2022-09-27 | 通用汽车环球科技运作有限责任公司 | 制造系统吞吐量瓶颈指标分析 |
Also Published As
Publication number | Publication date |
---|---|
WO2017210015A1 (en) | 2017-12-07 |
EP3465450A1 (en) | 2019-04-10 |
JP2019517692A (ja) | 2019-06-24 |
US10375168B2 (en) | 2019-08-06 |
US20170346899A1 (en) | 2017-11-30 |
JP6788691B2 (ja) | 2020-11-25 |
CN109478171B (zh) | 2022-11-15 |
EP3465450B1 (en) | 2023-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907139B2 (en) | Memory system design using buffer(s) on a mother board | |
CN105993009B (zh) | 通过非透明桥向PCIe集群中的计算资源传送MSI-X中断的方法和装置 | |
EP2889780B1 (en) | Data processing system and data processing method | |
KR101491484B1 (ko) | 스케일러블 스토리지 디바이스들 | |
US9864538B1 (en) | Data size reduction | |
WO2018137529A1 (zh) | 一种数据传输的方法、装置、设备和系统 | |
CN109478171A (zh) | 提高openfabrics环境中的吞吐量 | |
CN108701004A (zh) | 一种数据处理的系统、方法及对应装置 | |
US11693809B2 (en) | Asymmetric read / write architecture for enhanced throughput and reduced latency | |
TW201714090A (zh) | 記憶體裝置、記憶體定址方法與包括有形儲存媒體的物品 | |
CN106662895A (zh) | 计算机设备和计算机设备数据读写的方法 | |
CN116185553A (zh) | 数据迁移方法、装置及电子设备 | |
US9727521B2 (en) | Efficient CPU mailbox read access to GPU memory | |
US10853255B2 (en) | Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover | |
CN109857553B (zh) | 内存管理方法及装置 | |
US20180239711A1 (en) | Dimm ssd addressing performance techniques | |
US11334487B2 (en) | Cache sharing in virtual clusters | |
US11822816B2 (en) | Networking device/storage device direct read/write system | |
US11487695B1 (en) | Scalable peer to peer data routing for servers | |
US20240086110A1 (en) | Data storage method, storage apparatus and host | |
CN116711282A (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 |