CN113900972A - 一种数据传输的方法、芯片和设备 - Google Patents

一种数据传输的方法、芯片和设备 Download PDF

Info

Publication number
CN113900972A
CN113900972A CN202110080370.0A CN202110080370A CN113900972A CN 113900972 A CN113900972 A CN 113900972A CN 202110080370 A CN202110080370 A CN 202110080370A CN 113900972 A CN113900972 A CN 113900972A
Authority
CN
China
Prior art keywords
queue
network card
context
memory
request
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
Application number
CN202110080370.0A
Other languages
English (en)
Inventor
林伟彬
胡耀国
沈胜宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to EP21837789.3A priority Critical patent/EP4160425A4/en
Priority to PCT/CN2021/088771 priority patent/WO2022007470A1/zh
Publication of CN113900972A publication Critical patent/CN113900972A/zh
Priority to US18/150,647 priority patent/US20230153264A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/245Traffic characterised by specific attributes, e.g. priority or QoS using preemption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application
    • G06F2212/174Telecommunications system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/303In peripheral interface, e.g. I/O adapter or channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/38Universal adapter
    • G06F2213/3808Network interface controller
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

一种使用RDMA技术的数据传输的方法,该方法包括源端设备的网卡获取第一通知消息和第二通知消息,其中,第一通知消息用于指示源端设备的第一队列中存在第一待处理的远程直接内存访问RDMA请求,第一队列用于存储源端设备中第一业务应用的请求;第二通知消息用于指示源端设备的第二队列中存在第二待处理的RDMA请求,第二队列用于存储源端设备中第二业务应用的请求。源端设备的网卡根据第一业务应用的服务等级和第二业务应用的服务等级确定第一队列和第二队列的处理顺序,并按照处理顺序分别向目的端设备发送第一待处理的RDMA请求和第二待处理的RDMA请求。

Description

一种数据传输的方法、芯片和设备
技术领域
本申请涉及通信领域,尤其涉及一种数据传输的方法、芯片和设备。
背景技术
随着计算机技术的发展,设备之间可以利用智能网卡(intelligent networkinterface card,iNIC)通过远程直接访问(remote direct memory access,RDMA)技术实现设备间的数据快速访问。而远程直接访问技术基于网络传输队列对(queue pairs,QP)进行数据传输,相应地,接收端设备和发送端设备会分别建立接收队列(receive queue,RQ)和发送队列(send queue,SQ)。通常是源端设备中业务应用的待处理的RDMA请求存储在接收队列中,然后,由处理器通知网卡获取待处理的RDMA请求,并将待处理的RDMA请求发送至目的端设备。但是,上述过程网卡仅仅根据处理器的通知执行待处理的RDMA请求的处理,网卡无法感知业务应用的服务等级,无法保证业务应用的重要程度,导致重要业务应用的待处理的RDMA请求无法及时发送至目的端设备,存在重要业务应用的待处理请求的处理时延高的问题。因此,如何提供一种降低重要业务应用的待处理请求的处理时延成为亟待解决的技术问题。
发明内容
本申请提供了一种数据处理的方法、芯片和设备,能感知业务应用的服务等级,降低重要业务应用的待处理请求的处理时延。
第一方面,提供一种数据传输的方法,该方法包括:源端设备的网卡获取第一通知消息,其中,第一通知消息用于指示源端设备的第一队列中存在第一待处理的远程直接内存访问RDMA请求,第一队列用于存储远端设备中第一业务应用的RDMA请求。网卡获取第二通知消息。,第二通知消息用于指示源端设备的第二队列中存在第二待处理的远程直接内存访问RDMA请求,第二队列用于存储远端设备中第二业务应用的RDMA请求。之后,网卡根据第一业务应用的服务等级和第二业务应用的服务等级确定第一队列和第二队列的处理顺序,并按照处理顺序分别向目的端设备发送第一待处理RDMA请求和第二代处理RDMA请求。通过上述方法,网卡可以根据业务应用的重要性的不同,按照不同的顺序处理与业务应用相关联的RDMA请求,满足不同服务等级的业务应用的需求。在一种可能的实现方式中,当第一业务应用的处理顺序先于第二业务应用的处理顺序时,网卡获取第一待处理的RDMA请求,向目的端设备发送第一待处理的RDMA请求;之后,网卡继续获取第二待处理请求,并向目的端设备发送第二待处理RDMA请求。通过上述方法,网卡可以根据服务等级确定业务应用的处理顺序,再根据处理顺序完成待处理的RDMA请求的传输,进而实现根据业务应用的服务等级传输待处理的RDMA的请求,使得网卡可以感知业务应的服务等级,按照服务等级的需求保证待处理的RDMA请求的处理时延。
在一种可能的实现方式中,当第一业务应用的处理顺序先于第二业务应用的处理顺序时,网卡获取第一待处理的RDMA请求,向目的端设备发送第一待处理的RDMA请求;在向目的端设备发送第一待处理请求之后,网卡获取所述第二待处理请求,并向目的端设备发送所述第二待处理请求。通过上述过程的描述可知,网卡可以根据业务应用的服务等级确定处理顺序,进而按照确定的处理顺序分别向目的端设备发送多个队列的待处理的RDMA请求,实现根据业务应用的服务等级先后发送待处理的RDMA请求的过程,保证高服务等级的业务应用的待处理的RDMA请求优先被发送至目的端设备,降低高服务等级的业务应用的待处理的RDMA请求的处理时延。
在另一种可能的实现方式中,网卡还包括存储器,在网卡向目的端设备发送第一队列中待处理的RDMA请求之前,网卡还根据设定规则确定第一队列的上下文在存储器中的存储方式。其中,第一队列的上下文用于指示目的端设备的标识和在目的端设备中与第一队列关联的队列的标识;之后,网卡获取所述第一队列的上下文,并根据该存储方式在网卡的存储器中存储第一队列的上下文。通过上述方法,网卡可以根据预设规则保存第一队列的上下文,进而按照确定的存储方式将第一队列的上下文存储至网卡的存储器,使得网卡能够按照处理顺序实现不同业务应用的待处理RDMA请求的传输过程。
在另一种可能的实现方式中,网卡根述第一队列中待处理的RDMA请求的操作类型确定第一队列的上下文在存储器中的存储方式,其中,操作类型包括持久性集合操作。通过上述过程的描述,网卡可以针对待处理的RDMA请求的操作类型确定其所归属的队列的上下文的存储方式,进而按照上述存储方式存储队列的上下文,减少网卡频繁访问设备的内存所带来的时延,进一步降低业务应用传输待处理的RDMA请求的处理时延。
在另一种可能的实现方式中,网卡比较第一队列中待处理的RDMA请求中数据包的大小和第一阈值的大小,并根据比较结果确定所述第一队列的上下文在所述存储器中的存储方式。通过上述描述可知,网卡可以根据待处理的RDAM请求的数据包的大小确定存储方式,如果数据包越小,那么,网卡发送各个数据包的过程中必然需要频繁获取内存中队列上下文,可以将队列上下文存储至网卡存储器中,减少网卡频繁访问内存的过程,进而降低数据传输的时延。
在另一种可能的实现方式中,网卡比较第一队列的使用频率和第二阈值,第一队列包括多个工作队列元素WQE,每个WQE用于存储一个待处理的RDMA请求,其中,使用频率用于标识在第一时间阈值内第一队列中各个元素存储待处理的RDMA请求的个数。之后,网卡根据比较结果确定第一队列的上下文在所述存储器中的存储方式。通过上述描述可知,网卡可以根据使用的队列的使用频率采取不同的队列上下文的存储方式,将频繁使用的队列的上下文上时间保存在存储器中,进而减少网卡需要频繁访问内存获取队列上下文的处理时延,进一步降低待处理的RDMA请求的处理时延。
在另一种可能的实现方式中,网卡根据第一业务应用的服务等级确定第一队列的上下文在所述存储器中的存储方式。网卡可以根据业务应用的服务等级采取不同的队列上下文的存储方式,将高服务等级的业务应用的对应的队列上下文长时间保存,减少高服务等级的业务应用的请求的处理时间。
在另一种可能的实现方式中,第一队列以及第一队列的上下文保存在源端设备的内存中,则网卡从内存中获取第一队列的上下文后,根据存储方式在所述网卡的存储器中存储所述第一队列的上下文,包括:网卡将第一队列的上下文存储至网卡的存储器的第一区域,且在第一时间阈值内在第一存储区域中保留第一队列的上下文。也就是说,网卡可以根据确定的存储方式在存储器中划分存储区域,该存储区域用于在规定时段内保存队列上下文,减少下一次网卡读取该队列的队列上下文的时间,提高RDMA请求处理的效率。
在另一种可能的实现方式中,第二队列以及第二队列的上下文保存在源端设备的内存中,则网卡从内存中获取第二队列的上下文后,根据存储方式在网卡的存储器中存储第二队列的上下文,包括:将第二队列的上下文存储至网卡的存储器的第二存储区域,且当完成第二待处理的RDMA请求的发送后,在第二存储区域删除第二队列的上下文。通过上述描述可知,网卡可以根据确定的存储方式,在使用完不重要的队列上下文之后将其从网卡的存储器中删除,避免网卡上盲目缓存造成优先存储器资源的浪费。
在另一种可能的实现方式中,网卡通过直接内存访问DMA从源端设备的内存中获取第一队列的上下文或第二队列的上下文。网卡通过使用DMA技术,可以快速获取第一队列上下文和第二队列上下文的读取速度,避免由设备的处理器参与数据传输过程所带来的时延问题,进一步提升待处理的RDMA请求的处理效率。
在另一种可能的实现方式中,当第一存储区域的剩余空间小于预设阈值时,网卡将第二存储区域中第三阈值大小的存储区域作为第一存储区域的新增存储区域。网卡可以优先保证指定服务等级的队列上下文的存储方式,当第一存储区域的存储空间不足时,可以通过增加新的存储区域的方式对第一存储区域进行扩容,保证指定服务等级的业务应用的队列上下文均可以按照确定的存储方式存储,进而保证该服务等级的业务应用的待处理的RDMA请求的传输时延。
在另一种可能的实现方式中,当第一存储区域的剩余空间小于预设阈值时,网卡将第三队列的上下文存储至所述第二存储区域,且第三队列的上下文在第一时间阈值内保留在第二存储区域。其中,第三队列的上下文用于指示目的端设备的标识和在目的端设备中与第三队列关联的队列的标识第三队列用于存储第三业务应用的待处理的RDMA请求。通过上述方法,网卡除了通过扩容的方式保证第一存储区域具有足够的存储空间的方式,还可以直接将指定服务等级的业务应用关联的队列上下文直接存储在除第一存储区域以外的其他存储区域,例如,第二存储区域,并保证该队列上下文的存储时长与第一存储区域中数据的存储时长一致,进而保证指定服务等级的业务应的队列上下文能够长期存储在网卡的存储其中,避免网卡频繁访问设备的内存所导致的处理时延长的问题,降低指定服务等级的业务应的待处理的RDMA请求的处理时延。
在另一种可能的实现方式中,当第二存储区域的剩余空间小于预设阈值时,网卡将第二队列的上下文存储至网卡的存储器的第二存储区域,在第二存储区域删除第四队列的上下文,其中,第四队列的上下文用于指示目的端设备的标识和在目的端设备中与第四队列关联的队列的标识第四队列用于存储在第四业务应用的待处理的RDMA请求。通过上述方法,网卡可以使用当前正在使用的队列上下文替换以前存储的队列上下文,进而保证指定服务等级的业务应的业务应用的待处理的RDMA请求的处理时延满足服务等级的需求。
在另一种可能的实现方式中,当第二存储区域的剩余空间小于预设阈值时,网卡将第二队列的上下文存储至网卡的存储器的第二存储区域,在第二存储区域删除第五队列的上下文,其中,第五队列的上下文用于指示目的端设备的标识和在目的端设备中与第五队列关联的队列的标识第五队列用于存储在第五业务应用的待处理的RDMA请求,并且第五队列的上下文的存储等级小于第二队列的上下文。通过上述方法,网卡可以使用指定服务等级的业务应用对应的队列上下文替换存储等级较低的队列上下文,节省存储空间,优先保证较重要的业务应用的请求的处理。
在另一种可能的实现方式中,当第二存储区域的剩余空间小于预设阈值时,网卡将第二队列的上下文存储至网卡的存储器的第二存储区域,在第二存储区域删除第六队列的上下文,其中,第六队列的上下文用于指示目的端设备的标识和在目的端设备中与第六队列关联的队列的标识第六队列用于存储在第六业务应用的待处理的RDMA请求,并且第六队列的上下文的存储等级是第二存储区域的所有队列的上下文中存储等级最低的。通过上述方法,网卡可以使用指定服务等级的业务应用对应的队列上下文替换存储等级最低的队列上下文,节省存储空间,优先保证较重要的业务应用的请求的处理。
在另一种可能的实现方式中,网卡判断被删除的上下文是否为脏数据,如果是,网卡将被删除的上下文存储至对应队列在内存中的上下文缓存区域中,如果不是,网卡直接删除被删除的上下文。通过上述方法,网卡可以同步内存中的队列上下文和存储器中的队列上下文。
在另一种可能的实现方式中,网卡从源端设备的内存中获取第一待处理的RDMA请求,并将第一待处理的RDMA请求存储至网卡的存储器;之后,网卡向目的端设备发送第一待处理的RDMA请求;则在向目的端设备发送第一待处理请求之后,网卡获取第二待处理请求,并向目的端设备发送第二待处理请求,包括:网卡从源端设备的内存中获取第二待处理的RDMA请求,将第二待处理的RDMA请求存储至网卡的存储器;并向目的端设备发送第二待处理的RDMA请求。网卡按照业务应用的服务等级确定处理顺序,并按照确定的处理顺序完成不同队列的待处理的RDMA请求的数据传输,进而保证指定服务等级的业务应用的处理时延。
在另一种可能的实现方式中,网卡为支持RDMA功能的智能网卡。
在另一种可能的实现方式中,网卡包括门铃寄存器,门铃寄存器包括用于记录每个队列关联的通知消息,其中,第一通知消息包括所述第一业务应用的服务等级;第二通知消息包括第二业务应用的服务等级。源端设备的处理器可以在通知网卡有待处理RDMA请求的时,向网卡通知该业务应用的服务等级,进而使得网卡可以根据上述服务等级确定待处理的RDMA请求的处理顺序,并按照确定的处理顺序保证指定服务等级的业务应的待处理的RDMA请求的处理时延。
在另一种可能的实现方式中,第一队列包括发送队列SQ、接收队列RQ或完成队列CQ中任意一种,其中,发送队列和所述接收队列组成队列对,第一队列上下文包括队列对上下文或完成队列上下文。通过上述内容可知,在SQ、RQ、CQ的处理过程中均可以依据本申请提供的方法降低指定服务等级的待处理的RDMA请求的处理时延。
第二方面,提供一种网卡,所述网卡包括用于执行第一方面或第一方面任一种可能实现方式中的数据传输方法的各个模块。
第三方面,提供一种芯片,包括处理器和通信接口,所述通信接口存用于与所述芯片所在的设备的处理器进行通信,所述芯片的处理器用于实现上述第一方面或第一方面中任意一种可能的实现方式中所述网卡所执行的方法的操作步骤的功能
第四方面,本申请提供一种设备,包括第一处理器、内存和网卡,其中,第一处理器用于运行多个业务应用,每个业务应用关联一个队列,内存用于存储多个业务应用关联的队列中待处理的远程直接内存访问RDMA请求。所述网卡用于实现上述第一方面或第一方面中任意一种可能的实现方式中网卡所执行方法的操作步骤的功能。
第五方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一种可能实现方式中所述方法的操作步骤。
第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任意一种可能的实现方式中所述方法的操作步骤。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1为本申请实施例提供的一种数据处理系统100的结构示意图
图2为本申请实施例提供的另一种数据处理的系统的结构示意图
图3为本申请实施例提供的一种源端设备20的结构示意图
图4是本申请实施例提供的一种设备间基于QP通信的流程示意图
图5是本申请实施例提供的一种设备间基于QP通信的另一种流程示意图
图6是本申请提供的一种数据处理的方法的流程示意图
图7是本申请提供的一种QPC缓存方法的流程示意图
图8是本申请提供的另一种QPC缓存方法的流程示意图
图9是本申请提供的一种数据处理的方法的具体示例图
图10是本实施例提供的一种使用应用软件修改QPC的方法的流程示意图
图11是本实施例提供的一种使用应用软件删除QPC的方法的流程示意图
图12为本申请提供的一种数据传输的装置的示意图
图13为本申请实施例提供的一种设备的示意图
具体实施方式
下面结合附图对本申请实施例中的技术方案进行描述。
图1为本申请实施例提供的一种数据处理系统100的结构示意图,如图所示,系统100包括设备11-14和网络15。不同设备之间通过网络15进行通信,网络15包括支持远程直接内存访问(remotedirect memory access,RDMA)技术的协议进行通信,例如,无限带宽(InfiniBand,IB)协议,基于融合以太网的RDMA(RDMA over Converged Ethernet,RoCE)协议以及互联网广域RDMA协议(internet Wide Area RDMA Protocol,iWARP)。具体实施过程中,可以利用一个或多个交换机和/或路由器实现多个节点之间的通信处理。为了便于描述,在图1所示的数据处理系统100中可以将发送待处理的RDMA请求的设备称为源端设备,将接收待处理的RDMA请求的设备称为目的端设备。
其中,设备11-14可以是计算设备(例如,服务器)、存储设备(例如,存储阵列)或其他支持RDMA技术的设备。应当理解,系统100中设备的数量并不构成对本申请的限定,图1仅以系统包括四台设备为例进行说明。
下面结合图2进一步解释源端设备和目的端设备基于RDMA技术的通信方式。
图2为本申请实施例提供的另一种数据处理的系统的结构示意图,如图所示,图2以采用RDMA技术进行数据传输的源端设备20和目的端设备30为例进行说明。其中,源端设备20或目的端设备30可以是图1中的任意一个设备。
源端设备20包括第一处理器21、内存22和网卡23,其中,第一处理器21、内存22和网卡23通过总线连接,例如,快捷外围部件互连标准(Peripheral ComponentInterconnect Express,PCIe)。该总线也可以为其他类型实现设备内器件间连接的总线。此外,总线除了包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。
第一处理器21可以为中央处理器(central processing unit,CPU)。第一处理器21还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。为了便于描述,以下实施例中以第一处理器21为CPU为例进行说明。
网卡23也可以称为主机通道适配器(host channel adapter,HCA),网卡23为支持RDMA技术的智能网卡。由于RDMA技术减少了处理器参与数据传输的过程。
源端设备20可以通过网卡直接将存储在内存中的数据,经过网络15发送给目的端设备30,由目的端设备30上的网卡接收数据,并将数据存储在内存中。
作为一种可能的实施例,源端设备20和目的端设备30的硬件结构可以相同也可以不同。为了便于描述,以下实施例中以源端设备20和目的端设备30的硬件结构相同为例进行说明。
接下来,结合图3进一步介绍源端设备20,图3为本申请实施例提供的一种源端设备20的结构示意图,如图所示。
第一处理器21中运行多个业应用,例如,业务应用1和业务应用2,每个业务应用可以生成工作请求(work request,WR),包括RDMA写请求、RDMA读请求以及RDMA发送/接收请求。其中,业务应用包括数据库应用、高性能计算(high performance computing,HPC)应用等。
可选地,业务应用还可以通过调用中间层提供的接口生成工作请求。例如在高性能计算场景中,业务应用可以通过调用消息传递接口(message passing interface,MPI)提供的多种并行计算技术的应用编程接口(application programming interface,API),生成不同的并行计算请求,例如无阻塞通信请求、集合操作请求等。在存储场景中,业务应用可以通过调用开发网络(Exploitation Network,xNet)通讯组件,生成数据的传输请求。
内存22可以存储业务应用生成的工作请求、业务应用需要传输的数据以及RDMA传输过程中需要使用的数据结构。示例地,在内存中利用互联上下文内存(interconnectcontext memory,ICM)存储业务应用生成的工作请求,互联上下文内存可以为内存中一段存储区域。具体地,RDMA技术中可以利用队列对(queue pair,QP)(例如,图1所示的队列对1和队列对2)存储业务应用的工作请求,此外,互联上下文内存还用于存储队列对上下文(queue pair context,QPC)(例如,图1所示的队列对上下文1和队列对上下文2)、完成队列(completion queue,CQ)、完成队列上下文(completion queue context,CQC)以及内存键上下文(memory key context,MKC)。
其中,QP也称为网络传输队列对,当源端设备和目的端设备使用RDMA技术进行通信时,源端设备的第一处理器21会为每个业务应用分配至少一个队列对。每个队列对包括一个发送队列(send queue,SQ)和一个接收队列(receive queue,RQ)。其中,SQ用于存储业务程序向目的端设备发送的工作请求,RQ用于存储业务程序接收的目的端设备发送的工作请求。每个数据发送端的SQ都关联一个数据接收端的RQ。每个SQ或每个RQ分别包括多个条目(entry),每个条目也可以称为工作队列条目(work queue entry,WQE),每一个WQE用于存放业务应用生成的一个RDMA请求,也称为工作请求(work request,WR)。
源端设备20和目的端设备30可以通过队列对进行通信,具体地,图4是本实施例提供的一种设备间基于QP通信的流程示意图,如图所示,源端设备20和目的端设备30通过QP1和QP11在初始化阶段建立通信连接,进而实现部署在源端设备的业务程序基于源端设备的QP1和目的端设备的QP11通信。其中,QP1包括SQ1和RQ1,QP11包括SQ11和RQ11,当SQ1关联RQ11时,运行在源端设备20上的业务应用生成的RDMA发送请求可以存放在SQ1的一个WQE中,同时,目的端设备30的第一处理器也会生成一个RDMA接收请求放入RQ11的一个WQE中。与SQ1和RQ11相类似,当RQ1关联SQ11时,运行在源端设备20上的业务应用生成的RDMA接收请求可以存放在SQ1的一个WQE中,同时,目的端设备30的第一处理器也会生成一个RDMA发送请求放入RQ11的一个WQE中。
进一步地,可以使用头指针和尾指针指示队列中WQE的存储情况。例如,如图4所示,SQ1的头指针指向WQE2的地址,尾指针指向WQE1的地址,此时,SQ1中仅有WQE2中存放有RDMA请求。当运行在设备20上的业务应用生成一个RDMA发送请求时,第一处理器21会将该请求放至SQ1的WQE3中,此时,SQ1的头指针将向下移动一个存储单元对应的存储位置,指向WQE3;当网卡从SQ1中取出WQE2存放的RDMA请求时,SQ的尾指针向下移动一个存储单元对应的存储位置,指向WQE2。
每一个QP都对应一个QPC,QPC用于存储该QP配置数据,表1是QPC的数据格式的一种示例。需要说明的是,表1仅为一种示例,并不构成对QPC数据格式限定,QPC的数据格式还可以包括其他字段。
表1、QPC数据格式
字段 含义
QPN QP的编号,每一个QP都具有唯一的编号
目的端设备的QPN QP对中另一个QP的编号
SQ地址 存储SQ的存储空间的地址
SQ地址索引 存储SQ的尾指针指向的存储单元的地址
如表2所示,网卡可以使用QPC中的SQ地址定位存有待处理的RDMA请求的SQ的存储空间的地址,之后使用SQ地址索引定位待处理的RDMA请求的地址。
CQ中包括多个完成队列元素(completion queue element,CQE),用于存放网卡执行完工作请求后,或者执行完工作请求且从目的端设备处接收到响应之后,返回给业务应用的通知,包括请求是否正确执行的标志以及错误代码。类似QP,每一个CQ也对应一个CQC,存储CQ相关的属性。
源端设备和目的端设备进行RDMA通信之前,第一处理器21会为源端设备的业务应用在内存中分配一片存储区域,用于存放业务应用发送的工作请求中待发送和待接收的数据,称为内存区域(memory region,MR)。内存区域可以存储源端设备和目的端设备的鉴权标识,例如,本地钥匙(local key,L_KEY)和远端钥匙(remote key,R_KEY),本地钥匙用于保存对于源端设备的内存区域的访问权限,远端钥匙用于保存对于目的端设备的内存区域的访问权限。图5是本申请实施例提供的一种设备间基于QP通信的另一种流程示意图,如图5所示,源端设备20的网卡访问本设备内的注册区域时需要使用本地钥匙,源端设备获取目的端设备30的数据时,目的端设备30访问该设备的注册区域需要使用远端钥匙。每一个MR也对应一个MKC,用于存储MR的鉴权标识和地址转换关系,包括本地钥匙、远端钥匙以及一个将逻辑地址(LBA)映射到物理地址(PBA)的映射表。映射表可以根据WQE中存储的待传输的数据的逻辑地址得到待传输的数据在内存中的物理地址。
内存22可以包括只读存储器和随机存取存储器,并向第一处理器21提供指令和数据。内存22可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
网卡23是支持RDMA功能的网卡,支持自定义或者标准的RDMA协议网口,例如,IB协议、RoCE协议以及iWAPP中至少一种
需要说明的是,一个设备中可以包括至少一个网卡,每个网卡均能独立地处理工作请求,如图3所示,网卡23包括第二处理器231、存储器232和端口233。为了简单起见,省略了对于理解本发明不是必不可少的网卡23的元件。
通常,第一处理器21将内存空间中的地址范围分配给网卡,当QP中有待执行的工作请求时,第一处理器21通过在网卡23的门铃寄存器中更改对应QP的标识来通知网卡。作为对门铃的响应,网卡的计算单元2311获取门铃指示的QP的QPC,以RDMA读请求为例,根据QPC中的SQ地址和SQ地址索引定位到待执行的RDMA请求在发送队列中的位置,取出该工作请求并执行。
完成工作请求后,计算单元2311会生成一个CQE存放在CQ中,通知业务应用请求的完成情况。类似QP,计算单元在生成CQE时也需要使用CQ对应的CQC。
正如前面所述,在处理业务应用的工作请求时,计算单元2311需要使用到QPC、MKC以及CQC,为了提高网卡的处理性能,可以将QPC、MKC以及CQC存储至网卡的存储器232。
由于存储器大小的限制,网卡的存储器通常不能保存业务应用使用的所有QPC、MKC以及CQC。因此,在网卡的存储器的存储空间不足的情况下,可以优先存储重要的业务应用的QPC、MKC以及CQC。
可以在网卡存储器的空间中分配常驻缓存空间2322和非常驻缓存空间2321,当存储器空间不足时,存储在常驻缓存中的QPC在第一时间阈值内不会被替换,存储在非常驻缓存中的QPC会被替换。可以使用存储控制模块4312对存储器空间进行管理,完成QPC的替换。
相应地,以QPC为例,还可以根据QPC的存储方式将QPC的存储类型分为常驻和非常驻。当存储器空间不足时,常驻QPC在第一时间阈值内不允许被新的QPC替换,而非常驻QPC在第一时间阈值内可以被新的QPC替换。替换方法包括随机替换或者采用最近最少使用(least recently used,LRU)替换策略。
可选地,还可以使用存储等级标识QPC的存储类型,每一种存储类型的QPC可以对应至少一个存储等级,例如,将存储等级为4和5的QPC指定为常驻QPC。对于非常驻QPC来说,可以根据存储等级确定QPC被替换的顺序,存储等级低的QPC优先被替换。可以直接使用RDMA传输协议中已有的字段标识QPC的存储等级,例如,使用IB协议中的服务等级SL字段。可选地,还可以使用RDMA传输协议中新增的自定义字段标识QPC的存储等级。
需要说明的是,组成网卡23的各种单元可以实现为硬件电路或可编程处理器上运行的软件过程,也可以实现为硬件和软件实现的元素的组合。
基于图2所示的源端设备与目的端设备之间基于RDMA技术通信的系统,本申请实施例提供一种数据处理方法,优先处理指定服务等级的业务应用的RDMA请求,并可以将指定服务等级的业务应用对应的QPC存储在网卡的存储器中,提高传输业务应用的工作请求的速度。
上文中结合图1至5,详细描述了本申请实施例所提供的数据处理的系统的结构,下面将结合图6至8,以RDMA读请求为例,阐述如何优先处理指定服务等级的业务应用的RDMA请求的方法。
图6是本申请提供的一种数据处理的方法的流程示意图,具体步骤如下:
S601、源端设备的网卡获取业务应用的服务等级。
业务应用生成工的作请求会被放入第一处理器为其分配的队列中,例如,工作请求可以是一个待处理的RDMA写请求,会被放入第一处理器为其分配的SQ中。第一处理器通过软硬件接口与网卡的门铃模块进行交互,通知网卡该SQ中存在待处理的RDMA写请求。第一处理器在向网卡发送通知信息的同时,也可以将业务应用的服务等级一起发送给网卡。业务应用的服务等级可以根据业务应用的性能需求决定,例如业务应用对带宽的需求或者业务应用的时延敏感度。
当至少两个SQ队列中同时存在待处理的RDMA写请求时,网卡在获取业务应用的服务等级后,根据业务应用的服务等级,确定待处理的RDMA请求的处理顺序。例如,第一SQ中存有第一业务应用生成的第一待处理的RDMA写请求,第二SQ队列中存有第二业务应用生成的第二待处理的RDMA写请求,其中指定第一业务应用的服务等级高于第二业务应用的服务等级,则网卡将优先处理第一SQ中的第一待处理的RDMA请求。
S602、源端的网卡根据服务等级获取QPC。
网卡根据业务应用的服务等级,通过第一业务应用生成的第一待处理的RDMA请求所在SQ的QPN,首先从内存中获取该SQ对应的QPC。根据QPC的存储方式,网卡将QPC保存在不同类型的存储空间中。具体地,将存储类型为常驻的QPC存储在常驻缓存中,将存储类型为非常驻的QPC存储在非常驻缓存中。
在一种可能的实施例中,网卡根据QPN在该网卡的存储器中检索是否存在该SQ对应的QPC,如图3所示可以是计算单元2311。当存储器中存在QPC时,网卡直接从存储器中获取QPC。当存储器中不存在QPC时,网卡从内存中根据QPN获取该SQ对应的QPC。
可选地,网卡可以通过直接内存访问DMA从源端设备的内存中获取QPC。
可选地,如果QPC的存储类型为常驻并且被保存在非常驻缓存中时,网卡可以进一步判断常驻缓存中是否还有剩余空间,如图3所示可以是缓存控制器2312。如果常驻缓存存在剩余空间,则网卡将该QPC从非常驻缓存中迁移到常驻缓存中并且释放原来的存储空间。
网卡中的计算单元可以根据以下规则中的至少一种确定QPC的存储方式。
规则一:根据与正在使用的SQ相关联的业务应用的服务等级确定QPC的存储方式。可以将指定服务等级的业务应用的使用的SQ对应的QPC的存储类型设置为常驻,并保存在常驻缓存中,其余等级对应的QPC的存储类型设置为非常驻,保存在非常驻缓存中。可选地,可以使用服务等级作为QPC的存储等级。
规则二:网卡可以从第一处理器处获取到所有正在使用的SQ的传输特性,例如SQ中待处理的工作请求的操作类型、SQ中待处理的RDMA请求中的数据包的大小或者SQ的使用频率。可以根据至少一种传输特性确定QPC的存储类型,包括:
1)根据SQ中第一待处理的RDMA写请求的操作类型确定QPC的存储方式。可以对一种操作类型使用的所有SQ的QPC设置的存储类型进行指定,例如,在高性能计算(highperformance computing,HPC)场景中,需要使用消息传递接口(message passinginterface,MPI)进行不同进程之间的消息传递。在MPI的标准中,定义了持久性集合操作应用接口,该应用接口固定了发送和接收接口的参数,包括参数的个数、类型、长度。与传统的操作类型相比,持久性集合操作每一次传输都使用固定的QP、CP和MK。因此,可以将持久性集合操作使用到的所有SQ的QPC的存储类型设置为常驻,保存在常驻缓存中。可选地,还可以对一种操作类型使用的所有SQ的QPC的存储等级进行指定。
2)根据SQ中第一待处理的RDMA请求中的数据包的大小确定QPC的存储方式:可以将小于第一阈值的数据包使用的SQ对应的QPC的存储类型设置为常驻,保存在常驻缓存中,其余的QPC的存储类型设置为非常驻,保存在非常驻缓存中。例如,可以将小于128B的数据包对应的QPC的存储类型设置为常驻,存储在常驻缓存中。如果数据包越小,那么,网卡发送各个数据包的过程中必然需要频繁获取内存中队列上下文,可以将队列上下文存储至网卡存储器中,减少网卡频繁访问内存的过程,进而降低数据传输的时延。可选地,还可以根据数据包的大小设置QPC的存储等级,数据包越小的SQ对应的QPC的存储等级越高。
3)SQ的使用频率:SQ的使用频率是指在第二时间阈值内,SQ中存储的待处理的RDMA请求的个数。将使用频率大于第二阈值的SQ对应的QPC的存储类型设置为常驻,存储在常驻缓存中,其余的QPC存储的存储类型设置为非常驻,在非常驻缓存中。可选地,还可以根据QP的使用频率设置QPC的存储等级,SQ的使用频率越高,则该SQ对应的QPC的存储等级越高。
网卡可以根据自身的通讯能力(例如,网卡芯片上RAM的大小)和业务应用传输任务的需求(例如,传输任务所需的带宽或者传输任务对时延的敏感程度)设置存储器中常驻缓存存储空间和非常驻缓存存储空间的大小。
作为一种可能的实施例,在网卡获取QPC的存储方式之前,可以使用网络管理设备(图1中未示出)对进行数据传输的设备上的网卡进行配置,网络管理设备可以是与源端设备连接同一网络的一台单独的服务器,也可以源端设备。网络管理设备可以获取网络中所有设备上网卡的通讯能力,并可以根据网卡的通讯能力和业务应用传输任务的需求,配置每一个网卡上的常驻缓存和非常驻缓存的空间大小。
S603、源端的网卡获取工作请求。
源端网卡根据获取到的QPC中的SQ地址和SQ地址索引定位到第一待处理的RDMA写请求的位置,并获取该请求。
可选地,网卡可以通过直接内存访问DMA从源端设备的内存中获取第一待处理的RDMA请求。
可选地,网卡获取到第一待处理的RDMA请求后,还可以将QP保存在存储器中,以便于第一待处理的RDMA请求发送失败后,网卡可以直接从存储器中重新读取工作请求。
S604、源端设备的网卡向目的端设备的网卡发送工作请求。
网卡获取到第一待处理的RDMA请求后,结合网卡具体支持的协议将该请求封装为相应的数据格式,发送给目的端设备。
可选地,源端设备的网卡将业务应用的服务等级和工作请求一起发送给目的端的网卡。
S605、源端的网卡返回工作请求的执行结果。
完成发送后,网卡会在CQ中记录一个SQ的执行结果。当源端设备的网卡与目的端设备的网卡之间是可靠连接时,源端的网卡需要等目的端的网卡返回接收响应之后,在生成一个执行结果;当源端设备的网卡与目的端设备的网卡之间是不可靠连接时,源端的网卡可以立刻生成一个执行结果。网卡在将执行结果放入CQ时需要用到CQC。
网卡可以采取与QPC的处理类似的方法,获取和存储CQC。
需要说明的是,目的端设备的数据传输的方法可以按照源端的方法类处理,也可以按照其与方法进行处理,对目的端的数据处理的方法不做限制。
通过上述过程的描述可知,本申请实施例提供的数据处理方法可以根据业务应用的服务等级优先传输指定服务等级的业务应用的工作请求,并且能综合业务应用的服务等级和QP的传输特性按照确定的存储方式将QPC存储至网卡的存储器,使得网卡能够优先保证指定服务等级的业务应用的RDMA请求的传输效率。
图7是本申请提供的一种QPC缓存方法的流程示意图,如图所示,具体方法如下:
S701、网卡判断QPC是否不需要缓存。如果是,则无需缓存当前的QPC;如果不是,则继续执行S702。
S702、网卡根据S603中方法判断QPC的是否需要存储在常驻缓存中。
如果是,则执行S705,判断常驻缓存是否存在剩余存储空间,当不存在剩余空间时,执行S706,将当前QPC的存储类型设置为非常驻,并继续执行S703;当存在剩余空间时,执行S707,将当前QPC保存在常驻缓存中。
如果不是,继续执行S703
S703、网卡判断非常驻空间是否还存在剩余存储空间。
当存在剩余存储空间时,执行S709,将QPC保存在QPC存储剩余空间中。
当不存在剩余存储空间时网卡执行S704。
S704、网卡使用当前的QPC替换已经存在的QPC,替换的策略可以采用以下策略中的任意一种。
策略一:使用当前的QPC替换掉缓存中已经存在的存储类型为非常驻的QPC。
策略二:使用当前的QPC替换掉缓存中已经存在的存储等级小于当前QPC的QPC。
策略三:使用当前的QPC替换掉缓存中已经存在的存储等级是当前缓存中所有QPC的存储等级最低的QPC。
S710、网卡判断被替换的QPC是否为脏数据。
如果是,网卡执行S711,将脏数据重新写入内存对应的QPC中。
如果不是,网卡执行S712,释放被替换的QPC。
通过上述过程的描述可知,网卡可以优先保证指定服务等级的QPC的存储方式,当第一存储区域的存储空间不足时,可以通过增加新的存储区域的方式对第一存储区域进行扩容,保证指定服务等级的业务应用的QPC均可以按照确定的存储方式存储,进而保证该服务等级的业务应用的待处理的RDMA请求的传输时延。
图8是本申请提供的另一种QPC缓存方法的流程示意图,在图8所展示的方法中,网卡只用判断QPC的存储类型确定是否将QPC长时间保存在存储器中,不用指定特定的存储区域,如图所示,具体方法如下:
S801、网卡判断QPC的是否不需要缓存。如果是,则无需缓存当前的QPC,直接执行步骤S604。如果不是,则继续执行S802。
S802、网卡判断存储器是否还存在剩余的缓存空间。
当存在时,缓存控制器执行S804,直接将QPC保存在剩余的缓存空间中。
当不存在时,执行S805,判断当前的QPC的存储类型是否为常驻,并且缓存中已经存在的存储类型为常驻的QPC的条目数量大于或等于第三阈值。当判断结果为是时,网卡执行S806将将当前QPC的存储类型设置为非常驻,并继续执行S803;当判断结果为否时,缓存控制器直接执行S803。
S803、网卡使用当前的QPC替换掉缓存中已经存在的QPC,替换的策略可以采用以下策略中的任意一种。
策略一:使用当前的QPC替换掉缓存中已经存在的存储类型为非常驻的QPC。
策略二:使用当前的QPC替换掉缓存中已经存在的存储等级小于当前QPC的QPC。
策略三:使用当前的QPC替换掉缓存中已经存在的存储等级是当前缓存中所有QPC的存储等级最低的QPC。
S807、网卡判断被替换的QPC是否为脏数据。
如果是,网卡执行S808,将脏数据重新写入内存对应的QPC中。
如果不是,缓存控制器执行S809,释放被替换的QPC。
通过上述方法,网卡除了通过扩容的方式保证第一存储区域具有足够的存储空间的方式,还可以直接将指定服务等级的业务应用关联的队列上下文直接存储在除第一存储区域以外的其他存储区域,例如,第二存储区域,并保证该队列上下文的存储时长与第一存储区域中数据的存储时长一致,进而保证指定服务等级的业务应的队列上下文能够长期存储在网卡的存储其中,避免网卡频繁访问设备的内存所导致的处理时延长的问题,降低指定服务等级的业务应的待处理的RDMA请求的处理时延。
接下来,结合具体示例进一步解释本申请提供的数据处理方法,如图9所示,业务应用1和业务应用2同时运行在源端设备20的第一处理器22上,其中,业务应用1的服务等级大于业务应用2的服务等级。以源端设备20向目的端设备读取数据为例,具体步骤如下:
第1步:业务程序1生成RDMA读请求1并存放在SQ1中,业务程序2生成RDMA读请求2并存放在SQ 2中。
第2步:第一处理器通知网卡SQ1和SQ2中有待处理的工作请求。
第3a步:源端设备的网卡上的第二处理器根据业务应用的服务等级确定先执行SQ1中的工作请求,并在存储器中检索SQ1的QPC1。检索未成功后,第二处理器从内存中获取QPC1。
第4a步:第二处理器根据业务应用1的服务等级将QPC1的存储类型标识为常驻,并存储在常驻缓存中。
第5a步:第二处理器根据QPC1中的QP地址和QP地址索引从获取业务应用1的RDMA读请求1。
第6步:第二处理器将业务应用1的服务等级和RDMA读请求1发送至通讯接口。
第7步:通讯接口将业务应用1的服务等级和RDMA读请求1发送至目的端设备30的网卡33。
第8步:目的端的网卡33根据RDMA读请求1从内存中读取数据。
第9步:目的端的网卡33将读取的数据并返回给通讯接口。
第10步:通讯接口将读取的数据发送至第二处理器。
第11步:第二处理器在存储器中检索CQ的CQC。检索成功后,第二处理器从存储器中获取CQC。
第12步:第二处理器根据CQC将生成的CQE放入CQ中。
经过以上步骤,源端的完成了对业务应用1的RDMA写请求1的处理,接下来源端的网卡继续处理业务应用2的RDMA写请求2。
第3b步:源端设备的网卡在存储器中检索SQ2的QPC2。检索未成功后,第二处理器从内存中获取QPC2。
第4b步:第二处理器根据业务应用2的服务等级将QPC2的存储类型标识为非常驻,并存储在非常驻缓存中。
第5b步:第二处理器根据QPC2中的SQ地址和SQ地址索引从获取业务应用2的RDMA读请求2。
之后网卡处理RDMA读请求2的步骤与步骤4-12类似。
基于以上的步骤可知,本申请提供的一种数据处理的方法可以优先处理高服务等级的业务应用的工作请求,并且在网卡中存储资源有限的情况下优先满足高服务等级的业务应用所需的缓存空间,保障重要业务应用的传输效率。
图10是本实施例提供的一种使用应用软件修改QPC的方法的流程示意图,具体方法包括:
S1001、应用软件进程发布修改QP的命令并且通过门铃模块通知智能网卡。
S1002、智能网卡上的执行单元检索该QPC是否存储在缓存中。如果存在,则执行单元执行步骤S1003;否则,执行单元执行步骤1005,通知应用软件缓存中没有该QPC的信息,可以修改QP。
S1003、执行单元判断当前QPC的缓存是否为脏数据。如果是,则执行单元执行步骤1004,将当前缓存中最新的QPC写入系统内存中,并通知应用软件可以修改QP;如果不是,则执行单元执行步骤S1006、释放该QPC的缓存,并通知应用软件可以修改QP。
图11是本实施例提供的一种使用应用软件删除QPC的方法的流程示意图,具体方法包括:
S1101、应用软件进程发布删除QP的命令并且通过门铃模块通知网卡。
S1102、网卡上的执行单元检索该QPC是否存储在缓存中。如果存在,则执行单元执行步骤S1103,释放该QPC的缓存,并将对应优先级的缓存条目数量减1,同时通知应用软件可以删除QP;否则,执行单元执行步骤114,通知应用软件缓存中没有该QPC的信息,可以删除QP。
通过上述过程的描述可知,本申请实施例提供的数据处理方法可以为应用软件提供灵活的接口,方便用户通过网络管理面对网络连接进行管理,包括创建、删除、查询和修改QP,以及根据实际的通信需求进行相关的Qos配置。
值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
本领域的技术人员根据以上描述的内容,能够想到的其他合理的步骤组合,也属于本申请的保护范围内。其次,本领域技术人员也应该熟悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
上文中结合图6至图11,详细描述了根据本申请实施例所提供的数据传输的方法,下面将结合图12-13,描述根据本申请实施例所提供的一种数据传输的装置和设备。
图12为本申请提供的一种数据传输的装置1200的示意图,包括获取单元1201、处理单元1202和通讯单元1203。
获取单元1201,用于获取第一通知消息和第二通知消息,其中,第一通知消息用于指示源端设备的第一队列中存在第一待处理的远程直接内存访问RDMA请求,第一队列用于存储远端设备中第一业务应用的RDMA请求,第二通知消息用于指示源端设备的第二队列中存在第二待处理的远程直接内存访问RDMA请求,第二队列用于存储远端设备中第二业务应用的RDMA请求。
处理单元1202,第一业务应用的服务等级和第二业务应用的服务等级确定第一队列和第二队列的处理顺序。
通信单元1203,用于按照处理顺序分别向目的端设备发送第一待处理RDMA请求和第二代处理RDMA请求。
应理解的是,本申请实施例的数据传输的装置1200可以通过通用处理器(CPU),或专用集成电路(application-specific integrated circuit,ASIC)实现,也可以通过可编程逻辑器件(programmable logic device,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logical device,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现图6至图11所示的感知方法时,数据传输的装置1200及其各个模块也可以为软件模块。
可选地,处理单元1202还可以用于当第一业务应用的处理顺序先于第二业务应用的处理顺序时,获取第一待处理的RDMA请求,并使用通信单元1203向目的端设备发送第一待处理的RDMA请求。之后,处理单元继续获取第二待处理请求,并使用通信单元1203向目的端设备发送第二待处理的RDMA请求。
可选地,装置1200还包括存储单元1204。在网卡向目的端设备发送第一队列中待处理的RDMA请求之前,处理单元1202还用于根据设定规则确定第一队列的上下文在存储器中的存储方式。其中,第一队列的上下文用于指示目的端设备的标识和在目的端设备中与第一队列关联的队列的标识;之后,由获取单元1201获取所述第一队列的上下文,然后由处理单元1202根据该存储方式在网卡的存储单元1204中存储第一队列的上下文。
可选地,处理单元1202还用于根述第一队列中待处理的RDMA请求的操作类型确定第一队列的上下文在存储器中的存储方式,其中,操作类型包括持久性集合操作。
可选地,处理单元1202还用于比较第一队列中待处理的RDMA请求中数据包的大小和第一阈值的大小,并根据比较结果确定所述第一队列的上下文在所述存储器中的存储方式。
可选地,处理单元1202还用于比较第一队列的使用频率和第二阈值,第一队列包括多个工作队列元素WQE,每个WQE用于存储一个待处理的RDMA请求,其中,使用频率用于标识在第一时间阈值内第一队列中各个元素存储待处理的RDMA请求的个数。
可选地,处理单元1202还用于根据第一业务应用的服务等级确定第一队列的上下文在所述存储器中的存储方式。
可选地,第一队列以及第一队列的上下文保存在源端设备的内存中,当获取单元1201从内存中获取第一队列的上下文后,处理单元1202还用于根据存储方式在存储单元1204中存储所述第一队列的上下文,包括:处理单元1202将第一队列的上下文存储至存储单元1204的第一区域,且在第一时间阈值内在第一存储区域中保留第一队列的上下文。
可选地,第二队列以及第二队列的上下文保存在源端设备的内存中,则获取单元1201从内存中获取第二队列的上下文后,处理单元1202还用于根据存储方式在存储单元1204中存储第二队列的上下文,包括:处理单元1202将第二队列的上下文存储至存储单元1204的第二存储区域,且当完成第二待处理的RDMA请求的发送后,在第二存储区域删除第二队列的上下文。
可选地,处理单元1202还用于通过直接内存访问DMA从源端设备的内存中获取第一队列的上下文或第二队列的上下文。
可选地,当第一存储区域的剩余空间小于预设阈值时,处理单元1202还用于将第二存储区域中第三阈值大小的存储区域作为第一存储区域的新增存储区域。
可选地,当第一存储区域的剩余空间小于预设阈值时,处理单元1202还用于将第三队列的上下文存储至所述第二存储区域,且第三队列的上下文在第一时间阈值内保留在第二存储区域。其中,第三队列的上下文用于指示目的端设备的标识和在目的端设备中与第三队列关联的队列的标识第三队列用于存储第三业务应用的待处理的RDMA请求。
可选地,当第二存储区域的剩余空间小于预设阈值时,处理单元1202还用于将第二队列的上下文存储至网卡的存储器的第二存储区域,在第二存储区域删除第四队列的上下文,其中,第四队列的上下文用于指示目的端设备的标识和在目的端设备中与第四队列关联的队列的标识第四队列用于存储在第四业务应用的待处理的RDMA请求。
可选地,当第二存储区域的剩余空间小于预设阈值时,处理单元1202还用于将第二队列的上下文存储至网卡的存储器的第二存储区域,在第二存储区域删除第五队列的上下文,其中,第五队列的上下文用于指示目的端设备的标识和在目的端设备中与第五队列关联的队列的标识第五队列用于存储在第五业务应用的待处理的RDMA请求,并且第五队列的上下文的存储等级小于第二队列的上下文。
可选地,当第二存储区域的剩余空间小于预设阈值时,处理单元1202将第二队列的上下文存储至网卡的存储器的第二存储区域,在第二存储区域删除第六队列的上下文,其中,第六队列的上下文用于指示目的端设备的标识和在目的端设备中与第六队列关联的队列的标识第六队列用于存储在第六业务应用的待处理的RDMA请求,并且第六队列的上下文的存储等级是第二存储区域的所有队列的上下文中存储等级最低的。
可选地,处理单元1202还用于判断被删除的上下文是否为脏数据,如果是,处理单元1202将被删除的上下文存储至对应队列在内存中的上下文缓存区域中,如果不是,处理单元1202直接删除被删除的上下文。通过上述方法,网卡可以即时地同步内存中的队列上下文和存储器中的队列上下文。
可选地,获取单元1201还用于从源端设备的内存中获取第一待处理的RDMA请求,并由处理单元1202将第一待处理的RDMA请求存储至存储单元1204。之后,通信单元1203还用于向目的端设备发送第一待处理的RDMA请求,则在向目的端设备发送第一待处理请求之后,获取单元1202获取第二待处理请求,并继续由通信单元1203向目的端设备发送第二待处理的RDMA请求,包括:获取单元1201从源端设备的内存中获取第二待处理的RDMA请求,由处理单元1202将第二待处理的RDMA请求存储至存储单元1204;并由通信单元1203向目的端设备发送第二待处理的RDMA请求。
根据本申请实施例的数据传输的装置1200可对应于执行本申请实施例中描述的方法,并且数据传输的装置1200中的各个单元的上述和其它操作和/或功能分别为了实现图6至图11中的各个方法的相应流程,为了简洁,在此不再赘述。
综上所述,本申请实施例提供的数据传输的1200,装置1200可以感知业务应用的服务等级,并根据业务应的服务等级确定队列的处理顺序,再按照处理顺序执行待处理的RDMA请求的数据传输,以此保证指定服务等级的业务应用能够优先被发送至目的端设备,由此降低这类业务应用数据传输中的时延。
图13为本申请实施例提供的一种设备1300的示意图,如图所示,设备1300包括第一处理器1301、第一存储器1302、网卡1303、总线1304和内存1305。其中,第一处理器1301、第一存储器1302、网卡1303、内存1305通过总线1304进行通信,也可以通过无线传输等其他手段实现通信。其中,第一处理器1301用于运行多个业务应用,每个业务应用关联一个队列,内存用于存储多个业务应用关联的队列中待处理的远程直接内存访问RDMA请求和多个业务应用关联的队列的上下文。
网卡1303包括第二处理器1306和第二存储器1307和通信接口1308,其中,第二处理器1306用于执行第二存储器存储的计算机执行指令以实现下述操作步骤:
获取第一通知消息,其中,第一通知消息用于指示源端设备的第一队列中存在第一待处理的远程直接内存访问RDMA请求,第一队列用于存储远端设备中第一业务应用的RDMA请求;
获取第二通知消息,其中,第二通知消息用于指示源端设备的第二队列中存在第二待处理的远程直接内存访问RDMA请求,第二队列用于存储远端设备中第二业务应用的RDMA请求;
根据第一业务应用的服务等级和第二业务应用的服务等级确定第一队列和第二队列的处理顺序;
按照处理顺序分别向目的端设备发送第一待处理RDMA请求和第二代处理RDMA请求。
应理解,在本申请实施例中,该第一处理器1301或者第二处理器1306可以是CPU,还可以是其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
第一存储器1302或者第二存储器1307可以包括只读存储器和随机存取存储器,并向处理器701提供指令和数据。第一存储器1302或者第二存储器1307还可以包括非易失性随机存取存储器。例如,第一存储器1302或者第二存储器1307还可以存储设备类型的信息。
第一存储器1302或者第二存储器1307可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambusRAM,DR RAM)。
该总线1304除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线1304。
应理解,根据本申请实施例的设备1300可对应于本申请实施例中的数据传输的装置1200,并可以对应于执行根据本申请实施例中图6至图11所示的方法中的源端设备,此外,该设备也可以为图1所示的系统中任意一台设备,并且设备1300中的各个模块的上述和其它操作和/或功能分别为了实现图中的各个方法的相应流程,为了简洁,在此不再赘述。
由上述描述可知,本申请实施例提供的设备1300可以感知业务应用的服务等级,并根据不同业务应用的服务等级确定多个队列的处理顺序,再根据处理顺序完成不同队列的待处理的RDMA请求的数据传输过程,从而实现由网卡感知业务应用的服务等级,并根据服务等级发送不同服务等级的业务应用的处理的RDMA请求的过程,优先保证指定业务应用的待处理的RDMA请求能够快速发送至目的端设备,降低指定服务等级的业务应用的处理时延。
本申请还提供一种芯片,该芯片包括处理器和通信接口,其中,所述通信接口用于与所述芯片所在的设备的处理器进行通信,处理器可以如图13所示网卡1302中第二处理器1306的实现形态,所述芯片的处理器用于实现图6至图11所示的方法中的源端设备的网卡所执行方法的操作步骤的功能为了简洁,在此不再赘述。
可选地,芯片可以为实现上述图6至图11中所述网卡功能的芯片,也可以为图13所示的网卡1303,还可以为图13所示设备1300中除网卡1303以外的一个卸载卡,该卸载卡用于实现根据业务应用的服务等级确定不同队列的处理顺序,进而按照确定的处理顺序发送待处理的RDMA请求的过程,为了简单,在此不再赘述。
本申请还提供一种网卡,该网卡的结构如图13所示的网卡1303,该网卡用于实现图6至图11所示的方法中的源端设备的网卡所执行方法的操作步骤的功能,为了简洁,在此不再赘述。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上所述,仅为本申请的具体实施方式。熟悉本技术领域的技术人员根据本申请提供的具体实施方式,可想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (19)

1.一种数据传输的方法,其特征在于,所述方法包括:
源端设备的网卡获取第一通知消息,所述第一通知消息用于指示所述源端设备的第一队列中存在第一待处理的远程直接内存访问RDMA请求,所述第一队列用于存储所述源端设备中第一业务应用的请求;
所述网卡获取第二通知消息,所述第二通知消息用于指示所述源端设备的第二队列中存在第二待处理的RDMA请求,所述第二队列用于存储所述源端设备中第二业务应用的请求;
所述网卡根据所述第一业务应用的服务等级和所述第二业务应用的服务等级确定第一队列和第二队列的处理顺序;
所述网卡按照所述处理顺序分别向目的端设备发送所述第一待处理的RDMA请求和第二待处理的RDMA请求。
2.根据权利要求1所述的方法,其特征在于,所述按照所述处理顺序分别向目的端设备的网卡发送所述第一待处理的RDMA请求和第二待处理的RDMA请求,包括:
当所述第一业务应用的处理顺序先于所述第二业务应用的处理顺序时,所述网卡获取所述第一待处理的RDMA请求,向所述目的端设备发送所述第一待处理的RDMA请求;
在向所述目的端设备发送所述第一待处理请求之后,所述网卡获取所述第二待处理请求,并向所述目的端设备发送所述第二待处理请求。
3.根据权利要求2所述的方法,其特征在于,所述网卡包括存储器,在所述网卡向所述目的端设备发送所述第一队列中待处理的RDMA请求之前,所述方法还包括:
所述网卡根据所述设定规则确定所述第一队列的上下文在所述存储器中的存储方式,所述第一队列的上下文用于指示所述目的端设备的标识和在所述目的端设备中与所述第一队列关联的队列的标识;
所述网卡获取所述第一队列的上下文;
所述网卡根据所述存储方式在所述网卡的存储器中存储所述第一队列的上下文。
4.根据权利要求3所述的方法,其特征在于,所述网卡根据所述设定规则确定所述第一队列的上下文在所述存储器中的存储方式,包括:
所述网卡根据所述第一队列中待处理的RDMA请求的操作类型确定所述第一队列的上下文在所述存储器中的存储方式,所述操作类型包括持久性集合操作。
5.根据权利要求3所述的方法,其特征在于,所述网卡根据所述设定规则确定所述第一队列的上下文在所述存储器中的存储方式,包括:
所述网卡比较所述第一队列中待处理的RDMA请求中数据包的大小和第一阈值的大小;
所述网卡根据比较结果确定所述第一队列的上下文在所述存储器中的存储方式。
6.根据权利要求3所述的方法,其特征在于,所述网卡根据所述设定规则确定所述第一队列的上下文在所述存储器中的存储方式,包括:
所述网卡比较所述第一队列的使用频率和第二阈值,所述第一队列包括多个工作队列元素WQE,每个WQE用于存储一个待处理的RDMA请求,所述使用频率用于标识在第一时间阈值内所述第一队列中各个元素存储待处理的RDMA请求的个数;
所述网卡根据比较结果确定所述第一队列的上下文在所述存储器中的存储方式。
7.根据权利要求3所述的方法,其特征在于,所述网卡根据所述设定规则确定所述第一队列的上下文在所述存储器中的存储方式,包括:
所述网卡根据所述第一业务应用的服务等级确定所述第一队列的上下文在所述存储器中的存储方式。
8.根据权利要求3至7中任一所述的方法,其特征在于,所述第一队列以及所述第一队列的上下文保存在所述源端设备的内存中,所述网卡获取所述第一队列的上下文,包括:
所述网卡从所述源端设备的所述内存中获取所述第一队列的上下文;
则所述网卡根据所述存储方式在所述网卡的存储器中存储所述第一队列的上下文,包括:
所述网卡将所述第一队列的上下文存储至所述网卡的存储器的第一存储区域,且在第一时间阈值内在所述第一存储区域中保留所述第一队列的上下文。
9.根据权利要求2所述的方法,其特征在于,所述第二队列以及所述第二队列的上下文保存在所述源端设备的内存中,则在所述网卡获取所述第二待处理的RDMA请求之前,所述方法还包括:
所述网卡从所述源端设备的内存获取所述第二队列的上下文;
所述网卡将所述第二队列的上下文存储至所述网卡的存储器的第二存储区域,且当完成所述第二待处理的RDMA请求的发送后,在所述第二存储区域删除所述第二队列的上下文。
10.根据权要求8或9所述的方法,其特征在于,所述网卡从所述源端设备的所述内存中获取所述第一队列的上下文,包括:
所述网卡通过直接内存访问DMA从所述源端设备的所述内存中获取所述第一队列的上下文或所述第二队列的上下文。
11.根据权利要求8或9所述的方法,其特征在于,所述方法还包括:
当所述第一存储区域的剩余空间小于第三阈值时,所述网卡将所述第二存储区域中第四阈值大小的存储区域作为所述第一存储区域的新增存储区域。
12.根据权利要求8或9所述的方法,其特征在于,所述方法还包括:
当所述第一存储区域的剩余空间小于第三阈值时,所述网卡将第三队列的上下文存储至所述第二存储区域,且所述第三队列的上下文在第一时间阈值内保留在所述第二存储区域,所述第三队列的上下文用于指示所述目的端设备的标识和在所述目的端设备中与所述第三队列关联的队列的标识,所述第三队列用于存储第三业务应用的待处理的RDMA请求。
13.根据权利要求2所述的方法,其特征在于,所述网卡获取所述第一待处理的RDMA请求,向所述目的端设备发送所述第一待处理的RDMA请求,包括:
所述网卡从所述源端设备的内存中获取所述第一待处理的RDMA请求,将所述第一待处理的RDMA请求存储至所述网卡的存储器;
所述网卡向所述目的端设备发送所述第一待处理的RDMA请求;
则在向所述目的端设备发送所述第一待处理请求之后,所述网卡获取所述第二待处理请求,并向所述目的端设备发送所述第二待处理请求,包括:
所述网卡从所述源端设备的内存中获取所述第二待处理的RDMA请求,将所述第二待处理的RDMA请求存储至所述网卡的存储器;
所述网卡向所述目的端设备发送所述第二待处理的RDMA请求。
14.根据权利要求3所述的方法,其特征在于,所述网卡通过直接内存访问DMA从所述源端设备的所述内存中获取所述第一待处理的RDMA请求或所述第二待处理的RDMA请求。
15.根据权利要求1至14任一所述的方法,其特征在于,所述网卡为支持RDMA功能的智能网卡。
16.根据权利要求1至14所述的方法,其特征在于,所述网卡包括门铃寄存器,所述门铃寄存器用于存储所述第一队列的第一通知消息和所述第二队列的第二通知消息,其中,所述第一通知消息包括所述第一业务应用的服务等级;所述第二通知消息包括所述第二业务应用的服务等级。
17.根据权利要求1至16中任一所述的方法,其特征在于,所述第一队列包括发送队列SQ、接收队列RQ或完成队列CQ中任意一种,所述发送队列和所述接收队列组成队列对,所述第一队列上下文包括队列对上下文或完成队列上下文。
18.一种芯片,其特征在于,所述芯片包括处理器和通信接口,所述通信接口用于与所述芯片所在设备的处理器进行通信,所述芯片的处理器用于实现权利要求1至17中任一所述方法的操作步骤的功能。
19.一种设备,其特征在于,所述设备包括第一处理器、内存和网卡,所述第一处理器用于运行多个业务应用,每个业务应用关联一个队列,所述内存用于存储所述多个业务应用关联的队列中待处理的远程直接内存访问RDMA请求;所述网卡用于实现权利要求1至17中任一所述方法的操作步骤的功能。
CN202110080370.0A 2020-07-06 2021-01-21 一种数据传输的方法、芯片和设备 Pending CN113900972A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP21837789.3A EP4160425A4 (en) 2020-07-06 2021-04-21 DATA TRANSMISSION METHOD, CHIP AND DEVICE
PCT/CN2021/088771 WO2022007470A1 (zh) 2020-07-06 2021-04-21 一种数据传输的方法、芯片和设备
US18/150,647 US20230153264A1 (en) 2020-07-06 2023-01-05 Data transmission method, chip, and device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2020106399097 2020-07-06
CN202010639909 2020-07-06

