CN117614906B - 用于多线程多代表口发包的方法、计算机设备及介质 - Google Patents

用于多线程多代表口发包的方法、计算机设备及介质 Download PDF

Info

Publication number
CN117614906B
CN117614906B CN202410093435.9A CN202410093435A CN117614906B CN 117614906 B CN117614906 B CN 117614906B CN 202410093435 A CN202410093435 A CN 202410093435A CN 117614906 B CN117614906 B CN 117614906B
Authority
CN
China
Prior art keywords
queue
virtual
packet
queues
physical
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.)
Active
Application number
CN202410093435.9A
Other languages
English (en)
Other versions
CN117614906A (zh
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.)
Zhuhai Xingyun Zhilian Technology Co Ltd
Original Assignee
Zhuhai Xingyun Zhilian 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 Zhuhai Xingyun Zhilian Technology Co Ltd filed Critical Zhuhai Xingyun Zhilian Technology Co Ltd
Priority to CN202410093435.9A priority Critical patent/CN117614906B/zh
Publication of CN117614906A publication Critical patent/CN117614906A/zh
Application granted granted Critical
Publication of CN117614906B publication Critical patent/CN117614906B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6245Modifications to standard FIFO or LIFO
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6205Arrangements for avoiding head of line blocking
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请涉及计算机技术领域并提供一种用于多线程多代表口发包的方法、计算机设备及介质。方法包括:多个线程通过多个代表口发包到多个物理队列,其中,每当第一虚拟发包队列发送一个最小发包单元到第一先进先出队列之后,执行第一判断操作。第一判断操作包括:判断第一虚拟发包队列是否锁定第一先进先出队列,如果是,执行第一操作流程,如果否,执行第二操作流程。如此,实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误。

Description

用于多线程多代表口发包的方法、计算机设备及介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种用于多线程多代表口发包的方法、计算机设备及介质。
背景技术
在虚拟化网络相关技术领域,例如云计算大规模虚拟化领域,利用虚拟化设备的直通来提高网络高性能输入输出能力。虚拟化设备的直通需要通过虚拟交换机上的代表口来构建数据流通路。虚拟交换机上的多个代表口所包括的多个虚拟发包队列的数量代表了并行发包能力。为了充分发挥并行发包能力,需要应对发包冲突的情况。现有技术中,为了应对发包冲突,对每个代表口做出了限制,难以充分发挥多个代表口的并行发包能力。
为此,本申请提供了一种用于多线程多代表口发包的方法、计算机设备及介质,用于应对现有技术中的技术难题。
发明内容
第一方面,本申请提供了一种用于多线程多代表口发包的方法。所述方法包括:多个线程通过多个代表口发包到多个物理队列,其中,所述多个代表口中的每一个代表口包括至少一个虚拟发包队列,所述多个代表口包括第一代表口,所述第一代表口包括第一虚拟发包队列用于发包到所述多个物理队列中的第一物理队列,第一先进先出队列对应所述第一物理队列,其中,每当所述第一虚拟发包队列发送一个最小发包单元到所述第一先进先出队列之后,执行第一判断操作,所述第一判断操作包括:判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行第一操作流程,如果否,执行第二操作流程,其中,所述第一操作流程包括:出列所述第一先进先出队列中的全部最小发包单元到所述第一物理队列,在所述第一先进先出队列中的全部最小发包单元被出列后,所述第一虚拟发包队列解除锁定所述第一先进先出队列,然后,设定所述第一先进先出队列的第一等待标识为二元状态中的第一状态,再然后,判断所述第一等待标识是否是所述二元状态中相对于所述第一状态的第二状态,如果所述第一等待标识是所述第二状态,重复执行所述第一判断操作。
通过本申请的第一方面,不借助额外的控制机制,只是依赖第一虚拟发包队列在每一次发包操作后执行的判断结果和第一等待标识,因此实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误,并且,可以灵活地适配多个线程各自的发包操作需求、虚拟交换机上的多个代表口的变化、虚拟交换机上的多个代表口与多个物理队列之间的映射关系的变化等,从而更好地适应虚拟化网络、虚拟化设备直通等应用领域的需求。
在本申请的第一方面的一种可能的实现方式中,所述第二操作流程包括:设定所述第一先进先出队列的所述第一等待标识为所述第二状态,然后,判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行所述第一操作流程,如果否,所述第一虚拟发包队列结束发包操作。
在本申请的第一方面的一种可能的实现方式中,所述第一操作流程还包括:如果所述第一等待标识不是所述第二状态,所述第一虚拟发包队列结束发包操作。
在本申请的第一方面的一种可能的实现方式中,第二虚拟发包队列是所述多个代表口所包括的虚拟发包队列中的不同于所述第一虚拟发包队列的另一虚拟发包队列,所述第一虚拟发包队列和所述第二虚拟发包队列均用于发包到所述第一物理队列,其中,每当所述第二虚拟发包队列发送一个最小发包单元到所述第一先进先出队列之后,执行第二判断操作,所述第二判断操作包括:判断所述第二虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行第三操作流程,如果否,执行第四操作流程,其中,所述第三操作流程包括:出列所述第一先进先出队列中的全部最小发包单元到所述第一物理队列,在所述第一先进先出队列中的全部最小发包单元被出列后,所述第二虚拟发包队列解除锁定所述第一先进先出队列,然后,设定所述第一先进先出队列的第一等待标识为二元状态中的第一状态,再然后,判断所述第一等待标识是否是所述二元状态中相对于所述第一状态的第二状态,如果所述第一等待标识是所述第二状态,重复执行所述第二判断操作。
在本申请的第一方面的一种可能的实现方式中,所述第四操作流程包括:设定所述第一先进先出队列的所述第一等待标识为所述第二状态,然后,判断所述第二虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行所述第三操作流程,如果否,所述第二虚拟发包队列结束发包操作。
在本申请的第一方面的一种可能的实现方式中,所述第三操作流程还包括:如果所述第一等待标识不是所述第二状态,所述第二虚拟发包队列结束发包操作。
在本申请的第一方面的一种可能的实现方式中,所述第一代表口包括所述第一虚拟发包队列和所述第二虚拟发包队列。
在本申请的第一方面的一种可能的实现方式中,所述多个代表口中的不同于所述第一代表口的另一代表口包括所述第二虚拟发包队列。
在本申请的第一方面的一种可能的实现方式中,所述第一虚拟发包队列和所述第二虚拟发包队列均用于发包到所述第一物理队列,包括:所述第一虚拟发包队列和所述第二虚拟发包队列并行地发包到所述第一先进先出队列。
在本申请的第一方面的一种可能的实现方式中,所述第一代表口是所述多个代表口中的任意代表口,所述第一虚拟发包队列是所述第一代表口所包括的虚拟发包队列中的任意虚拟发包队列。
在本申请的第一方面的一种可能的实现方式中,所述多个代表口所包括的虚拟发包队列中的任意两个虚拟发包队列被配置为可并行地发包到所述多个物理队列中的同一物理队列。
在本申请的第一方面的一种可能的实现方式中,多个先进先出队列与所述多个物理队列一一对应,所述多个先进先出队列包括所述第一先进先出队列,所述多个先进先出队列中的每一个先进先出队列中的最小发包单元被出列到所述多个物理队列中与该先进先出队列对应的物理队列。
在本申请的第一方面的一种可能的实现方式中,所述多个线程通过所述多个代表口所包括的虚拟发包队列发包到所述多个先进先出队列从而发包到所述多个物理队列。
在本申请的第一方面的一种可能的实现方式中,所述多个线程中的至少两个线程通过所述多个代表口所包括的虚拟发包队列中的与所述至少两个线程一一对应的至少两个虚拟发包队列并行地发包。
在本申请的第一方面的一种可能的实现方式中,所述多个线程中的至少两个线程通过所述第一代表口所包括的所述第一虚拟发包队列非并行地发包。
在本申请的第一方面的一种可能的实现方式中,所述多个物理队列用于驱动侧和逻辑侧之间的交互,所述驱动侧的软件包括所述多个代表口。
在本申请的第一方面的一种可能的实现方式中,所述第一代表口是虚拟接口、以太网代表口或者绑定代表口。
在本申请的第一方面的一种可能的实现方式中,所述第一物理队列用于获取所述第一报文包相关联的描述符索引,更新所述第一报文包相关联的描述符以及执行敲门操作。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种多个线程通过多个代表口发包到多个物理队列的示意图;
图2为本申请实施例提供的一种用于多代表口多线程并行发包的方法的流程示意图;
图3为本申请实施例提供的第一种实施方式的存在发包冲突的多个虚拟发包队列的示意图;
图4为本申请实施例提供的第二种实施方式的存在发包冲突的多个虚拟发包队列的示意图;
图5为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为本申请实施例提供的一种多个线程通过多个代表口发包到多个物理队列的示意图。在虚拟化网络相关技术领域,例如云计算大规模虚拟化领域,利用虚拟化设备的直通来提高网络高性能输入输出能力。虚拟机、容器可以通过如单根输入输出虚拟化能力创建大量虚拟功能,这些虚拟功能以虚拟机直通、虚拟化硬件加速(virtio data pathacceleration,vDPA)、容器分配等方式直接提供给虚拟机、容器等,因为虚拟化设备的直通没有引入中间软件转换及数据拷贝且收发包直通硬件,有利于提高网络高性能输入输出能力。在需要二层转发、三层转发等较为复杂的场景,例如云计算组网、虚拟扩展局域网(Virtual eXtensible Local Area Network,VXLAN)等,利用虚拟交换机来构建数据通路。例如,虚拟机、容器的虚拟功能一一对应到虚拟交换机上的代表口,从虚拟功能发出的流量从代表口上送,经过虚拟交换机上的流表决策后再从另一代表口发出以便到达对应的虚拟功能及相关虚拟机、容器等,从而实现完整的数据通路。虚拟交换机上的流表决策包括流表匹配和转发,例如检索与上送的流量相匹配的流表项,然后进行编辑和转发。虚拟交换机可以处理某条流的首包的编辑和转发,在完成首包的转发后,下发精确流表到硬件,这样后续流可以直接命中下发到硬件的精确流表来进行编辑和转发,而不需要上送后续流到虚拟交换机进行软件处理,从而提升数据传输性能。虚拟化设备的直通需要通过虚拟交换机上的代表口来构建数据流通路,即使卸载到硬件上通过硬件进行编辑和转发,也还是依赖虚拟交换机的软件转发和上送来处理不适合硬件卸载的流以及确保数据传输高性能。以宿主机虚拟化网络为例,被上送到虚拟交换机的流,经过虚拟交换机查表后从绑定口发出(慢速路径),后续流直接命中后从绑定口发出(快速路径)。以数据处理单元为例,宿主机可以支持多个虚拟机,每个虚拟机可以有对应的虚拟功能,对外呈现出一个宿主机物理功能以及多个虚拟功能。虚拟交换机可以包括多个代表口,其中一个代表口可以对应宿主机的宿主机物理功能,然后若干个代表口分别对应多个虚拟功能,以及还有一个代表口对应数据处理单元的片上系统所看到的外设部件互联标准(Peripheral Component InterconnectExpress,PCIe)物理功能也即对应以太网的物理端口。
经以太网的物理端口接收到的报文,经过虚拟交换机查表后再通过与宿主机物理功能对应的代表口发往宿主机物理功能,利用硬件卸载,后续报文直接从物理端口发往宿主机物理功能。一般地,代表口的创建是需要虚拟交换机一侧的物理功能感知到虚拟功能的创建。因此,代表口经过物理功能创建,通过代表口发包需要使用到物理功能的相关队列,也就是需要通过物理功能的发包队列来发送报文,并且需要逐包的指定目的为该代表口对应的虚拟功能。为了提升数据传输性能以及提升数据吞吐率,虚拟交换机等软件以及宿主机的硬件一般支持多线程的并行发包操作,例如利用多个计算核来支持多个线程通过多个代表口并行发包给多个物理队列,还可以利用单核多线程技术等。这里物理队列可以指代物理功能的相关队列,例如通过代表口发包需要使用到物理功能的发包队列。例如,在远程直接内存访问的应用中,物理队列可以指报文发送队列,远程直接内存访问驱动侧例如远程直接内存访问业务应用通过虚拟交换机上的代表口发送远程直接内存访问报文到报文发送队列,远程直接内存访问逻辑侧如远程直接内存访问网卡从报文发送队列获取并发送远程直接内存访问报文。这里,每个代表口可以包括一个或者更多个虚拟发包队列,多个代表口各自的虚拟发包队列可以同时发包。当虚拟交换机需要发包时,可以选中特定代表口以及选定该特定代表口中的一个虚拟发包队列,利用代表口的标识和代表口的虚拟发包队列标识可以映射到真实的物理队列。同一个虚拟发包队列同一时刻只能由一个线程来运行发包,多个线程可以通过多个代表口所包括的多个虚拟发包队列来同时进行发包操作,也就是可以进行并行发包操作。因此,多个代表口所包括的多个虚拟发包队列的数量代表了并行发包能力,当多个线程通过多个代表口所包括的多个虚拟发包队列同时一起发包时,就发挥了最大并行发包能力。为了充分发挥并行发包能力,需要应对发包冲突的情况。发包冲突可能发生的场景是:不同的虚拟发包队列,例如同一个代表口下的不同的虚拟发包队列,或者例如不同代表口下各自的虚拟发包队列,映射到了同一个真实的物理队列上,这样当不同的虚拟发包队列各自的发包操作至少部分地在时间上重叠时,也就是不同的虚拟发包队列至少部分地同步发包给同一个物理队列时,在这样的不同的虚拟发包队列之间存在发包冲突。发包冲突的存在给充分发挥虚拟交换机的多个代表口的并行发包能力带来了挑战,也对如何利用多个计算核来支持多个线程并行发包带来了挑战。如果限制每个代表口只能支持单个虚拟发包队列并独占一个物理队列,并且要求虚拟交换机和协议栈保证同一时刻只有一个线程通过代表口所支持的单个虚拟发包队列来发包,这样虽然可以避免发包冲突问题,但是无法充分发挥多个代表口所包括的多个虚拟发包队列的并行发包能力。而且,随着数据传输规模的增加,虚拟交换机上的代表口数量也可能增加,如果需要提供更多的物理队列来支持数量增加了的代表口的发包操作,则必然占据更多的硬件资源以及需要更多的资源调度用于发包,从而造成性能瓶颈。下面结合图1进一步详细说明。
参阅图1,图1中示意性示出了三个代表口及各自包括的虚拟发包队列:代表口A120包括代表口A虚拟发包队列A 122和代表口A虚拟发包队列B 124,代表口B 130包括代表口B虚拟发包队列C 132,代表口C 140包括代表口C虚拟发包队列D 142和代表口C虚拟发包队列E 144。图1中还示意性示出了三个物理队列:物理队列A 160,物理队列B 162和物理队列C 164。图1中还示意性示出了三个先进先出队列与三个物理队列一一对应,先进先出队列A 150对应物理队列A 160,先进先出队列B 152对应物理队列B 162和先进先出队列C154对应物理队列C 164。图1中示出了,代表口A 120所包括的代表口A虚拟发包队列A 122和代表口A虚拟发包队列B 124以及代表口B 130所包括的代表口B虚拟发包队列C 132,也就是代表口A虚拟发包队列A 122、代表口A虚拟发包队列B 124和代表口B虚拟发包队列C132,均发包给先进先出队列A 150进而发包给物理队列A 160。代表口C 140所包括的代表口C虚拟发包队列D 142和代表口C虚拟发包队列E 144,均发包给先进先出队列B 152进而发包给物理队列B 162。可以看出,因为代表口A虚拟发包队列A 122、代表口A虚拟发包队列B 124和代表口B虚拟发包队列C 132均映射到同一真实的物理队列也就是物理队列A 160,因此,当代表口A虚拟发包队列A 122、代表口A虚拟发包队列B 124和代表口B虚拟发包队列C 132中的任意两个虚拟发包队列的发包操作存在一定程度的时间上重叠时,例如代表口A虚拟发包队列B 124和代表口B虚拟发包队列C 132至少部分地同步发包,则存在发包冲突的情况。类似的,当代表口C虚拟发包队列D 142和代表口C虚拟发包队列E 144各自的发包操作存在一定程度的时间上重叠时,例如至少部分地同步发包时,也存在发包冲突的情况。为了能最大限度的发挥图1中所示出的三个代表口及各自包括的虚拟发包队列的并行发包能力,这意味着需要多个线程通过多个代表口所包括的多个虚拟发包队列同时一起发包。如图1所示,多个线程包括线程A 110、线程B 111、线程C 112、线程D 113、线程E 114。多个线程各自对应的虚拟发包队列包括:线程A 110对应代表口A虚拟发包队列A 122,线程B111对应代表口A虚拟发包队列B 124,线程C 112对应代表口B虚拟发包队列C 132,线程D113对应代表口C虚拟发包队列D 142,线程E 114对应代表口C虚拟发包队列E 144。如此,为了能最大限度的发挥图1中所示出的三个代表口及各自包括的虚拟发包队列的并行发包能力,多个线程也即线程A 110、线程B 111、线程C 112、线程D 113、线程E 114一起通过各自对应的虚拟发包队列来发包,这意味着,线程A 110通过代表口A虚拟发包队列A 122进行的发包操作,线程B 111通过代表口A虚拟发包队列B 124进行的发包操作,线程C 112通过代表口B虚拟发包队列C 132进行的发包操作,线程D 113通过代表口C虚拟发包队列D 142进行的发包操作,线程E 114通过代表口C虚拟发包队列E 144进行的发包操作,这些发包操作之间至少部分地在时间上重叠。可以看出,如果限制每个代表口只能支持单个虚拟发包队列并独占一个物理队列,这意味着代表口A 120所包括的两个虚拟发包队列无法并行地发包,并且代表口A与代表口B之间也无法共享物理队列A。因此,对代表口及其下的虚拟发包队列做出限制的做法,无法充分发挥并行发包能力,而且也占据更多的硬件资源以及需要更多的资源调度用于发包,从而造成性能瓶颈。另一方面,多个代表口一般是部署在虚拟交换机上,也就是部署在主机的驱动侧或者说软件侧,而多个物理队列用于从主机的驱动侧(软件侧)向逻辑侧(硬件侧)进行发包例如下发要传送的报文数据,因此,充分发挥多个代表口的并行发包能力是提升数据传输性能以及提升数据吞吐率的关键。另外,多个线程是由主机的驱动侧(软件侧)例如虚拟交换机、操作系统等来运行管理,多个线程各自的发包操作一般也是分别独立地进行管理,因此多个线程各自执行发包操作的时间节点、要发包的数据的大小等是由上层业务来决定,也是难以预计的,虚拟交换机的多个代表口一般只能被动地发出对应线程的流量,进而构建起所需要的数据通路。如此,难以通过基于控制流的全局机制,例如利用对多个线程各自的发包操作进行全局统筹的方式,来避免发包冲突的情况,这样的控制流是复杂的且难以实现,也不利于提升数据传输性能和提升数据吞吐率。而且,考虑到虚拟交换机上的多个代表口的数量及对应的虚拟功能,可能因为虚拟机、容器的变化而发生变化,例如生成新的虚拟机或者移除现有的虚拟机,又或者通过单根输入输出虚拟化能力创建大量的新的虚拟功能等,为此可能需要增加或者删除代表口并构建新的数据通路,这意味着多个代表口的数量还有多个代表口与多个物理队列之间的映射关系可能是变化的且难以预计,从而进一步地增加了基于控制流的全局机制的复杂度和实现难度。下面结合图2和其它附图还有其它实施例,详细说明本申请实施例提供的一种用于多代表口多线程并行发包的方法,如何利用数据流驱动的机制实现了无阻塞的针对发包冲突的解决方案,并且可以灵活地适配多个线程各自的发包操作需求、虚拟交换机上的多个代表口的变化、虚拟交换机上的多个代表口与多个物理队列之间的映射关系的变化等,从而更好地适应虚拟化网络、虚拟化设备直通等应用领域的需求。
应当理解的是,图1中所示出的多个代表口的数量,多个代表口各自所包括的虚拟发包队列的数量,多个物理队列的数量,多个代表口各自所包括的虚拟发包队列与多个物理队列之间的映射关系,多个线程的数量,多个线程与多个代表口各自所包括的虚拟发包队列之间的对应关系,这些都仅是说明性的不是限制性的。本申请实施例提供的一种用于多代表口多线程并行发包的方法,可以应用于任意数量的线程通过任意数量的代表口以及这些代表口各自所包括的任意数量的虚拟发包队列并行发包给任意数量的物理队列。并且,图1中示出了多个线程,包括线程A 110、线程B 111、线程C 112、线程D 113、线程E 114。图1中的多个线程仅为示例性。在实际应用中,多个线程可能不会同时需要发包,可能分别在不同的时间段进行发包,这样不同线程之间不会因为需要同时发包到同一个物理队列而产生发包冲突。另外,多个线程的数量可能少于多个代表口所包括的虚拟发包队列的数量,因此可能存在某个代表口的某个虚拟发包队列没有被利用用于发包的情况。图1中还示出了,多个先进先出队列与多个物理队列一一对应。本申请实施例提供的一种用于多代表口多线程并行发包的方法及具体实施例,通过部署与多个物理队列的数量相同的多个先进先出队列,并且要求这两者之间满足一一对应的关系,这样可以利用与每个物理队列对应的先进先出队列来解决关于该物理队列的发包冲突的问题。下面结合图2、图3和图4还有具体实施例进一步详细说明。
图2为本申请实施例提供的一种用于多代表口多线程并行发包的方法的流程示意图。如图2所示,方法包括以下步骤。
步骤S210:第一代表口的第一虚拟发包队列发送一个最小发包单元到第一先进先出队列。在执行步骤S210之后,执行步骤S220。
步骤S220:判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果所述第一虚拟发包队列锁定所述第一先进先出队列,执行步骤S230,如果所述第一虚拟发包队列没有锁定所述第一先进先出队列,执行步骤S240。
步骤S230:出列所述第一先进先出队列中的全部最小发包单元到所述第一物理队列,在所述第一先进先出队列中的全部最小发包单元被出列后,所述第一虚拟发包队列解除锁定所述第一先进先出队列,然后,设定所述第一先进先出队列的第一等待标识为二元状态中的第一状态。在执行步骤S230之后,执行步骤S232。
步骤S232:判断所述第一等待标识是否是所述二元状态中相对于所述第一状态的第二状态,如果所述第一等待标识是所述二元状态中相对于所述第一状态的第二状态,执行步骤S220,如果所述第一等待标识不是所述二元状态中相对于所述第一状态的第二状态,执行步骤S234。
步骤S234:所述第一虚拟发包队列结束发包操作。
步骤S240:设定所述第一先进先出队列的所述第一等待标识为所述第二状态。在执行步骤S240之后,执行步骤S242。
步骤S242:判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果所述第一虚拟发包队列锁定所述第一先进先出队列,执行步骤S230,如果所述第一虚拟发包队列没有锁定所述第一先进先出队列,执行步骤S234。
参阅图2以及上述各个步骤,在步骤S210,第一代表口的第一虚拟发包队列发送一个最小发包单元到第一先进先出队列。这里,最小发包单元可以是一个或者多个报文包,或者一段报文数据。最小发包单元用于区分第一虚拟发包队列的每一次发包操作,换句话说,第一虚拟发包队列每一次执行发包操作发送一个最小发包单元到第一先进先出队列。第一先进先出队列中可以缓存一定数量的最小发包单元,并且,从第一先进先出队列出列的最小发包单元被发送给第一物理队列。如此,利用第一先进先出队列,构建了从第一虚拟发包队列到第一物理队列的数据通路。在第一虚拟发包队列发送一个最小发包单元到第一先进先出队列之后,执行步骤S220,判断所述第一虚拟发包队列是否锁定所述第一先进先出队列。因此,每一次第一虚拟发包队列执行发包操作,例如某个线程通过第一虚拟发包队列发送了一个最小发包单元到第一先进先出队列,都是基于步骤S220的判断结果来决定后续的操作流程的分支。可以看出,在步骤S220,如果所述第一虚拟发包队列锁定所述第一先进先出队列,执行步骤S230,如果所述第一虚拟发包队列没有锁定所述第一先进先出队列,执行步骤S240。可以将步骤S230和步骤S232一起视为一个子操作流程,例如视为第一操作流程。因此,第一操作流程包括先执行步骤S230,然后执行步骤S232。其中,在步骤S232,判断所述第一等待标识是否是所述二元状态中相对于所述第一状态的第二状态,如果所述第一等待标识不是所述二元状态中相对于所述第一状态的第二状态,执行步骤S234,所述第一虚拟发包队列结束发包操作。如此,从步骤S210开始,依次经过步骤S220,步骤S230,步骤S232到步骤S234,建立了从第一代表口的第一虚拟发包队列开始发包操作也即发送一个最小发包单元到第一先进先出队列开始,到第一虚拟发包队列结束发包操作。如上所述,多个线程通过多个代表口所包括的多个虚拟发包队列发包到多个物理队列,可能存在发包冲突的情况,也即两个虚拟发包队列的发包操作存在一定程度的时间上重叠。因此,为了避免第一虚拟发包队列与可能的另一虚拟发包队列之间,包括与可能的两个或者更多个虚拟发包队列之间因为发包冲突而导致运行错误,在第一虚拟发包队列发送一个最小发包单元到第一先进先出队列之后,第一虚拟发包队列尝试锁定第一先进先出队列,如果成功锁定,也就是步骤S220的判断结果是肯定的,则执行上述的第一操作流程(先执行步骤S230,然后执行步骤S232),如果没有成功锁定,这样意味着至少存在另一个虚拟发包队列在第一虚拟发包队列之前已经锁定了第一先进先出队列,因此第一虚拟发包队列的后续操作流程进入第二操作流程(先执行步骤S240,然后执行步骤S242)。如此,通过在步骤S220的判断结果,可以确定第一虚拟发包队列是否早于可能存在的其它也映射到第一物理队列的虚拟发包队列锁定了第一先进先出队列,这样也能推导出第一虚拟发包队列在步骤S210发送的最小发包单元,当在步骤S220判断所述第一虚拟发包队列锁定所述第一先进先出队列时,应该在第一先进先出队列中也排序在其它也映射到第一物理队列的虚拟发包队列可能发送的最小发包单元之前。如此,在步骤S230,出列所述第一先进先出队列中的全部最小发包单元到所述第一物理队列,实现了从第一虚拟发包队列发包到第一物理队列。接着,在步骤S230中,在所述第一先进先出队列中的全部最小发包单元被出列后,所述第一虚拟发包队列解除锁定所述第一先进先出队列,然后,设定所述第一先进先出队列的第一等待标识为二元状态中的第一状态。这里,所述第一虚拟发包队列解除锁定所述第一先进先出队列,意味着在解除锁定后,其它也映射到第一物理队列的虚拟发包队列可以锁定所述第一先进先出队列。而第一先进先出队列的第一等待标识则用于让第一虚拟发包队列确定是否可能存在其它的虚拟发包队列所发送的最小发包单元还存在于第一先进先出队列中,也即可以用于确定第一先进先出队列中是否存在残留的要发包的报文。基于步骤S232的判断结果,如果所述第一等待标识是所述二元状态中相对于所述第一状态的第二状态,这意味着第一先进先出队列中是否存在残留的要发包的报文,接着执行步骤S220,也就是让第一虚拟包队列重新尝试锁定第一先进先出队列,如果锁定成功则接着执行步骤S230并出列第一先进先出队列中的全部最小发包单元,从而确保了可能残留在第一先进先出队列中的待发送报文被正确的发包给第一物理队列。可以看出,因为在步骤S230中,设定所述第一先进先出队列的第一等待标识为二元状态中的第一状态,因此,如果没有其它的也映射到第一物理队列的虚拟发包队列对第一先进先出队列的第一等等待标识做出改动,则在步骤S232中应该判断第一等待标识是第一状态而不是第二状态。如此,基于步骤S232的判断结果,如果所述第一等待标识不是所述二元状态中相对于所述第一状态的第二状态(则第一等待标识必然是第一状态),这意味着第一先进先出队列中不存在残留的要发包的报文,接着执行步骤S234,所述第一虚拟发包队列结束发包操作。当第一虚拟发包队列后续有新的发包操作,也就是发送新的一个最小发包单元到第一先进先出队列时,从步骤S210开始执行,因此开启新的一轮操作。应当理解的是,第一等待标识是二元状态中的第一状态或者第二状态。第一状态和第二状态可以是二元取值,例如分别取值为0和1,或者,分别取值为1和0。二元状态中的第一状态和第二状态可以采用任意合适的数字、符号、标识等,只要满足二元标志的定义,也即第一状态不同于第二状态。
继续参阅图2,如上所述,通过在步骤S220的判断结果,可以确定第一虚拟发包队列是否早于可能存在的其它也映射到第一物理队列的虚拟发包队列锁定了第一先进先出队列,这样也能推导出第一虚拟发包队列在步骤S210发送的最小发包单元,当在步骤S220判断所述第一虚拟发包队列没有锁定所述第一先进先出队列时,应该在第一先进先出队列中没有排序在其它也映射到第一物理队列的虚拟发包队列可能发送的最小发包单元之前。换句话说,当在步骤S220判断所述第一虚拟发包队列没有锁定所述第一先进先出队列时,这意味着第一先进先出队列中应该存在至少一个来自可能存在发包冲突的其它虚拟发包队列的最小发包单元的排序是在第一虚拟发包队列在步骤S210发送的最小发包单元之前,也即至少一个可能存在发包冲突的虚拟发包队列在第一虚拟发包队列之前就锁定了第一先进先出队列且还没有解除锁定。因此,为了避免第一虚拟发包队列与可能的另一虚拟发包队列之间,包括与可能的两个或者更多个虚拟发包队列之间因为发包冲突而导致运行错误,在第一虚拟发包队列发送一个最小发包单元到第一先进先出队列之后,第一虚拟发包队列尝试锁定第一先进先出队列,如果锁定不成功也即没有锁定,也就是步骤S220的判断结果是否定的,则执行上述的第二操作流程(先执行步骤S240,然后执行步骤S242)。这里,通过在步骤S240中,设定所述第一先进先出队列的所述第一等待标识为所述第二状态,可以利用第一等待标识通知另一虚拟发包队列,在第一先进先出队列中可能残留着第一虚拟发包队列在步骤S210发送的最小发包单元,这样可以确保第一虚拟发包队列在步骤S210发送的最小发包单元也被正确的发包给第一物理队列。另外,在步骤S242,判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果第一虚拟发包队列成功锁定所述第一先进先出队列,可以看出,这是在步骤S220的判断结果为否定的前提下也即在步骤S220的判断结果为所述第一虚拟发包队列没有锁定所述第一先进先出队列。因此,在步骤S220的判断结果为否定的也即所述第一虚拟发包队列没有锁定所述第一先进先出队列,然后,在执行步骤S240之后执行步骤S242,在步骤S242的判断结果为肯定的也即第一虚拟发包队列锁定所述第一先进先出队列,如此,接着执行步骤S230。这样就在第一虚拟发包队列初次尝试锁定第一先进先出队列不成功的前提下(在步骤S220的判断结果为否定的),第一虚拟发包队列再次尝试锁定第一先进先出队列成功(在步骤S242的判断结果为肯定的),然后接着执行步骤S230。在第一虚拟发包队列初次尝试锁定第一先进先出队列成功的前提下(在步骤S220的判断结果为肯定的),也会在步骤S220之后接着执行步骤S230。因此,第一操作流程(先执行步骤S230,然后执行步骤S232)可以从步骤S220之后开始(在步骤S220的判断结果为肯定的),也可以在步骤S242之后开始(在步骤S242的判断结果为肯定的)。如此,通过让第一虚拟发包队列在步骤S220和步骤S242都尝试锁定第一先进先出队列,并且在锁定成功后进入第一操作流程,有利于在多个(例如三个或者更多个)虚拟发包队列都在竞争同一个物理队列(也意味着多个虚拟发包队列都发包给同一个先进先出队列)的情况下,使得各个虚拟发包队列并行地发出的最小发包单元,可以按照正确的排序位于先进先出队列中以及按照正确的排序被出列后发包给物理队列,从而实现多代表口多线程并行发包的正确运行,避免因为发包冲突而导致运行错误。另外,步骤S242,判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果第一虚拟发包队列没有锁定所述第一先进先出队列,执行步骤S234,所述第一虚拟发包队列结束发包操作。当第一虚拟发包队列后续有新的发包操作,也就是发送新的一个最小发包单元到第一先进先出队列时,从步骤S210开始执行,因此开启新的一轮操作。
总之,图2所示的用于多代表口多线程并行发包的方法,利用所述第一虚拟发包队列是否锁定所述第一先进先出队列的判断结果以及第一等待标识(第一等待标识是二元状态中的第一状态或者第二状态),从第一虚拟发包队列每一次执行发包操作也即发送一个最小发包单元到第一先进先出队列之后,直到第一虚拟发包队列结束发包操作之前,不仅确保了第一虚拟发包队列发送到第一先进先出队列的最小发包单元被正确的发包给第一物理队列,还可以与其它的也映射到第一物理队列并发包给第一先进先出队列的虚拟发包队列协作,确保了可能残留在第一先进先出队列中的最小发包单元被正确的发包给第一物理队列。如此,在多个虚拟发包队列映射到同一个物理队列也发包给同一个先进先出队列的情况下,考虑到了多个虚拟发包队列并行地发包的可能性,在多个(例如三个或者更多个)虚拟发包队列都在竞争同一个物理队列(也意味着多个虚拟发包队列都发包给同一个先进先出队列)的情况下,使得各个虚拟发包队列并行地发出的最小发包单元,可以按照正确的排序位于先进先出队列中以及按照正确的排序被出列后发包给物理队列,从而实现多代表口多线程并行发包的正确运行,避免因为发包冲突而导致运行错误。进一步地,图2所示的用于多代表口多线程并行发包的方法,不借助额外的控制机制,只是依赖第一虚拟发包队列在每一次发包操作后执行的判断结果和第一等待标识,因此实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误。进一步地,图2所示的用于多代表口多线程并行发包的方法,通过部署与多个物理队列的数量相同的多个先进先出队列,并且要求这两者之间满足一一对应的关系,这样利用与每个物理队列对应的先进先出队列解决关于该物理队列的发包冲突的问题。因此,图2所示的用于多代表口多线程并行发包的方法,可以应用于任意数量的线程通过任意数量的代表口以及这些代表口各自所包括的任意数量的虚拟发包队列并行发包给任意数量的物理队列,可以灵活地适配多个线程各自的发包操作需求、虚拟交换机上的多个代表口的变化、虚拟交换机上的多个代表口与多个物理队列之间的映射关系的变化等,从而更好地适应虚拟化网络、虚拟化设备直通等应用领域的需求。
参阅图1和图2,在一种可能的实施方式中,一种用于多线程多代表口发包的方法包括:多个线程通过多个代表口发包到多个物理队列。其中,所述多个代表口中的每一个代表口包括至少一个虚拟发包队列,所述多个代表口包括第一代表口,所述第一代表口包括第一虚拟发包队列用于发包到所述多个物理队列中的第一物理队列,第一先进先出队列对应所述第一物理队列。其中,每当所述第一虚拟发包队列发送一个最小发包单元到所述第一先进先出队列之后,执行第一判断操作,所述第一判断操作包括:判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行第一操作流程,如果否,执行第二操作流程。其中,所述第一操作流程包括:出列所述第一先进先出队列中的全部最小发包单元到所述第一物理队列,在所述第一先进先出队列中的全部最小发包单元被出列后,所述第一虚拟发包队列解除锁定所述第一先进先出队列,然后,设定所述第一先进先出队列的第一等待标识为二元状态中的第一状态,再然后,判断所述第一等待标识是否是所述二元状态中相对于所述第一状态的第二状态,如果所述第一等待标识是所述第二状态,重复执行所述第一判断操作。这里,第一判断操作可以对应图2中的步骤S220,判断所述第一虚拟发包队列是否锁定所述第一先进先出队列。第一操作流程可以对应图2中的步骤S230和步骤S232,也即上面提到的图2所示的方法中的第一操作流程(先执行步骤S230,然后执行步骤S232)。如此,实现了多代表口多线程并行发包的正确运行,避免因为发包冲突而导致运行错误。在一些实施例中,所述第二操作流程包括:设定所述第一先进先出队列的所述第一等待标识为所述第二状态,然后,判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行所述第一操作流程,如果否,所述第一虚拟发包队列结束发包操作。在一些实施例中,所述第一操作流程还包括:如果所述第一等待标识不是所述第二状态,所述第一虚拟发包队列结束发包操作。这里,第二操作流程可以对应图2中的步骤S240和步骤S242,也即上面提到的图2所示的方法中的第二操作流程(先执行步骤S240,然后执行步骤S242)。如此,不借助额外的控制机制,只是依赖第一虚拟发包队列在每一次发包操作后执行的判断结果和第一等待标识,因此实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误,并且,可以灵活地适配多个线程各自的发包操作需求、虚拟交换机上的多个代表口的变化、虚拟交换机上的多个代表口与多个物理队列之间的映射关系的变化等,从而更好地适应虚拟化网络、虚拟化设备直通等应用领域的需求。下面结合图3和图4进一步详细说明,本申请实施例提供的一种用于多代表口多线程并行发包的方法及具体实施例,如何实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误。
图3为本申请实施例提供的第一种实施方式的存在发包冲突的多个虚拟发包队列的示意图。如图3所示,三个虚拟发包队列之间存在发包冲突。这里,参阅图1所示的多个线程通过多个代表口发包到多个物理队列,代表口A虚拟发包队列A 122、代表口A虚拟发包队列B 124和代表口B虚拟发包队列C 132均映射到同一真实的物理队列也就是物理队列A160。因此,当代表口A虚拟发包队列A 122、代表口A虚拟发包队列B 124和代表口B虚拟发包队列C 132中的任意两个虚拟发包队列的发包操作存在一定程度的时间上重叠时,例如代表口A虚拟发包队列B 124和代表口B虚拟发包队列C 132至少部分地同步发包,则存在发包冲突的情况。图3中示例性的示出了,代表口A虚拟发包队列A 122、代表口A虚拟发包队列B124和代表口B虚拟发包队列C 132之间存在发包冲突的一种情况,以及利用图2所示的于多代表口多线程并行发包的方法来无阻塞地避免因为发包冲突引起运行错误。具体地,代表口A虚拟发包队列A 122按照图2所示的于多代表口多线程并行发包的方法依次执行以下操作:代表口A虚拟发包队列A 122发送一个最小发包单元到先进先出队列A 150;执行第一判断操作,确定代表口A虚拟发包队列A 122锁定先进先出队列A 150,执行第一操作流程(第一操作流程包括:出列先进先出队列A 150中的全部最小发包单元;代表口A虚拟发包队列A122解除锁定先进先出队列A 150;设定先进先出队列A 150的等待标识为第一状态;判断等待标识是否是第二状态,确定等待标识是第二状态,重复执行第一判断操作);再次执行第一判断操作,确定代表口A虚拟发包队列A 122没有锁定先进先出队列A 150,执行第二操作流程。代表口A虚拟发包队列B 124按照图2所示的于多代表口多线程并行发包的方法依次执行以下操作:代表口A虚拟发包队列B 124发送一个最小发包单元到先进先出队列A 150;执行第一判断操作,确定代表口A虚拟发包队列B 124没有锁定先进先出队列A 150,执行第二操作流程(第二操作流程包括:设定先进先出队列A 150的等待标识为第二状态;判断代表口A虚拟发包队列B 124是否锁定先进先出队列A 150,确定代表口A虚拟发包队列B 124锁定先进先出队列A 150,执行第一操作流程)。代表口B虚拟发包队列C 132按照图2所示的于多代表口多线程并行发包的方法依次执行以下操作:代表口B虚拟发包队列C 132发送一个最小发包单元到先进先出队列A 150。
继续参阅图3,图3中用时间标记T1、T2直到T9,示意性的示出了代表口A虚拟发包队列A 122、代表口A虚拟发包队列B 124和代表口B虚拟发包队列C 132各自执行的某些操作的时间节点。可以看出,在时间T1,代表口A虚拟发包队列A 122执行第一判断操作并尝试锁定先进先出队列A 150,因为时间T1早于代表口A虚拟发包队列B 124和代表口B虚拟发包队列C 132开始发包操作的时间,因此,代表口A虚拟发包队列A 122成功锁定先进先出队列A 150并执行第一操作流程。接着,在时间T2,代表口A虚拟发包队列A 122解除锁定先进先出队列A 150。而在时间T6,代表口A虚拟发包队列B 124执行第一判断操作并尝试锁定先进先出队列A 150。因为时间T6在时间T2之前,这意味着当代表口A虚拟发包队列B 124尝试锁定先进先出队列A 150时,代表口A虚拟发包队列A 122还没有解除锁定先进先出队列A150,因此,代表口A虚拟发包队列B 124没有锁定先进先出队列A 150,执行第二操作流程。在时间T3,代表口A虚拟发包队列A 122设定先进先出队列A 150的等待标识为第一状态,以及,在时间T4,判断等待标识是否是第二状态。而在时间T7,代表口A虚拟发包队列B 124设定先进先出队列A 150的等待标识为第二状态。因为时间T7在时间T3之后但是在时间T4之前,因此,代表口A虚拟发包队列A 122确定等待标识是第二状态,重复执行第一判断操作。在时间T5,代表口A虚拟发包队列A 122再次执行第一判断操作。而在时间T8,代表口A虚拟发包队列B 124判断代表口A虚拟发包队列B 124是否锁定先进先出队列A 150,确定代表口A虚拟发包队列B 124锁定先进先出队列A 150(时间T8在时间T2之后,因此代表口A虚拟发包队列A 122已经解除锁定先进先出队列A 150),执行第一操作流程。如此,时间T8在时间T5之前,因此,代表口A虚拟发包队列B 124先于代表口A虚拟发包队列A 122锁定先进先出队列A 150。如此,在时间T5,代表口A虚拟发包队列A 122再次执行第一判断操作,确定代表口A虚拟发包队列A 122没有锁定先进先出队列A 150,执行第二操作流程。其中,在时间T9,代表口B虚拟发包队列C 132发送一个最小发包单元到先进先出队列A 150。出于表述简洁的目的,没有进一步的详细说明后续的操作。其中,时间T9在时间T5和时间T8之后。如此,实现了多代表口多线程并行发包的正确运行,避免因为发包冲突而导致运行错误。
图4为本申请实施例提供的第二种实施方式的存在发包冲突的多个虚拟发包队列的示意图。如图4所示,两个虚拟发包队列之间存在发包冲突。这里,参阅图1所示的多个线程通过多个代表口发包到多个物理队列,代表口C 140所包括的代表口C虚拟发包队列D142和代表口C虚拟发包队列E 144,均发包给先进先出队列B 152进而发包给物理队列B162。因此,
当代表口C虚拟发包队列D 142和代表口C虚拟发包队列E 144各自的发包操作存在一定程度的时间上重叠时,例如至少部分地同步发包时,存在发包冲突的情况。图4中示例性的示出了,代表口C虚拟发包队列D 142和代表口C虚拟发包队列E 144之间存在发包冲突的一种情况,以及利用图2所示的于多代表口多线程并行发包的方法来无阻塞地避免因为发包冲突引起运行错误。具体地,代表口C虚拟发包队列D 142按照图2所示的于多代表口多线程并行发包的方法依次执行以下操作:代表口C虚拟发包队列D 142发送一个最小发包单元到先进先出队列B 152;执行第一判断操作,确定代表口C虚拟发包队列D 142锁定先进先出队列B 152,执行第一操作流程(第一操作流程包括:出列先进先出队列B 152中的全部最小发包单元;代表口C虚拟发包队列D 142解除锁定先进先出队列B 152;设定先进先出队列B 152的等待标识为第一状态;判断等待标识是否是为第二状态,确定等待标识不是第二状态,代表口C虚拟发包队列D 142结束发包操作)。其中,在时间T10,代表口C虚拟发包队列D 142执行第一判断操作并尝试锁定先进先出队列B 152。在时间T11,代表口C虚拟发包队列D 142解除锁定先进先出队列B 152。代表口C虚拟发包队列E 144按照图2所示的于多代表口多线程并行发包的方法依次执行以下操作:代表口C虚拟发包队列E 144发送一个最小发包单元到先进先出队列B 152;执行第一判断操作,确定代表口C虚拟发包队列E 144没有锁定先进先出队列B 152,执行第二操作流程(第二操作流程包括:设定先进先出队列B 152的等待标识为第二状态;判断代表口C虚拟发包队列E 144是否锁定先进先出队列B 152,确定代表口C虚拟发包队列E 144没有锁定先进先出队列B 152,代表口C虚拟发包队列E 144结束发包操作)。其中,在时间T12,代表口C虚拟发包队列E 144执行第一判断操作并尝试锁定先进先出队列B 152。因为时间T12在时间T10之后,因此,确定代表口C虚拟发包队列E144没有锁定先进先出队列B 152,执行第二操作流程。在时间T13,代表口C虚拟发包队列E144再次判断并再次尝试锁定先进先出队列B 152。因为时间T13在时间T11之前,因此确定代表口C虚拟发包队列E 144没有锁定先进先出队列B 152,代表口C虚拟发包队列E 144结束发包操作。如此,实现了多代表口多线程并行发包的正确运行,避免因为发包冲突而导致运行错误。
参阅图1至图4,在一种可能的实施方式中,第二虚拟发包队列是所述多个代表口所包括的虚拟发包队列中的不同于所述第一虚拟发包队列的另一虚拟发包队列,所述第一虚拟发包队列和所述第二虚拟发包队列均用于发包到所述第一物理队列,其中,每当所述第二虚拟发包队列发送一个最小发包单元到所述第一先进先出队列之后,执行第二判断操作,所述第二判断操作包括:判断所述第二虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行第三操作流程,如果否,执行第四操作流程,其中,所述第三操作流程包括:出列所述第一先进先出队列中的全部最小发包单元到所述第一物理队列,在所述第一先进先出队列中的全部最小发包单元被出列后,所述第二虚拟发包队列解除锁定所述第一先进先出队列,然后,设定所述第一先进先出队列的第一等待标识为二元状态中的第一状态,再然后,判断所述第一等待标识是否是所述二元状态中相对于所述第一状态的第二状态,如果所述第一等待标识是所述第二状态,重复执行所述第二判断操作。如此,实现了多代表口多线程并行发包的正确运行,避免因为发包冲突而导致运行错误。这里,第二虚拟发包队列参考图2所示的用于多代表口多线程并行发包的方法中的关于第一虚拟发包队列的有关细节,在此不再赘述。在一些实施例中,所述第四操作流程包括:设定所述第一先进先出队列的所述第一等待标识为所述第二状态,然后,判断所述第二虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行所述第三操作流程,如果否,所述第二虚拟发包队列结束发包操作。在一些实施例中,所述第三操作流程还包括:如果所述第一等待标识不是所述第二状态,所述第二虚拟发包队列结束发包操作。如此,不借助额外的控制机制,只是依赖第一虚拟发包队列在每一次发包操作后执行的判断结果和第一等待标识,因此实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误,并且,可以灵活地适配多个线程各自的发包操作需求、虚拟交换机上的多个代表口的变化、虚拟交换机上的多个代表口与多个物理队列之间的映射关系的变化等,从而更好地适应虚拟化网络、虚拟化设备直通等应用领域的需求。
在一些实施例中,所述第一代表口包括所述第一虚拟发包队列和所述第二虚拟发包队列。在一些实施例中,所述多个代表口中的不同于所述第一代表口的另一代表口包括所述第二虚拟发包队列。如此,可以灵活地适配多个线程各自的发包操作需求、虚拟交换机上的多个代表口的变化、虚拟交换机上的多个代表口与多个物理队列之间的映射关系的变化等,从而更好地适应虚拟化网络、虚拟化设备直通等应用领域的需求。
在一些实施例中,所述第一虚拟发包队列和所述第二虚拟发包队列均用于发包到所述第一物理队列,包括:所述第一虚拟发包队列和所述第二虚拟发包队列并行地发包到所述第一先进先出队列。如此,实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误。
在一种可能的实施方式中,所述第一代表口是所述多个代表口中的任意代表口,所述第一虚拟发包队列是所述第一代表口所包括的虚拟发包队列中的任意虚拟发包队列。如此,实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误。
在一些实施例中,所述多个代表口所包括的虚拟发包队列中的任意两个虚拟发包队列被配置为可并行地发包到所述多个物理队列中的同一物理队列。如此,实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误。
在一些实施例中,多个先进先出队列与所述多个物理队列一一对应,所述多个先进先出队列包括所述第一先进先出队列,所述多个先进先出队列中的每一个先进先出队列中的最小发包单元被出列到所述多个物理队列中与该先进先出队列对应的物理队列。如此,通过部署与多个物理队列的数量相同的多个先进先出队列,并且要求这两者之间满足一一对应的关系,这样可以利用与每个物理队列对应的先进先出队列来解决关于该物理队列的发包冲突的问题。
在一些实施例中,所述多个线程通过所述多个代表口所包括的虚拟发包队列发包到所述多个先进先出队列从而发包到所述多个物理队列。如此,通过部署与多个物理队列的数量相同的多个先进先出队列,并且要求这两者之间满足一一对应的关系,这样可以利用与每个物理队列对应的先进先出队列来解决关于该物理队列的发包冲突的问题。
在一些实施例中,所述多个线程中的至少两个线程通过所述多个代表口所包括的虚拟发包队列中的与所述至少两个线程一一对应的至少两个虚拟发包队列并行地发包。如此,实现了数据流驱动的机制,并且实现了多个线程通过多个代表口发包到多个物理队列的应用中无阻塞地避免因为发包冲突引起运行错误。
在一种可能的实施方式中,所述多个线程中的至少两个线程通过所述第一代表口所包括的所述第一虚拟发包队列非并行地发包。同一个虚拟发包队列同一时刻只能由一个线程运行发包。因此,当所述多个线程中的至少两个线程通过所述第一代表口所包括的所述第一虚拟发包队列来进行发包操作,必然是非并行地发包。
在一种可能的实施方式中,所述多个物理队列用于驱动侧和逻辑侧之间的交互,所述驱动侧的软件包括所述多个代表口。在一种可能的实施方式中,所述第一代表口是虚拟接口、以太网代表口或者绑定代表口。在一种可能的实施方式中,所述第一物理队列用于获取所述第一报文包相关联的描述符索引,更新所述第一报文包相关联的描述符以及执行敲门操作。如此,可以灵活地适配多个线程各自的发包操作需求、虚拟交换机上的多个代表口的变化、虚拟交换机上的多个代表口与多个物理队列之间的映射关系的变化等,从而更好地适应虚拟化网络、虚拟化设备直通等应用领域的需求。
图5是本申请实施例提供的一种计算设备的结构示意图,该计算设备500包括:一个或者多个处理器510、通信接口520以及存储器530。所述处理器510、通信接口520以及存储器530通过总线540相互连接。可选地,该计算设备500还可以包括输入/输出接口550,输入/输出接口550连接有输入/输出设备,用于接收用户设置的参数等。该计算设备500能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器510还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备500执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器510用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备500可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口520具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器510具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图5的计算设备500可以包括一个或者多个处理器510,并且多个处理器510可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器510可以构成处理器序列或者处理器阵列,或者多个处理器510之间可以分成主处理器和辅助处理器,或者多个处理器510之间可以具有不同的架构如采用异构计算架构。另外,图5所示的计算设备500,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备500可以包括比图5所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器510可以有多种具体实现形式,例如处理器510可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器510还可以是单核处理器或多核处理器。处理器510可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器510也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口520可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器530可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器530也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器530也可用于存储程序代码和数据,以便于处理器510调用存储器530中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备500可能包含相比于图5展示的更多或者更少的组件,或者有不同的组件配置方式。
总线540可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线540可以分为地址总线、数据总线、控制总线等。总线540除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (18)

