CN115904210A - 一种数据发送的方法、网卡和计算设备 - Google Patents
一种数据发送的方法、网卡和计算设备 Download PDFInfo
- Publication number
- CN115904210A CN115904210A CN202110910507.0A CN202110910507A CN115904210A CN 115904210 A CN115904210 A CN 115904210A CN 202110910507 A CN202110910507 A CN 202110910507A CN 115904210 A CN115904210 A CN 115904210A
- Authority
- CN
- China
- Prior art keywords
- data
- write
- address
- network card
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000003860 storage Methods 0.000 claims abstract description 166
- 230000005540 biological transmission Effects 0.000 claims abstract description 19
- 230000015654 memory Effects 0.000 claims description 79
- 239000012634 fragment Substances 0.000 claims description 33
- 238000012545 processing Methods 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 12
- 230000005055 memory storage Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 abstract description 12
- 238000010586 diagram Methods 0.000 description 15
- 238000013461 design Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 101100108191 Vibrio parahaemolyticus serotype O3:K6 (strain RIMD 2210633) add gene Proteins 0.000 description 1
- 101150060298 add2 gene Proteins 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/621—Individual queue per connection or flow, e.g. per VC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据发送技术,网卡对获取到的数据和地址进行切分,生成多对数据和地址,并组装生成多个写入请求,把这多个写入请求放入多个QP中,然后通过网络发送给多个存储节点进行存储,该方法将相应功能从CPU到网卡的卸载,提能有效降低CPU的调度时延,提高了EC和多副本等场景下的数据传输效率。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种数据发送的方法、网卡和计算设备。
背景技术
在存储系统中,为了保证数据的可靠性,往往采用EC校验机制或者多副本机制来实现数据冗余,即将数据存储多个存储节点中,当其中部分节点故障时,仍然能确保数据的可靠性和可用性。在实现多副本或EC方案时,下发写IO的计算节点需要为多个副本或者分片准备所需的数据和上下文信息(例如待写入地址),组装成多组数据和上下文信息发给网卡,然后生成多个工作请求放入相应的发送队列中,发往多个存储节点中存储。由于组装、生成工作请求、放入队列的过程在操作系统层面是依次执行的,当分片越多或副本数量越多,上述过程的时延开销就会越多,尤其是在小IO(例如64B)的情况下,上述过程的时延占比会更大。
发明内容
本申请提供一种数据发送方法、网卡和计算设备,能有效缩减EC和多副本场景中数据发送的时延。
第一方面,本申请实施例提供一种数据发送的方法,该方法应用于网卡,首先,网卡获取第一数据和第一地址;然后根据所述第一数据和所述第一地址,生成P个写入请求,其中,所述P个写入请求中每个写入请求中携带写入数据和对应的写入地址,P为大于2的正整数;接着,将所述P个写入请求放入P个发送队列QP中,所述P个写入请求和所述P个QP一一对应;最后,基于所述P个QP向P个存储节点发送所述P个写入请求,所述P个写入请求中的写入地址和所述P个存储节点一一对应。
该方法将原本由CPU执行的数据发送功能卸载到网卡来并行执行,并且改变了数据发送的流程。具体而言:网卡基于获取到的第一数据和第一地址,可以同时生成多个写入请求,并将这些请求放入多个发送队列中,由于多个发送队列可以并行执行,因此能有效缩减数据 (例如EC或多副本场景中)发送的时延。此外,由于把原本由CPU执行的功能卸载到网卡,可以减轻对CPU的资源占用。更进一步的,由于网卡本身具有数据发送的功能,因此把数据发送功能卸载到网卡(而不是其他硬件),可以提高数据发送的效率。
一种可能的设计方式,将第一数据复制成P个所述写入数据,或,将所述第一数据切分成P个所述写入数据,其中,所述P个写入数据是P个相同的数据。在多副本场景中,由网卡的专用处理器实现多副本数据的切分或复制,能有效降低处理时延。
一种可能的设计方式,将所述第一数据切分成P个所述写入数据,其中,所述P个写入数据中包括:n个数据分片和所述n个数据分片对应的m个校验分片,其中m、n为正整数, P=n+m。在EC场景中,由网卡的专用处理器实现数据的切分,能有效降低处理时延。
一种可能的设计方式,将所述第一地址切分成P个写入地址,所述第一地址代表一段存储空间,所述P个写入地址中的每个写入地址对应所述P个存储节点中一个节点上的一段存储空间;将所述P个写入数据和所述P个写入地址,组装成P个写入请求,每个所述写入请求中携带所述P个写入数据中的一个数据以及对应的所述P个写入地址中的一个地址。该方法由网卡的地址的切分,以及将地址和数据的组装成多个写入请求,能有效降低处理时延。
一种可能的设计方式,所述网卡从主机的处理器中获取所述第一数据和所述第一地址,其中,所述网卡位于所述主机中;或者,所述网卡从所述主机的内存中直接获取所述第一数据和所述第一地址。
一种可能的设计方式,前述的写入请求为RDMA写入请求,所述P个写入地址分别对应所述P个存储节点中各个存储节点的内存存储空间。该方法用在内存EC或内存多副本的场景中时,可以更大地降低端到端的时延。
第二方面,本申请实施例还提供一种数据发送的装置,该装置应用于网卡,该装置包括:
获取模块,用于获取第一数据和第一地址;
处理模块,用于根据所述第一数据和所述第一地址,生成P个写入请求,其中,所述P 个写入请求中每个写入请求中携带写入数据和对应的写入地址,P为大于2的正整数;所述处理模块,还用于将所述P个写入请求放入P个发送队列QP中,所述P个写入请求和所述P个QP一一对应;
发送模块,用于基于所述P个QP向P个存储节点发送所述P个写入请求,所述P个写入请求中的写入地址和所述P个存储节点一一对应。
一种可能的设计方式,所述处理模块还用于:将第一数据复制成P个所述写入数据,或,将所述第一数据切分成P个所述写入数据,其中,所述P个写入数据是P个相同的数据。
一种可能地设计方式,所述处理模块还用于:将所述第一数据切分成P个所述写入数据,其中,所述P个写入数据中包括:n个数据分片和所述n个数据分片对应的m个校验分片,其中m、n为正整数,P=n+m。
一种可能的设计方式,所述处理模块还用于:将所述第一地址切分成P个写入地址,所述第一地址代表一段存储空间,所述P个写入地址中的每个写入地址对应所述P个存储节点中一个节点上的一段存储空间;将所述P个写入数据和所述P个写入地址,组装成P个写入请求,每个所述写入请求中携带所述P个写入数据中的一个数据以及对应的所述P个写入地址中的一个地址。
一种可能的设计方式,所述获取模块还用于:从主机的处理器中获取所述第一数据和所述第一地址,其中,所述网卡位于所述主机中;或者,从所述主机的内存中直接获取所述第一数据和所述第一地址。
一种可能的设计方式,前述写入请求为RDMA写入请求,所述P个写入地址分别对应所述 P个存储节点中各个存储节点的内存存储空间。
第三方面,本申请实施例还提供了一种网卡,该网卡包括:处理器和存储器,所述存储器存储有计算机指令,所述处理器执行所述计算机指令以执行如第一方面或第一方面任意一种可能的设计方式中的方法。
第四方面,本申请实施例还提供了一种计算设备,该计算设备中包括网卡和处理器,所述处理器用于生成第一数据和第一地址,所述网卡用于执行如第一方面或第一方面任意一种可能的设计方式中的方法。
第五方面,本申请实施例还提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,所述计算机程序在计算机上运行时,使得所述计算机实现如第一方面或第一方面任意一种可能的设计方式中的方法。
附图说明
图1是本申请实施例提供的一种分布式存储系统架构图;
图2是本申请实施例提供的一种包含内存池的存储网络架构;
图3是本申请实施例提供的一种一种数据发送的方法流程示意图;
图4是本申请实施例提供的一种切分和组装方法示意图;
图5是本申请实施例提供的一种三副本场景下的数据发送方法示意图;
图6是本申请实施例提供的一种EC2+2场景下的数据发送方法示意图;
图7是本申请实施例提供的一种数据发送装置示意图。
具体实施方式
为了便于理解本申请实施例,首先,对本申请涉及的部分术语进行解释说明。
多副本:是一种数据冗余保护机制,多副本就是一份数据以副本的方式写到存储系统中的多个节点中,并确保多个数据副本之间的数据强一致性,单个节点的故障不会影响业务,可以从未故障的其他副本读取数据以保证业务。
EC(Erasure Code):即纠删码技术,也是一种数据冗余保护机制。指将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。如果把n+m份数据分布在存储系统的不同节点上,那么任意小于等于m个节点故障(m份数据失效),都可以通过其他剩余的数据还原出原始数据,从而达到不影响业务的目的。
远程直接内存访问(remote direct memory access,RDMA):RDMA是一种直接内存访问技术,可以绕过远程应用服务器操作系统内核,使一个计算设备直接对其他计算设备的内存进行数据读写,过程中不需要经过处理器的处理,不仅节省了大量CPU资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟。
队列(queues):RDMA一共支持三种队列,发送队列(send queues,SQ)和接收队列(receive queues,RQ),完成队列(complete queues,CQ)。其中,SQ和RQ通常成对创建,被称为队列对(queue pairs,QP)。RDMA是基于消息的传输协议,数据传输为异步操作。RDMA的操作过程如下:
(1)主机(host)的处理器提交工作请求(work request,WR)到网卡,网卡将该工作请求配置到工作队列(work queues,WQ),工作队列包括发送队列(SQ)和接收队列(RQ)。工作队列的每一个元素叫做(work queues element,WQE),一个元素也就对应一个WR。
(2)host的处理器可以通过网卡从完成队列(CQ)中获取工作完成(workcomplete,WC),完成队列里的每一个元素叫做(complete queues element,CQE),一个元素也就对应一个 WC。
其中,具有RDMA引擎的硬件(hardware),如网卡,可以看做为一个队列元素处理模块。该硬件不断地从工作队列(WQ)中去取工作请求(WR)来执行,执行完了就给完成队列(CQ)中放置工作完成(WC)。
图1是本申请实施例提供的一种分布式存储系统架构图,该存储系统包括多个计算节点集群和多个存储节点集群,计算节点集群中的任意一个计算节点10可以通过网络30访问存储节点集群中的任意一个存储节点20。
网络30采用如下协议的一种或多种组合来实现数据传输和通信,例如传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)、用户数据报协议 (user datagram protocol,UDP)和其他类型的协议,以及,支持远程直接内存访问(remote direct memory access,RDMA)技术的网络协议。例如,无限带宽(InfiniBand,IB)协议,基于融合以太网的RDMA(RDMA over Converged Ethernet,RoCE)协议以及互联网广域RDMA 协议(internet Wide Area RDMA Protocol,iWARP)。具体实施过程中,可以利用一个或多个交换机和/或路由器实现多个节点之间的通信处理。
计算节点集群包括一个或多个计算节点10(图1中示仅示出了1个计算节点10)。在硬件层面,计算节点10中设置有处理器101(例如中央处理器(central processing unit,CPU))、网卡102、存储器(图1中未示出存储器)。在软件层面,计算节点10上运行有应用程序(application)103(简称应用)和客户端程序104(简称客户端),103和104可以运行在处理器101中。应用103是对用户呈现的各种应用程序的统称。客户端104用于接收由应用101触发的数据访问请求,通过与存储节点20交互,使计算节点能够访问分布式存储资源或接收来自存储节点的数据。客户端104可以由位于计算节点10内部的硬件组件或软件程序来实现。例如,该客户端104可以是Plog((Persistence Log,持久化日志)客户端、VBS (VirtualBlock System,虚拟块存储)管理组件等等。
存储节点集群包括一个或多个存储节点20(图1中示出了三个存储节点20,分别为20a、 20b、20c,但不限于三个存储节点20),各个存储节点20之间可以互联。存储节点20可以是如服务器、台式计算机或者存储阵列的控制器、硬盘框等设备。在功能上,存储节点20主要用于对数据进行存储或计算等处理。在硬件上,如图1所示,存储节点20至少包括网卡201、处理器202(例如CPU)、存储器203。其中,网卡201用于和计算节点10或其他存储节点的进行数据通信,处理器202用于处理来自存储节点20外部的数据,或者存储节点20 内部生成的数据。存储器203是指用于存储数据的装置,它可以是内存,也可以是硬盘/磁盘。另外,所述存储节点集群还包括管理节点(图1未示出),用于创建并管理内存池或存储池,后文统称为资源池。可选的,管理节点也可以是某个存储节点20或计算节点10。
可选的,在软件层面,存储节点20上运行有服务端程序(图中未示出),可用于与计算节点10交互,例如接收计算节点10通过客户端104发送的数据。
为了保证存储数据的可靠性,图1的存储系统中往往采用EC校验机制或者多副本机制来实现存储池中的数据冗余。例如,现有的块存储系统中,可以将同一份数据复制保存为2~3个副本,针对系统中的每1个卷,默认按照1MB进行分片,分片后的数据按照DHT(Distributed Hash Table,分布式哈希表)算法保存存储集群节点上的多个磁盘上,或,多个存储节点20中的磁盘上。再例如,基于EC的块存储系统,是建立在分布式、节点间冗余的基础上的。当数据进入系统之后,首先被切分为N个数据条带,然后计算出M个冗余数据条带,并最终保存在N+M个不同的节点中。由于同一条带的数据保存在不同节点中,所以块存储中的数据不仅能支持硬盘级的故障,还能够支持节点级的故障,保证数据不丢失。只要系统中同时故障的节点数不超过M,系统就可以持续提供服务。通过数据重构过程,系统可以恢复出损坏的数据,恢复整系统的数据可靠性。
在本申请实施例中,图1和图2(见后文)中的网卡102和网卡201口可以支持RDMA技术,支持自定义或者标准的RDMA协议网口,例如,IB协议、RoCE协议以及iWAPP中至少一种。例如,节点10和20的网卡可以基于网络30实现RDMA请求,将前述RDMA数据访问请求 (例如写IO)发送到存储节点集群中的多个节点上,每个存储节点接收到数据后,将数据直接写入存储器进行储存,无需占用主机处理器资源,提高了存储设备的写入性能。
图2是本申请提供的一种包含内存池的存储网络架构,进一步给出了图1的存储系统中提到的内存池。内存是指与处理器直接交换数据的存储器,例如内存既可以是随机存取存储器,也可以是只读存储器。举例来说,随机存取存储器可以是动态随机存取存储器(Dynamic Random Access Memory,DRAM),也可以是存储级存储器(Storage ClassMemory,SCM)。其中,DRAM是一种半导体存储器,与大部分随机存取存储器(Random AccessMemory,RAM) 一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器。
内存池可以由各个存储节点20中的存储器203(例如前述的DRAM、SCM,以及硬盘)组成,图2所示的内存池可以只包含较高性能的存储器,例如DRAM和SCM,而排除硬盘等性能相对较低的存储器。可选的,内存池也包含存储节点中的任何类型的存储器。在产品实践中存储节点20内部可部署多种不同类型的存储器,即各种类型的内存或硬盘均可以成为内存池的一部分,并且位于不同存储节点上的相同类型的存储器在所述内存池中属于同一层级。本申请不对内存池所包含的存储器的类型,以及层级的数量做任何限定。
管理节点将各个存储节点集群20所提供的存储空间集中起来作为内存池统一管理,因此内存池的物理空间来源于各个存储节点所包含的各种存储器。管理节点需要对被纳入所述内存池的存储空间进行统一编址。经过统一编址,所述内存池的每段空间都有一个唯一的全局地址。所谓全局地址,它所指示的空间在内存池中是唯一的,并且每个存储节点20都知道该地址的含义。在给内存池的一段空间分配了物理空间之后,该空间的全局地址就拥有了其对应的物理地址,所述物理地址指示了该全局地址所代表的空间实际位于哪个存储节点的哪个存储器上,以及在该存储器中的偏移量,即物理空间的位置。管理节点可以在创建内存池之后为各个全局地址分配物理空间,也可以在接收写数据请求时为所述写数据请求所对应的全局地址分配物理空间,例如,前述的Plog客户端向存储节点申请一段全局地址(逻辑地址空间),该全局地址指向多个存储节点20(例如20a-20c),可以用于实现内存多副本存储。各个全局地址与其物理地址之间的对应关系被记录在索引表中,管理节点将所述索引表同步给各个存储节点20。各个存储节点20存储所述索引表,以便后续读写数据时根据索引表查询全局地址对应的物理地址。
同样,为了保证内存中数据的可靠性也会采用EC机制或者多副本机制,来实现内存池中的数据冗余,内存的EC机制和多副本原理此处不再赘述。相对常规的EC和多副本,内存EC 和内存多副本通常以小IO场景(2KB以下)为主,最小IO可以为64B。例如在内存EC或内存多副本的方案中,存储节点20在接收到写入请求后,可以将数据直接写入DRAM、SCM等内存中。一种可能的实施方式,基于单边RDMA网络实现的EC和多副本,可以大幅度降低端到端的时延。需要说明的是,除了EC和多副本场景之外,本申请也同样适用于其他需要发送数据的场景,本申请实施例也不限定于RDMA传输的场景,基于其他网络协议的写入请求也同样可以应用本申请实施例中方法,只要拥有网卡设备,并且网卡可以生产多个队列即可,本申请实施例中的RDMA写入请求只作为举例,便于读者理解方案。
实际中,无论是多副本还是EC场景,在进行数据发送的时候,需要先为多个副本或者分片准备所需的数据、地址和上下文信息,组装发往多个节点的数据和上下文信息,并生成多个WQE,放入相应的QP(这里是SQ)中,然后把数据发送到多个存储节点20中。其中,组装、生成WQE、放入QP的操作过程(在本申请实施例中称为encode_and_send过程),在计算节点10中的操作系统层面是串行执行,也就是说需要CPU依次执行多个encode_and_send 的过程,才能将发往多个节点的数据和待写入地址放入RDMA网卡中的SQ队列中。例如,在三副本的场景中,需要计算节点10的处理器101执行以下步骤:
(1)组装,生成WQE:组装副本1的数据、地址和上下文信息,生成WQE1。
(2)放入QP:把WQE1发送给网卡,并放入相应队列QP1.
(3)副本1返回成功。
(4)组装,生成WQE:组装副本2的数据、地址和上下文信息,生成WQE2。
(5)放入QP:把WQE2发送给网卡,并放入相应队列QP3.
(6)副本2返回成功。
(7)组装,生成WQE:组装副本3的数据、地址和上下文信息,生成WQE3。
(8)放入QP:把WQE3发送给网卡,并放入相应队列QP3.
(9)副本3返回成功。
可见,当分片越多或副本数量越多,时延开销就会越多,尤其是在小IO(例如64B)的情况下(例如内存多副本和内存EC),encode_and_send过程在多副本和EC的场景中的时延占比会更大,多副本场景时延占比可达25%,在EC场景时延占高达比35%以上。如果在操作系统层面使用启动多线程或者协程并发操作,造成的CPU时延开销反而会比目前的encode_and_send的过程更大。
鉴于上述问题,本申请实施例提出了一种数据发送的方法,可以应用前述图1或图2中的存储系统中,能有效缩减EC和多副本场景中数据发送的时延。该方法可以将前述组装、生成WQE、放入QP的操作过程卸载到网卡并发执行,能有效降低CPU的调度时延。
本申请实施例给出一个具体的实施例,对整体的场景进行介绍:
首先,计算节点10上接收到EC或多副本的写IO请求,该请求中携带待写入的数据和虚拟地址,该虚拟地址表示一个地址段,对应存储系统中的一段逻辑空间,该虚拟地址对应用103是可见的。其中,该写IO请求可能是由计算节点自身的应用103产生的,也可能是由其他存储节点或客户服务器发送的,本申请对此不做限定。
在一种可能的实施方式,该存储系统使用LUN(logical unit number,逻辑单元号)语义进行通信。该地址段可以由LUN ID、LBA(logical block address,逻辑块地址)和length (长度)这三个因素标识,它们三者可以表示一个确定的地址段,索引到一个全局地址。
另一种可能的实施方式中,该存储系统使用内存语义进行通信。例如,DRAM的空间映射给计算节点10的应用或其他客户服务器,使得计算节点100可以感知到所述DRAM的空间(本实施例中将其称为虚拟空间),对所述虚拟空间进行访问。在这种场景中,计算节点10发送给存储节点20的读/写数据,携带的地址中可以包括:虚拟空间ID、虚拟空间的起始地址以及长度,用于表示一个地址段。
以上仅作为举例,本申请对该待写入地址的具体表示方式不做限定。
接着,计算节点10需要根据前述的虚拟地址对于的存储空间进行切分,准备好写入地址,该写入地址用于向不同的存储节点写入EC和多副本的数据。一种可能的实施方式,由计算节点的客户端104接收前述的EC或多副本的写IO请求,并完成数据和写入地址的准备工作。
具体的:存储系统中通常采用分布式哈希表(Distributed Hash Table,DHT)方式进行路由,按照分布式哈希表方式,根据前述虚拟地址,获取到DHT中目标分区,根据目标分区确定一个节点(假设该节点就为计算节点10),再根据该节点确定到一个存储单元S,该存储单元S实际上也是一段逻辑空间,实际的物理空间仍然来自多个存储节点20。例如,存储单元S 是包含多个逻辑块的集合,不同的逻辑块可以对应到不同存储节点上的物理块。此时,对于支持plog写的分布式存储系统,计算节点10可以通过Plog客户端104,再次通过DHT的方式,索引到该存储单元对应的多个物理的存储节点上的Plog。以Plog写为例,该写入地址可以包括:(a)偏移量(offset),例如写入某个硬盘或SCM中的偏移量;(2)Plog ID:表示一段Plog空间的标识,对应一段支持追加写的字节级地址空间的封装。(c)size:即写入的数据大小,因此每次写入一定size的数据时就是在该盘当前的偏移量(offset)上追加该size的数据。例如,写成功之后,PLOG会将当前的written size设置为offset+size。
同时,计算节点10还需要负责准备分片数据或多副本数据。在本申请实施例中,计算节点的处理器101不对WQE进行组装,而是将准备好的写入地址和数据,直接发送给网卡102。
最后,网卡102对第一消息中的数据和写入地址进行切分,然后将它们和上下文进行组装,并行生成多个WQE,放入发送队列QP中并通过RDMA请求发送到存储节点集群中的多个存储节点上,由各个存储节点完成数据的写入。
为了进一步解释本申请实施例提出的方法,尤其是由网卡执行的内容,下面结合图3给出的一种数据发送的方法流程示意图进行说明,该方法包括步骤步骤301-步骤304:
步骤301:网卡102接收处理器101向发送第一数据和第一地址。
该第一数据和第一地址是可以指计算节点10的处理器101为多副本和EC场景准备的数据和待写入地址,客户端104需要先准备好该第一数据和待写入地址,然后由处理器101发送给网卡102,即网卡从处理器101中获取到该第一数据和第一地址。一种可选的方式,网卡从102也可以从所述计算节点10的内存中直接获取所述第一数据和所述第一地址。
(1)第一数据:例如EC 2+2场景中,该第一数据是由2个数据分片和校验数据分片组成的初级。该第一数据可以由客户端104准备,具体的:把连续的2个数据分片划分为一个EC组,并利用纠删码技术对EC组进行计算,生成2个校验数据分片,还可以根据需要对相应分片进行补齐。再例如,三副本场景中,由客户端104将进行数据复制,准备好3个副本数据。
(2)第一地址:即前述的写入地址,可以用于写入不同存储节点中的存储器中,除了前文中描述的Plog的写入地址(例如偏移量、Plog ID、size)外,该写入地址还可以是:逻辑地址LBA和length(长度),存储节点(例如20a)可以根据该地址将数据下发到硬盘中,然后由硬盘中的翻译层,将该LBA对应到具体的物理地址,完成数据的写入。
可选的,上述写入地址还可以由分条ID、节点ID、偏移offset、长度length组成,其中,分条ID表示该数据写入请求是哪个分条的,节点ID表示该分条的存储节点,offset表示写入位置相对于该分条起始位置的偏移量,即表示从该分条的起始位置开始写入数据,length 表示写入数据的大小。
以上仅作为举例,帮助读者理解,本申请对该写入地址的形式不做任何限定。
需要说明的是,该第一地址中可能是直接包含多个写入地址,网卡102可以直接从获取的消息中提取或简单切分得到。可选的,该第一地址也可能是包含一整段的写入地址。
步骤302:网卡102生成多个写入请求。
例如,网卡102根据第一数据和第一地址,生成P个RDMA写入请求,其中,P个RDMA写入请求中每个RDMA写入请求中携带写入数据和对应的写入地址,P为大于2的正整数;
需要说明的是,网卡102可以是智能网卡(smart NIC),网卡102中的处理器106可以为多核的中央处理器(central processing unit,CPU)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA) 等,例如可以是多个CPU内核的ASIC(特殊应用集成电路)芯片,可以实现多核的并发调度。一种可能的实施方式,该处理器106是网卡中的专用的卸载处理器,几乎没有调度时延。
具体的:以EC场景为例,首先,网卡102接收到处理器101发送的第一数据和第一地址,然后网卡102通过处理器106的多个核,并发调度多个线程,对该第一数据和第一地址进行拆分和组装,并行生成P个RDMA写请求(即WQE),其中每个RDMA请求中携带副本数据或分片数据,以及存储到不同存储节点所需要的写入地址。
当获取到的第一数据中直接包含P个写入数据,网卡102可以从接收的消息中直接提取或简单切分得到P个写入数据(如图4)。网卡将第一数据切分成P个写入数据,其中,P个写入数据中包括:n个数据分片和所述n个数据分片对应的m个校验分片,其中m、n为正整数,P=n+m。例如图4中第一数据(8KB)进行简单切分,就可以得到2个2KB的分片EC1、 EC2和两个校验分片P、Q。
可选的,当第一地址也可能是包含一段写入地址,则网卡102进行一定的计算和处理,才可以切分成多个可用的写入地址。
同样,当获取到第一数据中直接包含P个写入地址,网卡102可以直接从中提取或简单切分得到(如图4)。图4中,网卡的处理器101将第一地址对应的存储空间(假设为0~100) 进行简单切分,就可以得到四个存储空间add1~add2,并以一定的规则表示该存储空间对应的写入地址,这四个写入地址中的每个写入地址对应不同储节点中的一段存储空间。
写入地址的具体形式前文已经描述过了,诸如分条ID、节点ID、偏移offset、长度length 等内容。
可选的,当第一数据只有部分数据,则网卡102进行一定的计算和处理,才可以得到多个数据。例如,三副本场景中,将网卡将第一数据复制成P个写入数据,或,将第一数据切分成P个写入数据,其中,P个写入数据是P个相同的副本数据。该第一数据可能只有一个副本数据,则网卡102再复制出另外两份,才可以生成三个副本。
在获得P个写入数据和P个写入地址之后,网卡102将他们组装成P个RDMA写入请求, 每个RDMA写入请求中携带所述P个写入数据中的一个数据以及对应的所述P个写入地址中的一个地址。
步骤303:网卡102向多个存储节点并行发送多个写入请求。
例如,网卡102将P个RDMA写入请求放入P个发送队列QP中,所述P个RDMA写入请求和所述P个QP一一对应,然后基于所述P个QP向P个存储节点发送所述P个RDMA写入请求,所述P个RDMA写入请求中的写入地址和所述P个存储节点一一对应,最后通过网络发送给存储节点。
具体的:通过并发调度网卡的计算模块,将前述多个WQE(即P个RDMA写入请求),分别提交到发送队列SQ,SQ用于计算节点向存储设备发送的工作请求,RQ用于存储节点接收计算节点发送的工作请求,每个计算节点上的每个SQ都关联一个数据接收端的RQ,使得存储节点20和计算节点10可以通过队列对进行通信。
图4~图5是本申请实施例给出的三副本和EC4+2场景下的数据发送方法示意图:
如图4所示的三副本场景,在网卡102中接收到处理器101发送的第一数据和第一地址后,处理器106中的专用调度引擎进行并发操作:将第一数据中包含的副本1~3和相应待写入地址等内容组装起来,并发生成3个工作请求WQE(例如RDMA写请求),分别放入发送队列SQ1、SQ2和SQ3中,每个WQE中都携带了待写入的一个副本数据和其对应的待写入地址(即第一地址)。一种可能的实施方式,第一数据中可能只携带了一份副本数据,网卡102在获取到数据后需要再复制另两份副本数据。
图4所示的是EC 2+2场景,在网卡102中接收到处理器101发送的第一数据和第一地址后,处理器106中的专用调度引擎进行并发操作:首先将第一数据中包含的数据分片1~2、校验分片P、Q和相应待写入地址内容组装起来,并发生成4个工作请求WQE(例如RDMA写请求),分别放入发送队列SQ1、SQ2、SQ3和SQ4中,每个WQE中都携带了待写入的一个数据分片或校验分片,以及其对应的待写入地址。
在本申请实施例中,处理器106可以通过调用网卡102中存储的计算机执行指令,使得网卡102可以执行如图2所示的实施例中由网卡102所执行的操作。
步骤304:多个存储节点写入数据。
具体的:多个存储节点(例如20a~20d)接收到网卡102发送的写入请求后,根据其中携带的数据和待写入地址,对数据进行存储。
例如,如图5所示的三副本场景中,存储节点20a~20c的通过各自的网卡(201a~201c) 接收到RDMA写入请求,例如网卡201a中有接收队列RQ1,接收到的写入请求被放入该队列中,写入请求中携带副本1的数据和写入地址,存储节点20a将该副本数据存入自身的存储器203中。例如,在内存三副本的场景中,网卡201a接收到数据后,可以直接将其写入DRAM 或SCM中。存储节点20b和20c的情况和20a类似的,此处不再赘述,它们的网卡分别接收到副本2和副本3的数据,并写入各自的存储器中。
再例如,如图6所示的EC2+2场景中,存储节点20a~20d的通过网卡接收到RDMA写入请求,网卡201a~201d分别有接收队列RQ1~RQ4,将接收到的写入请求被放入相应队列中。例如,网卡201a接收的写入请求中携带数据分片EC1和写入地址,网卡201c接收的写入请求中携带检验分片P和写入地址,存储节点20a和20c分别将该数据分片EC1和校验分片P存入自身的存储器203中。存储节点20b和20d的情况类似的,此处不再赘述,它们的网卡分别接收到数据分片EC2和校验分片Q的数据,并写入各自的存储器中。
一种可能的实施方式,写入请求中的第一地址可以是存储节点20a~20c内存中的地址,即为内存三副本或内存EC的场景,例如内存可以是SCM,SCM可以以字节进行寻址,存储节点20的网卡可以根据待写入地址直接将副本或分片写内存中。在该场景下,本申请实施例的方法可以大大缩短encode_and_send过程的时延,提升EC和三副本场景的处理效率。
基于与方法实施例同一发明构思,本申请实施例还提供了一种数据发送装置,该数据发送装置可以部署在计算机系统或服务节点(例如计算节点10和存储节点20)的网卡上,用于执行上述如图3—6所示的方法实施例中由所述网卡102执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图7所示,所述装置400包括获取模块401、处理模块402 以及发送模块403。具体的:
获取模块401,用于获取第一数据和第一地址。可选的,获取模块401还用于:从主机的处理器中获取第一数据和第一地址,其中,网卡位于主机中;或者,从主机的内存中直接获取第一数据和第一地址。这里的主机可以是计算节点10。
处理模块402,用于根据第一数据和第一地址,生成P个写入请求,其中,P个写入请求中每个写入请求中携带写入数据和对应的写入地址,P为大于2的正整数;处理模块,还用于将P个写入请求放入P个发送队列QP中,P个写入请求和P个QP一一对应。
可选的,处理模块402还用于:将第一数据复制成P个写入数据,或,将第一数据切分成P个写入数据,其中,P个写入数据是P个相同的数据。
可选的,处理模块402还用于:将第一数据切分成P个写入数据,其中,P个写入数据中包括:n个数据分片和n个数据分片对应的m个校验分片,其中m、n为正整数,P=n+m。
可选的,处理模块402还用于:将第一地址切分成P个写入地址,第一地址代表一段存储空间,P个写入地址中的每个写入地址对应P个存储节点中一个节点上的一段存储空间;将P个写入数据和P个写入地址,组装成P个写入请求,每个写入请求中携带P个写入数据中的一个数据以及对应的P个写入地址中的一个地址。
发送模块403,用于基于P个QP向P个存储节点发送P个写入请求,P个写入请求中的写入地址和P个存储节点一一对应。
可选的,该写入请求为RDMA写入请求,P个写入地址分别对应P个存储节点中各个存储节点的内存存储空间。
本申请还提供一种芯片,该芯片包括处理器和通信接口,其中,该通信接口用于与芯片所在的设备的处理器进行通信,处理器可以如处理器106的实现形态,所述芯片的处理器用于实现本申请实施例中由计算节点10中的网卡102所执行方法的操作步骤的功能。为了简洁,在此不再赘述。
可选地,该芯片还可以为图1-图2所示计算节点10中除网卡102以外的一个卸载卡,该卸载卡用于实现本申请实施例中的数据发送的方法,在此不再赘述。
本申请还提供一种网卡,该网卡的结构诸如图5-图6所示的网卡102,该网卡包括:处理器102,用于实现申请实施例中的方法中的由计算节点的网卡102所执行方法的操作步骤的功能,在此不再赘述。该网卡可以和处理器(例如CPU)、内存共同组成数据设备,该数据设备例如是移动终端、个人电脑、服务器。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (15)
1.一种数据发送方法,其特征在于,该方法应用于网卡,所述方法包括:
获取第一数据和第一地址;
根据所述第一数据和所述第一地址,生成P个写入请求,其中,所述P个写入请求中每个写入请求中携带写入数据和对应的写入地址,P为大于2的正整数;
将所述P个写入请求放入P个发送队列QP中,所述P个写入请求和所述P个QP一一对应;
基于所述P个QP向P个存储节点发送所述P个写入请求,所述P个写入请求中的写入地址和所述P个存储节点一一对应。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将第一数据复制成P个所述写入数据,或,将所述第一数据切分成P个所述写入数据,其中,所述P个写入数据是P个相同的数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述第一数据切分成P个所述写入数据,其中,所述P个写入数据中包括:n个数据分片和所述n个数据分片对应的m个校验分片,其中m、n为正整数,P=n+m。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
将所述第一地址切分成P个写入地址,所述第一地址代表一段存储空间,所述P个写入地址中的每个写入地址对应所述P个存储节点中一个节点上的一段存储空间;
将所述P个写入数据和所述P个写入地址,组装成P个写入请求,每个所述写入请求中携带所述P个写入数据中的一个数据以及对应的所述P个写入地址中的一个地址。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述写入请求为RDMA写入请求,所述P个写入地址分别对应所述P个存储节点中各个存储节点的内存存储空间。
6.根据权利要求1-5任一项所述的方法,其特征在于,获取所述第一数据和所述第一地址,包括:
所述网卡从主机的处理器中获取所述第一数据和所述第一地址,其中,所述网卡位于所述主机中;或者
所述网卡从所述主机的内存中直接获取所述第一数据和所述第一地址。
7.一种数据发送装置,其特征在于,该装置应用于网卡,所述装置包括:
获取模块,用于获取第一数据和第一地址;
处理模块,用于根据所述第一数据和所述第一地址,生成P个写入请求,其中,所述P个写入请求中每个写入请求中携带写入数据和对应的写入地址,P为大于2的正整数;
所述处理模块,还用于将所述P个写入请求放入P个发送队列QP中,所述P个写入请求和所述P个QP一一对应;
发送模块,用于基于所述P个QP向P个存储节点发送所述P个写入请求,所述P个写入请求中的写入地址和所述P个存储节点一一对应。
8.根据权利要求7所述的装置,其特征在于,所述处理模块还用于:
将第一数据复制成P个所述写入数据,或,将所述第一数据切分成P个所述写入数据,其中,所述P个写入数据是P个相同的数据。
9.根据权利要求7所述的装置,其特征在于,所述处理模块还用于:
将所述第一数据切分成P个所述写入数据,其中,所述P个写入数据中包括:n个数据分片和所述n个数据分片对应的m个校验分片,其中m、n为正整数,P=n+m。
10.根据权利要求8或9所述的装置,其特征在于,所述处理模块还用于:
将所述第一地址切分成P个写入地址,所述第一地址代表一段存储空间,所述P个写入地址中的每个写入地址对应所述P个存储节点中一个节点上的一段存储空间;
将所述P个写入数据和所述P个写入地址,组装成P个写入请求,每个所述写入请求中携带所述P个写入数据中的一个数据以及对应的所述P个写入地址中的一个地址。
11.根据权利要求7-10任一项所述的装置,其特征在于,所述写入请求为RDMA写入请求,所述P个写入地址分别对应所述P个存储节点中各个存储节点的内存存储空间。
12.根据权利要求7-11任一项所述的装置,所述获取模块还用于:
从主机的处理器中获取所述第一数据和所述第一地址,其中,所述网卡位于所述主机中;或者
从所述主机的内存中直接获取所述第一数据和所述第一地址。
13.一种网卡,其特征在于,所述网卡包括:处理器和存储器,所述存储器存储有计算机指令,所述处理器执行所述计算机指令以实现如权利要求1至6任一项所述的方法。
14.一种计算设备,其特征在于,所述计算设备中包括网卡和处理器,所述处理器用于生成第一数据和第一地址,所述网卡用于执行如权利要求1至6任一项所述的方法。
15.一种计算机可读介质,其特征在于,所述计算机可读介质存储有计算机程序,所述计算机程序在计算机上运行时,使得所述计算机实现如权利要求1至6任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110910507.0A CN115904210A (zh) | 2021-08-09 | 2021-08-09 | 一种数据发送的方法、网卡和计算设备 |
PCT/CN2022/111169 WO2023016456A1 (zh) | 2021-08-09 | 2022-08-09 | 一种数据发送的方法、网卡和计算设备 |
EP22855437.4A EP4343528A1 (en) | 2021-08-09 | 2022-08-09 | Data sending method, network card and computing device |
US18/425,429 US20240171530A1 (en) | 2021-08-09 | 2024-01-29 | Data Sending Method, Network Interface Card, and Computing Device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110910507.0A CN115904210A (zh) | 2021-08-09 | 2021-08-09 | 一种数据发送的方法、网卡和计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115904210A true CN115904210A (zh) | 2023-04-04 |
Family
ID=85199863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110910507.0A Pending CN115904210A (zh) | 2021-08-09 | 2021-08-09 | 一种数据发送的方法、网卡和计算设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240171530A1 (zh) |
EP (1) | EP4343528A1 (zh) |
CN (1) | CN115904210A (zh) |
WO (1) | WO2023016456A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381767B (zh) * | 2018-12-28 | 2024-03-26 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
EP3771180B1 (en) * | 2019-07-25 | 2023-08-30 | INTEL Corporation | Offload of storage node scale-out management to a smart network interface controller |
CN112788079A (zh) * | 2019-11-07 | 2021-05-11 | 华为技术有限公司 | 一种数据传输方法、网络设备、网络系统及芯片 |
CN113360077B (zh) * | 2020-03-04 | 2023-03-03 | 华为技术有限公司 | 数据存储方法、计算节点及存储系统 |
-
2021
- 2021-08-09 CN CN202110910507.0A patent/CN115904210A/zh active Pending
-
2022
- 2022-08-09 EP EP22855437.4A patent/EP4343528A1/en active Pending
- 2022-08-09 WO PCT/CN2022/111169 patent/WO2023016456A1/zh active Application Filing
-
2024
- 2024-01-29 US US18/425,429 patent/US20240171530A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4343528A1 (en) | 2024-03-27 |
US20240171530A1 (en) | 2024-05-23 |
WO2023016456A1 (zh) | 2023-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10782880B2 (en) | Apparatus and method for providing storage for providing cloud services | |
US11132328B2 (en) | High level instructions with lower-level assembly code style primitives within a memory appliance for accessing memory | |
US10289507B1 (en) | Distributed rebuild of failed storage device | |
WO2017039802A1 (en) | Systems and methods for data organization in storage systems using large erasure codes | |
US11262916B2 (en) | Distributed storage system, data processing method, and storage node | |
US11416166B2 (en) | Distributed function processing with estimate-based scheduler | |
US9760314B2 (en) | Methods for sharing NVM SSD across a cluster group and devices thereof | |
WO2017048374A1 (en) | Systems and methods for pre-generation and pre-storage of repair fragments in storage systems | |
CN109144406B (zh) | 分布式存储系统中元数据存储方法、系统及存储介质 | |
US10216423B1 (en) | Streams across multiple controllers to improve solid state drive performance | |
EP4318251A1 (en) | Data access system and method, and device and network card | |
US11079968B1 (en) | Queue management in multi-site storage systems | |
US11899533B2 (en) | Stripe reassembling method in storage system and stripe server | |
CN112262407A (zh) | 分布式文件系统中基于gpu的服务器 | |
CN114201421A (zh) | 一种数据流处理方法、存储控制节点及可读存储介质 | |
US11994944B2 (en) | Efficient networking for a distributed storage system | |
CN115270033A (zh) | 一种数据访问系统、方法、设备以及网卡 | |
CN113315800A (zh) | 镜像存储、下载方法、设备以及系统 | |
CN113411363A (zh) | 一种镜像文件的上传方法、相关设备及计算机存储介质 | |
CN113039514A (zh) | 分布式文件系统中的数据迁移 | |
CN113918083A (zh) | 分条管理方法、存储系统、分条管理装置及存储介质 | |
CN115904210A (zh) | 一种数据发送的方法、网卡和计算设备 | |
EP3889778B1 (en) | Distributed storage system and computer program product | |
US11221948B2 (en) | Coordinated reclaiming of data storage space | |
US20220357852A1 (en) | Tracking data mirror differences |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |