CN118069387A - 一种基于硬件多线程的rdma数据发送队列管理方法及装置 - Google Patents

一种基于硬件多线程的rdma数据发送队列管理方法及装置 Download PDF

Info

Publication number
CN118069387A
CN118069387A CN202311639226.1A CN202311639226A CN118069387A CN 118069387 A CN118069387 A CN 118069387A CN 202311639226 A CN202311639226 A CN 202311639226A CN 118069387 A CN118069387 A CN 118069387A
Authority
CN
China
Prior art keywords
thread
queue
class
query
memory
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
CN202311639226.1A
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.)
Yusur Technology Co ltd
Original Assignee
Yusur Technology 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 Yusur Technology Co ltd filed Critical Yusur Technology Co ltd
Priority to CN202311639226.1A priority Critical patent/CN118069387A/zh
Publication of CN118069387A publication Critical patent/CN118069387A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供一种基于硬件多线程的RDMA数据发送队列管理方法及装置,在RDMA网卡的通用执行方案中,针对队列对上下文的查询读取以及内存翻译表项的查询读取设置多个线程槽,当发生读取未命中时,将相应的任务线程重新加入可用的线程槽中重新执行,省略了从动态随机存取存储器中重新取回相应查询任务信息的过程,不会影响队列中后续任务和其他活跃队列的执行,避免了逻辑资源浪费和对全部任务处置的延迟。

Description

一种基于硬件多线程的RDMA数据发送队列管理方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种基于硬件多线程的RDMA数据发送队列管理方法及装置。
背景技术
一个典型的RDMA网卡(RDMA Network Interface Card,RNIC)在执行数据传输的过程中,全部的队列对上下文信息(Queue Pair Context,QPC)以及内存翻译表项(MemoryTranslation Entry,MTE)存储在大容量的动态随机存取存储器(Dynamic Random AccessMemory,DRAM)中。DRAM的访问延迟较长,为了降低处理延迟,现有技术通常会使用访问速度较快的静态随机存取存储器(Static Random Access Memory,SRAM)缓存(Cache)部分QPC和MTE。由于成本和制造工艺限制,芯片上SRAM的容量有限,QPC和MTE缓存未命中现象难以避免,每次未命中,RNIC都需要从DRAM中取回对应信息。
典型的RDMA应用通常有多个活跃的发送队列,当发送队列在查询QPC或MTE状态信息缓存未命中,造成发送队列处理器(SQP)流水线阻塞时,这种阻塞会导致无法处理同一队列的后续任务或者影响其他活跃队列,造成发送队列处理器流水线逻辑资源的浪费以及增加处理全部任务的延迟。因此,急需一种新的数据发送队列管理方案。
发明内容
鉴于此,本发明实施例提供了一种基于硬件多线程的RDMA数据发送队列管理方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷,解决现有技术中RDMA数据发送队列由于查询队列对上下文信息和内存翻译表项未命中导致阻塞和延迟的问题。
一方面,本发明提供一种基于硬件多线程的RDMA数据发送队列管理方法,所述方法基于RDMA网卡执行,该方法包括以下步骤:
在空闲状态下从非空的发送队列中仲裁获取队列头部的发送队列元素和相应的队列对编号;
根据所述发送队列元素和所述队列对编号查询队列对上下文信息,根据所述队列对上下文信息生成数据包首部;
读取所述发送队列元素中嵌套的散聚列表,根据所述散聚列表查询内存翻译表项,以得到负载物理内存地址;
根据所述首部和所述负载物理内存地址生成数据包描述符,交付至直接内存访问模块发送;
其中,为查询所述队列上下文信息设置多个一类线程槽,为查询所述内存翻译表项设置多个二类线程槽;当发生由于未命中缓存导致的所述队列上下文信息查询线程阻塞时,协调所述一类线程槽重新写入该发生阻塞的查询线程以重新执行;当发生由于未命中导致的所述内存翻译表项查询线程阻塞时,协调所述二类线程槽重新写入该发生阻塞的查询线程以重新执行。
在一些实施例中,当发生由于未命中缓存导致的所述队列上下文信息查询线程阻塞时,协调所述一类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
在所述一类线程槽为非满的情况下,直接写入该发生阻塞的所述队列上下文信息查询线程。
在一些实施例中,当发生由于未命中缓存导致的所述队列上下文信息查询线程阻塞时,协调所述一类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
当读出队列对上下文信息的任务状态为空闲且所述一类线程槽为非空的情况下,首先读出一个或多个可用的所述队列上下文信息查询线程,并写入发生阻塞的所述队列上下文信息查询线程以重新执行。
在一些实施例中,当发生由于未命中缓存导致的所述队列上下文信息查询线程阻塞时,协调所述一类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
当读出队列对上下文信息的任务状态为非空闲且所述一类线程槽没有可用槽的情况下,生成查询队列对上下文信息阻塞提示信息并展示。
在一些实施例中,当发生由于未命中导致的所述内存翻译表项查询线程阻塞时,协调所述二类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:在所述二类线程槽为非满的情况下,直接写入该发生阻塞的所述内存翻译表项查询线程。
在一些实施例中,当发生由于未命中导致的所述内存翻译表项查询线程阻塞时,协调所述二类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
当读出内存翻译表项的任务状态为空闲且所述二类线程槽为非空的情况下,首先读出一个或多个可用的所述内存翻译表项查询线程,并写入发生阻塞的所述内存翻译表项查询线程以重新执行。
在一些实施例中,当发生由于未命中导致的所述内存翻译表项查询线程阻塞时,协调所述二类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
当读出内存翻译表项的任务状态为非空闲且所述二类线程槽没有可用槽的情况下,生成查询内存翻译表项阻塞提示信息并展示。
在一些实施例中,所述一类线程槽和所述二类线程槽通过设置有效位和状态位标记和知识各线程的是否为空以及任务状态。
另一方面,本发明还提供一种基于硬件多线程的RDMA数据发送队列管理装置,包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现上述方法的步骤。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
本发明的有益效果至少是:
本发明所述基于硬件多线程的RDMA数据发送队列管理方法及装置,在RDMA网卡的通用执行方案中,针对队列对上下文的查询读取以及内存翻译表项的查询读取设置多个线程槽,当发生读取未命中时,将相应的任务线程重新加入可用的线程槽中重新执行,省略了从动态随机存取存储器中重新取回相应查询任务信息的过程,不会影响队列中后续任务和其他活跃队列的执行,避免了逻辑资源浪费和对全部任务处置的延迟。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例所述RDMA网卡的数据传输机制示意图。
图2为本发明一实施例所述基于硬件多线程实现的RDMA发送队列处理机制示意图。
图3(a)为本发明一实施例所述RDMA传输层发送队列处理线程状态维护机制中读取队列对上下文信息的线程维护机制示意图。
图3(b)为本发明一实施例所述RDMA传输层发送队列处理线程状态维护机制中读取内存翻译表项的线程维护机制示意图。
图4为本发明另一实施例所述RDMA传输层发送队列处理线程状态维护机制中读取队列对上下文信息的线程维护机制示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
现有技术中,RDMA网卡(RDMANetwork Interface Card,RNIC)的数据传输机制中,发送队列处理器(Send Queue Processor,SQP)是缓存(Cache)的主要使用者,参照图1,其对缓存的使用包括以下两方面:
(1)对于面向连接的可靠传输(Reliable Connection,RC),发送队列处理器根据待处理的队列对(QP)编号读取队列对上下文信息,获取对端的QP ID,发送数据包序列号(Send Packet Sequence Number,Send PSN),对端QP的IP、MAC地址等连接信息,从而生成待发送数据包的首部。
(2)发送队列元素(Send Queue Element,SQE)使用虚拟地址表示待发送数据的地址,发送队列处理器需要查询内存翻译表项(MTE),翻译得到对应的物理地址,然后使用物理地址进行直接内存访问(Dynamic Memory Access,DMA)读取待发送数据。
典型的实现中,当队列对上下文信息和内存翻译表项缓存未命中时,发送队列处理器处理流水线需要阻塞,直到对应的信息从动态随机存取存储器(DRAM)中取回到缓存。
在InfiniBand RDMA协议中,对于一个发送队列中不同发送队列元素(SQE)有处理顺序的要求,但是对不同发送队列之间的处理顺序没有要求。为了掩盖队列对上下文信息和内存翻译表项缓存未命中的开销,本发明首先从硬件实现层面上定义了RDMA传输层发送处理流水线的线程上下文模型,并相应给出发送队列处理器处理流水线阻塞情况下的快速线程切换机制。
具体的,本发明提供一种基于硬件多线程的RDMA数据发送队列管理方法,所述方法基于RDMA网卡执行,该方法包括以下步骤S101~S104:
步骤S101:在空闲状态下从非空的发送队列中仲裁获取队列头部的发送队列元素和相应的队列对编号。
步骤S102:根据发送队列元素和队列对编号查询队列对上下文信息,根据队列对上下文信息生成数据包首部。
步骤S103:读取发送队列元素中嵌套的散聚列表,根据散聚列表查询内存翻译表项,以得到负载物理内存地址。
步骤S104:根据首部和负载物理内存地址生成数据包描述符,交付至直接内存访问模块发送。
其中,为查询队列上下文信息设置多个一类线程槽,为查询内存翻译表项设置多个二类线程槽;当发生由于未命中缓存导致的队列上下文信息查询线程阻塞时,协调一类线程槽重新写入该发生阻塞的查询线程以重新执行;当发生由于未命中导致的内存翻译表项查询线程阻塞时,协调二类线程槽重新写入该发生阻塞的查询线程以重新执行。
步骤S101~S104中,由RDMA网卡的发送队列处理器(SQP)执行数据转发,处理流水线可以抽象为4个阶段,第一步是查询队列头部的发送队列元素和队列对编号,第二步是查询队列对上下文信息并生成数据包首部,第三步是获取负载数据,第四步是生成数据包并转发。
在RDMA(Remote Direct Memory Access)中,RDMA通信通常使用发送队列(SendQueue)和接收队列(Receive Queue)来协调数据的传输。Send Queue(SQ)是由RDMA适配器维护的队列,其中包含了将要发送的消息的相关信息。SQE(Send Queue Element)就是在这个队列中的一个元素,表示一个发送操作。每个SQE包含了发送的数据的描述、目标地址等信息。
队列对(Queue Pair,QP),队列对包含两个方向上的队列:发送队列(Send Queue,SQ)和接收队列(Receive Queue,RQ)。每个队列都包含多个元素,用于描述和控制相应方向上的数据传输。QP是SQ和RQ的组合,代表了一对相互关联的队列。一个QP可以用于在两个节点之间建立一条RDMA连接。队列对上下文信息(Queue Pair Context,QPC)是与队列对(Queue Pair,QP)相关联的上下文数据结构。QPC包含了有关RDMA通信的一些重要信息,以便适配器正确地执行数据传输;例如,本地和远程内存地址信息、发送和接收队列信息、队列大小和状态信息等。
通过散聚列表(Scatter Gather List,SGL)从主机内存中获取待发送的数据负载,数据负载被分散存储在主机内存的多个部分中,而不是连续存储。为了高效地读取这些分散的数据,网卡使用Scatter Gather List的数据结构。这个SGL列表详细地列出了数据负载在主机内存中的所有位置和长度。当需要读取这些数据时,网卡使用DMA(直接内存访问)技术,通过SGL列表,按照列出的顺序,逐个地从主机内存的相应位置读取数据,直到所有的数据都被读取完毕。这种方式不仅提高了数据传输的效率,还减少了CPU的负担。
内存翻译表项MET(Memory Translation Table Entry)是一种数据结构,用于在RDMA适配器和主机内存之间建立虚拟地址到物理地址的映射。MET负责管理RDMA适配器如何访问主机内存,以实现直接内存访问,得到数据负载,而无需主机CPU的干预。
RDMA适配器可以使用MET来直接映射虚拟地址到物理地址,然后使用SGL来描述需要传输的非连续内存块。MET确保RDMA适配器可以正确访问这些内存块,而SGL提供了一种组织和描述这些非连续内存块的机制。
最后生成数据包描述符,并交给直接内存访问模块(MDA模块)转发。
在这个过程中,队列对上下文信息和内存翻译表项通常存储在缓存中,可能发生未命中的情况,为了防止对队列中后续的任务产生影响。
本申请在硬件上设置了多线程,为查询队列上下文信息设置多个一类线程槽,为查询内存翻译表项设置多个二类线程槽;示例性的,一类线程槽和二类线程槽可以分别设置4个,表示在查询读取队列上下文信息和内存翻译表项的阶段最多支持等待线程数为4。
在运行过程中,当由于未命中缓存导致读取队列上下文信息或内存翻译表项发生阻塞时,可以将阻塞的任务重新写入可用的线程槽中,重新执行查询读取。
在一些实施例中,当发生由于未命中缓存导致的队列上下文信息查询线程阻塞时,协调一类线程槽重新写入该发生阻塞的查询线程以重新执行,包括步骤S201:在一类线程槽为非满的情况下,直接写入该发生阻塞的队列上下文信息查询线程。
在一些实施例中,当发生由于未命中缓存导致的队列上下文信息查询线程阻塞时,协调一类线程槽重新写入该发生阻塞的查询线程以重新执行,包括步骤S202:当读出队列对上下文信息的任务状态为空闲且一类线程槽为非空的情况下,首先读出一个或多个可用的队列上下文信息查询线程,并写入发生阻塞的队列上下文信息查询线程以重新执行。
在一些实施例中,当发生由于未命中缓存导致的队列上下文信息查询线程阻塞时,协调一类线程槽重新写入该发生阻塞的查询线程以重新执行,包括步骤S203:当读出队列对上下文信息的任务状态为非空闲且一类线程槽没有可用槽的情况下,生成查询队列对上下文信息阻塞提示信息并展示。
在一些实施例中,当发生由于未命中导致的内存翻译表项查询线程阻塞时,协调二类线程槽重新写入该发生阻塞的查询线程以重新执行,包括步骤S301:在二类线程槽为非满的情况下,直接写入该发生阻塞的内存翻译表项查询线程。
在一些实施例中,当发生由于未命中导致的内存翻译表项查询线程阻塞时,协调二类线程槽重新写入该发生阻塞的查询线程以重新执行,包括步骤S302:当读出内存翻译表项的任务状态为空闲且二类线程槽为非空的情况下,首先读出一个或多个可用的内存翻译表项查询线程,并写入发生阻塞的内存翻译表项查询线程以重新执行。
在一些实施例中,当发生由于未命中导致的内存翻译表项查询线程阻塞时,协调二类线程槽重新写入该发生阻塞的查询线程以重新执行,包括步骤S303:当读出内存翻译表项的任务状态为非空闲且二类线程槽没有可用槽的情况下,生成查询内存翻译表项阻塞提示信息并展示。
在一些实施例中,一类线程槽和二类线程槽通过设置有效位(Valid)和状态位(Ready)标记和指示各线程是否为空以及任务状态。有效位为1表示有效,0表示无效。状态位为1表示可用,0表示不可用。
另一方面,本发明还提供一种基于硬件多线程的RDMA数据发送队列管理装置,包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现上述方法的步骤。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
下面结合一具体实施例对本发明进行说明:
本实施例首先提供一种基于硬件多线程实现的RDMA发送队列处理机制,将发送队列处理器SQP的处理流水线抽象为以下五个阶段,如图2所示:
1.读取发送队列元素SQE(Read SQE):空闲状态下,向上一级模块请求读取发送队列元素SQE,上级模块首先从非空的发送队列(Send Queue,SQ)中仲裁,并从仲裁得到的SQ中取队列头部的发送队列元素,最后将仲裁得到的SQ编号和发送队列元素SQE输入ReadSQE模块;Read SQE模块根据规范解析发送队列元素SQE。
2.读取队列对上下文信息(Read QPC):根据发送队列元素编号SQE QP从缓存中读取队列对上下文信息QPC,队列对上下文信息中包括用于生成待处理发送队列元素SQE对应的RDMA数据包首部的全部信息。主要内容包括建立绑定的对端QP ID,对端QP的MAC地址、IP地址和发送数据包序列号PSN。
3.首部生成(Header Generation):基于发送队列元素SQE和队列对上下文信息QPC生成传输层数据包的首部。
4.读取内存翻译表项(Read MTE):对于发送以及RDMA写入操作,网卡需要基于散聚列表(Scatter Gather List,SGL)以DMA的方式从主机内存中读取待发送的数据负载(Payload)。SGL嵌套在发送队列元素SQE中,SGL每一项包括待发送数据的本地虚拟地址(Local Address),本地密钥(Local Key),以及数据长度(Length)。网卡执行DMA操作需要使用物理地址,在典型的实现中,需要使用SGL查询内存翻译表项MTE。
5.数据包描述符生成(Packet Descriptor Generation):基于首部生成阶段得到的首部(Header)和读取内存翻译表项(Read MTE)阶段得到的负载(Payload)物理内存地址生成数据包描述符(Packet Descriptor),交付给下游直接内存访问模块(DMA模块)发送。
发送队列处理器处理流水线中,读取队列对上下文信息(Read QPC)和读取内存翻译表项(Read MTE)执行过程中分别存在QPC缓存和MTE缓存未命中的情况,具有较长的不确定延迟。
本实施例提供一种RDMA传输层发送队列处理线程状态维护机制,具体如下:
本实施例首先定义了Read QPC和Read MTE线程(Thread)的内容,其中Read QPC线程包括QP ID和Read SQE阶段解析后的SQE内容,Read MTE线程包括Local Key和HeaderGeneration阶段生成的首部模板(Header Template)。由于路径最大传输单元(PathMaximum Transmission Unit,PMTU)的限制,一个发送队列元素SQE对应的发送或RDMA写入消息(Message)包括多个RDMA数据包(Packet),每个数据包需要一个Header和PayloadDescriptor,Header Template用于生成一个Message全部Packet的首部。
如图3(a)和图4所示,队列对上下文信息线程等待队列(QPC Thread Wait Queue)为例,包含4个QPC线程槽,每个线程槽还包括有效(Valid)位和可使用(Ready)位,4个QPC线程槽表示Read QPC阶段最多支持的等待线程数为4。Read QPC阶段在QPC Thread WaitQueue非满的情况下,可以写入阻塞的队列上下文信息查询线程(QPC Thread);当Read QPC空闲并且QPC Thread Wait Queue非空(统计可用的槽)的情况下,可以读出可用的QPCThread进行处理。QPC Thread Wait Queue侦听来自QPC缓存的填充QP ID(QPC Fill ID),与QPC Thread Wait Queue中全部有效槽(Valid位为1)中的QP ID进行比较,如果相等则置位对应槽的Ready位。
具体的,以队列上下文信息查询线程(QPC Thread)为例:
(1)Read QPC阶段空闲(Ready为1),Read SQE输出解析后的SQE以及对应的QP ID,置位Valid。
(2)Read QPC基于QP ID访问QPC缓存读取QPC,如果命中则继续向下一级执行;如果未命中,则将阻塞的QPC Thread写入QPC Wait Thread Queue,再次置位Ready,接收下一个SQE。如果发生未命中的情况下,QPC Wait Thread Queue满,且Empty(不存在可用的槽),则Read QPC阶段阻塞;如果非Empty,则读出一个可执行的QPC Thread,然后将阻塞的QPCThread写入QPC Wait Thread Queue。
(3)如果Read QPC空闲,并且Read SQE没有新的输入,QPC Wait Thread Queue非空,则Read QPC从QPC Wait Thread Queue读出可用的槽。
进一步的,如图3(b)对Read MTE线程的处置方案可以参照Read QPC线程的处置方案。
为了从原理上论述本实施例相对传统阻塞执行方式的优越性,做出如下假设:仅考虑队列对上下文信息的未命中缓存的情况,本实施例中每一级流水线都能在一个周期处理一次事务,队列对上下文信息的未命中缓存的概率为P,开销为A个周期,有足够多的活跃队列对待处理。
基于阻塞执行方式,处理N个发送队列元素SQE需要的时钟周期数为N+4+P(A+1);基于本实施的提出的非阻塞方式,线程切换开销固定为2个周期,执行N个发送队列元素SQE需要的时钟周期数为N+4+P(2+1)。典型的情况下,A大于2,因此本实施例相对于阻塞执行方式可以节省P(A-2)的周期数。
本发明实施例还提供了一种计算机设备,该计算机设备可以包括处理器、存储器,其中处理器和存储器可以通过总线或者其他方式连接。
处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的车载显示装置按键屏蔽方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器中,当被所述处理器执行时,执行本实施例中所述的方法。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
综上所述,本发明所述基于硬件多线程的RDMA数据发送队列管理方法及装置,在RDMA网卡的通用执行方案中,针对队列对上下文的查询读取以及内存翻译表项的查询读取设置多个线程槽,当发生读取未命中时,将相应的任务线程重新加入可用的线程槽中重新执行,省略了从动态随机存取存储器中重新取回相应查询任务信息的过程,不会影响队列中后续任务和其他活跃队列的执行,避免了逻辑资源浪费和对全部任务处置的延迟。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于硬件多线程的RDMA数据发送队列管理方法,其特征在于,所述方法基于RDMA网卡执行,该方法包括以下步骤:
在空闲状态下从非空的发送队列中仲裁获取队列头部的发送队列元素和相应的队列对编号;
根据所述发送队列元素和所述队列对编号查询队列对上下文信息,根据所述队列对上下文信息生成数据包首部;
读取所述发送队列元素中嵌套的散聚列表,根据所述散聚列表查询内存翻译表项,以得到负载物理内存地址;
根据所述首部和所述负载物理内存地址生成数据包描述符,交付至直接内存访问模块发送;
其中,为查询所述队列上下文信息设置多个一类线程槽,为查询所述内存翻译表项设置多个二类线程槽;当发生由于未命中缓存导致的所述队列上下文信息查询线程阻塞时,协调所述一类线程槽重新写入该发生阻塞的查询线程以重新执行;当发生由于未命中导致的所述内存翻译表项查询线程阻塞时,协调所述二类线程槽重新写入该发生阻塞的查询线程以重新执行。
2.根据权利要求1所述的基于硬件多线程的RDMA数据发送队列管理方法,其特征在于,当发生由于未命中缓存导致的所述队列上下文信息查询线程阻塞时,协调所述一类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
在所述一类线程槽为非满的情况下,直接写入该发生阻塞的所述队列上下文信息查询线程。
3.根据权利要求2所述的基于硬件多线程的RDMA数据发送队列管理方法,其特征在于,当发生由于未命中缓存导致的所述队列上下文信息查询线程阻塞时,协调所述一类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
当读出队列对上下文信息的任务状态为空闲且所述一类线程槽为非空的情况下,首先读出一个或多个可用的所述队列上下文信息查询线程,并写入发生阻塞的所述队列上下文信息查询线程以重新执行。
4.根据权利要求3所述的基于硬件多线程的RDMA数据发送队列管理方法,其特征在于,当发生由于未命中缓存导致的所述队列上下文信息查询线程阻塞时,协调所述一类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
当读出队列对上下文信息的任务状态为非空闲且所述一类线程槽没有可用槽的情况下,生成查询队列对上下文信息阻塞提示信息并展示。
5.根据权利要求1所述的基于硬件多线程的RDMA数据发送队列管理方法,其特征在于,当发生由于未命中导致的所述内存翻译表项查询线程阻塞时,协调所述二类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
在所述二类线程槽为非满的情况下,直接写入该发生阻塞的所述内存翻译表项查询线程。
6.根据权利要求5所述的基于硬件多线程的RDMA数据发送队列管理方法,其特征在于,当发生由于未命中导致的所述内存翻译表项查询线程阻塞时,协调所述二类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
当读出内存翻译表项的任务状态为空闲且所述二类线程槽为非空的情况下,首先读出一个或多个可用的所述内存翻译表项查询线程,并写入发生阻塞的所述内存翻译表项查询线程以重新执行。
7.根据权利要求6所述的基于硬件多线程的RDMA数据发送队列管理方法,其特征在于,当发生由于未命中导致的所述内存翻译表项查询线程阻塞时,协调所述二类线程槽重新写入该发生阻塞的查询线程以重新执行,包括:
当读出内存翻译表项的任务状态为非空闲且所述二类线程槽没有可用槽的情况下,生成查询内存翻译表项阻塞提示信息并展示。
8.根据权利要求1所述的基于硬件多线程的RDMA数据发送队列管理方法,其特征在于,所述一类线程槽和所述二类线程槽通过设置有效位和状态位标记和知识各线程的是否为空以及任务状态。
9.一种基于硬件多线程的RDMA数据发送队列管理装置,包括处理器和存储器,其特征在于,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置实现如权利要求1至8中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至8中任一项所述方法的步骤。
CN202311639226.1A 2023-12-01 2023-12-01 一种基于硬件多线程的rdma数据发送队列管理方法及装置 Pending CN118069387A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311639226.1A CN118069387A (zh) 2023-12-01 2023-12-01 一种基于硬件多线程的rdma数据发送队列管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311639226.1A CN118069387A (zh) 2023-12-01 2023-12-01 一种基于硬件多线程的rdma数据发送队列管理方法及装置