1.一种用于多线程多代表口发包的方法,其特征在于,所述方法包括:
多个线程通过多个代表口发包到多个物理队列,其中,所述多个代表口中的每一个代表口包括至少一个虚拟发包队列,所述多个代表口包括第一代表口,所述第一代表口包括第一虚拟发包队列用于发包到所述多个物理队列中的第一物理队列,第一先进先出队列对应所述第一物理队列,
其中,每当所述第一虚拟发包队列发送一个最小发包单元到所述第一先进先出队列之后,执行第一判断操作,所述第一判断操作包括:判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行第一操作流程,如果否,执行第二操作流程,
其中,所述第一操作流程包括:出列所述第一先进先出队列中的全部最小发包单元到所述第一物理队列,在所述第一先进先出队列中的全部最小发包单元被出列后,所述第一虚拟发包队列解除锁定所述第一先进先出队列,然后,设定所述第一先进先出队列的第一等待标识为二元状态中的第一状态,再然后,判断所述第一等待标识是否是所述二元状态中相对于所述第一状态的第二状态,如果所述第一等待标识是所述第二状态,重复执行所述第一判断操作,
所述第二操作流程包括:设定所述第一先进先出队列的所述第一等待标识为所述第二状态,然后,判断所述第一虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行所述第一操作流程,如果否,所述第一虚拟发包队列结束发包操作,
所述第一操作流程还包括:如果所述第一等待标识不是所述第二状态,所述第一虚拟发包队列结束发包操作。
2.根据权利要求1所述的方法,其特征在于,第二虚拟发包队列是所述多个代表口所包括的虚拟发包队列中的不同于所述第一虚拟发包队列的另一虚拟发包队列,所述第一虚拟发包队列和所述第二虚拟发包队列均用于发包到所述第一物理队列,
其中,每当所述第二虚拟发包队列发送一个最小发包单元到所述第一先进先出队列之后,执行第二判断操作,所述第二判断操作包括:判断所述第二虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行第三操作流程,如果否,执行第四操作流程,
其中,所述第三操作流程包括:出列所述第一先进先出队列中的全部最小发包单元到所述第一物理队列,在所述第一先进先出队列中的全部最小发包单元被出列后,所述第二虚拟发包队列解除锁定所述第一先进先出队列,然后,设定所述第一先进先出队列的第一等待标识为二元状态中的第一状态,再然后,判断所述第一等待标识是否是所述二元状态中相对于所述第一状态的第二状态,如果所述第一等待标识是所述第二状态,重复执行所述第二判断操作。
3.根据权利要求2所述的方法,其特征在于,所述第四操作流程包括:设定所述第一先进先出队列的所述第一等待标识为所述第二状态,然后,判断所述第二虚拟发包队列是否锁定所述第一先进先出队列,如果是,执行所述第三操作流程,如果否,所述第二虚拟发包队列结束发包操作。
4.根据权利要求3所述的方法,其特征在于,所述第三操作流程还包括:如果所述第一等待标识不是所述第二状态,所述第二虚拟发包队列结束发包操作。
5.根据权利要求2所述的方法,其特征在于,所述第一代表口包括所述第一虚拟发包队列和所述第二虚拟发包队列。
6.根据权利要求2所述的方法,其特征在于,所述多个代表口中的不同于所述第一代表口的另一代表口包括所述第二虚拟发包队列。
7.根据权利要求2所述的方法,其特征在于,所述第一虚拟发包队列和所述第二虚拟发包队列均用于发包到所述第一物理队列,包括:所述第一虚拟发包队列和所述第二虚拟发包队列并行地发包到所述第一先进先出队列。
8.根据权利要求1所述的方法,其特征在于,所述第一代表口是所述多个代表口中的任意代表口,所述第一虚拟发包队列是所述第一代表口所包括的虚拟发包队列中的任意虚拟发包队列。
9.根据权利要求8所述的方法,其特征在于,所述多个代表口所包括的虚拟发包队列中的任意两个虚拟发包队列被配置为可并行地发包到所述多个物理队列中的同一物理队列。
10.根据权利要求9所述的方法,其特征在于,多个先进先出队列与所述多个物理队列一一对应,所述多个先进先出队列包括所述第一先进先出队列,所述多个先进先出队列中的每一个先进先出队列中的最小发包单元被出列到所述多个物理队列中与该先进先出队列对应的物理队列。
11.根据权利要求10所述的方法,其特征在于,所述多个线程通过所述多个代表口所包括的虚拟发包队列发包到所述多个先进先出队列从而发包到所述多个物理队列。
12.根据权利要求11所述的方法,其特征在于,所述多个线程中的至少两个线程通过所述多个代表口所包括的虚拟发包队列中的与所述至少两个线程一一对应的至少两个虚拟发包队列并行地发包。
13.根据权利要求1所述的方法,其特征在于,所述多个线程中的至少两个线程通过所述第一代表口所包括的所述第一虚拟发包队列非并行地发包。
14.根据权利要求1所述的方法,其特征在于,所述多个物理队列用于驱动侧和逻辑侧之间的交互,所述驱动侧的软件包括所述多个代表口。
15.根据权利要求1所述的方法,其特征在于,所述第一代表口是虚拟接口、以太网代表口或者绑定代表口。
16.根据权利要求1所述的方法,其特征在于,所述第一物理队列用于获取第一报文包相关联的描述符索引,更新所述第一报文包相关联的描述符以及执行敲门操作。
17.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至16中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至16中任一项所述的方法。
CN202410093435.9A 2024-01-23 2024-01-23 用于多线程多代表口发包的方法、计算机设备及介质 Active CN117614906B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410093435.9A CN117614906B (zh) 2024-01-23 2024-01-23 用于多线程多代表口发包的方法、计算机设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410093435.9A CN117614906B (zh) 2024-01-23 2024-01-23 用于多线程多代表口发包的方法、计算机设备及介质