Publications (1)

Publication Number Publication Date
CN113900972A true CN113900972A (zh) 2022-01-07

Family

ID=79187408

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110080370.0A Pending CN113900972A (zh) 2020-07-06 2021-01-21 一种数据传输的方法、芯片和设备

Country Status (4)

Country Link
US (1) US20230153264A1 (zh)
EP (1) EP4160425A4 (zh)
CN (1) CN113900972A (zh)
WO (1) WO2022007470A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114979022A (zh) * 2022-05-20 2022-08-30 北京百度网讯科技有限公司 远程直接数据存取的实现方法、装置、适配器和存储介质
CN117687795A (zh) * 2024-01-25 2024-03-12 珠海星云智联科技有限公司 用于远程直接内存访问的硬件卸载方法、设备及介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114584492B (zh) * 2022-02-15 2023-01-24 珠海星云智联科技有限公司 一种延时测量方法、系统以及相关设备
CN115086207A (zh) * 2022-06-14 2022-09-20 深信服科技股份有限公司 一种网卡检测方法、装置及电子设备和存储介质
CN115174484A (zh) * 2022-06-16 2022-10-11 阿里巴巴(中国)有限公司 基于rdma的数据传输方法、装置、设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050122904A1 (en) * 2003-12-04 2005-06-09 Kumar Anil K. Preventative congestion control for application support
CN103647807B (zh) * 2013-11-27 2017-12-15 华为技术有限公司 一种信息缓存方法、装置和通信设备
US10944684B2 (en) * 2017-05-23 2021-03-09 Cable Television Laboratories, Inc. Systems and methods for queue protection
CN110022269B (zh) * 2018-01-09 2022-12-16 阿里巴巴集团控股有限公司 通信数据处理方法、装置和设备
CN108989235B (zh) * 2018-08-28 2022-11-01 新华三技术有限公司 一种报文转发控制方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114979022A (zh) * 2022-05-20 2022-08-30 北京百度网讯科技有限公司 远程直接数据存取的实现方法、装置、适配器和存储介质
CN117687795A (zh) * 2024-01-25 2024-03-12 珠海星云智联科技有限公司 用于远程直接内存访问的硬件卸载方法、设备及介质
CN117687795B (zh) * 2024-01-25 2024-05-10 珠海星云智联科技有限公司 用于远程直接内存访问的硬件卸载方法、设备及介质

Also Published As

Publication number Publication date
US20230153264A1 (en) 2023-05-18
EP4160425A1 (en) 2023-04-05
EP4160425A4 (en) 2023-11-01
WO2022007470A1 (zh) 2022-01-13

Similar Documents

Publication Publication Date Title
CN108701004B (zh) 一种数据处理的系统、方法及对应装置
CN113900972A (zh) 一种数据传输的方法、芯片和设备
CN109983449B (zh) 数据处理的方法和存储系统
US11544001B2 (en) Method and apparatus for transmitting data processing request
JP7105870B2 (ja) データアクセス方法、装置およびシステム
CN108984465B (zh) 一种消息传输方法及设备
CN106331153B (zh) 一种业务请求的过滤方法、装置及系统
EP3470984A1 (en) Method, device, and system for managing disk lock
WO2016011835A1 (zh) 光纤通道存储区域网络配置方法和装置
EP3739440A1 (en) Distributed storage system, data processing method and storage node
WO2019062572A1 (zh) 一种数据处理方法、装置及系统
CN110119304B (zh) 一种中断处理方法、装置及服务器
US11966585B2 (en) Storage device and storage system
CN109302448A (zh) 一种数据处理方法及装置
WO2023098050A1 (zh) 远程数据访问方法及装置
US11231964B2 (en) Computing device shared resource lock allocation
US20220107752A1 (en) Data access method and apparatus
US11947419B2 (en) Storage device with data deduplication, operation method of storage device, and operation method of storage server
US9396140B1 (en) Method and apparatus for transferring frames with different world wide name addresses and connection rates between initiators of a host device and a port
US20230342087A1 (en) Data Access Method and Related Device
US20230244417A1 (en) Storage node, storage device, and network chip
CN110471627B (zh) 一种共享存储的方法、系统及装置
JP2022042271A (ja) メモリシステムおよび制御方法
WO2017177400A1 (zh) 一种数据处理方法及系统
WO2024082702A1 (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