CN114490463A - 一种保序执行写请求的方法及网络设备 - Google Patents
一种保序执行写请求的方法及网络设备 Download PDFInfo
- Publication number
- CN114490463A CN114490463A CN202011271692.5A CN202011271692A CN114490463A CN 114490463 A CN114490463 A CN 114490463A CN 202011271692 A CN202011271692 A CN 202011271692A CN 114490463 A CN114490463 A CN 114490463A
- Authority
- CN
- China
- Prior art keywords
- write
- request
- preserving
- order
- address
- 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 60
- 238000012790 confirmation Methods 0.000 claims abstract description 110
- 238000004891 communication Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 83
- 230000015654 memory Effects 0.000 claims description 37
- 230000005540 biological transmission Effects 0.000 claims description 15
- 230000003111 delayed effect Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 6
- PWHVEHULNLETOV-UHFFFAOYSA-N Nic-1 Natural products C12OC2C2(O)CC=CC(=O)C2(C)C(CCC2=C3)C1C2=CC=C3C(C)C1OC(O)C2(C)OC2(C)C1 PWHVEHULNLETOV-UHFFFAOYSA-N 0.000 description 30
- 101100388291 Arabidopsis thaliana DTX49 gene Proteins 0.000 description 26
- 101100268840 Danio rerio chrna1 gene Proteins 0.000 description 26
- 101150065731 NIC1 gene Proteins 0.000 description 26
- GWWNCLHJCFNTJA-UHFFFAOYSA-N nicandrenone-2 Natural products C12OC2C2(O)CC=CC(=O)C2(C)C(CCC23C)C1C3CCC2(O)C(C)C1OC(O)C2(C)OC2(C)C1 GWWNCLHJCFNTJA-UHFFFAOYSA-N 0.000 description 21
- 230000008569 process Effects 0.000 description 21
- 101100388299 Arabidopsis thaliana DTX54 gene Proteins 0.000 description 17
- 101100294133 Arabidopsis thaliana NIC2 gene Proteins 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 7
- 230000001960 triggered effect Effects 0.000 description 6
- 238000010200 validation analysis Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000002146 bilateral effect Effects 0.000 description 2
- 238000001152 differential interference contrast microscopy Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000005452 bending Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- 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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0001—Systems modifying transmission characteristics according to link quality, e.g. power backoff
- H04L1/0015—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy
- H04L1/0017—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy where the mode-switching is based on Quality of Service requirement
- H04L1/0018—Systems modifying transmission characteristics according to link quality, e.g. power backoff characterised by the adaptation strategy where the mode-switching is based on Quality of Service requirement based on latency requirement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/1607—Details of the supervisory signal
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)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种保序执行写请求的方法和网络设备,所述方法由存储节点的网络设备执行,其特征在于,包括:接收保序确认请求,所述保序确认请求中携带分配给第一写请求的第一写入地址;确认被分配了第二写入地址的第二写请求还未完成执行,其中,所述第二写入地址在所述第一写入地址之前;延迟发送所述保序确认请求的反馈信息。通过根据本申请实施例的方法,减少了在执行保序确认请求时对RDMA通信带宽的占用,提高了存储系统的通信效率。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种保序执行写请求的方法及网络设备。
背景技术
在存储系统中,通常包括多个计算节点和多个存储节点。其中,多个计算节点可通过远程直接内存访问(Remote Direct Memory Access,RDMA)技术,并发对存储节点的存储空间进行写入。计算节点在从上层应用(Application,APP)接收对存储节点的存储空间写入数据的写请求之后,通常首先向存储节点申请用于写入数据的写入地址,之后,计算节点请求存储节点在该写入地址写入相应的数据。在该存储系统中,为了保证在存储节点的存储空间的已写入数据的空间之间不出现零散的未使用空间,计算节点在请求存储节点写入数据之后使用RDMA技术向存储节点发送保序确认请求,以确认该写入是否为保序写入,如果确认结果为是,则计算节点对其上层应用返回写请求完成执行的信息。如果确认结果为否,计算节点将重复向存储节点发送保序确认请求,以在确认该写入为保序写入之后,再向上层应用返回写请求完成执行的信息,从而占用了RDMA的通信带宽。
发明内容
本申请实施例旨在提供一种更有效的保序执行写请求的方案,该方案通过存储节点中的网络设备的操作实现在保序确认请求确认失败时延迟向计算节点发送反馈信息,减少了对RDMA的通信带宽的占用,提高了存储系统的通信效率。
为实现上述目的,本申请一方面提供一种保序执行写请求的方法,所述方法由存储节点的网络设备执行,其特征在于,包括:接收保序确认请求,所述保序确认请求中携带分配给第一写请求的第一写入地址;确认被分配了第二写入地址的第二写请求还未完成执行,其中,所述第二写入地址在所述第一写入地址之前;延迟发送所述保序确认请求的反馈信息。其中,所述第二写入地址在所述第一写入地址之前表示,第二写入地址小于第一写入地址,从而在执行写请求时,应先完成第二写请求,即先向上层应用反馈对第二写入地址的写入,然后再完成第一写请求,即向上层应用反馈对第一写入地址的写入。通过由网络设备(例如网卡)在保序确认请求确认失败时延迟返回对所述保序确认请求的返回信息,避免计算节点多次重复向网卡发送保序确认请求以进行保序确认,从而减少了对RDMA通信带宽的占用。
在一种实施方式中,所述延迟发送所述保序确认请求的反馈信息包括:向所述存储节点的处理器发送与第一写请求对应的延迟处理请求,在由所述处理器计时第一时长之后,从所述处理器接收与所述第一写请求对应的延迟处理结束信息,响应于所述延迟处理结束信息发送所述保序确认请求的反馈信息。在一种实施方式中,所述第一时长为预设时长。在另一种实施方式中,所述第一时长由所述处理器基于以下至少一项确定:上层业务负载量;所述第一写入地址与当前应完成执行的写请求被分配的写入地址之差。
通过向所述存储节点的处理器发送延迟处理请求,以使得处理器来进行延迟处理的计时,从而可由处理器执行计时的复杂逻辑,实现所述延迟处理。另外,处理器还可以基于复杂的计算逻辑来确定第一时长,从而更智能地实现所述延迟处理。
在一种实施方式中,所述延迟发送所述保序确认请求的反馈信息包括,确定第一时长,对第一时长计时,在对第一时长计时结束之后发送所述保序确认请求的反馈信息。在一种实施方式中,所述第一时长为预设时长。在另一种实施方式中,所述确定第一时长包括,基于以下至少一项确定第一时长:上层业务负载量;所述第一写入地址与当前应完成执行的写请求被分配的写入地址之差。
通过由网络设备自身确定第一时长、对第一时长计时,使得不需要存储节点的CPU参与处理,节省了存储节点的计算资源。
在一种实施方式中,所述方法还包括,在确认被分配第二写入地址的第二写请求还未完成执行之后,确定是否满足延迟发送所述反馈信息的预定条件,所述延迟发送所述保序确认请求的反馈信息包括,在确定满足所述预定条件的情况中,延迟发送所述保序确认请求的反馈信息。其中,所述预定条件为以下至少一个条件:上层业务负载量大于预定阈值;所述第一写入地址与当前应完成执行的写请求被分配的写入地址之差大于预定值。
在一种实施方式中,所述存储节点中设置有对应于所述存储节点中的一段物理存储空间的逻辑存储空间,在所述接收保序确认请求之前,所述方法还包括:在所述逻辑存储空间中为所述第二写请求分配所述第二写入地址,在所述逻辑存储空间为所述第一写请求分配所述第一写入地址。
通过在存储节点中设置与存储节点中的物理存储空间对应的逻辑存储空间,存储节点的网络设备可将对逻辑存储空间的操作映射至对存储节点中的物理存储空间的操作,从而实现对存储在存储节点中的物理存储空间中的业务数据的操作。
在一种实施方式中,所述确认被分配第二存储位置的第二写请求还未完成执行包括:确认所述第一写入地址是否为所记录的未完成的访问所述逻辑存储空间的写请求包括的写入地址中的最小写入地址,如果不是,则确认所述第二写请求还未完成执行。
通过确定第一写请求中的第一写入地址与所记录的未完成的访问逻辑存储空间的写请求的地址信息是否匹配,来确定第一写请求是否为保序写入,可以更新方便准确地控制写请求的完成信息返回的顺序。
本申请另一方面提供一种保序执行写请求的装置,部署于存储节点的网络设备执行,其特征在于,所述装置包括:接收单元,用于接收保序确认请求,所述保序确认请求中携带分配给第一写请求的第一写入地址;确认单元,用于确认被分配了第二写入地址的第二写请求还未完成执行,其中,所述第二写入地址在所述第一写入地址之前;延迟发送单元,用于延迟发送所述保序确认请求的反馈信息。
在一种实施方式中,所述延迟发送单元包括:第一发送子单元,用于向所述存储节点的处理器发送与所述第一写请求对应的延迟处理请求,接收子单元,用于在由所述处理器计时第一时长之后,从所述处理器接收与所述第一写请求对应的延迟处理结束信息,第二发送子单元,用于响应于所述延迟处理结束信息发送所述保序确认请求的反馈信息。
在一种实施方式中,所述延迟发送单元包括:确定子单元,用于确定第一时长,计时子单元,用于对第一时长计时,第三发送子单元,用于在对第一时长计时结束之后发送所述保序确认请求的反馈信息。
在一种实施方式中,所述装置还包括,确定单元,用于在确认被分配了第二写入地址的第二写请求还未完成执行之后,确定是否满足延迟发送所述反馈信息的预定条件,所述延迟发送单元还用于在确定满足所述预定条件的情况中,延迟发送所述保序确认请求的反馈信息。
在一种实施方式中,所述存储节点中设置有对应于所述存储节点中的一段物理存储空间的逻辑存储空间,所述装置还包括:第一分配单元,用于在所述接收保序确认请求之前,在所述逻辑存储空间中为所述第二写请求分配所述第二写入地址,第二分配单元,用于在所述逻辑存储空间为所述第一写请求分配所述第一写入地址。
在一种实施方式中,所述确认单元用于:确认所述第一写入地址的起始地址与当前全部未完成的对所述逻辑存储空间的写请求对应的写入地址的起始地址是否一致,如果不一致,则确认所述第二写请求还未完成执行。
本申请另一方面提供一种网络设备,包括处理单元和存储单元,所述存储单元中存储有可执行代码,所述处理单元执行所述可执行代码时,实现上述任一种方法。
本申请另一方面提供一种网络设备,包括通信接口,用于与存储节点及计算节点进行数据传输;处理单元,用于对所述通信接口接收的数据进行处理,以执行上述任一种方法。
本申请另一方面提供一种计算设备,包括上述任一种网络设备。
本申请另一方面提供一种存储介质,所述存储介质中存储有可执行指令,存储节点的网络设备执行所述存储介质中的可执行指令以实现上述任一种方法。
本申请另一方面提供一种程序产品,存储节点的网络设备通过运行所述程序产品,以执行上述任一种方法。
附图说明
通过结合附图描述本申请实施例,可以使得本申请实施例更加清楚:
图1为本申请实施例提供的存储系统的示意图;
图2为单边操作(a)和双边操作(b)的示意图;
图3为本申请实施例提供的一种保序执行写请求的方法流程图;
图4为本申请实施例提供的为写请求分配地址的示意图;
图5为对变量b执行CAS操作的过程示意图;
图6为本申请实施例提供的一种NIC0的结构示意图;
图7为本申请实施例提供的另一种NIC0的结构示意图;
图8为本申请另一实施例提供的另一种保序执行写请求的方法流程图;
图9为本申请实施例提供的一种保序执行写请求的装置的示意图;
图10为根据本申请实施例的云服务系统的示意图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
图1为本申请实施例提供的存储系统的示意图。如图1中所示,存储系统中包括多个计算节点,图中示意示出了计算节点C2和计算节点C1,多个存储节点,图1中示意示出了存储节点S0、S1和S2,其中每个计算节点与各个存储节点连接,图1中示意示出计算节点C2与各个存储节点S0、S1和S2之间的连接。所述计算节点和存储节点可以为物理服务器或物理计算设备,或者也可以为虚拟机、容器等基于通用硬件资源抽象的虚拟实体。计算节点和存储节点中包括内存(Memory,MEM)、中央处理器(central processing unit,CPU)和网络接口控制器(英语:network interface controller,NIC)。其中,所述MEM中例如包括存储级内存(Storage class memory,SCM)、固态硬盘(Solid State Disk或Solid StateDrive,简称SSD)等存储设备。所述计算节点和存储节点中设置有用于实施RDMA技术的软硬件架构,如Infiniband架构、RoCE架构和iWARP架构等。
计算节点与存储节点之间可通过RDMA技术进行数据传输,如图1所示,相比于基于传输控制协议/互联网络协议(Transmission Control Protocol/Internet Protocol,TCP/IP协议)的网络传输技术,RDMA技术可以在例如客户端C2与存储节点S0之间通过二者的NIC实现内存数据(即应用缓存中的数据)的直接传递,而不需要使用操作系统(Operating System,OS)和TCP/IP协议栈,并且,大部分数据传输的负载卸载到了网络接口控制器上执行,CPU得到了释放。
根据传输数据的目的端是否需要CPU参与到数据控制的逻辑中,RDMA数据传输技术分为单边操作和双边操作。图2为单边操作(a)和双边操作(b)的示意图。如图2中的(a)所示,在单边操作中,例如,在单边写入操作中,计算节点C2中的CPU2指示NIC2从内存2中的应用缓存中的数据发送给存储节点S0的NIC0,存储节点S0的NIC0直接将数据存储到内存0中的对应的内存位置中,从而完成该单边写入操作。在该过程中,计算节点C2中不需要使用操作系统OS和TCP/IP协议栈,存储节点S0中不需要操作系统OS和CPU的参与。如图2中的(b)所示,在双边操作中,计算节点C2中的CPU2指示NIC2向存储节点S0的NIC0发送例如控制信息(例如远程过程调用(Remote Procedure Call,RPC)信息),存储节点S0的NIC0在接收到所述控制信息之后,通过调用上层回调函数向CPU0传递所述控制信息,从而使得CPU0可进行相应的控制操作,并将操作结果通过与前述过程相逆的过程返回给计算节点C2。在该双边操作的过程中,不需要使用操作系统OS和TCP/IP协议栈。从而,上述RDMA技术中的单边操作和双边操作都节省了外部存储器复制和上下文切换的开销,减少了CPU的处理,提高了系统性能。
如图1中所示,各个计算节点可通过RDMA技术向存储节点写入数据。例如,计算节点C2和计算节点C1可能都请求向存储节点S0的MEM0中写入数据,在该情况中,为了避免计算节点S0的存储空间中出现空洞(即存储空间中的两段已使用空间之间的零散未使用空间),可以在一段连续存储空间中根据请求写入数据的大小预先分配写入地址。例如如图1中所示,计算节点C1通过预先向存储节点S0进行申请,从而存储节点S0对写请求1分配与存储节点S0的存储地址对应的写入地址“PLOG1,偏移地址:10”,类似地,计算节点C2的写请求2被分配与存储节点S0的存储地址对应的写入地址“PLOG1,偏移地址:20”。
其中,持久化日志空间(Persistence LOG,PLOG)是在存储系统中设置的与存储介质中的一段物理地址空间相对应的逻辑存储单元,其具有预定大小,如2M,也就是说,2M大小的PLOG与2M的连续存储空间相对应。通常,PLOG与SCM、SSD等介质中的物理地址空间相对应,可以理解,本申请实施例对此不作限定,PLOG也可与其它存储介质中的物理地址空间相对应。计算节点C2的上层应用可以首先向任一存储节点(例如存储节点S0)申请可用的PLOG1,之后可请求对PLOG1进行读写操作。存储节点S0可以响应于上述对PLOG1的申请新建PLOG1,即存储节点S0在内存中对PLOG1分配实际的物理空间,并在NIC0中记录该新建的PLOG1对应的物理空间的起始地址,同时将该PLOG1提供给计算节点C2使用。或者,存储节点S0可以将已有的可使用的PLOG1提供给计算节点C2使用。
在存储系统中,为了保证数据存储的可靠性,通常采用多副本的机制来存储用户数据。例如,对任意数据设定存储3个副本,从而,如图1所示,当计算节点C2的上层应用申请PLOG1时,在存储系统中使得在例如三个存储节点S0、S1和S2中都设置与PLOG1对应的物理空间,以供计算节点C2使用,其中,各个存储节点的NIC中分别记录了该存储节点中的与PLOG1对应的物理空间的起始地址。
当计算节点C2的上层应用希望向存储系统中的PLOG1写入数据2时,发起向PLOG1写入数据2的请求(写请求2),该写请求2例如包括逻辑存储单元的标识(例如“PLOG1”)、数据长度(例如15字节)和数据在本地的缓存地址。从而,计算节点C2首先向存储节点S0请求分配PLOG1中的可用于写入数据2的地址,例如PLOG1中当前可分配给写请求2的地址2的起始地址为偏移地址2(例如20),从而存储节点S0对写请求2分配的写入地址为PLOG1中的以20为起始地址、长度为写请求2的待写数据的长度的地址空间,在该分配之后,存储节点S0将PLOG1中的当前未分配的地址空间的起始地址修改为20+15=35。之后,计算节点C2分别向存储节点S0、S1和S2发送在PLOG1中写入数据2的请求,以向存储节点S0、S1和S2中的与PLOG1中的地址2对应的存储空间中分别写入所述数据2。
在进行上述数据写入之后,计算节点C2向存储节点S0发送保序确认请求以确认所述写入是否为保序写入,具体是,确认写请求2是否为当前全部未完成写请求中写入地址最小的写请求,也即确认当前全部未完成写请求对应的PLOG1的地址空间的起始地址是否为20。如果确认结果为是,则存储节点S0的NIC0将当前全部未完成写请求对应的PLOG1的地址空间的起始地址修改为35,并向计算节点C2的NIC2返回写请求2完成执行的信息,从而计算节点C2的NIC2向上层应用返回成功写入的反馈信息。如果确认结果为否,表示被分配小于20的地址的写请求尚未执行完成。例如,计算节点C1相对于写请求1向存储节点S0申请获得的PLOG1的地址空间的起始地址为偏移地址10,并且待写入的数据长度为10,如果在计算节点C2发起上述保序确认请求时计算节点C1尚未完成写请求1,从而存储节点S0中记录的当前全部未完成写请求对应的PLOG1的地址空间的起始地址为10。
在该情况中,在相关技术中,存储节点S0的NIC0立即向计算节点C2的NIC2返回保序确认失败的信息,计算节点C2将反复向存储节点S0发送保序确认请求以确认所述写入是否为保序写入,直到确定所述写入是保序写入之后再向上层应用返回写请求2完成执行的信息,从而防止在写请求1尚未完成时完成写请求2,以防止在PLOG1对应的存储节点的存储空间中出现空洞。在该实施方式中,通过存储节点S0中的NIC0执行保序确认过程,而未使用存储节点S0中的CPU0,即,该保序确认过程为RDMA单边操作。然而,上述反复保序确认过程造成了RDMA通信次数的增加,如果并发写请求的数量大,则所述多次RDMA通信大量占用了RDMA的通信带宽,对RDMA通信效率带来负面影响。
在根据本说明书实施例的写入保序方案中,如图1中所示,存储节点S0的NIC0在确认所述写请求2对应的写入当前不是保序写入之后,并不立即返回确认失败的信息,而是延迟发送该确认失败信息,以减少对RDMA带宽的占用。
下文将详细描述上述写入保序方案。
图3为本申请实施例提供的一种保序执行写请求的方法流程图。该方法由计算节点C1中的CPU1和NIC1、计算节点C2中的CPU2和NIC2、以及存储节点S0中的NIC0和CPU0共同执行。
如图3所示,首先在步骤S301,计算节点C1的CPU1接收写请求1。该写请求1由用户在APP发起,例如,计算节点C1的用户在通过APP申请PLOG1之后,希望将该APP缓存中的数据1写入到PLOG1中,以在存储节点中存储数据1。因此,该用户通过APP发起对数据1的写请求1,该写请求1例如包括以下信息:PLOG1,len=10,buf=0x100。其中,写请求中的PLOG1表示将对PLOG1写入数据1,len=10表示数据1的长度为10字节,buf=0x100表示数据1当前存储在计算节点C1的MEM1中的以地址100为起始地址、长度为10字节的存储空间中。在用户发起该写请求1之后,计算节点C1的CPU1通过APP接收到该写请求1。
在步骤S302,CPU1向NIC1发送地址分配请求,以请求存储节点S0对写请求1分配写入地址。
在计算节点C1中,基于RDMA软硬件架构,在应用与NIC1之间设置有传输接口层(software transport interface),该传输接口层通常称为Verbs接口层。该接口层中的每个接口可对应于请求一种RDMA操作。例如,所述接口层可包括写接口、读接口、原子获取和相加(Atomic Fetch and ADD,FAA)接口、原子比较和交换(Atomic Compare and Swap,CAS)接口,其中,写接口对应于请求远端NIC执行单边写操作,读接口对应于请求远端NIC执行单边读操作,FAA接口对应于请求远端NIC执行单边FAA操作,CAS接口对应于请求远端NIC执行单边CAS操作。其中FAA操作和CAS操作都是用于对原子变量进行的原子操作。所述原子变量为原子操作的基本单位,所述原子变量可保证一系列原子操作不被打断,保证了原子操作的安全性。所述原子操作包括不会被其它操作打断的一系列操作,这种操作一旦开始,就一直运行到结束,中间不会换到其它操作。对所述FAA操作和CAS操作的具体执行过程将在下文详细描述。
在接收上述写请求1之后,CPU1例如可调用Verbs接口层中的FAA接口,从而生成用于请求远端的NIC0执行FAA操作的地址分配请求,并将该地址分配请求发送给NIC1,以用于请求存储节点S0对写请求1分配PLOG1中的用于写入数据1的地址。具体是,所述地址分配请求中包括以下信息:PLOG1,len=10,这些信息用于作为FAA操作的传入参数,该地址分配请求中还包括写请求1的标识,以用于指示该地址分配请求与写请求1相对应,另外,该地址分配请求中还包括存储节点S0的标识,以用于指示向存储节点S0发送该地址分配请求。
可以理解,上文描述的由CPU1发送的地址分配请求仅仅是示意性的,本申请实施例不限于此。所述地址分配请求不限于请求存储节点S0进行FAA单边操作从而分配地址,例如,所述地址分配请求可以用于请求存储节点S0进行双边操作,从而通过存储节点S0中的CPU0对写请求1分配写入地址,CPU0例如可通过对变量进行锁定的方式来分配写入地址,而不一定通过对原子变量进行FAA操作的方式来分配写入地址。
在步骤S303,NIC1向存储节点S0的NIC0发送地址分配请求。
NIC1在从CPU1接收到上述用于请求远端NIC执行FAA操作的地址分配请求之后,向存储节点S0的NIC0发送地址分配请求,以用于请求存储节点的NIC0对写请求1分配写入地址,类似地,该由NIC1发送的地址分配请求中包括PLOG1,len=10和写请求1的标识。
在步骤S304,NIC0对写请求1分配地址1。
NIC0在从NIC1接收到用于对写请求1分配地址的地址分配请求之后,对写请求1分配用于存储写请求1中的待写数据的地址空间1,该地址空间1也可以称为地址1。一般情况下,地址空间用起始地址加地址空间的长度表示。在NIC0中可设置变量(例如变量a)来表示PLOG1中未分配地址空间中的起始地址,从而在NIC0为写请求1分配地址1时,可首先获取变量a的值(例如偏移地址1)作为分配给写请求1的地址1的起始地址,如此,分配给写请求1的地址1即为以偏移地址1为起始地址、长度为写请求1中的待写数据的长度的地址空间。在为写请求1分配地址1之后,NIC0将变量a的值更新为偏移地址1加上待写数据的长度。
在一种实施方式中,NIC0通过执行FAA操作而对写请求1分配写入地址。具体是,NIC0在从NIC1接收到请求执行FAA操作的地址分配请求之后,执行FAA操作,并对该操作传入参数:PLOG1,len=10。从而,在NIC0中对原子变量a进行以下原子操作:读取原子变量a的当前值(偏移地址1),将原子变量a的值加10,返回读取的原子变量的值。图4为本申请实施例提供的为写请求分配地址的示意图。图4中示出了变量a在分配地址过程中的值的变化,图4中还示出了逻辑存储单元PLOG1,其中,在PLOG1下方标出的数字为从0开始的偏移地址。如图4所示,例如,当执行该步骤S304时,原子变量a的值为10,因此,在执行FAA操作的过程中,首先,读取原子变量a的值为10,则10即为NIC0分配给写请求1用于写入数据1的地址1的起始地址,之后将原子变量a的值修改为10+10=20,并返回10作为分配给写请求1的地址1的起始地址。在进行该FAA原子操作之后,原子变量a的值变为10+10=20,也就是说,当NIC0下一次执行FAA操作以为另一个写请求分配写入地址时,分配的地址的起始地址将为20。NIC0有可能从多个客户端基本同时地接收到多个地址分配请求,在该情况中,NIC0通过根据接收各个地址分配请求的顺序对原子变量a执行FAA原子操作,保证了串行对各个写请求分配写入地址,从而保证了地址分配的正确性,并使得将PLOG1的空间连续地分配给各个写请求。
可以理解,NIC0不限于通过执行FAA操作来对写请求分配写入地址,例如,NIC0可通过执行代码来对变量a进行锁定而对该变量进行一系列的操作,从而可互斥地对各个写请求分配写入地址
在步骤S305,NIC0将地址1返回给NIC1。具体是,NIC0可将偏移地址1与写请求1的标识一起返回给NIC1,以指示偏移地址1为分配给写请求1的写入地址的起始地址。在步骤S306,NIC1将地址1返回给CPU1。类似地,NIC1可将偏移地址1与写请求1的标识一起返回给CPU1。从而,通过S302~S306,通过CPU1、NIC1和NIC0共同执行了单边FAA操作,从而CPU1获取到分配给写请求1的写入地址(即地址1)。
在步骤S307,计算节点C2的CPU2通过上层应用接收到写请求2,该写请求2例如包括以下信息:PLOG1,len=15,buf=0x200。之后,与步骤S302~S306类似地,通过图3中的步骤S308~S312执行一次用于向写请求2分配写入地址的单边FAA操作,从而CPU2获取了分配给写请求2的PLOG1中的地址2,具体是,该地址2为起始地址为偏移地址2、长度为15的地址空间。可以理解,由于在分配地址1之后分配地址2,显然,地址2中的地址大于地址1中的地址。例如,如图4所示,在执行步骤S310的对变量a的FAA操作之后,变量a的当前值为20,因此,该FAA操作返回20,即为写请求2分配的地址2的起始地址为20,在分配地址2之后,变量a的值变为20+15=35。
在步骤S313,计算节点C1的CPU1向NIC1发送写操作请求,以请求存储节点S0向地址1写入数据1。
在一种实施方式中,CPU1在接收到从NIC0返回的地址1之后,可调用Verbs接口层中的写接口,从而生成用于请求远端的NIC0向地址1写入数据1的写操作请求,并将该写操作请求发送给NIC1。具体是,该请求中包括以下信息:S0,PLOG1,偏移地址1,len=10,buf=0x100,以及写请求1的标识,其中S0为存储节点S0的标识,用于指示对存储节点S0发送该写操作请求。
在步骤S314,计算节点C1的NIC1从内存读取数据1。
通过RDMA软硬件架构,NIC1可从内存直接读取数据,而不需要通过操作系统OS。具体是,NIC1根据从CPU1接收的写操作请求中的“len=10,buf=0x100”,从内存地址100开始读取10字节长度的数据作为数据1。
在步骤S315,NIC1向NIC0发送写操作请求,用于请求NIC0在PLOG1的地址1中写入数据1。该由NIC1向NIC0发送的写操作请求中包括以下信息:PLOG1,偏移地址1,数据1,以及写请求1的标识。
在步骤S316,NIC0根据从NIC1接收的写操作请求在PLOG1的地址1写入数据1,即,在地址1对应的物理地址中写入数据1。
如图4所示,通过执行该步骤,也即从PLOG1中的偏移地址10开始写入数据1,并且数据1的长度为10。存储节点S0在建立PLOG1时,将PLOG1对应的起始物理地址记录到NIC0中,因此,通过RDMA软硬件架构,NIC0可直接在存储节点S0的存储空间(例如SCM)中的与PLOG1的地址1对应的物理地址中写入数据1,而不需要通过OS系统和CPU0。
在上文在存储节点S0~S2存储数据的多个副本的情况中,NIC1可相对于存储节点S1的和S2的NIC都执行步骤S315,从而分别在存储节点S0~S2中的与PLOG1的地址1对应的物理地址中写入数据1。
在步骤S317,NIC0向NIC1返回确认信息,以确认在地址1中写入数据1,该确认信息中例如包括写请求1的标识。在步骤S318,NIC1向CPU1返回确认信息,类似地,该确认信息中例如包括写请求1的标识。
在步骤S319~S324,与步骤S313~S318类似地,计算节点C2的CPU2通过向NIC2发送写操作请求,对存储节点S0发起单边写操作,以使得从PLOG1中的偏移地址2(即20)开始写入数据2,并且数据2的长度为15,即使得在存储节点S0中的与PLOG1、地址2对应的物理地址中写入数据2。也就是说,通过如上文所述为写请求分配地址并写入相应的数据,使得数据1与数据2是连续存储的,数据1与数据2之间不会出现未使用的空闲内存空间(即空洞),从而更有效地利用了内存存储空间。
在步骤S325,计算节点C2中的CPU2向NIC2发送保序确认请求,以请求存储节点S0确认对数据2的写入是否为保序写入。在一种实施方式中,CPU2通过调用CAS接口,生成用于请求存储节点S0的NIC0执行CAS操作的保序确认请求,并将该保序确认请求发送给NIC2。该请求中例如包括以下信息:S0,偏移地址2,偏移地址2+len2,以及写请求2的标识,其中len2为数据2的长度。
在步骤S326,NIC2向NIC0发送保序确认请求,以请求存储节点S0的NIC0执行保序确认操作,该由NIC2向NIC0发送的保序确认请求中包括如下信息:偏移地址2,偏移地址2+len2,写请求2的标识。
在步骤S327,NIC0执行保序确认操作,以确认写请求2的写入是否为保序写入。
在一种实施方式中,为了使得各个计算节点对PLOG1保序地写入,存储节点S0在内存中设置例如原子变量b,该原子变量b的值用于指示全部未完成执行的写请求对应的地址空间的起始地址,该原子变量b的初始值设定为0,从而通过对该原子变量b进行CAS操作来确定对应于写请求的写入是否为保序写入。在进行步骤S327时,NIC0以(偏移地址2,偏移地址2+len2)作为传入参数执行CAS操作,其中,偏移地址2为用于与变量b的值进行比较的值,偏移地址2+len2用于在比较成功(即偏移地址2=变量b的值)的情况下交换变量b的原有值,如上文所述,例如,偏移地址2=20,len2=15,即偏移地址2+len2=35。图5为对变量b执行CAS操作的过程示意图。如图5所示,在步骤S327,NIC0对原子变量b执行以下原子操作:读取原子变量b的值,例如,由于计算节点C1尚未与写请求1对应地调用CAS接口以对变量b进行CAS操作,因此,当前原子变量的值为10,比较变量b的值与传入的偏移地址2=20,这里二者不等,在二者不等的情况中,返回变量b的值(即10),指示本次地址比较失败,也即指示本次保序确认失败。也就是说,当前对地址2写入数据2不是保序写入,从而写请求2当前不能完成执行。
可以理解,上述对保序确认操作的描述仅仅是示意性地,本申请实施例不限于此。例如,NIC0可通过其中包括的微处理器执行代码而执行相应的功能,例如,NIC0可通过对特定变量进行锁定以对该特定变量进行多个连续操作而完成上述保序确认操作。
在步骤S328,存储节点S0的NIC0确定是否进行延迟处理。
目前,网卡的处理能力有限,因此,可以执行的操作也有限,如上文所述,在RDMA软件架构中,与上述各个Verbs接口对应地,网卡可执行的单边操作包括写操作、读操作、FAA操作、CAS操作等。为了增加网卡可进行的操作,需要对网卡的软件和/或硬件进行更改。图6为本申请实施例提供的一种NIC0的结构示意图。如图6所示,NIC0中包括存储单元61和处理单元62,处理单元62通过执行存储单元61中的可执行代码而执行各个操作。在该情况中,为了使得NIC0执行步骤S328,可在存储单元61中设置用于执行步骤S328的确定逻辑代码,当NIC0执行步骤S327中的CAS操作而地址比较失败时,触发NIC0对存储单元61中的确定逻辑代码的执行。通过执行该确定逻辑代码,当确定进行延迟处理时,则触发NIC0执行步骤S329,向CPU0发送信息,当确定不进行延迟处理时,则触发NIC0执行步骤S338,向NIC2发送信息。
图7为本申请实施例提供的另一种NIC0的结构示意图。如图7所示,NIC0中包括通信接口71和处理单元72,通信接口71例如与存储节点和计算节点进行数据传输,处理单元72例如通过自身设置的各个逻辑电路来对通信接口71接收的数据进行处理。在该情况中,为了使得NIC0执行步骤S328,可通过改变NIC0的硬件配置,从而在处理单元72中设置用于执行步骤S328的确定逻辑电路。其中,所述确定逻辑电路可设置为,在确定进行延迟处理的情况中,触发执行步骤S329,向CPU0发送信息,在确定不进行延迟的情况中,则触发执行步骤S338,向NIC2发送反馈信息。
在一种实施方式中,NIC0可基于NIC0中预设的规则确定是否进行延迟处理。该预设的规则可以由存储节点S0的管理者通过上层应用进行设定从而由确定逻辑代码或确定逻辑电路运行时读取,或者可以由程序员以代码的形式预设到NIC0中,或者可以在生产NIC0时以硬件的形式预设到NIC0中。所述预设的规则例如为根据当前业务负载量和或变量b的当前值来确定是否进行延迟处理,NIC0例如通过读取内存中的预设变量确定当前业务负载量,所述业务负载量例如可以通过从各个计算节点接收的上层应用的请求数来确定,或者,所述业务负载量也可以由当前各个存储节点的RDMA通信量、或者存储节点S0的RDMA通信量来确定。在一种确定规则下,如果当前业务负载量较大,NIC0可确定进行延迟处理,以减少对RDMA通信带宽的占用,如果当前业务负载量较小,则NIC0可确定不进行延迟处理。在另一种确定规则下,如果偏移地址2与变量b的当前值之差大于预定值,则可确定进行延迟处理。或者,在又一种确定规则下,可在业务负载量、变量b的值都符合预设条件时,才确定进行延迟处理,等等。
在另一种实施方式中,NIC0中可预设用于确定是否进行延迟处理的人工智能(Artificial Intelligence,AI)模型,NIC0可通过该AI模型的预测来确定是否进行延迟处理。该AI模型中例如包括预先训练的模型公式,NIC0可获取模型的输入值(例如上述当前业务负载量和变量b的值),并将当前业务负载量输入所述预设模型公式,从而根据模型的输出确定是否进行延迟处理。
可以理解,如图3中对步骤S328的虚线折弯箭头所示,该步骤是可选的,NIC0在上述CAS操作中的地址比较失败时也可以直接进行步骤S329,而不需要进行该确定步骤。
在步骤S329,NIC0请求CPU0进行延迟处理。
在一种实施方式中,NIC0向CPU0发送延迟处理请求,在所述请求中包括写请求2的标识,以请求CPU0进行延迟处理。在一种实施方式中,所述延迟处理请求中包括对延迟处理函数的调用。在一种实施方式中,所述延迟处理请求中包括所述偏移地址2。
如上文所述,步骤S329可通过执行步骤S328而触发执行。在另一种情况中,NIC0在上述CAS操作中的地址比较失败时也可以直接进行步骤S329。在后一情况中,与图6和图7所示NIC0结构类似地,可通过更改NIC0中的软件或硬件逻辑,使得NIC0在执行步骤S327的CAS操作而地址比较失败的情况中,触发执行步骤S329,以使得CPU0介入处理。
在步骤S330,CPU0进行延迟处理。
所述延迟处理请求中包括对延迟处理函数的调用或者触发CPU0进行对延迟处理函数的调用,因此,CPU0在从NIC0接收到延迟处理请求之后,执行延迟处理函数。在一种实施方式中,该延迟处理函数例如用于对预定长度时间进行计时,并在计时结束之后返回计时结束信息,以达到延迟处理的效果。在一种实施方式中,CPU0在执行该延迟处理函数之后从内存预定变量获取当前业务负载量,根据业务负载量确定延迟时间,对该确定的延迟时间进行计时,并在计时结束之后返回延迟处理结束信息。在另一种实施方式中,CPU0从延迟处理请求中获取偏移地址2,并根据业务负载量和/或偏移地址2与变量b的值的差值来确定延迟时间,对该确定的时间进行计时,并在计时结束之后返回延迟处理结束信息。
在步骤S331,与上述步骤S325类似地,计算节点C1的CPU1向NIC1发送保序确认请求,以请求存储节点S0确认根据写请求1的对地址1的写入是否为保序写入。类似地,CPU1可通过调用CAS接口,向NIC1发送所述保序确认请求,该保序确认请求中包括S0,偏移地址1、偏移地址1+len1以及写请求1的标识。
在步骤S332,NIC1向存储节点S0的NIC0发送保序确认请求,以请求NIC0执行保序确认操作,该保序确认请求中包括(偏移地址1,偏移地址1+len1)和写请求1的标识,如上文所述,所述偏移地址1例如为10,所述len1例如为10。
在步骤S333,NIC0执行保序确认操作。
与上文所述类似地,在该步骤中,NIC0可对变量b进行以下CAS原子操作操以用于保序确认:读取变量b的值,将偏移地址1的值与变量b的值比较,如果相等,则将变量b的值交换为偏移地址1+len1,如果不相等,则返回变量b的值。仍然如图5所示,在执行步骤S333时,此时变量b的值为10,地址比较成功,因此,该次CAS操作将变量b的值修改为10+10=20,并且该操作未返回变量b的值,指示本次保序确认成功。
在步骤S334,NIC0向NIC1返回确认成功信息,该信息中包括写请求1的标识。
在步骤S335,NIC1向CPU1返回确认成功信息,该信息中包括写请求1的标识。
在步骤S336,CPU1向应用返回写请求1完成执行信息。
CPU1在接收到对写请求1的确认成功信息之后,可确定在地址1中的写入为保序写入,因此可确定写请求1完成执行,因此CPU1向应用返回写请求1完成执行信息,以进一步通过应用反馈给用户。
在步骤S337,CPU0向NIC0返回延迟处理结束信息。
当CPU0根据上述延迟处理函数的处理而计时结束之后,向NIC0返回延迟处理结束信息,该信息中包括写请求2的标识,以使得NIC0结束对写请求2的延迟处理。
在步骤S338,NIC0向NIC2返回确认失败信息,该信息中包括写请求2的标识。
在步骤S339,NIC2向CPU2返回确认失败信息,该信息中包括写请求2的标识。
在步骤S340,CPU2再次向NIC2发送保序确认请求,以再次确认所述对地址2的写入是否为保序写入。CPU2可通过调用CAS接口,向NIC2发送用于使得NIC0执行CAS操作的保序确认请求,与上一次发送保序确认请求相同地,该保序确认请求中包括S0,偏移地址2、偏移地址2+len2、和写请求2的标识。
在步骤S341,NIC2向NIC0发送保序确认请求,该保序确认请求中包括(偏移地址2、偏移地址2+len2)和写请求2的标识。
在步骤S342,NIC0执行保序确认操作。
与上文类似地,NIC0可通过执行CAS操作以进行保序确认。具体是,NIC0对变量b进行以下原子操作:读取变量b的值,确定变量b的值与偏移地址2是否相等,如果相等,则将变量b的值交换为偏移地址2+len2,如果不相等,则返回变量b的值。
如上文所述,通过NIC0上一次执行CAS操作已经将变量b的值修改为20,因此,仍然如图5所示,在执行步骤S342时,经比较,变量b的值等于偏移地址2,因此,该CAS操作将变量b的值修改为35,即,本次保序确认成功。
在步骤S343,NIC0向NIC2返回确认成功信息,该信息中包括写请求2的标识。
在步骤S344,NIC2向CPU2返回确认成功信息,同样地,该信息中包括写请求2的标识。
在步骤S345,CPU2向应用返回写请求2完成执行信息。
CPU2在接收到写请求2的确认成功信息之后,可确定上述根据写请求2对地址2的写入是保序写入,因此可确定写请求2完成执行,从而向应用返回该完成信息,并使得可通过应用向用户反馈该完成信息。
从上述过程可以看出,当NIC0确定对数据的写入不是保序写入时,在确定需要延迟处理的情况中,将原来的单边保序确认操作转换为双边操作,使得CPU0介入处理,通过CPU0进行复杂的延迟处理过程,并在CPU0的延迟处理结束之后再向NIC2返回确认失败信息,从而减少了对RDMA通信带宽的占用,提高了存储系统的通信效率。
本说明书实施例的写入保序方案不限于如上文所述。图8为本申请另一实施例提供的另一种保序执行写请求的方法流程图。
图8所示方法在步骤S829之前的步骤与图3所示方法步骤相同,因此,在图8中省略了对步骤S825之前的各个步骤的示出。图8与图3所示流程图不同在于,在步骤S829,NIC0在确定需要延迟处理的情况中,或者直接在执行保序确认操作中确认失败的情况中,自身进行延迟处理。NIC0中预设了用于进行延迟处理的代码或硬件逻辑,从而可通过步骤S827或步骤S828的处理结果触发执行所述用于进行延迟处理的代码或硬件逻辑,从而达到上述通过CPU0实现的延迟处理的效果。具体是,在一种实施方式中,在执行步骤S829时,NIC0可通过执行代码或硬件逻辑而对预定长度时间进行计时,并在计时结束之后触发执行步骤S836,返回确认失败信息,以达到延迟处理的效果。在一种实施方式中,NIC0可从内存预定变量获取当前业务负载量,根据业务负载量确定延迟时间,对该确定的延迟时间进行计时,并在计时结束之后触发执行步骤S836。在另一种实施方式中,NIC0可根据业务负载量和/或偏移地址2与变量b的值的差值来确定延迟时间,对该确定的时间进行计时,并在计时结束之后触发执行步骤S836。图8中的其它步骤与图3中的对应步骤相同地执行,在此不再赘述。
图8所示过程通过NIC0中的延迟处理逻辑的执行,减少了对RDMA通信带宽的占用,提高了存储系统的通信效率。另外,当NIC0确定对数据的写入不是保序写入时,在确定需要延迟处理的情况中,可通过NIC0中预设的软件或硬件逻辑来进行延迟处理,而不需要CPU0的介入,使得保序确认过程仍为单边操作,减少了对CPU0的占用。
在本申请实施例中,通过存储节点中的网络设备的操作实现在保序确认请求确认失败时延迟向计算节点发送反馈信息,减少了对RDMA的通信带宽的占用,提高了存储系统的通信效率。
图9为本申请实施例提供的一种保序执行写请求的装置900的示意图,所述装置900部署于存储节点的网络设备执行,其特征在于,所述装置900包括:
接收单元91,用于接收保序确认请求,所述保序确认请求中携带分配给第一写请求的第一写入地址;
确认单元92,用于确认被分配了第二写入地址的第二写请求还未完成执行,其中,所述第二写入地址在所述第一写入地址之前;
延迟发送单元93,用于延迟发送所述保序确认请求的反馈信息。
在一种实施方式中,所述延迟发送单元93包括:第一发送子单元931,用于向所述存储节点的处理器发送与所述第一写请求对应的延迟处理请求,接收子单元932,用于在由所述处理器计时第一时长之后,从所述处理器接收与所述第一写请求对应的延迟处理结束信息,第二发送子单元933,用于响应于所述延迟处理结束信息发送所述保序确认请求的反馈信息。
在一种实施方式中,所述延迟发送单元93包括:确定子单元934,用于确定第一时长,计时子单元935,用于对第一时长计时,第三发送子单元936,用于在对第一时长计时结束之后发送所述保序确认请求的反馈信息。
在一种实施方式中,所述装置900还包括,确定单元94,用于在确认被分配了第二写入地址的第二写请求还未完成执行之后,确定是否满足延迟发送所述反馈信息的预定条件,所述延迟发送单元93还用于在确定满足所述预定条件的情况中,延迟发送所述保序确认请求的反馈信息。
在一种实施方式中,所述存储节点中设置有对应于所述存储节点中的一段物理存储空间的逻辑存储空间,所述装置900还包括:第一分配单元95,用于在所述接收保序确认请求之前,在所述逻辑存储空间中为所述第二写请求分配所述第二写入地址,第二分配单元96,用于在所述逻辑存储空间为所述第一写请求分配所述第一写入地址。
在一种实施方式中,所述确认单元92用于:确认所述第一写入地址的起始地址与当前全部未完成的对所述逻辑存储空间的写请求对应的写入地址的起始地址是否一致,如果不一致,则确认所述第二写请求还未完成执行。
可以理解,上文所述计算节点和存储节点可以为物理服务器,也可以为云服务器(如虚拟服务器)。图10为根据本申请实施例的云服务系统1000的示意图。参见图10,所述系统1000包括:计算设备1001和存储设备1002。所述计算设备1001包括硬件层10016和运行在硬件层10016之上的虚拟机监控器(VMM)10011,以及多个虚拟机(VMi)10012。任一所述虚拟机10012可以作为云服务系统1000的一个虚拟的计算节点。所述存储设备1002与计算设备1001类似地包括硬件层和运行在硬件层之上的虚拟机监控器(VMM),以及多个虚拟机(VMj),任一所述虚拟机可以作为云服务系统1000的一个虚拟的存储节点。下文将详细描述计算设备1001的组成作为示例。
具体的,虚拟机10012是通过虚拟机软件在公共硬件资源上模拟出的虚拟的计算机(服务器),虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
硬件层10016是虚拟化环境运行的硬件平台,可以由一个或多个物理主机的硬件资源抽象得到的。其中,硬件层可包括多种硬件,例如,硬件层10016包括处理器10014(例如CPU)和存储器10015,还可以包括网卡(即NIC)10013、高速/低速输入/输出(I/O,Input/Output)设备,及具有特定处理功能的其它设备。其中,存储器10015可以为易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM)、动态随机存取存储器(Dynamic random-access memory,DRAM);所述存储器10015也可以为非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flashmemory),硬盘(hard disk drive,HDD)、固态硬盘(solid-state drive,SSD)、存储级内存(Storage class memory,SCM)等;所述存储器10015还可以包括上述种类的存储器的组合。虚拟机10012基于VMM 10011,以及硬件层10016提供的硬件资源,运行可执行程序,以实现上述实施例中由计算节点执行的方法步骤。为了简洁,在此不再赘述。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (15)
1.一种保序执行写请求的方法,所述方法由存储节点的网络设备执行,其特征在于,包括:
接收保序确认请求,所述保序确认请求中携带分配给第一写请求的第一写入地址;
确认被分配了第二写入地址的第二写请求还未完成执行,其中,所述第二写入地址在所述第一写入地址之前;
延迟发送所述保序确认请求的反馈信息。
2.根据权利要求1所述的方法,其特征在于,所述延迟发送所述保序确认请求的反馈信息包括:
向所述存储节点的处理器发送与所述第一写请求对应的延迟处理请求,在由所述处理器计时第一时长之后,从所述处理器接收与所述第一写请求对应的延迟处理结束信息,响应于所述延迟处理结束信息发送所述保序确认请求的反馈信息。
3.根据权利要求1所述的方法,其特征在于,所述延迟发送所述保序确认请求的反馈信息包括,确定第一时长,对第一时长计时,在对第一时长计时结束之后发送所述保序确认请求的反馈信息。
4.根据权利要求1所述的方法,其特征在于,还包括,在确认被分配了第二写入地址的第二写请求还未完成执行之后,确定是否满足延迟发送所述反馈信息的预定条件,所述延迟发送所述保序确认请求的反馈信息包括,在确定满足所述预定条件的情况中,延迟发送所述保序确认请求的反馈信息。
5.根据权利要求1所述的方法,其特征在于,所述存储节点中设置有对应于所述存储节点中的一段物理存储空间的逻辑存储空间,在所述接收保序确认请求之前,所述方法还包括:在所述逻辑存储空间中为所述第二写请求分配所述第二写入地址,在所述逻辑存储空间为所述第一写请求分配所述第一写入地址。
6.根据权利要求5所述的方法,其特征在于,所述确认被分配了第二写入地址的第二写请求还未完成执行包括:
确认所述第一写入地址是否为所记录的未完成的访问所述逻辑存储空间的写请求包括的写入地址中的最小写入地址,如果不是,则确认所述第二写请求还未完成执行。
7.一种保序执行写请求的装置,部署于存储节点的网络设备执行,其特征在于,所述装置包括:
接收单元,用于接收保序确认请求,所述保序确认请求中携带分配给第一写请求的第一写入地址;
确认单元,用于确认被分配了第二写入地址的第二写请求还未完成执行,其中,所述第二写入地址在所述第一写入地址之前;
延迟发送单元,用于延迟发送所述保序确认请求的反馈信息。
8.根据权利要求7所述的装置,其特征在于,所述延迟发送单元包括:
第一发送子单元,用于向所述存储节点的处理器发送与所述第一写请求对应的延迟处理请求,接收子单元,用于在由所述处理器计时第一时长之后,从所述处理器接收与所述第一写请求对应的延迟处理结束信息,第二发送子单元,用于响应于所述延迟处理结束信息发送所述保序确认请求的反馈信息。
9.根据权利要求7所述的装置,其特征在于,所述延迟发送单元包括:确定子单元,用于确定第一时长,计时子单元,用于对第一时长计时,第三发送子单元,用于在对第一时长计时结束之后发送所述保序确认请求的反馈信息。
10.根据权利要求7所述的装置,其特征在于,还包括,确定单元,用于在确认被分配了第二写入地址的第二写请求还未完成执行之后,确定是否满足延迟发送所述反馈信息的预定条件,所述延迟发送单元还用于在确定满足所述预定条件的情况中,延迟发送所述保序确认请求的反馈信息。
11.根据权利要求7所述的装置,其特征在于,所述存储节点中设置有对应于所述存储节点中的一段物理存储空间的逻辑存储空间,所述装置还包括:第一分配单元,用于在所述接收保序确认请求之前,在所述逻辑存储空间中为所述第二写请求分配所述第二写入地址,第二分配单元,用于在所述逻辑存储空间为所述第一写请求分配所述第一写入地址。
12.根据权利要求11所述的装置,其特征在于,所述确认单元用于:
确认所述第一写入地址是否为所记录的未完成的访问所述逻辑存储空间的写请求包括的写入地址中的最小写入地址,如果不是,则确认所述第二写请求还未完成执行。
13.一种网络设备,包括处理单元和存储单元,所述存储单元中存储有可执行代码,所述处理单元执行所述可执行代码时,实现权利要求1-6中任一项所述的方法。
14.一种网络设备,包括:
通信接口,用于与存储节点及计算节点进行数据传输;
处理单元,用于对所述通信接口接收的数据进行处理,以执行权利要求1-6中任一项所述的方法。
15.一种计算设备,包括如权利要求13或14所述的网络设备。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011271692.5A CN114490463A (zh) | 2020-11-13 | 2020-11-13 | 一种保序执行写请求的方法及网络设备 |
PCT/CN2021/104556 WO2022100116A1 (zh) | 2020-11-13 | 2021-07-05 | 一种保序执行写请求的方法及网络设备 |
EP21890647.7A EP4227789A4 (en) | 2020-11-13 | 2021-07-05 | METHOD FOR MAINTAINING ORDER OF EXECUTION OF WRITE REQUESTS AND NETWORK APPARATUS |
US18/315,669 US20230281141A1 (en) | 2020-11-13 | 2023-05-11 | Method for order-preserving execution of write request and network device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011271692.5A CN114490463A (zh) | 2020-11-13 | 2020-11-13 | 一种保序执行写请求的方法及网络设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114490463A true CN114490463A (zh) | 2022-05-13 |
Family
ID=81490801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011271692.5A Pending CN114490463A (zh) | 2020-11-13 | 2020-11-13 | 一种保序执行写请求的方法及网络设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230281141A1 (zh) |
EP (1) | EP4227789A4 (zh) |
CN (1) | CN114490463A (zh) |
WO (1) | WO2022100116A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617718A (zh) * | 2022-12-19 | 2023-01-17 | 芯动微电子科技(珠海)有限公司 | 一种基于AXI总线的读写保序方法及SoC系统 |
CN118092815A (zh) * | 2024-04-23 | 2024-05-28 | 沐曦集成电路(上海)有限公司 | 一种写操作的保序方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080148275A1 (en) * | 2006-10-30 | 2008-06-19 | Alexander Krits | Efficient Order-Preserving Delivery of Concurrent Messages |
CN101286938B (zh) * | 2008-05-20 | 2011-04-13 | 杭州华三通信技术有限公司 | 分布式架构下实现混发保序的节点间通信方法和系统 |
US9122401B2 (en) * | 2012-08-23 | 2015-09-01 | Apple Inc. | Efficient enforcement of command execution order in solid state drives |
US20170160929A1 (en) * | 2015-12-02 | 2017-06-08 | Hewlett Packard Enterprise Development Lp | In-order execution of commands received via a networking fabric |
CN107678854A (zh) * | 2017-08-31 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种解决计算机缓存一致性冲突的方法 |
CN110865769B (zh) * | 2018-08-28 | 2023-06-20 | 阿里巴巴集团控股有限公司 | 处理读/写请求的方法、网络存储系统及电子设备 |
-
2020
- 2020-11-13 CN CN202011271692.5A patent/CN114490463A/zh active Pending
-
2021
- 2021-07-05 EP EP21890647.7A patent/EP4227789A4/en active Pending
- 2021-07-05 WO PCT/CN2021/104556 patent/WO2022100116A1/zh unknown
-
2023
- 2023-05-11 US US18/315,669 patent/US20230281141A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617718A (zh) * | 2022-12-19 | 2023-01-17 | 芯动微电子科技(珠海)有限公司 | 一种基于AXI总线的读写保序方法及SoC系统 |
CN118092815A (zh) * | 2024-04-23 | 2024-05-28 | 沐曦集成电路(上海)有限公司 | 一种写操作的保序方法 |
Also Published As
Publication number | Publication date |
---|---|
US20230281141A1 (en) | 2023-09-07 |
EP4227789A4 (en) | 2024-03-27 |
EP4227789A1 (en) | 2023-08-16 |
WO2022100116A1 (zh) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11934341B2 (en) | Virtual RDMA switching for containerized | |
US20180375782A1 (en) | Data buffering | |
CN109690510B (zh) | 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法 | |
CN108028833A (zh) | 一种nas数据访问的方法、系统及相关设备 | |
CN111078607B (zh) | 面向rdma与非易失性内存的网络访问编程框架部署方法及系统 | |
CN109729106B (zh) | 处理计算任务的方法、系统和计算机程序产品 | |
US20230281141A1 (en) | Method for order-preserving execution of write request and network device | |
WO2022017475A1 (zh) | 一种数据访问方法及相关设备 | |
US20050091334A1 (en) | System and method for high performance message passing | |
CN109564502A (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
US20160156747A1 (en) | Management of transmission control blocks (tcbs) supporting tcp connection requests in multiprocessing environments | |
CN114461593B (zh) | 日志写入方法及其装置、电子设备及存储介质 | |
CN113037649B (zh) | 网络中断数据包的收发方法和装置、电子设备和存储介质 | |
JP5880551B2 (ja) | 再送制御システム及び再送制御方法 | |
US20230342087A1 (en) | Data Access Method and Related Device | |
CN117370046A (zh) | 进程间通信方法、系统、设备和存储介质 | |
US11144207B2 (en) | Accelerating memory compression of a physically scattered buffer | |
CN110895517B (zh) | 基于fpga的传输数据的方法、设备及系统 | |
US8234651B2 (en) | Information processing method and apparatus using the same | |
KR20150048028A (ko) | 데이터 전송 관리 방법 | |
KR102695726B1 (ko) | 컴퓨팅 장치 및 스토리지 카드 | |
US11689621B2 (en) | Computing device and storage card | |
CN114124680B (zh) | 一种文件访问控制告警日志管理方法及装置 | |
WO2022002010A1 (zh) | 使用中间设备对数据处理的方法、计算机系统、及中间设备 | |
CN114911411A (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 |