Publications (1)

Publication Number Publication Date
CN118069387A true CN118069387A (zh) 2024-05-24

Family

ID=91110329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311639226.1A Pending CN118069387A (zh) 2023-12-01 2023-12-01 一种基于硬件多线程的rdma数据发送队列管理方法及装置

Country Status (1)

Country Link
CN (1) CN118069387A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118427151A (zh) * 2024-07-05 2024-08-02 浪潮(北京)电子信息产业有限公司 一种数据传输方法、装置、设备、介质和产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183304A (zh) * 2006-11-13 2008-05-21 国际商业机器公司 并发非阻塞无锁队列及其实施方法和装置
CN112771501A (zh) * 2018-08-17 2021-05-07 甲骨文国际公司 事务性处理系统的远程直接存储器操作(rdmo)
CN115858160A (zh) * 2022-12-07 2023-03-28 江苏为是科技有限公司 远程直接内存访问虚拟化资源分配方法及装置、存储介质
CN115885270A (zh) * 2020-08-19 2023-03-31 华为技术有限公司 网络连接的可交换队列类型
CN116028386A (zh) * 2021-10-26 2023-04-28 英特尔公司 缓存资源的动态分配

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101183304A (zh) * 2006-11-13 2008-05-21 国际商业机器公司 并发非阻塞无锁队列及其实施方法和装置
CN112771501A (zh) * 2018-08-17 2021-05-07 甲骨文国际公司 事务性处理系统的远程直接存储器操作(rdmo)
CN115885270A (zh) * 2020-08-19 2023-03-31 华为技术有限公司 网络连接的可交换队列类型
CN116028386A (zh) * 2021-10-26 2023-04-28 英特尔公司 缓存资源的动态分配
CN115858160A (zh) * 2022-12-07 2023-03-28 江苏为是科技有限公司 远程直接内存访问虚拟化资源分配方法及装置、存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118427151A (zh) * 2024-07-05 2024-08-02 浪潮(北京)电子信息产业有限公司 一种数据传输方法、装置、设备、介质和产品
CN118427151B (zh) * 2024-07-05 2024-09-20 浪潮(北京)电子信息产业有限公司 一种数据传输方法、装置、设备、介质和产品

Similar Documents

Publication Publication Date Title
US7089289B1 (en) Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices
JP6549663B2 (ja) ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法
US6799200B1 (en) Mechanisms for efficient message passing with copy avoidance in a distributed system
US11023411B2 (en) Programmed input/output mode
EP2406723B1 (en) Scalable interface for connecting multiple computer systems which performs parallel mpi header matching
US9836431B2 (en) Secure handle for intra-and inter-processor communications
WO2018076793A1 (zh) 一种NVMe数据读写方法及NVMe设备
WO2020236275A1 (en) System and method for facilitating dynamic command management in a network interface controller (nic)
US20150288624A1 (en) Low-latency processing in a network node
US20070041383A1 (en) Third party node initiated remote direct memory access
JPH06309252A (ja) 相互接続インタフェース
JP2010183450A (ja) ネットワークインターフェース装置
CN118069387A (zh) 一种基于硬件多线程的rdma数据发送队列管理方法及装置
US7788437B2 (en) Computer system with network interface retransmit
US7552232B2 (en) Speculative method and system for rapid data communications
US6742075B1 (en) Arrangement for instigating work in a channel adapter based on received address information and stored context information
EP1508100B1 (en) Inter-chip processor control plane
US9288163B2 (en) Low-latency packet receive method for networking devices
US7292593B1 (en) Arrangement in a channel adapter for segregating transmit packet data in transmit buffers based on respective virtual lanes
JP2016045510A (ja) 情報処理システム、情報処理装置、情報処理システムの制御方法及び情報処理装置の制御プログラム
US7130936B1 (en) System, methods, and computer program product for shared memory queue
US7266614B1 (en) Embedded channel adapter having link layer configured for concurrent retrieval of payload data during packet transmission
US20170147517A1 (en) Direct memory access system using available descriptor mechanism and/or pre-fetch mechanism and associated direct memory access method
CN116136790A (zh) 任务处理方法和装置
CN112019450A (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