Publications (2)

Publication Number Publication Date
CN117614906A CN117614906A (zh) 2024-02-27
CN117614906B true CN117614906B (zh) 2024-04-19

Family

ID=89958364

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410093435.9A Active CN117614906B (zh) 2024-01-23 2024-01-23 用于多线程多代表口发包的方法、计算机设备及介质

Country Status (1)

Country Link
CN (1) CN117614906B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148441A (zh) * 2020-07-28 2020-12-29 易视飞科技成都有限公司 一种动态储存方式的嵌入式消息队列实现方法
CN115469963A (zh) * 2021-06-10 2022-12-13 华为技术有限公司 一种多线程转发的负载均衡方法及相关装置
CN115840620A (zh) * 2023-02-27 2023-03-24 珠海星云智联科技有限公司 一种数据通路构建方法、设备及介质
CN116048756A (zh) * 2023-01-03 2023-05-02 深圳华为云计算技术有限公司 一种队列调度方法、装置及相关设备
CN116302391A (zh) * 2023-01-30 2023-06-23 浪潮电子信息产业股份有限公司 一种多线程的任务处理方法及相关装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112148441A (zh) * 2020-07-28 2020-12-29 易视飞科技成都有限公司 一种动态储存方式的嵌入式消息队列实现方法
CN115469963A (zh) * 2021-06-10 2022-12-13 华为技术有限公司 一种多线程转发的负载均衡方法及相关装置
CN116048756A (zh) * 2023-01-03 2023-05-02 深圳华为云计算技术有限公司 一种队列调度方法、装置及相关设备
CN116302391A (zh) * 2023-01-30 2023-06-23 浪潮电子信息产业股份有限公司 一种多线程的任务处理方法及相关装置
CN115840620A (zh) * 2023-02-27 2023-03-24 珠海星云智联科技有限公司 一种数据通路构建方法、设备及介质

Also Published As

Publication number Publication date
CN117614906A (zh) 2024-02-27

Similar Documents

Publication Publication Date Title
US10853282B2 (en) Arbitrating portions of transactions over virtual channels associated with an interconnect
US9207979B1 (en) Explicit barrier scheduling mechanism for pipelining of stream processing algorithms
WO2019042312A1 (zh) 分布式计算系统,分布式计算系统中数据传输方法和装置
CN115480869A (zh) 微服务架构
US8655962B2 (en) Shared address collectives using counter mechanisms
US20190042339A1 (en) Techniques for invocation of a function or a service
US11922304B2 (en) Remote artificial intelligence (AI) acceleration system
US9436520B2 (en) Information processing device and barrier synchronization method
CN105511954A (zh) 一种报文处理方法及装置
CN112272128B (zh) Hinoc组帧方法、系统、介质、计算机设备及应用
CN103532876A (zh) 数据流的处理方法与系统
CN112291293A (zh) 任务处理方法、相关设备及计算机存储介质
US20110035530A1 (en) Network system, information processing apparatus, and control method for network system
Scordino et al. Hardware acceleration of data distribution service (dds) for automotive communication and computing
CN117614906B (zh) 用于多线程多代表口发包的方法、计算机设备及介质
Aziz et al. A near optimal scheduler for switch-memory-switch routers
CN113010464A (zh) 数据处理装置及设备
US9069625B2 (en) Method of parallel processing of ordered data streams
CN112463680A (zh) 数据搬运方法及装置
US10084725B2 (en) Extracting features from a NoC for machine learning construction
US20120210018A1 (en) System And Method for Lock-Less Multi-Core IP Forwarding
Kenjić et al. Overview of the SWCs communication mechanisms in autonomous vehicles
CN113708965B (zh) 一种高性能构件化的数据包处理系统
CN115604198B (zh) 一种网卡控制器、网卡控制方法、设备及介质
EP4075743A1 (en) Secure computing control method, data packet processing method and device and system thereof

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant