CN106506393A - 一种数据流处理方法、装置和系统 - Google Patents
一种数据流处理方法、装置和系统 Download PDFInfo
- Publication number
- CN106506393A CN106506393A CN201610946437.3A CN201610946437A CN106506393A CN 106506393 A CN106506393 A CN 106506393A CN 201610946437 A CN201610946437 A CN 201610946437A CN 106506393 A CN106506393 A CN 106506393A
- Authority
- CN
- China
- Prior art keywords
- processing
- action
- core
- actions
- pipeline
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/625—Queue scheduling characterised by scheduling criteria for service slots or service orders
- H04L47/6275—Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3063—Pipelined operation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
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)
- Multi Processors (AREA)
Abstract
本发明实施例提供的数据流处理方法、装置及系统,将对报文执行的处理过程划分为多个处理动作,在确定当前数据流的流量满足预设的条件时,才将部分处理动作展开,从而多个处理核可以采用流水线的形式对报文进行处理,提高处理效率。在数据流带宽波动幅度较大,且数据流峰值带宽较大的情况下,相对于采用静态流水线的方式,本发明实施例提供的方法一定程度上避免了流量较小时的处理资源浪费,同时也能够更好地支持流量较大时数据流的处理。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种在多核计算机上进行数据流处理的方法,以及应用该方法的装置和系统。
背景技术
随着网络技术的发展,通信流量将会呈现两个明显的新特点:一个是越来越高的单用户数据流峰值流量的带宽,另一个是越来越宽的单用户数据流带宽波动幅度。通信流量的这两个特点必将对网络设备的处理能力提出更高的要求。
以网关为例,现有的网关还不能很好的适应通信流量的这两个新特点。网关又称网间连接器或协议转换器,是用于实现不同体系结构的网络之间通信互联的网络设备。为了实现高性能的数据流量处理,网关在内部逻辑上一般包括控制面(control plane)和转发面(forwarding plane)。控制面执行对转发数据流的控制管理。转发面(或称为数据面)在控制面的管理下,执行数据流的转发。在物理部署上,控制面和转发面通常部署在不同的处理核或者不同的处理器上。为了提升转发能力,转发面一般为多核处理器。
目前,主流的转发技术为两种:一种是将不同用户的数据流分配到不同的处理核上处理,另一种是静态流水线技术,即将转发过程根据功能划分为多个处理动作,并将该多个处理动作静态绑定到多个不同的处理核上,每个处理核在对报文执行完对应的处理动作之后,通过队列将报文传递给下一个处理核。前者由于单用户数据流的转发过程集中在一个处理核上完成,导致单用户数据流带宽峰值严重受限于单核的处理能力;后者由于是静态绑定,所以需要按照峰值带宽预留处理核资源,而由于通信流量带宽波动幅度大,导致大部分情况下严重的处理资源浪费。
因此,以网关为代表的网络设备急需一种新的数据流处理方法以适应通信流量的以上两个新特点,在尽可能避免资源浪费的前提下支持大流量的数据流处理。
发明内容
下面首先对本发明实施例中可能出现的术语予以解释。
本申请中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。本申请中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
数据流:也可称为报文流,体现为一段数据报文(也可简称为报文),例如网络协议(Internet Protocol,IP)报文,这些数据报文通常被网络设备顺序接收和处理。数据流可以按照不同的用户会话或承载分为多条。
流水线:一种对数据流中的报文进行处理的方式,即将对报文的处理过程划分为具有先后顺序的多个处理动作(也可简称为动作),并由多个处理核按照所述多个处理动作的先后顺序执行所述多个处理动作,其中一个处理核可以执行所述多个处理动作中的一个或多个处理动作。
静态流水线:执行报文处理的处理核的数量被预先设置且在预设后不再发生变化,而且多个处理核与多个处理动作之间存在预设的绑定关系,即某个处理核只能执行与该处理核存在绑定关系的一个或多个处理动作。
动态流水线:执行报文处理的处理能力随着需求的变化动态增加或减少。多个处理核与多个处理动作之间可以不存在预设的绑定关系。需要说明的是,处理能力的增加或减少在一种实现方式下体现为处理核个数的增加或减少,在另一种实现方式下体现为处理核用于报文处理的能力的增加或减少。
展开/收缩处理动作(也可称为处理动作展开/收缩):每个处理动作都具备各自的展开属性,该展开属性用于指示处理动作已展开或未展开。展开处理动作指的是修改未展开的处理动作的展开属性使该展开属性指示该处理动作展开。收缩处理动作指的是修改已展开的处理动作的展开属性使该展开属性指示该处理动作未展开。需要说明的是,若一个处理动作的展开属性指示该处理动作已展开,则通常该处理动作将不会在之前执行它的处理核上继续被执行,但也存在其他实现方式,实施例中将会具体介绍。
展开/收缩流水线(也可称为流水线展开/收缩):展开流水线指的是展开一个或多个未展开的处理动作;收缩流水线指的是收缩一个或多个已展开的处理动作。在本发明的一些实施例提供的网络设备中可以存在流水线展开和未展开这两种状态,其中,流水线未展开意味着所有处理动作均被同一处理核执行,即所有处理动作均未展开;流水线展开意味着至少一个处理动作已展开,已展开的处理动作和未展开的处理动作通常不在同一处理核上执行(具体实施例中会介绍例外的情况)。而当网络设备处于流水线已展开的状态时,还可以继续选择更多的处理动作,让这些选择出的处理动作在当前处理核之外的其他处理核上执行,也就是在流水线已展开的状态下继续展开流水线。
队列(queue):计算机领域常用的一种数据结构。队列中存储的数据元素又称为队列元素,在队列中插入一个队列元素(例如前述报文)称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在后端插入,在前端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(first in first out,FIFO)线性表。具体的,串行队列中的任意一个队列元素在同一时刻只能被一个处理核处理,而并行队列中的任意一个队列元素可以被多个处理核同时处理。队列的具体实现方式包括链表、数组或其他。
流水线队列:有时也被简称为队列。动态流水线方法中处理核之间传递报文使用的队列被称为流水线队列,其实现原理与通常队列无异。
入口报文队列:在本发明的一些实施例中,报文未被处理核处理之前需暂时缓存在一个队列中,该队列被称为入口报文队列,其实现原理与通常队列无异。
线程(thread):又称为轻量级进程(light-weight process,LWP),是程序执行的最小单元。
流量超载:计算机系统中当前正应用于数据流处理的处理能力(例如处理资源的数量或处理方式所带来的处理能力)已经不能满足该数据流当前的流量所需。
流量轻载:与流量超载相反,计算机系统中当前正应用于数据流处理的处理能力远大于数据流当前的流量所需。
多核处理器:在一枚处理器中集成两个或两个以上完整的计算引擎,计算引擎在本申请中也称之为核。在某些网络设备中,核又分为控制核和处理核,控制核和处理核代表的是执行不同功能的计算引擎,控制核主要用于网络设备上各种资源或功能的控制和管理,而处理核则主要用于实现该网络设备的主体功能。例如,在网关中,控制核属于控制面,主要用于处理核的分配、回收,以及对数据流的控制管理(例如连接的建立和释放,向转发面下发转发信息)。处理核(又称为转发核)属于转发面,主要执行数据流中报文的转发处理。在其他一些实施例中,处理核也可以用来表示核,即核为处理核的简称而已。需要说明的是,在本发明的一些实施例中使用的处理器不一定是多核处理器,也可以是多个单核处理器。
本发明实施例提供一种数据流处理方法、装置及系统,在数据流流量变大时动态增加处理能力,既能一定程度上避免流量过小时处理资源的浪费,又能满足流量较大时数据流的处理需求。
第一方面,本发明实施例提供一种数据流处理方法,该方法应用于包括多个处理核的计算机系统,所述计算机系统用于接收数据流,并对所述数据流中的报文执行M个处理动作,M为大于或等于2的整数,这M个处理动作通常具有先后顺序的限制。该计算机系统中预设有流水线展开条件,多个处理核中的某个处理核(后续将称之为第一处理核)确定预设的流水线展开条件是否满足,若确定所述预设的流水线展开条件满足,则该第一处理核确定N个未展开的处理动作,并将所述N个处理动作展开,以便于第二处理核执行展开后的所述N个处理动作,N为大于0且小于或等于M的整数。将处理动作展开意味着处理动作的执行权从当前处理核释放,由另外的处理核执行该处理动作,这样,更多的处理动作将会通过流水线的方式执行,从而提高数据流的处理效率。
在一些实施例中,该方法针对的数据流可以是特定的某一条数据流,也可以是多条不同的数据流。
在一些实施例中,完成上述确定步骤和处理动作展开步骤的第一处理核可以是一个处理核,也可以是多个处理核,而且可以是变化的,即这些步骤并非总是由某一个或多个特定的处理核完成。
在一些实施例中,该预设的流水线展开条件用来指示待处理的数据流需要比当前处理所述数据流的处理能力更多的处理能力,即流量超载,计算机系统则可以根据当前流量情况自主确定是否流量超载。也就是说,当计算机系统自主确定流量超载时执行流水线展开。在其他一些实施例中,该计算机系统也可以接收用户的流水线展开指令,在用户的指令下展开流水线,而这个流水线展开指令的下发未必需要在流量超载的情况下,也可以是其他需求促使。
基于前述计算机系统自主确定流量超载的方法,在一些实施例中,所述预设的流水线展开条件设置为入口报文队列中存储的报文个数(也称之为入口报文队列深度)大于或等于第一阈值,所述入口报文队列中存储有所述计算机系统接收到的、还未被执行任何一个处理动作的报文。可选的,在本发明其他实施例中,也可以采用非队列的其他数据结构来存储报文。
该预设的流水线展开条件还可以包括一个时间段阈值等于0,该时间段阈值也可以称之为静默期,即预设的流水线展开条件还包括该静默期结束(时间段阈值为0)。此实现方式下,当第一处理核确定入口报文队列深度大于或等于第一阈值的前提下,该第一处理核还需判断该静默期是否结束,若该静默期结束,则触发本次超载处理亦即流水线展开(S102和S103),若未结束,则等待静默期结束再执行本次超载处理。采用本申请提出的动态流水线方案,处理动作可以在流量超载时展开,也可以在流量轻载时收缩,可能会出现展开和收缩在短时间内过于频繁的情况,静默期的设置可以有效避免该情况。静默期可以通过时钟计数实现。静默期可以从上一次处理开始或处理结束时开始倒计时,上一次处理可能为流量超载处理也可能为流量轻载处理。
基于前述计算机系统自主确定流量超载的方法,在一些实施例中,该预设的流水线展开条件也可以设置为入口报文队列深度的值大于某一特定阈值,或者在预设的时间长度内,入口报文队列深度已多次超过某一特定阈值,或者入口报文队列深度在某一段预设的时间长度内一直维持在某一特定阈值之上等。本领域普通技术人员可以根据当前处理的数据流的特点和/或该计算机系统所处的网络状态自行设置该预设的流水线展开条件和/或条件中的阈值,本发明对此不做限定。这些条件都可以与上述静默期组合使用。
需要说明的,本发明实施例中的入口报文队列深度的检测可以是每接收一批报文就执行一次,也可以是周期性的执行,或者也可以在满足检测条件(例如可能的流量高峰期的到来)时执行。
当前入口报文队列的深度一定程度上反映了当前流量和未来一段时间内可能的流量,因此通过检测入口报文队列的深度来确定是否满足流量超载可以理解为是根据当前数据对当前和未来一段时间内的流量进行预估。可选的,在本发明的其他一些实施例中,也可以根据历史数据预测当前和未来一段时间内的流量。例如,第一处理核统计从上次空接收开始累计接收到的报文个数,若报文个数大于或等于某一特定阈值,则说明流量超载,启动流水线展开。空接收表示接收到的报文个数等于0,相应的,非空接收表示接收到的报文个数大于0。
基于前述接收用户指令并在用户指令下展开流水线的方法,在一些实施例中,第一处理核确定是否接收到用户的配置信息,所述配置信息用于指示流水线展开或所述配置信息包含需要展开的处理动作的所述个数N或所述配置信息包含需要展开的所述N个处理动作的标识,若确定接收到该配置信息,则启动流水线展开操作。具体的,用户发送指示流水线展开的命令,或通过配置文件指定需要展开的处理动作个数N,当接收到这样的命令或配置文件时,第一处理核启动流水线展开操作。进一步的,如果用户预先知道某些动作具有较大运算量,需要提前展开这些动作到其它核从而实现精细化控制,那么用户还可以通过配置文件或其他的命令方式指定具体的一个或多个处理动作,然后第一处理核根据用户的指示展开这一个或多个处理动作。采用这种实现方式,在用户能够预先得知流量的场景下,用户可以根据需求自主设置流水线展开的时机,甚至可以自主设置哪些处理动作需要展开,从而提高了流水线展开的灵活性和准确性。
需要说明的是,预设的流水线展开条件不满足的情况下计算机系统如何处理,本发明实施例不作限定,例如,第一处理核继续以当前的处理方式处理接收到的报文,或者根据其他条件决策是否采用其他处理方式。
需要说明的是,在执行处理动作展开的时候该计算机系统可能已经有处理动作展开,也可能所有处理动作均未展开。
在一些实施例中,当确定需要流水线展开之后,第一处理核需要确定一个或多个未展开的处理动作进行展开。第一处理核可以按照如下方式中的任意一种选择一个或多个未展开的处理动作。
a)选择N个未展开的处理动作(N为大于0且小于或等于M的整数),而这N个未展开的处理动作中任意一个处理动作的所有未展开的后继动作均包含在所述N个未展开的处理动作中,所述任意一个处理动作的后继动作的执行在所述任意一个处理动作完成之后。该方式亦即从拓扑序列的尾部逆序展开N个处理动作,其中拓扑序列为对所有处理动作按照执行的先后次序组成的有向无环图进行拓扑排序后所得到的序列。举例来说,A-E处理动作的拓扑序列为ABCDE,A-E处理动作均未展开,按照该方法可以选择E、D和E、C-E、B-E或A-E进行展开。若D和E已经展开,则可选择C、B和C、或A-C进行展开。采用这种方式可以避免串行依赖问题。
b)在拓扑序列中任意选择1个或多个未展开的处理动作进行展开,依赖于被选择的动作的、未展开的动作仍然不展开,因此将会与被选择的动作在同一个处理核执行。该方式亦即从拓扑序列中间选择任意1个或多个处理动作。仍以ABCDE举例,可选择B和D进行展开,而区别于前一种方式,C和E是不展开的,所以B和C将被同一个处理核执行(因为执行完B的处理核在执行C之前确定C未展开,所以仍需要继续执行C),D和E将被同一个处理核执行。采用这种方式可一定程度上避免展开层次过多导致的队列传递开销过大的问题,而且可以根据处理动作的运算量确定每个核执行的动作数量,从而实现不同核的处理量的均衡。至于B和D,在本发明的一些实施例中,可能被不同处理核执行,在本发明的其他一些实施例中,例如采用流水线队列池的方式时,也可能被同一处理核执行。
在一些实施例中,第一处理核通过修改所述N个未展开的处理动作的展开属性以标识出该处理动作已展开,再通过存储区将报文传递给第二处理核,由该第二处理核对该报文执行展开的处理动作。其中,存储区用于存储待执行该存储区对应的处理动作的报文,所述展开属性用于指示所述处理动作是否已展开。需说明的是,存储区为计算机系统的存储设备中一块区域,在一些实施例中,可以采用队列(本发明实施例中也称之为流水线队列)或其他类型的数据结构管理该存储区。在一些实施例中,修改展开属性的操作也可以由第一处理核指示其他核执行。
基于流水线队列的方法,在一些实施例中,第一处理核为N个处理动作中的每个处理动作确定其对应的流水线队列,可选的,不同的处理动作可以对应同一个队列;当前处理核(可以是第一处理核也可能是第二处理核)确定处理动作已展开时,不再执行该处理动作,而是将待执行该处理动作的报文在该处理动作对应的流水线队列入队,由第二处理核(可能与置入的第二处理核是同一个处理核,也可能是另外一个第二处理核)获取该报文并执行该处理动作。采用其他数据结构来实现本发明的方法与采用队列实现本发明的方法类似,不再赘述。
在一些实施例中,处理动作的展开属性就是处理动作的流水线队列标识,流水线队列标识为空或无效值表示所述处理动作未展开,所述流水线队列标识为有效标识表示所述处理动作已展开。一个处理动作在展开之前该处理动作的流水线队列标识为空或无效只,确定要展开之后第一处理核将该处理动作的流水线队列标识设置为该处理动作对应的流水线队列的标识,亦即表明了该处理动作已经展开。
在另一些实施例中,处理动作的展开属性为流水线标签,例如值等于真或假的flag标记,flag=真时表示处理动作已展开,flag=假时表示处理动作未展开。第一处理核选择出flag=假的N个处理动作(选择方法见前述),并修改所述N个处理动作的flag为真。
需要说明的是,流水线标签不是必须的,因为流水线队列标识可以兼顾指示该处理动作对应的流水线队列和指示该处理动作是否已展开的功能。
在一些实施例中,流水线队列可以全部是串行流水线队列,串行流水线队列中存储的报文在同一时刻只能被一个处理核处理,这时只要通过一定的方法将待展开的处理动作映射到任意一个队列中即可。为了提高处理效率,在另一些实施例中流水线队列还可以包括并行流水线队列,所述并行流水线队列中存储的报文可以被多个处理核同时处理。可选的,本发明实施例提供的方法也可以采用非队列的其他类型的数据结构,该数据结构具备串行和并行属性即可。
针对采用拓扑序列逆序展开的方法确定出的待展开的处理动作,可采用如下方法确定这些处理动作对应的流水线队列。
在一些实施例中,根据每个处理动作的流水线属性确定该处理动作对应哪个流水线队列。流水线属性(例如,并行属性或优先级属性)用于表示该处理动作被执行时的一些约束条件,例如是否可被多个处理核并行执行,或者和其他处理动作相比的执行优先级等。这些约束条件需要与流水线队列本身的特点相匹配。当然在其它一些实施例中约束条件也不是必须的。
具体而言,在一些实施例中,一个处理动作有一个并行属性,所述并行属性的值用于指示所述处理动作是否可同时被多个处理核处理。第一处理核获取N个处理动作中每个处理动作的并行属性的值;针对可同时被多个处理核处理的所有处理动作,设置他们对应一个并行流水线队列;针对不可同时被多个处理核处理的处理动作,每个处理动作对应一个串行流水线队列。在另一些实施例中,除了上述并行属性之外,处理动作还包括优先级属性,所述优先级属性用于表示所述处理动作的优先级,所述N个处理动作中每个处理动作对应的流水线队列的优先级与相应的处理动作的优先级匹配。具体的,执行优先级高的处理动作对应执行优先级高的流水线队列,执行优先级低的处理动作对应执行优先级低的流水线队列。由于优先级高的处理动作对应的报文存储到优先级高的流水线队列中,从而保证该处理动作可以被尽快执行。
在另一些实施例中,第一处理核根据每个处理动作与第二处理核之间预设的绑定关系来确定该处理动作对应的流水线队列。在这种实现方式下,每个处理动作和第二处理核之间具有预设的绑定关系,一旦某个处理动作被展开,就会由与之绑定的相应的处理核执行。具体的,每个第二处理核都有一个与之对应的流水线队列,待执行与第二处理核绑定的处理动作的报文被置入到与该第二处理核对应的流水线队列中,从而该第二处理核可以从该流水线队列中获取报文,并执行与该第二处理核绑定的处理动作。
针对采用拓扑序列中间节点展开的方法确定出的未展开的处理动作,可采用如下方法确定这些处理动作对应的流水线队列。
在一些实施例中,若第一动作集合中所有处理动作均可同时被多个处理核处理,则所述第一处理核确定并行流水线队列为处理动作对应的流水线队列;否则,所述第一处理核确定串行流水线队列为所述处理动作对应的流水线队列;其中,所述第一动作集合包括所述处理动作以及在所述处理动作之后的,且在第一个已展开的处理动作之前的所有处理动作,所述第一个已展开的处理动作为在所述处理动作之后的第一个已展开的处理动作。
以选择出1个处理动作P为例,若处理动作P所属的第一动作集合中所有处理动作均可同时被多个处理核处理,则所述第一处理核确定并行流水线队列为这个处理动作P对应的流水线队列;否则,所述第一处理核确定串行流水线队列为这个处理动作P对应的流水线队列,其中,所述第一动作集合包括这个处理动作P以及在这个处理动作P之后的,且在第一个已展开的处理动作之前的所有处理动作,这里的第一个已展开的处理动作为在这个处理动作P之后的第一个已展开的处理动作。
进一步的,在其他一些实施例中,处理动作P对应的流水线队列的优先级需与所述第一动作集合中优先级最高的处理动作的优先级匹配。这些方法可通过对处理动作设置并行属性或优先级属性实现,参考前述。
进一步需要注意的是,若选择出的N个未展开的处理动作中的第一个处理动作之前存在已展开的处理动作,则所述方法还包括:根据第二动作集合重新确定第一处理动作对应的流水线队列,所述第一处理动作为所述N个处理动作中第一个处理动作之前的第一个已展开的处理动作;其中,第二动作集合包括所述第一处理动作以及在所述第一处理动作之后的、且在所述N个处理动作中第一个处理动作之前的所有处理动作。所谓“第一个处理动作”是指基于处理动作的拓扑排序的N个待展开的处理动作中的第一个待展开的处理动作。
以选择出多个待展开的处理动作为例,假如处理动作P正好为这些待展开的处理动作中的第一个处理动作,若P之前存在已展开的处理动作,则在处理动作P展开之后,需要根据第二动作集合重新确定这个处理动作P之前的第一个已展开的处理动作Q的流水线队列,并更新这个处理动作Q的流水线队列标识。其中,第二动作集合包括所述处理动作Q以及在所述处理动作Q之后的、且在所述处理动作P之前的所有处理动作。
在本发明实施例提供的计算机系统中,任意一个处理动作被展开后,意味着该处理动作将不会被第一处理核执行,待执行该处理动作的报文将会被置入该处理动作对应的流水线队列中。在一些实施例中,报文中被置入流水线队列之前被添加上待执行的处理动作的标识,第二处理核从该流水线队列中获取该报文,并根据该标识对该报文执行该处理动作,然后执行下一个处理动作之前再判断该下一个处理动作是否展开,若是,执行与第一处理核类似的操作;若否继续执行该下一个处理动作。
在一些实施例中,当被展开的处理动作有多个以及流水线队列也有多个的时候,第二处理核可以通过轮询的方式从这多个流水线队列中获取待处理报文。可选的,所述待处理报文中携带有处理动作的标识,所述处理动作为所述待处理报文来自的流水线队列对应的处理动作。所述第二处理核根据所述处理动作的标识对所述待处理报文执行所述处理动作。通常这种情况下第二处理核也为多个。换句话说,第二处理核和流水线队列没有绑定关系,任意一个第二处理核通过轮询的方式可能获取任意一个流水线队列中的报文。采用这种方式进一步提高流水线处理的灵活性,也能够更好地维持多个第二处理核的负载均衡。在其它一些实施例中,计算机系统也可以预先设置多个第二处理核与多个流水线队列的对应关系,某个第二处理核仅能从与该第二处理核对应的流水线队列中获取报文,而非采用轮询的方式。
在一些实施例中,待处理报文也可以不携带待执行的处理动作的标识,只要处理核能够确定执行哪个处理动作即可。
在一些实施例中,所有流水线队列可采用池化管理,即建立流水线队列池,方便采用专用的硬件流水线队列池管理器来进行流水线队列的管理,由该管理器直接管理队列对应的存储区,所有队列中的报文在该存储区进行缓存,并通过该管理器进行入队、出队和队列轮询等操作,从而节省报文的队列中转开销。当然在其他一些实施例中,也可以采用软件程序实现流水线队列池的管理。
可见,本发明实施例提供的数据流处理方法、装置及系统,将对报文执行的处理过程划分为多个处理动作,在确定当前数据流的流量满足预设的条件时或其他类型的流水线展开条件满足时,才将部分处理动作展开,从而多个处理核可以采用流水线的形式对报文进行处理,提高处理效率。在数据流带宽波动幅度较大,且数据流峰值带宽较大的情况下,相对于采用静态流水线的方式,本发明实施例提供的方法一定程度上避免了流量较小时的处理资源浪费,同时也能够更好地支持流量较大时数据流的处理。
在一些实施例中,在流水线已展开的情况下,计算机系统还支持流水线的动态收缩。主要方法包括:第一处理核确定预设的流水线收缩条件满足时,对流水线进行收缩,即确定一个或多个展开的处理动作,并将该已展开的处理动作收缩,这样当前处理报文的处理核在执行该处理动作之前确定该处理动作未展开,然后当前处理报文的处理核可以继续对该报文执行该处理动作。其中,该预设的流水线收缩条件用于指示所述数据流需要比当前处理所述数据流的处理能力更少的处理能力。该预设的流水线收缩条件可以是用户根据需求配置,也可以是网络流量过小或其他等同条件。
在一些实施例中,预设的流水线收缩条件设置为入口报文队列中缓存的报文个数小于第二阈值。该第二阈值与前述的第一阈值可以相同,也可以小于第一阈值。流水线收缩条件的其他的设置方式与前文实施例中预设的流水线展开条件的设置方式类似。需要说明的是,若采用基于历史数据预测的方法,流水线收缩条件可设置为自上次非空接收以来累计空接收报文的次数超过某一特定阈值。其他设置方式可参考前述流水线展开条件的设置方式。需要说明的是,两种条件可以采用相同类型的方式设置,例如都采用报文个数和阈值比较的方式,也可以采用不同类型的方式设置。
在一些实施例中,收缩处理动作包括修改处理动作的展开属性。具体的,在一些实施例中,第一处理核将待收缩的处理动作的流水线标签设置为指示相应的处理动作未展开。例如,修改流水线标签的值为0,其中流水线标签的值为1表示处理动作展开,值为0表示处理动作未展开。在另一些实施例中,第一处理核将待收缩的处理动作的流水线队列标识设置为无效。
需要说明的是,动作的收缩和展开是对应的,因此,选择哪些动作收缩,以及如何收缩动作,其实现方法和展开时的方法类似,只是相反而已,例如拓扑序列尾部顺序收缩或者中间节点收缩,在此不再赘述。
可见,本发明实施例提供的处理方法还可以在流量轻载时动态减少处理资源,从而一定程度上避免了处理资源的浪费。本发明实施例提供的方法在满足特定条件时,流水线可做展开或收缩,这样计算机系统的处理能力可以被更高效的利用,数据流的处理效率也可以更高。
在一些实施例中,计算机系统还可在满足预设的条件时申请新的处理资源,例如计算机系统向控制核动态申请新的处理核加入流水线处理,其中控制核通常用于管理计算机系统的多个处理核;也可以在满足预设的条件时对处理核进行低功耗处理。采用这样的方法可以更好地适应数据流波动幅度大的特点,提高处理资源的利用率。可选的,控制核可以与处理核位于同一计算机系统,也可以位于不同的计算机系统。
在一些实施例中,第一处理核在确定预设的流水线展开条件满足且确定已展开的处理动作的个数大于第一阈值时,向控制核发送申请处理资源的请求;所述控制核根据所述申请处理资源的请求分配一个或多个第三处理核以用于执行已展开的处理动作。其中,控制核为用于处理核的申请或回收。例如,在网关或路由器中,控制核位于控制面,处理核位于转发面,但在其他网络设备中不做此限定。第一阈值是预先设置的一个值,该值一般大于处理动作的总数的一半。本发明实施例中“大于”也可以等同替换为“大于或等于”。
在一些实施例中,计算机系统还可在处理能力冗余的情况下减少处理资源或降低当前处理核的能耗。在一些实施例中,所述第一处理核在确定预设的流水线收缩条件满足且确定已展开的处理动作的个数小于第二阈值时,向控制核发送回收处理资源的请求;所述控制核根据所述回收处理资源的请求回收一个或多个所述第二处理核。在另一些实施例中,所述第一处理核在确定预设的流水线收缩条件满足且确定已展开的处理动作的个数小于第二阈值时,对所述至少一个第二处理核执行低功耗处理。可选的,所述低功耗处理包括休眠至少一个所述第二处理核上或者指示至少一个所述第二处理核降低主频。第二阈值通常小于处理动作的总数的一半。
第二方面,本发明实施例还提供一种数据流处理装置,该装置包含用于实现前述方法步骤的一个或多个功能单元,当该装置包含多个功能单元时,这些功能单元通常与前述方法步骤一一对应。举例来说,该装置包括:流量检测单元,用于确定预设的流水线展开条件是否满足;流水线管理单元,用于在流量检测单元确定预设的流水线展开条件满足时,确定未展开的一个或多个处理动作,并将所述未展开的一个或多个处理动作展开;以及处理单元,用于获取报文并对报文执行展开或未展开的处理动作。需要说明的是该功能单元可以全部采用软件程序或全部采用硬件或采用软硬件结合实现。
第三方面,本发明实施例还提供一种计算机系统,例如网关或路由器,该计算机系统用于接收数据流,并对所述数据流中的报文执行具有先后顺序的多个处理动作;该计算机系统包括多个处理核,其中的一个或多个处理核用于确定预设的流水线展开条件是否满足;若确定预设的流水线展开条件满足,则所述第一处理核确定未展开的一个或多个处理动作,并将所述一个或多个处理动作展开;另外的一个或多个处理核用于执行展开后的所述一个或多个处理动作。在一些实施例中,该计算机系统的多个处理核还可以用于执行前述第一方面的任意一个实施例提供的方法。
第四方面,本发明实施例还提供一种计算机系统,该计算机系统用于接收数据流,并对所述数据流中的报文执行具有先后顺序的多个处理动作;该计算机系统包括至少一个多核处理器和存储器,其中,该存储器用于存储软件程序,当所述软件程序被所述多核处理器中的任意一个处理核执行时,所述多核处理器中的第一处理核确定预设的流水线展开条件是否满足;若确定预设的流水线展开条件满足,则所述第一处理核确定未展开的一个或多个处理动作,并将所述一个或多个处理动作展开;以及所述多核处理器中的第二处理核用于执行展开后的所述一个或多个处理动作。在一些实施例中,该计算机系统的多核处理器还用于执行前述第一方面的任意一个实施例的方法。
第五方面,本发明实施例还提供一种存储介质,用于存储计算机程序,当所述计算机程序被处理器执行时,所述处理器用于实现第一方面提供的任意一种方法。具体的,所述计算机程序可以包括用于实现方法各个步骤的一个或多个程序单元。
可见,本发明实施例提供的数据流处理方法、装置及系统,将对报文执行的处理过程划分为多个处理动作,在确定当前数据流的流量满足预设的条件时,才将部分处理动作展开,从而多个处理核可以采用流水线的形式对报文进行处理,提高处理效率。在数据流带宽波动幅度较大,且数据流峰值带宽较大的情况下,相对于采用静态流水线的方式,本发明实施例提供的方法一定程度上避免了流量较小时的处理资源浪费,同时也能够更好地支持流量较大时数据流的处理。另外,本发明其他实施例提供的方法可在满足预设的条件时向控制核动态申请新的处理核加入流水线处理,也可以在满足预设的条件时对处理核进行低功耗处理,这样可以更好地适应数据流波动幅度大的特点,提高处理资源的利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种流水线展开之前和展开之后的情景示意图;
图2为网关所属的网络架构示意图;
图3为本发明实施例提供的网关的结构示意图;
图4为本发明实施例提供的网关内部转发面的结构示意图;
图5为接收线程执行的方法的流程示意图;
图6为一个处理动作为节点的有向无环图的示例图;
图7、图8以及图9A-9B为处理动作展开和收缩的示例图;
图10为入口处理线程执行的方法的流程示意图;
图11为普通处理线程执行的方法的流程示意图;
图12为本发明实施例提供的数据流处理的内部交互示意图;
图13为本发明另一实施例提供的数据流处理的内部交互示意图;
图14为虚拟网络功能场景下本发明实施例提供的方法的实现示意图;
图15为本发明再一实施例提供的数据流处理的内部交互示意图;
图16为本发明实施例提供的计算机系统的结构示意图;
图17A-17B为本发明实施例提供的另一计算机系统的结构示意图。
具体实施方式
下面将结合附图对本发明实施例中的技术方案进行描述。
请参阅图1,为本发明实施例提供的一种流水线展开之前和展开之后的情景示意图。如图1所示,初始时,第一处理核接收报文流,并执行流量检测和所有3个处理动作,当根据流量检测的结果确定预设的流水线展开条件满足时,将动作3展开。具体的,针对每一个报文,第一处理核执行完动作2之后将报文在队列入队,第二处理核从该队列中获取该报文,并对该报文执行动作3。
进一步的,在动作3已展开的情况下,若第一处理核检测到流量继续超载,则将会把动作2也展开。动作2展开后,第一处理核在执行完动作1之后,就把报文在队列中入队,由第二处理核对该报文执行动作2,第二处理核执行完动作2之后,由于动作3依然是展开的,所以第二处理核会把该报文在队列中入队,以便于下一个处理核执行动作3。执行动作2和动作3的第二处理核可以不同,也可以相同
需要说明的是,图1仅作为本发明实施例提供的方法的示例以便于理解本发明,在队列的管理以及处理核的管理等方面,本发明实施例提供的方法具体实现有多种,并不限于图1。
请参阅图2,为网关所属的网络架构以及网关内部实现的示意图。网关为本发明实施例提供的方法所应用的一种典型计算机系统,可选的,本发明实施例还可以应用于路由器或其他类型的网络设备。如图2所示,网关100实现了网络A和网络B的互连。在网关100内部存在控制面101和转发面102。控制面101包含一个控制核1011,控制面101的功能基本由该控制核1011实现,转发面102则包含1-n多个处理核1021,转发面应用的转发处理方法即是本发明实施例提供的动态流水线方法。网关100一般支持两个方向的数据流处理:一是从网卡A(或网络接口)收取来自网络A的数据流,经过处理核1021的若干转发动作处理,通过网卡B发往网络B;二是从网卡B收取来自网络B的数据流,经过处理核1021的若干转发动作处理,通过网卡A发往网络A。在本发明提供的一些实施例中,通过对来自网卡A或网卡B的数据流的实时流量检测,实现对转发动作的动态展开和收缩,以适应未来通信大带宽和宽幅度的转发流量需求。
请参阅图3,为本发明实施例提供的网关内部的结构示意图。网关200包括硬件层201、操作系统202以及操作系统202上运行的应用层203,其中,硬件层201包含一个控制核2041(控制核也可以有多个)、多个处理核2051、网卡2053以及存储器2054,这多个核可以属于同一个处理器,也可以属于不同的处理器。应用层203里运行有线程/进程2042和线程/进程2052。应用层203的某些进程/线程2042,操作系统202的部分功能模块以及控制核2041组成了网关200的控制面204,应用层203的另一些线程/进程2052,操作系统202的部分功能模块以及硬件层201的处理核2051和网卡2053等设施组成了网关200的转发面205。其中本发明实施例提供的动态流水线方法主要应用于转发面205,主要由转发面205中运行的线程/进程2052来实现,当涉及到处理核的申请和回收等方法时也会用到控制面204中运行的线程/进程2042。
需要说明的是,在网关中,处理核作为转发面的核实现网关的主要处理动作,即转发处理,所以本发明实施例所提供的方法主要应用于转发面的处理核。但是在其他一些网络设备中,尤其是不区分转发面和控制面的网络设备中,本发明实施例提供的方法可以应用于任何进行数据流处理的核,并非限定于转发面的处理核。
本发明实施例提供的动态流水线方法可以由软件实现,具体体现为在应用层203中设置的一个或多个软件业务模块,实现该业务模块的软件程序被存储在存储器2054中,当该软件程序被硬件层201中的处理器(可以是图3中任意一个核)读取并执行时,应用层203将会启动多个线程和/或进程来实现本发明实施例提供的动态流水线方法。
本领域技术人员应当理解的是,线程/进程2042和线程/进程2052从逻辑上属于应用层204,但执行它们的主体还是相应的控制核2041或处理核2051。在本发明的一些实施例中,各线程或进程与核之间预先设置有绑定关系,即某线程或进程只能由与其绑定的核来执行,而在本发明的其他一些实施例中,各线程或进程与核之间不存在绑定关系。线程或进程与核之间的绑定关系设置在一些系统中也被称为线程或进程与CPU的亲和性设置,因现有技术已存在相应实现,本发明实施例对此不再赘述。
请参阅图4,为转发面300的内部实现示意图。除了网卡306位于转发面的硬件层,其他模块均可由软件程序实现,当由软件程序实现时,该软件程序通常部署于转发面的应用层(参考图3),当然软件程序本身被存储在硬件层的存储器中。本发明实施例涉及报文的接收和各种转发处理动作,报文的输出作为一个特殊的动作执行,没有在图4中呈现。除报文的接收和输出之外,所有处理动作均通过动态注册的方式加入注册动作集307。
注册动作集307中的动作3071主要包括以下4部分信息。
1)流水线标签30711用于指示动作是否已展开。流水线标签30711可能被接收线程301在执行流水线管理3011时更新。当前处理核在执行动作时,根据该流水线标签30711确定该动作是否已展开。
可选的,流水线标签30711也可以不存在,其功能可以有流水线队列标识30713实现。
2)流水线队列标识(ID)30713用于指示动作对应的流水线队列。流水线队列标识30713也可能被接收线程301在执行流水线管理3011时更新。在本发明实施例提供的方法中,当前处理核将根据流水线队列标识30713确定将待处理报文在流水线队列池305中的哪个队列入队。
3)流水线属性30712,包括并行属性和优先级属性。并行属性用于标识该动作是否支持多核并行执行,接收线程301在执行流水线管理3011时根据该属性确定该动作对应并行队列还是串行队列;优先级属性用于标识该动作的执行优先级,接收线程301在执行流水线管理3011时根据该属性确定该动作对应哪个优先级的队列。
4)执行函数30714:处理核(或线程)通过调用该执行函数执行该处理动作。
图4中还示出3种线程(也可以是进程):接收线程301、入口处理线程302和普通处理线程303(也可以叫流水线处理线程)。为了避免线程间切换带来的开销,本发明实施例中设置一个线程绑定一个处理核,接收线程301绑定接收核,入口处理线程302绑定入口处理核,以及普通处理线程303绑定普通处理核。这三种核均属于转发面300的硬件层,具体可参考图3,图4中不再示出。可选的,在其他一些实施例中,接收线程301和入口处理线程302可以绑定同一个处理核,或者,接收线程301和入口处理线程302合并为一个线程。
1)接收线程301:负责从网卡306或网络接口(也可以是负责分发报文的分发核)接收报文,并将报文在入口报文队列304中入队,然后根据入口报文队列304中的报文个数执行流量检测,根据检测结果执行流水线管理,这里的流水线管理包括流水线的动态展开和动态收缩。其中,入口报文队列304用于以指针方式缓存接收线程301已接收的、还没有被处理的报文。
可选的,接收线程301也可以在当前接收到的报文在入口报文队列304入队之前获取入口报文队列304的深度,再将该深度和当前接收到的报文的个数相加,根据相加后的结果执行流量检测。
需要说明的是,需要说明的是,接收线程301位于应用层位于应用层,它可以通过调用操作系统(参考图3)的接口访问硬件层的网卡306或分发核,也可以,也可以直接访问网卡306或分发核,本发明实施例对此不作限定。
2)入口处理线程302:负责从入口报文队列304获取报文,并对获取到的报文执行入口处理3021。在执行入口处理的过程中若确定当前待执行的处理动作已展开,则获取该处理动作对应的流水线队列,并将待处理报文在该流水线队列中入队。
3)普通处理线程303:负责从流水线队列池305的某个流水线队列中获取报文,然后对获取的报文执行处理动作。为了与入口处理区分,将普通处理线程执行的处理称之为普通处理。普通处理包括普通处理线程获取报文后执行的第一个处理动作以及该第一个处理动作到后续的第一个已展开的动作之前的所有动作,所以普通处理线程303可能执行一个处理动作,也可能执行多个处理动作。除了第一个处理动作之外,当碰到待执行的处理动作为已展开的处理动作时,普通处理线程303将会把待处理报文在该处理动作对应的流水线队列中入队。
为了提高系统灵活性和普通处理线程303的动态扩展性,本发明实施例中对所有流水线队列按照优先级做池化管理,即建立流水线队列池305。流水线队列池305中的所有流水线队列(也可简称为队列)均以指针方式缓存报文。流水线队列池305中包含不同优先级(优先级0-N)的队列,较高优先级队列将获得较高的优先处理机会。同时,为提高报文处理的并行性,将每个优先级的流水线队列分为以下a)和b)两种。
a)一个并行流水线队列:该队列中的报文可以由多个普通处理线程303同时处理。由于并行队列没有保证顺序的要求,也不会被处理核锁定,因此本发明实施例只设置一个并行流水线队列。可选的,在本发明其他一些实施例中,并行流水线队列也可以设置多个。
b)多个串行流水线队列:该队列中的报文在同一时刻只能被一个普通处理线程处理。
每个流水线队列通过唯一的队列ID进行区分进行区分。由于一个流水线队列可能对应多个处理动作,为了区分,在流水线队列池305中缓存的每个报文在被置入到流水线队列池中之前都被添加有一个标识待执行的处理动作的标签(也可称为标识)。普通处理线程303从流水线队列池中取出的报文,根据该标签,执行对应的处理动作。
本领域技术人员应当理解的是,处理器在执行一个动作的时候实际上执行的是动作3071的一个执行实例。在本发明实施例中,每个动作可以具备多个执行实例,一个流水线队列可以对应一个动作的多个执行实例,因而需要设置待执行的处理动作的标签(该标签用于表示特定的执行实例)。而在本发明其他实施例中,每个动作可以仅有一个执行实例,所有用户/承载的报文都通过这个执行实例处理。这种情况下动作实例少,每个动作的一个执行实例可以直接绑定特定的队列,这样就不需要设置待执行的处理动作的标签,但这种方式有缺点:1)动作实例数有限,导致多核展开的范围有限;2)不同动作计算量差异大,多核负载不均。通常,在网关或路由器等网络设备中,每个动作支持有多个执行实例,每个用户/承载的报文由对应自己的实例处理。这种情况下动作实例很多,采取绑定的方式不如本发明实施例提出的增加动作标签的方式效果好。
在其他一些实施例中,流水线队列池中包含的流水线队列的类型可以更多,也可以仅有单一一种队列。在其他一些实施例中,流水线队列池305并不是必须的。
需要说明的是,本发明实施例中,普通处理线程和流水线队列没有绑定关系,所有普通处理线程可以通过轮询的方式从所有非空流水线队列中获取报文。因此上述报文被置入流水线队列中后,下一次获取该报文的还可能是上次对该报文执行处理动作的普通处理线程。本发明实施例中还设置了调度策略,即为流水线队列设置不同的优先级,优先级高的队列中的报文会被优先获取。可选的,在本发明其他一些实施例中,也可以随机获取或设置其他的调度策略。
方案的一种详细实现如下:
接收线程301以轮询的方式从网卡306接收报文并将报文在入口报文队列304中入队。每接收一次报文,接收线程301就进行一次流量检测,比如一次接收32个报文,那就接收到到32个报文之后检测一次。流量检测主要基于入口报文队列304的深度(即入口报文队列缓存的报文个数)和两个预定义的阈值实现:一个是超载阈值,当入口报文队列304的深度大于或等于该超载阈值时确定流量超载;另一个是轻载阈值,当入口报文队列304的深度小于该轻载阈值时确定流量轻载。
根据流量检测的结果,接收线程301执行流水线管理。该管理主要包括超载处理和轻载处理,也即流水线的展开和收缩。当确定流量超载时,接收线程301根据动态流水线策略选择若干未展开的动作并将其展开。展开的具体方法是:根据待展开的动作的流水线属性选择流水线队列池中的队列,并设置该待展开的动作的流水线队列ID为该队列的ID。然后将该待展开的动作的流水线标签标记为已展开。当流量轻载时,接收线程301根据动态流水线策略选择若干已展开动作并将其收缩。收缩的具体方法是:将流水线队列ID设置为无效,将流水线标签标记为未展开。动态流水线策略将在后面具体介绍。
入口处理线程302轮询处理入口报文队列304中的报文。对每一个报文,每执行一个动作前,需要先根据该动作的流水线标签判断该动作是否展开。如果判断为展开,将该报文添加指示该动作的标签,并将该报文在该动作对应的流水线队列中入队;如果判断为未展开,由入口处理线程302直接对报文执行该动作。在本发明其他一些实施例中,可以预先设置一个入口动作,该入口动作用于指示所述判断步骤启动。入口处理线程302从该入口动作开始每次执行一个动作前就判断该动作是否展开,而在该入口动作之前的所有动作可以不做判断直接由入口处理线程执行。
普通处理线程303根据调度策略从流水线队列池中轮询获取并处理报文。第一个动作被执行完成后之后,每执行一个动作前,普通处理线程303需要先判断该动作是否展开。如果展开,将该报文添加指示该动作的标签,并将该报文在该动作对应的流水线队列中入队;如果未展开,普通处理线程303继续执行该动作。
请参阅图5,为接收线程301进行流量检测的示意图。接收线程获取报文(S401),然后判断报文个数是否大于0(S402),若报文个数大于0,则将该报文在入口报文队列中入队(S403),然后获取入口报文队列的深度并判断入口报文队列的深度是否大于或等于超载阈值(S404),或者是否小于轻载阈值(S404),若该深度大于或等于该超载阈值,则进行超载处理(S405),若该深度小于该轻载阈值,则进行轻载处理(S406)。若报文个数等于0,则说明此次获取无效,可绕过入队直接获取入口报文队列的深度并执行后续步骤,或者也可以忽略掉此次的流量检测。
本发明实施例中设置的轻载阈值小于超载阈值。若入口报文队列的深度为除以上之外的其他情况,即深度大于或等于轻载阈值且小于超载阈值,则说明目前为正常流量范围,可继续下一轮的报文获取。
为了避免流水线调整过快,并给普通处理线程以适应时间,可以额外设置一个静默期,即每次超载处理或轻载处理之后必须等待该静默期结束才能触发下一次超载处理或轻载处理。
一个网络设备对报文的处理过程可以划分为多个具有先后顺序的处理动作,例如网关可以根据功能将对报文的转发处理过程划分为解封装、解密、计费等多个处理动作。按照先后顺序(或称为先后依赖关系)将这多个处理动作(A-F)组织成如图6所示的有向无环图(Directed Acyclic Graph,DAG)。基于该DAG图的拓扑排序的其中一种为:ABCDEF(也可以为ACBDEF或ABCDFE等)。在该拓扑排序中,前面的动作在后面的动作之前执行。后面的动作称为前面动作的后继动作,包括直接后继动作和间接后继动作两种。例如E称为D的直接后继动作,E也可以称为C的间接后继动作。下面基于此具体介绍两种动态流水线策略。
第一种为拓扑序列尾部优先的动态流水线策略。采用这种策略所选择的处理动作中任意一个处理动作的所有后继动作均包含在这个被选择的处理动作集合中。
具体的,设置一个展开游标,初始化时指向拓扑序列尾部,如图7所示。需要做动作展开时,将游标左移,将游标走过的动作做展开处理(包括起始游标位置,不包括结束游标位置);需要做动作收缩时,将游标右移,将游标走过的动作做收缩处理(不包括起始游标位置,包括结束游标位置)。如图7所示,游标左移到动作C,则动作D、E和F做展开处理。
需要说明的是,每次超载处理或轻载处理展开或收缩的动作的个数,本领域技术人员可以预先设置,也可以根据当前流量的情况动态设定,本发明实施例对此不做限定。
由于这种策略可以确保某个动作在展开时,其所有后继动作都已展开,因而可以很好地解决展开时的串行依赖问题。串行依赖问题可以描述为:如果一个动作在DAG图上的某个后继动作为未展开的串行动作,为了避免串行动作被并行执行,那么该动作只能以串行方式展开。例如,D为串行动作,C为并行动作,D是C的后继动作,如果C展开而D为展开,那么D会和C一样,在同一时刻被多个处理核处理。
以动作D为例,展开过程包括:1)根据动作D的优先级属性在流水线队列池中选择对应优先级的流水线队列;2)根据动作D的并行属性在对应优先级的流水线队列里面选择具体队列。如果支持并行,则选择对应优先级的唯一并行队列;如果不支持并行,则通过哈希(hash)方式选择一个串行队列;3)将动作D的流水线队列ID设置为所选队列的ID;4)将动作D的流水线标签设置为已展开(例如设置为1)。哈希方式可以包括:将动作标识或动作的其他信息输入一个hash函数,得到相应的队列ID。
仍以动作D为例,收缩过程包括:1)将动作D的流水线队列ID设置为无效;2)将动作D的流水线标签设置为未展开(例如设置为0)。
第二种为拓扑序列中间节点展开的动态流水线策略。为了避免串行依赖问题,前一种策略严格按照拓扑序列逆序展开、顺序收缩,但这种策略在以下情况下可能会有不足:1)当动作粒度过小(即动作的运算量很小),可能会出现展开层次过多、队列传递开销过大的问题;2)当动作粒度相差过大时(有的动作运算量很小,而有的动作运算量又很大),可能会出现多核负载不均的问题。通过这第二种策略,可以将连续的多个小运算量的动作整体展开或收缩;也可以通过将前后相邻的动作进行组合,使得不同的展开动作之间运算量大致相当。
如图8所示,拓扑序列ABCDEF,依次对序列尾部动作F、中间动作B、中间动作D做展开。最终展开后,动作E和动作C由于没有展开,动作E随着动作D一起执行,动作C随着动作B一起执行。具体的,当一个普通处理线程获取某个待处理报文并对其执行完动作B之后确定动作C没有展开,则继续执行动作C,然后确定动作D已展开,则根据动作D的流水线队列ID将该报文重新在流水线队列池中入队,以等待下一个普通处理线程处理。
中间动作节点的展开和收缩依赖于动作集合的集合属性。与动作的流水线属性类似,集合属性也可以包括并行属性和优先级属性。具体的,若[X,Y]中存在任意一个动作的并行属性为串行,那么动作集合[X,Y]的并行属性为串行,若[X,Y]中所有动作的并行属性均为并行,则动作集合[X,Y]的并行属性为并行。动作集合[X,Y]的优先级属性为[X,Y]中的动作的最大优先级。在本发明其他一些实施例中,动作集合的集合属性也可以另作设置,例如优先级属性取所有动作的优先级的平均值等等,本发明实施例对此不做限定。
对某个动作X做展开,展开过程如下:假设在拓扑序列中,X之后的第一个已展开动作为Y,X之前的第一个已展开动作为Z。序列尾部动作为T。
1)将动作X的流水线标签设置为已展开;
2)如果Y存在,根据动作集合[X,Y)的集合属性更新X的流水线队列ID;如果Y不存在,根据动作集合[X,T]的集合属性更新X的流水线队列ID;
3)如果Z存在,根据动作集合[Z,X)的集合属性更新Z的流水线队列ID。
以前述动作D的展开为例。展开前,X、Y、Z如图9A所示。在动作D展开前,[B,E]在一个处理核上执行,动作B已经根据[B,E]的集合属性设置了自己的流水线队列ID。当动作D展开后,如图9B所示,动作D的流水线队列ID需要根据[D,E]的集合属性进行设置。由于动作D已经展开,与动作B一起执行的动作集合缩小为[B,C],所以需要根据[B,C]的集合属性修正动作B的流水线队列ID。
对某个动作X做收缩,收缩过程如下:设在拓扑序列中,X之后的第一个已展开动作为Y,X之前的第一个已展开动作为Z。序列尾部动作为T。
1)将动作X的流水线标签设置为未展开;
2)将X的流水线队列设置为无效;
3)如果Z和Y都存在,根据动作集合[Z,Y)的集合属性更新动作Z的流水线队列ID;如果Z存在且Y不存在,根据动作集合[Z,T]的集合属性更新动作Z的流水线队列ID。
参考附图,图9B为初始状态,图9A为对动作D做流水线收缩之后的状态。当对D做流水线收缩之后,与B一起执行的动作由[B,C]扩展到[B,E],所以需要对动作B的流水线队列ID进行修正。
需要说明的是,以上两种动态流水线策略仅为示例性的,本领域技术人员可以根据网络设备和网络流量的特点设置其它的动态流水线策略,本发明实施例对此不做限定。
请参阅图10和图11,分别为入口处理线程302和普通处理线程303的基本处理流程示意图。
如图10所示,入口处理线程依次从入口报文队列获取报文(S501),从入口动作开始(入口动作也进行判断),每一个动作在执行前都判断相应的流水线标签是否展开。
具体的,入口处理线程首先确定入口动作为当前待执行的处理动作(S502),判断该处理动作的流水线标签是否指示该处理动作已展开,如果是,入口处理线程将该指示该处理动作(对该报文来说,该动作是下次需要被执行的动作)的标识添加到报文中(S505),然后将该报文在该处理动作的流水线队列ID所标识的队列中入队(S508),并返回到步骤S501即获取下一个报文;如果否,则直接调用该处理动作的执行函数对该报文执行该处理动作(S504),并根据该执行函数的返回结果确认该报文是否已经处理完成(S506)。如果报文未被处理完成(即还有下一个动作需要被执行),接着处理下一个动作,即确定下一个动作为当前待执行的处理动作(S507)以及返回到步骤S503,下一个动作可以从当前执行动作的返回结果中获得;如果报文已经被处理完成,则结束当前报文的处理并返回到S501即获取下一个报文。
如图11所示,普通处理线程以轮询方式从流水线队列池中的各队里中获取报文并执行报文处理。
具体的,普通处理线程首先从流水线队列池中获取待处理报文(S601),然后获取该报文中的动作标识(S602),根据报文中携带的动作标识获取相应的处理动作(S603),并确定当前待执行的处理动作为该处理动作(S604),然后执行该处理动作的执行函数(S605)。判断该执行函数的返回结果是否指示该报文已被处理完成(S606),若该执行函数的返回结果指示该报文处理完成,则结束当前报文的处理返回到步骤S601即获取并处理下一个报文;若该执行函数的返回结果指示该报文处理未完成,则根据返回结果获取下一个动作,然后判断下一动作的流水线标签的展开状态(S607)。如果该下一动作的流水线标签已经展开,根据下一动作设置报文的下一动作标签(S608),然后将该报文在该动作的流水线队列ID所标识的队列中入队(S609);如果该下一动作的流水线标签未展开,则普通处理线程确定该下一个动作为当前待执行的处理动作(S610),并返回步骤S605即执行该下一动作的执行函数。
需要说明的是,图10和图11中,对于“处理动作←x动作”,即x动作赋值给“处理动作”,是表示将要处理的动作为x动作,换句话说,接下来方法流程中的“处理动作”即为x动作,直到“处理动作”被重新赋值。可选的,根据处理动作的执行函数的返回结果确定当前报文是否已经处理完成,若返回结果为空,则确定当前报文已被处理完成,若返回结果为下一个动作,则确定当前报文还未被处理完成。
本发明实施例提供的普通处理线程的处理方法中,普通处理线程从流水线队列池中获取报文主要遵循三方面原则:1)对于不同优先级队列中的报文,高优先级队列中的报文优先处理;2)同优先级队列中的报文,采用公平轮询处理;3)如果是串行队列,同一时刻只能一个核处理,在一个核绑定一个处理线程的前提下,亦即同一时刻只能一个普通处理线程处理。当然,在本发明其他实施例中,报文获取还可以采用其它类型的调度策略。
另一方面,本发明实施例还提供一种流水线动态收缩方法,即在流水线展开的前提下,若计算机系统确定预设的流水线收缩条件满足,则确定一个或多个已展开的处理动作,将该已展开的处理动作收缩。预设的流水线收缩条件的设置可参考前述流水线展开条件,在此不赘述。处理动作的收缩是处理动作的展开的逆向过程,也可参考前述。收缩后的各个线程的处理流程和前述介绍的处理流程是相同的。具体选择哪些已展开的处理动作或几个已展开的处理动作可以根据用户的当前指令确定,可以根据用户的历史配置信息确定,也可以根据当前流量情况动态确定,本发明实施例对此不作限定。
请参阅图12,为本发明实施例提供的数据流处理的内部交互示意图。假设有两个处理动作:动作1和动作2。动作1先与动作2执行。图12中一共从外部端口接收了4次报文。
第1次接收报文,接收线程由于没有检测到流量超载,所以没有触发流水线管理。报文在入口报文队列中入队后,由入口处理线程从入口报文队列中获取报文并执行动作1和动作2。
第2次接收报文,接收线程检测到流量超载,触发流水线管理进行超载处理。流水线管理将动作2展开。随后报文的动作2被普通处理线程1执行。动作2的展开方式在前文已有记载,在此不再赘述。
需要说明的是,本发明实施例中,普通处理线程1和普通处理线程2其实是对等地从流水线队列池中获取报文,这里示例普通处理线程1取走报文。实际上也可能被普通处理线程2取走并处理。
第3次接收报文,流量在正常阈值范围,没有触发流水线管理。接收线程通过入口报文队列将报文转给入口处理线程处理。入口处理线程对该报文执行完动作1之后,将指示动作2的标签加入该报文,然后将该报文在动作2对应的流水线队列中入队。普通处理线程2通过轮询流水线队列池获取该报文,并对该报文执行动作2。
第4次接收报文,接收线程检测到流量轻载,触发流水线管理进行轻载处理。流水线管理将已展开的动作2做收缩处理。由于动作2已经收缩,动作1和动作2均由入口处理线程处理。
本发明实施例还提供一种流水线处理资源动态增加或减少的方法,即当已展开的处理动作数量较多但仍然存在流量超载时,获取更多处理资源来执行报文的流水线处理,而当处理动作大多数都未展开但仍然存在流量轻载时,释放当前的部分处理资源。
如图13所示,以网关为例,所有的处理动作(或称转发动作)都在网关的转发面实现,控制面则负责处理资源的分配和回收。流水线管理在执行多次超载处理后,所有动作均已展开,如果仍然出现流量超载,说明已经达到了系统转发能力的上限。发生这种情况时,流水线管理单元向控制面申请更多的处理核资源。控制面上的负责处理核资源管理的控制核(一个或多个)为转发面分配新的处理核。流水线管理单元基于新分配的处理核创建普通处理线程并绑定相应的处理核,用于执行已经展开的处理动作,从而实现转发能力的动态扩容。与动态扩容相反,流水线管理在执行多次轻载处理后,所有动作都已收缩(即流水线标签为未展开)。此时如果仍然存在流量轻载,则释放多余的普通处理线程及其对应的处理核,并向控制面发送回收处理资源的请求,控制面根据给请求回收相应的处理核资源,从而实现转发能力动态缩容。
本发明实施例提供的方法可以应用在网络功能虚拟化(Network FunctionVirtualization,NFV)的场景下,下面将结合NFV介绍资源申请或回收的方法。请参考图14,在NFV场景下,控制面701和转发面703可组成一个虚拟网络功能,例如虚拟网关700。控制面701不直接分配核资源,由NFV管理和编制(NFV Management and Orchestration,简称为MANO)系统702来分配。如图14所示,当转发面703在执行流量检测7031后发现核资源不足,则向控制面701发送流量超载消息,控制面701根据该超载消息向MANO702发送核资源的申请请求,MANO702根据该核资源的申请请求分配核资源,回收过程类似。核资源申请或回收之后,转发面703会在控制面701的控制下进行处理核的热插拔,并启动或杀死热插拔的处理核对应的处理线程7032(对应前述实施例中的普通处理线程)。MANO702主要包括编制器(Orchestrator)、一个或多个VNF管理器(Virtualized Network Function Manager,VNFManager),以及一个或多个虚拟化基础设施管理器(Virtualized InfrastructureManager)。其中,VNF管理器与虚拟网络功能连接,编制器可以与一个或多个VNF管理器通信以实现与资源相关的请求、发送配置信息给VNF管理器、以及收集虚拟网络功能的状态信息;编制器还与虚拟化基础设施管理器进行通信以实现资源分配,和/或实现虚拟化硬件资源的配置信息和状态信息的预留和交换。
需要说明的是,控制核位于控制面仅是举例说明,在本发明其他一些实施例中,控制核也可以与其他处理核(第一和第二处理核)属于相同的逻辑面,或计算机系统中没有控制面和其他面的区分,或者控制核与处理核位于不同的计算机系统等。只要能实现本发明实施例提出的功能的计算机核即可认为是控制核。
本发明实施例还提供一种在转发面实现低功耗的方法。参考图15,与上述实施例不同的是,在所有动作都已收缩且仍然存在流量轻载的情况下,流水线管理单元对普通处理线程进行低功耗处理。具体的,流水线管理单元休眠部分或全部普通处理线程绑定的处理核(处理核休眠,其上绑定的普通处理线程也休眠),或者,流水线管理单元指示部分或全部普通处理线程绑定的普通处理核降低主频(处理核降低主频时,对应的线程不需要休眠)。本发明其他实施例还可以采用其它手段实现低功耗,本发明对此不做限定。当所有动作均已经展开且仍然存在超载,而且存在低功耗状态的处理核时由流量管理单元解除这些处理核的低功耗状态。具体的,流量管理单元唤醒部分或全部普通处理核,并唤醒这些普通处理核上绑定的普通处理线程,或者流量管理单元指示相应的普通处理核提高主频。
需要说明的是,前述涉及到的条件并非一定是所有处理动作均展开或均收缩,也可以是已展开的动作很多或很少,例如设置条件为已展开的处理动作的个数大于(再例如,大于或等于)某一特定阈值,或已展开的处理动作的个数小于(再例如,小于或等于)某一特定阈值(也就是未展开的处理动作的个数大于某一特定阈值)。以上阈值的设定可根据网络设备处理能力或其他条件自行设置,本发明实施例对此不作限定。
本发明实施例还提供一种计算机系统,用于实现前述介绍的动态流水线方法。请参考图16,该计算机系统800包括接收器801、发送器802、处理器804以及存储器803,它们通过总线805进行连接。总线805可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外部设备互连)总线或EISA(Extended Industry Standard Architecture,扩展工业标准体系结构)总线等。总线805可以是一条或多条物理线路,当是多条物理线路时可以分为地址总线、数据总线、控制总线等。
接收器801和发送器802分别用于接收数据流中的报文和发送处理之后的报文。存储器803用于存储软件程序,处理器804用于读取该软件程序用于实现前述介绍的任意一种动态流水线处理方法。
在一种实现方式下,处理器804为多核处理器,包括多个核8041,其中的一个或多个核作为第一处理核用于确定预设的流水线展开条件是否满足;若确定预设的流水线展开条件满足,则该第一处理核确定未展开的N个处理动作,并将所述N个处理动作展开。多核处理器中的另一些核作为第二处理核并用于执行展开后的所述N个处理动作。在一些实施例中,第二处理核也用于执行未展开的处理动作,并非仅用于执行展开后的处理动作,例如,假如前述实施例中处理动作B被展开,但处理动作C没有被展开,那么B和C就会被同一个第二处理核处理。多核处理器中的这些核可共享存储器中的一个或多个存储区,该存储区用于缓存待处理的报文。可选的,存储区可通过多个队列进行管理,可以理解的是,在队列中入队的元素实际存储在与该队列对应的存储区中。
在其他实现方式下,该计算机系统中的多个核位于不同的处理器上。
本发明实施例提供的处理器804所实现的方法的具体内容可参考前述方法实施例的相关步骤,在此不再赘述。
在本发明的一些实施例中,该计算机系统800包括对应多个存储区的多个队列,并且计算机系统800需实现队列管理(入队、出队和队列轮询等),如果队列管理用软件程序实现,那么队列中转开销会很大,队列中转开销包括报文入队、出队、队列轮询等。
因此,为了尽可能减少这种队列中转开销,如图17A所示,本发明实施例还提供另一种计算机系统900,在该计算机系统中,采用硬件实现流水线队列管理器9042。基于该流水线队列池管理器9042实现本发明提供的动态流水线处理方法可以更好的减少报文队列的中转开销,从而进一步提高数据流处理效率。另外,计算机系统900还包括接收器901、发送器902、多核处理器904以及存储器903,它们通过总线905进行连接。多核处理器904中包括多个核9041以及流水线队列管理器9042。
参考图17B,为了实现各个处理核对与存储区对应的各个队列的访问,流水线队列管理器9042需要提供3个对外接口:1)入队:将批量报文在指定队列入队;2)出队:从指定队列批量出队报文;3)调度出队:按照不同队列的优先级,根据用户配置的调度策略输出报文。2)和3)两个接口也可以仅保留3)。
在一些实施例中,存储区与队列一一对应。存储器903中的多个存储区9031可以是连续的存储区域,也可以是非连续的存储区域,本发明实施例对此不做限定。
以多核ARM处理器为例,在ARM64中集成硬件实现的流水线队列管理器。然后基于该硬件流水线队列池管理器,实现动态流水线的报文处理,从而可以构建低成本、高性能的数据流处理技术。以网关转发面为例,ODP(open data plane)是面向ARM领域的开源转发面开发库。由于ODP即是以队列管理为核心,基于硬件的流水线队列池管理器,再结合ODP既可以低成本、高效地实现本发明提出的动态流水线方法。
综上所述,本发明实施例提供的数据流处理方法和系统,将对报文执行的处理过程划分为多个处理动作,在确定当前数据流的流量满足预设的条件时,才将部分处理动作展开,从而多个处理核可以采用流水线的形式对报文进行处理,提高处理效率。在数据流带宽波动幅度较大,且数据流峰值带宽较大的情况下,相对于采用静态流水线的方式,本发明实施例提供的方法一定程度上避免了流量较小时的处理资源浪费,同时也能够更好地支持流量较大时数据流的处理。
进一步的,流水线处理的处理核(相当于第二处理核)通过轮询的方式从多个流水线队列中获取待处理报文,并没有将这些处理核与流水线队列或处理动作进行静态绑定,从而提高了流水线处理的灵活性。
进一步的,所有流水线队列采用池化管理,即建立流水线队列池,方便采用专用的硬件流水线队列池管理器来进行流水线队列的管理,由该管理器直接管理队列存储区,所有队列中的报文在该存储区进行缓存,并通过该管理器进行入队、出队和队列轮询等操作,从而节省报文的队列中转开销。
另外,本发明其他实施例提供的方法可在满足预设的条件时向控制核动态申请新的处理核加入流水线处理,也可以在满足预设的条件时对处理核进行低功耗处理,这样可以更好地适应数据流波动幅度大的特点,提高处理资源的利用率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明实施例所述的装置可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (41)
1.一种数据流处理方法,其特征在于,所述方法应用于包括多个处理核的计算机系统,所述计算机系统用于接收数据流,并对所述数据流中的报文执行具有先后顺序的M个处理动作,M为大于或等于2的整数,所述方法包括:
第一处理核确定预设的流水线展开条件是否满足;
若确定预设的流水线展开条件满足,则所述第一处理核确定N个未展开的处理动作,并将所述N个处理动作展开,以便于第二处理核执行展开后的所述N个处理动作,N为大于0且小于或等于M的整数。
2.根据权利要求1所述的方法,其特征在于,所述第一处理核确定N个未展开的处理动作,并将所述N个处理动作展开,以便于第二处理核执行展开后的所述N个处理动作,包括:
所述第一处理核根据处理动作的展开属性确定N个未展开的处理动作,所述属性用于指示所述展开属性所属的处理动作是否展开;
所述第一处理核将所述N个未展开的处理动作的展开属性修改为指示相应的处理动作已展开,并通过存储区将执行已展开的处理动作的报文传递给所述第二处理核,以便于所述第二处理核对所述报文执行所述已展开的处理动作。
3.根据权利要求2所述的方法,其特征在于,所述第一处理核通过存储区将执行已展开的处理动作的报文传递给所述第二处理核,以便于所述第二处理核对所述把稳执行所述已展开的处理动作包括:
所述第一处理核确定所述N个处理动作中每个处理动作对应的流水线队列,以便于所述第一处理核或所述第二处理核将待执行已展开的处理动作的报文在所述已展开的处理动作对应的流水线队列入队,以及所述第二处理核从流水线队列中获取报文并对所述报文执行所述流水线队列对应的处理动作,其中,流水线队列用于存储待执行所述流水线队列对应的处理动作的报文。
4.根据权利要求3所述的方法,其特征在于,所述第一处理核或所述第二处理核将待执行已展开的处理动作的报文在所述已展开的处理动作对应的流水线队列入队包括:
所述第一处理核或所述第二处理核判断待处理报文的待执行的处理动作的展开属性是否指示所述待执行的处理动作已展开;
若是,则将所述待处理报文存储到所述待执行的处理动作对应的流水线队列中,所述待处理报文中被添加有所述待执行的处理动作的标识;
若否,则继续对所述待处理报文执行所述待执行的处理动作。
5.根据权利要求4所述的方法,其特征在于,当处理核为所述第一处理核时,所述判断步骤在所述当前处理核执行任意一个处理动作之前均执行。
6.根据权利要求4所述的方法,其特征在于,当处理核为所述第一处理核时,所述判断步骤在所述当前处理核执行入口动作以及入口动作后续的处理动作之前均执行,所述入口动作是预先设置的指示所述判断步骤启动的处理动作。
7.根据权利要求4所述的方法,其特征在于,当处理核为所述第二处理核时,所述判断步骤在所述处理核第一次执行完一个处理动作之后、在执行后续的任意一个处理动作之前执行。
8.根据权利要求3-7任意一项所述的方法,其特征在于,处理动作的所述展开属性包括流水线队列标识,所述流水线队列标识为空或无效值表示所述处理动作未展开,所述流水线队列标识为有效标识表示所述处理动作已展开;
所述第一处理核修改所述N个处理动作的展开属性为指示相应的处理动作已展开包括:
所述第一处理核将所述N个处理动作的流水线队列标识分别设置为所述N个处理动作各自对应的流水线队列的标识。
9.根据权利要求1-8任意一项所述的方法,其特征在于,所述未展开的N个处理动作包括所述N个处理动作中任意一个处理动作的所有未展开的后继动作,其中,一个处理动作的后继动作的执行在所述处理动作完成之后。
10.根据权利要求3-9任意一项所述的方法,其特征在于,所述流水线队列包括并行流水线队列和串行流水线队列,所述串行流水线队列中存储的报文在同一时刻只能被一个处理核处理,所述并行流水线队列中存储的报文可以被多个处理核同时处理。
11.根据权利要求10所述的方法,其特征在于,所述第一处理核确定出的所述N个处理动作中每个处理动作对应的流水线队列需满足如下条件:
一个并行流水线队列对应可同时被多个处理核处理的一个或多个处理动作;且一个串行流水线队列对应不可同时被多个处理核处理的一个处理动作。
12.根据权利要求11所述的方法,其特征在于,处理动作还包括并行属性,所述并行属性用于指示所述处理动作是否可同时被多个处理核处理,所述第一处理核根据所述并行属性确定所述处理动作是否可同时被多个处理核处理。
13.根据权利要求3-12任一项所述的方法,其特征在于,处理动作还包括优先级属性,所述优先级属性用于表示所述处理动作的优先级;且不同的流水线队列具有不同的优先级;
所述第一处理核确定出的所述N个处理动作中每个处理动作对应的流水线队列需满足如下条件:每个处理动作对应的流水线队列的优先级与相应的处理动作的优先级匹配。
14.根据权利要求3-8任意一项所述的方法,其特征在于,所述流水线队列包括并行流水线队列和串行流水线队列,所述串行流水线队列中存储的报文在同一时刻只能被一个处理核处理,所述并行流水线队列中存储的报文可以被多个处理核同时处理;
所述第一处理核确定所述N个处理动作中每个处理动作对应的流水线队列包括:
若第一动作集合中所有处理动作均可同时被多个处理核处理,则所述第一处理核确定并行流水线队列为处理动作对应的流水线队列;否则,所述第一处理核确定串行流水线队列为所述处理动作对应的流水线队列;
其中,所述第一动作集合包括所述处理动作以及在所述处理动作之后的,且在第一个已展开的处理动作之前的所有处理动作,所述第一个已展开的处理动作为在所述处理动作之后的第一个已展开的处理动作。
15.根据权利要求14所述的方法,其特征在于,所述第一处理核确定出的所述N个处理动作中每个处理动作对应的流水线队列需满足如下条件:每个处理动作对应的流水线队列的优先级与所述第一动作集合中优先级最高的处理动作的优先级匹配。
16.根据权利要求13或14所述的方法,其特征在于,若在所述N个处理动作中第一个处理动作之前存在已展开的处理动作,则所述方法还包括:
根据第二动作集合重新确定第一处理动作对应的流水线队列,所述第一处理动作为所述N个处理动作中第一个处理动作之前的第一个已展开的处理动作;
其中,第二动作集合包括所述第一处理动作以及在所述第一处理动作之后的、且在所述N个处理动作中第一个处理动作之前的所有处理动作。
17.根据权利要求3-16中任意一项所述的方法,其特征在于,所述第二处理核从流水线队列中获取报文并对所述报文执行所述流水线队列对应的处理动作包括:
所述第二处理核通过轮询的方式从多个流水线队列中获取待处理报文,所述待处理报文中携带有处理动作的标识,所述处理动作为所述待处理报文来自的流水线队列对应的处理动作;
所述第二处理核根据所述处理动作的标识对所述待处理报文执行所述处理动作。
18.根据权利要求1-17任意一项所述的方法,其特征在于,所述预设的流水线展开条件包括入口报文队列中存储的报文个数大于或等于第一阈值,所述入口报文队列中存储有所述计算机系统接收到的、还未被执行任何一个处理动作的报文。
19.根据权利要求1-17任意一项所述的方法,其特征在于,所述预设的流水线展开条件包括所述第一处理核从上次空接收开始累计接收到的报文个数大于或等于第二阈值,所述空接收表示接收到的报文个数等于0。
20.根据权利要求1-17任意一项所述的方法,其特征在于,所述预设的流水线展开条件包括接收到用户的配置信息,所述配置信息用于指示流水线展开或所述配置信息包含需要展开的处理动作的所述个数N或所述配置信息包含需要展开的所述N个处理动作的标识。
21.根据权利要求1-20任意一项所述的方法,其特征在于,所述方法还包括:
所述第一处理核确定预设的流水线收缩条件是否满足;
若确定所述预设的流水线收缩条件满足,则所述第一处理核确定已展开的P个处理动作,并将所述P个处理动作设置为未展开,P为大于0的整数。
22.根据权利要求1-21任意一项所述的方法,其特征在于,所述方法还包括:
所述第一处理核在确定预设的流水线展开条件满足且确定已展开的处理动作的个数大于第一阈值时,向控制核发送申请处理资源的请求,其中,所述控制核用于管理所述多个处理核;
所述控制核根据所述申请处理资源的请求分配一个或多个第三处理核以用于执行已展开的处理动作。
23.根据权利要求22所述的方法,其特征在于,所述方法还包括:
所述第一处理核在确定预设的流水线收缩条件满足且确定已展开的处理动作的个数小于第二阈值时,向所述控制核发送回收处理资源的请求;
所述控制核根据所述回收处理资源的请求回收一个或多个所述第二处理核。
24.根据权利要求1-22任意一项所述的方法,其特征在于,所述方法还包括:
所述第一处理核在确定预设的流水线收缩条件满足且确定已展开的处理动作的个数小于第二阈值时,对所述至少一个第二处理核执行低功耗处理。
25.根据权利要求24所述的方法,其特征在于,所述低功耗处理包括休眠至少一个所述第二处理核上或者指示至少一个所述第二处理核降低主频。
26.一种计算机系统,其特征在于,所述计算机系统用于接收数据流,并对所述数据流中的报文执行具有先后顺序的M个处理动作,M为大于或等于2的整数;所述计算机系统包括多个处理核,其中,
第一处理核,用于确定预设的流水线展开条件是否满足;若确定预设的流水线展开条件满足,则所述第一处理核确定未展开的N个处理动作,并将所述N个处理动作展开;以及
第二处理核,用于执行展开后的所述N个处理动作,N为大于0且小于或等于M的整数。
27.根据权利要求26所述的计算机系统,其特征在于,
所述第一处理核,用于确定N个未展开的处理动作;通过修改属性将所述N个未展开的处理动作展开,并确定所述N个处理动作中每个处理动作对应的存储区;以及将待执行已展开的处理动作的报文存储在所述已展开的处理动作对应的存储区;
所述第二处理核,用于从所述存储区中获取报文并对所述报文执行所述存储区对应的处理动作。
28.根据权利要求28所述的计算机系统,其特征在于,在将待执行已展开的处理动作的报文存储在所述已展开的处理动作对应的存储区方面,所述第一处理核用于判断待处理报文的待执行的处理动作的展开属性是否指示所述待执行的处理动作已展开;若是,则将所述待处理报文存储到所述待执行的处理动作对应的存储区,所述待处理报文中被添加有所述待执行的处理动作的标识;若否,则继续对所述待处理报文执行所述待执行的处理动作。
29.根据权利要求27-28任意一项所述的计算机系统,其特征在于,
所述第二处理核,用于通过轮询的方式从多个存储区中获取待处理报文,所述待处理报文中携带有处理动作的标识,所述处理动作为所述待处理报文来自的存储区对应的处理动作;以及根据所述处理动作的标识对所述待处理报文执行所述处理动作。
30.根据权利要求26-29任意一项所述的计算机系统,其特征在于,所述未展开的N个处理动作包括所述N个处理动作中任意一个处理动作的所有未展开的后继动作,其中,一个处理动作的后继动作的执行在所述处理动作完成之后。
31.根据权利要求30所述的计算机系统,其特征在于,每个存储区通过与该存储区对应的流水线队列进行管理;所述流水线队列包括并行流水线队列和串行流水线队列,所述串行流水线队列中存储的报文在同一时刻只能被一个处理核处理,所述并行流水线队列中存储的报文可以被多个处理核同时处理;所述第一处理核确定出的所述N个处理动作中每个处理动作对应的流水线队列需满足如下条件:一个并行流水线队列对应可同时被多个处理核处理的一个或多个处理动作;且一个串行流水线队列对应不可同时被多个处理核处理的一个处理动作。
32.根据权利要求26-29任意一项所述的计算机系统,其特征在于,每个存储区通过与该存储区对应的流水线队列进行管理;所述流水线队列包括并行流水线队列和串行流水线队列,所述串行流水线队列中存储的报文在同一时刻只能被一个处理核处理,所述并行流水线队列中存储的报文可以被多个处理核同时处理;
在确定所述N个处理动作中每个处理动作对应的流水线队列方面,所述第一处理核用于若第一动作集合中所有处理动作均可同时被多个处理核处理,则确定并行流水线队列为处理动作对应的流水线队列;否则,确定串行流水线队列为所述处理动作对应的流水线队列;其中,所述第一动作集合包括所述处理动作以及在所述处理动作之后的、且在第一个已展开的处理动作之前的所有处理动作,所述第一个已展开的处理动作为在所述处理动作之后的第一个已展开的处理动作。
33.根据权利要求26-32任意一项所述的计算机系统,其特征在于,
所述第一处理核还用于确定预设的流水线收缩条件是否满足;若确定所述预设的流水线收缩条件满足,则确定已展开的P个处理动作,并将所述P个处理动作设置为未展开,P为大于0的整数。
34.根据权利要求26-33任意一项所述的计算机系统,其特征在于,
所述第一处理核还用于在确定预设的流水线展开条件满足且确定已展开的处理动作的个数大于第一阈值时,向控制核发送申请处理资源的请求,其中,所述控制核用于根据所述申请处理资源的请求分配一个或多个第三处理核以用于执行已展开的处理动作。
35.根据权利要求34所述的计算机系统,其特征在于,
所述第一处理核还用于在确定预设的流水线收缩条件满足且确定已展开的处理动作的个数小于第二阈值时,向所述控制核发送回收处理资源的请求;
所述控制核还用于根据所述回收处理资源的请求回收一个或多个所述第二处理核。
36.根据权利要求26-33任意一项所述的计算机系统,其特征在于,
所述第一处理核还用于在确定预设的流水线收缩条件满足确定已展开的处理动作的个数小于第二阈值时,对所述至少一个第二处理核执行低功耗处理。
37.根据权利要求26-36任意一项所述的计算机系统,其特征在于,所述计算机系统还包括:
流水线队列管理器,用于管理所述多个存储区对应的多个流水线队列,向所述多个处理核提供入队接口或出队接口,以便于所述处理核通过调用所述入队接口实现将报文在流水线队列入队或通过调用出队接口实现从流水线队列中获取报文。
38.一种计算机系统,所述计算机系统包括至少一个多核处理器和存储器,所述计算机系统用于接收数据流,并对所述数据流中的报文执行具有先后顺序的M个处理动作,M为大于或等于2的整数,其特征在于,
所述存储器用于存储软件程序,当所述软件程序被所述多核处理器中的任意一个处理核执行时,所述多核处理器中的第一处理核确定预设的流水线展开条件是否满足;若确定预设的流水线展开条件满足,则所述第一处理核确定未展开的N个处理动作,并将所述N个处理动作展开;以及所述多核处理器中的第二处理核执行展开后的所述N个处理动作,N为大于0且小于或等于M的整数。
39.根据权利要求38所述的计算机系统,其特征在于,当所述软件程序被所述多核处理器中的任意一个处理核执行时,所述第一处理核确定N个未展开的处理动作;通过修改属性将所述N个未展开的处理动作展开,并确定所述N个处理动作中每个处理动作对应的存储区;以及将待执行已展开的处理动作的报文存储在所述已展开的处理动作对应的存储区;所述第二处理核从存储区中获取报文并对所述报文执行所述存储区对应的处理动作。
40.根据权利要求39所述的计算机系统,其特征在于,当所述软件程序被所述多核处理器中的任意一个处理核执行时,所述第一处理核判断待处理报文的待执行的处理动作的展开属性是否指示所述待执行的处理动作已展开;若是,则将所述待处理报文存储到所述待执行的处理动作对应的存储区,所述待处理报文中被添加有所述待执行的处理动作的标识;若否,则继续对所述待处理报文执行所述待执行的处理动作。
41.根据权利要求38-40任意一项所述的计算机系统,其特征在于,当所述软件程序被所述多核处理器中的任意一个处理核执行时,所述第二处理核通过轮询的方式从多个存储区中获取待处理报文,所述待处理报文中携带有处理动作的标识,所述处理动作为所述待处理报文来自的存储区对应的处理动作;以及根据所述处理动作的标识对所述待处理报文执行所述处理动作。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP17746943.4A EP3404540A4 (en) | 2016-02-05 | 2017-01-25 | METHOD, DEVICE AND SYSTEM FOR PROCESSING DATA FLOWS |
| CA3013680A CA3013680A1 (en) | 2016-02-05 | 2017-01-25 | Data flow processing method and apparatus, and system |
| PCT/CN2017/072644 WO2017133623A1 (zh) | 2016-02-05 | 2017-01-25 | 一种数据流处理方法、装置和系统 |
| US16/054,283 US20180367460A1 (en) | 2016-02-05 | 2018-08-03 | Data flow processing method and apparatus, and system |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201610082701 | 2016-02-05 | ||
| CN2016100827013 | 2016-02-05 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN106506393A true CN106506393A (zh) | 2017-03-15 |
Family
ID=58322101
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201610946437.3A Pending CN106506393A (zh) | 2016-02-05 | 2016-11-02 | 一种数据流处理方法、装置和系统 |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US20180367460A1 (zh) |
| EP (1) | EP3404540A4 (zh) |
| CN (1) | CN106506393A (zh) |
| CA (1) | CA3013680A1 (zh) |
| WO (1) | WO2017133623A1 (zh) |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107426109A (zh) * | 2017-06-27 | 2017-12-01 | 上海华为技术有限公司 | 一种流量调度方法、vnf模块及流量调度服务器 |
| CN107547425A (zh) * | 2017-08-24 | 2018-01-05 | 深圳市盛路物联通讯技术有限公司 | 一种汇聚层数据传输方法及系统 |
| CN108694087A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于最优系统级性能的网络接口卡中的动态负载均衡 |
| CN108984327A (zh) * | 2018-07-27 | 2018-12-11 | 新华三技术有限公司 | 报文转发方法、多核cpu及网络设备 |
| CN109086128A (zh) * | 2018-08-28 | 2018-12-25 | 迈普通信技术股份有限公司 | 任务调度方法及装置 |
| CN109617829A (zh) * | 2018-11-01 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种业务请求数据的处理方法、装置及系统 |
| CN109960571A (zh) * | 2017-12-14 | 2019-07-02 | 北京图森未来科技有限公司 | 一种多模块调度方法、装置及系统 |
| CN111030844A (zh) * | 2019-11-14 | 2020-04-17 | 中盈优创资讯科技有限公司 | 流量处理框架建立方法及装置 |
| CN111831403A (zh) * | 2019-04-23 | 2020-10-27 | 中兴通讯股份有限公司 | 一种业务处理方法和装置 |
| CN111861853A (zh) * | 2019-04-30 | 2020-10-30 | 百度时代网络技术(北京)有限公司 | 用于处理数据的方法和装置 |
| CN114168315A (zh) * | 2021-11-04 | 2022-03-11 | 锐捷网络股份有限公司 | 基于多核的报文处理方法、装置、电子设备及存储介质 |
Families Citing this family (31)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9830289B2 (en) | 2014-09-16 | 2017-11-28 | Apple Inc. | Methods and apparatus for aggregating packet transfer over a virtual bus interface |
| US9971397B2 (en) | 2014-10-08 | 2018-05-15 | Apple Inc. | Methods and apparatus for managing power with an inter-processor communication link between independently operable processors |
| US10042794B2 (en) | 2015-06-12 | 2018-08-07 | Apple Inc. | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link |
| US10085214B2 (en) | 2016-01-27 | 2018-09-25 | Apple Inc. | Apparatus and methods for wake-limiting with an inter-device communication link |
| US10191852B2 (en) | 2016-02-29 | 2019-01-29 | Apple Inc. | Methods and apparatus for locking at least a portion of a shared memory resource |
| US10198364B2 (en) | 2016-03-31 | 2019-02-05 | Apple Inc. | Memory access protection apparatus and methods for memory mapped access between independently operable processors |
| US10775871B2 (en) | 2016-11-10 | 2020-09-15 | Apple Inc. | Methods and apparatus for providing individualized power control for peripheral sub-systems |
| US10591976B2 (en) | 2016-11-10 | 2020-03-17 | Apple Inc. | Methods and apparatus for providing peripheral sub-system stability |
| US10728132B2 (en) * | 2017-06-01 | 2020-07-28 | Hewlett Packard Enterprise Development Lp | Network affinity index increase |
| US10346226B2 (en) | 2017-08-07 | 2019-07-09 | Time Warner Cable Enterprises Llc | Methods and apparatus for transmitting time sensitive data over a tunneled bus interface |
| US10599440B2 (en) * | 2017-12-27 | 2020-03-24 | International Business Machines Corporation | Method for sharing processing modules between pipelines |
| US10331612B1 (en) | 2018-01-09 | 2019-06-25 | Apple Inc. | Methods and apparatus for reduced-latency data transmission with an inter-processor communication link between independently operable processors |
| US11646980B2 (en) | 2018-03-30 | 2023-05-09 | Intel Corporation | Technologies for packet forwarding on ingress queue overflow |
| US20190318229A1 (en) * | 2018-04-12 | 2019-10-17 | Advanced Micro Devices, Inc. | Method and system for hardware mapping inference pipelines |
| US11381514B2 (en) | 2018-05-07 | 2022-07-05 | Apple Inc. | Methods and apparatus for early delivery of data link layer packets |
| US10963262B2 (en) | 2018-05-09 | 2021-03-30 | International Business Machine Corporation | Establishing data pipelines with inclusion of iterative sub-pipelines |
| US10430352B1 (en) * | 2018-05-18 | 2019-10-01 | Apple Inc. | Methods and apparatus for reduced overhead data transfer with a shared ring buffer |
| US10585699B2 (en) | 2018-07-30 | 2020-03-10 | Apple Inc. | Methods and apparatus for verifying completion of groups of data transactions between processors |
| JP7056454B2 (ja) * | 2018-08-03 | 2022-04-19 | 日本電信電話株式会社 | 通信システム及び通信方法 |
| US10719376B2 (en) | 2018-08-24 | 2020-07-21 | Apple Inc. | Methods and apparatus for multiplexing data flows via a single data structure |
| US10838450B2 (en) | 2018-09-28 | 2020-11-17 | Apple Inc. | Methods and apparatus for synchronization of time between independently operable processors |
| US10789110B2 (en) | 2018-09-28 | 2020-09-29 | Apple Inc. | Methods and apparatus for correcting out-of-order data transactions between processors |
| US11416294B1 (en) * | 2019-04-17 | 2022-08-16 | Juniper Networks, Inc. | Task processing for management of data center resources |
| KR20200141212A (ko) * | 2019-06-10 | 2020-12-18 | 에스케이하이닉스 주식회사 | 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법 |
| US12309067B2 (en) | 2019-09-11 | 2025-05-20 | Intel Corporation | Hardware queue scheduling for multi-core computing environments |
| JP7508962B2 (ja) * | 2020-09-15 | 2024-07-02 | 富士通株式会社 | 半導体装置及び転送方法 |
| WO2022195826A1 (ja) * | 2021-03-18 | 2022-09-22 | 日本電信電話株式会社 | サーバ内遅延制御装置、サーバ内遅延制御方法およびプログラム |
| US11967360B2 (en) * | 2021-09-22 | 2024-04-23 | Arm Limited | Dynamically adjustable pipeline for memory access |
| US20220222584A1 (en) * | 2022-04-01 | 2022-07-14 | Yamini Nimmagadda | Heterogeneous compute-based artificial intelligence model partitioning |
| CN114721913B (zh) * | 2022-05-12 | 2022-08-23 | 华控清交信息科技(北京)有限公司 | 一种生成数据流图的方法、装置和用于生成数据流图的装置 |
| CN116320843B (zh) * | 2023-04-24 | 2023-07-25 | 华南师范大学 | 弹性光网络的队列请求调动方法和装置 |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20080229308A1 (en) * | 2005-05-12 | 2008-09-18 | International Business Machines Corporation | Monitoring Processes in a Non-Uniform Memory Access (NUMA) Computer System |
| CN101339523A (zh) * | 2007-07-05 | 2009-01-07 | 国际商业机器公司 | 多处理器环境中的流水线处理方法和设备 |
| CN101968748A (zh) * | 2010-09-17 | 2011-02-09 | 北京星网锐捷网络技术有限公司 | 多线程数据调度方法、装置及网络设备 |
| CN102331923A (zh) * | 2011-10-13 | 2012-01-25 | 西安电子科技大学 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
| US20140003439A1 (en) * | 2012-06-29 | 2014-01-02 | Avaya, Inc. | Method for Reducing Processing Latency in a Multi-Thread Packet Processor with at Least One Re-Order Queue |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9405553B2 (en) * | 2012-01-30 | 2016-08-02 | International Business Machines Corporation | Processing element management in a streaming data system |
| JP5803972B2 (ja) * | 2013-04-18 | 2015-11-04 | 株式会社デンソー | マルチコアプロセッサ |
| JP2015118205A (ja) * | 2013-12-18 | 2015-06-25 | パナソニック液晶ディスプレイ株式会社 | 液晶表示装置 |
| US10146592B2 (en) * | 2015-09-18 | 2018-12-04 | Salesforce.Com, Inc. | Managing resource allocation in a stream processing framework |
-
2016
- 2016-11-02 CN CN201610946437.3A patent/CN106506393A/zh active Pending
-
2017
- 2017-01-25 EP EP17746943.4A patent/EP3404540A4/en not_active Withdrawn
- 2017-01-25 WO PCT/CN2017/072644 patent/WO2017133623A1/zh not_active Ceased
- 2017-01-25 CA CA3013680A patent/CA3013680A1/en not_active Abandoned
-
2018
- 2018-08-03 US US16/054,283 patent/US20180367460A1/en not_active Abandoned
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20080229308A1 (en) * | 2005-05-12 | 2008-09-18 | International Business Machines Corporation | Monitoring Processes in a Non-Uniform Memory Access (NUMA) Computer System |
| CN101339523A (zh) * | 2007-07-05 | 2009-01-07 | 国际商业机器公司 | 多处理器环境中的流水线处理方法和设备 |
| CN101968748A (zh) * | 2010-09-17 | 2011-02-09 | 北京星网锐捷网络技术有限公司 | 多线程数据调度方法、装置及网络设备 |
| CN102331923A (zh) * | 2011-10-13 | 2012-01-25 | 西安电子科技大学 | 一种基于多核多线程处理器的功能宏流水线实现方法 |
| US20140003439A1 (en) * | 2012-06-29 | 2014-01-02 | Avaya, Inc. | Method for Reducing Processing Latency in a Multi-Thread Packet Processor with at Least One Re-Order Queue |
Cited By (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108694087A (zh) * | 2017-03-31 | 2018-10-23 | 英特尔公司 | 用于最优系统级性能的网络接口卡中的动态负载均衡 |
| CN107426109A (zh) * | 2017-06-27 | 2017-12-01 | 上海华为技术有限公司 | 一种流量调度方法、vnf模块及流量调度服务器 |
| CN107426109B (zh) * | 2017-06-27 | 2020-10-09 | 上海华为技术有限公司 | 一种流量调度方法、vnf模块及流量调度服务器 |
| CN107547425A (zh) * | 2017-08-24 | 2018-01-05 | 深圳市盛路物联通讯技术有限公司 | 一种汇聚层数据传输方法及系统 |
| CN109960571A (zh) * | 2017-12-14 | 2019-07-02 | 北京图森未来科技有限公司 | 一种多模块调度方法、装置及系统 |
| CN108984327A (zh) * | 2018-07-27 | 2018-12-11 | 新华三技术有限公司 | 报文转发方法、多核cpu及网络设备 |
| CN109086128A (zh) * | 2018-08-28 | 2018-12-25 | 迈普通信技术股份有限公司 | 任务调度方法及装置 |
| CN109086128B (zh) * | 2018-08-28 | 2021-06-18 | 迈普通信技术股份有限公司 | 任务调度方法及装置 |
| CN109617829A (zh) * | 2018-11-01 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种业务请求数据的处理方法、装置及系统 |
| CN109617829B (zh) * | 2018-11-01 | 2023-03-24 | 创新先进技术有限公司 | 一种业务请求数据的处理方法、装置及系统 |
| CN111831403A (zh) * | 2019-04-23 | 2020-10-27 | 中兴通讯股份有限公司 | 一种业务处理方法和装置 |
| CN111861853A (zh) * | 2019-04-30 | 2020-10-30 | 百度时代网络技术(北京)有限公司 | 用于处理数据的方法和装置 |
| CN111030844A (zh) * | 2019-11-14 | 2020-04-17 | 中盈优创资讯科技有限公司 | 流量处理框架建立方法及装置 |
| CN114168315A (zh) * | 2021-11-04 | 2022-03-11 | 锐捷网络股份有限公司 | 基于多核的报文处理方法、装置、电子设备及存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP3404540A4 (en) | 2019-02-20 |
| US20180367460A1 (en) | 2018-12-20 |
| CA3013680A1 (en) | 2017-08-10 |
| WO2017133623A1 (zh) | 2017-08-10 |
| EP3404540A1 (en) | 2018-11-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN106506393A (zh) | 一种数据流处理方法、装置和系统 | |
| US8270299B2 (en) | Communicator-based token/buffer management for eager protocol support in collective communication operations | |
| US10412021B2 (en) | Optimizing placement of virtual machines | |
| JP4263147B2 (ja) | コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置 | |
| CN105893126B (zh) | 一种任务调度方法及装置 | |
| CN104965757B (zh) | 虚拟机热迁移的方法、虚拟机迁移管理装置及系统 | |
| KR101057452B1 (ko) | 스마트카드 임베디드 조작 시스템 및 작업처리 방법 | |
| EP2701074B1 (en) | Method, device, and system for performing scheduling in multi-processor core system | |
| US6003060A (en) | Method and apparatus to share resources while processing multiple priority data flows | |
| CN113434284B (zh) | 一种隐私计算服务端设备、系统及任务调度方法 | |
| CN102299843A (zh) | 一种基于gpu和缓冲区的网络数据处理方法及系统 | |
| CN101452399A (zh) | 任务二级调度模块及方法 | |
| CN109800067A (zh) | 基于云监控的数据库连接优化方法、装置及相关设备 | |
| CN113672391A (zh) | 一种基于Kubernetes的并行计算任务调度方法与系统 | |
| CN115220921A (zh) | 资源调度方法及相关装置、图形处理器、摄像器件和介质 | |
| CN101383781A (zh) | 虚拟域间短信息通讯方法 | |
| CN110955520A (zh) | 一种面向电能表的多任务调度方法和系统 | |
| CN111880898B (zh) | 一种基于微服务架构的服务调度方法及其实现系统 | |
| CN107741873A (zh) | 业务处理方法及装置 | |
| CN111985634A (zh) | 神经网络的运算方法、装置、计算机设备及存储介质 | |
| CN114866612A (zh) | 一种电力微服务卸载方法及装置 | |
| CN120162132A (zh) | 智能计算中心的算力优先调度方法及装置 | |
| CN118250287A (zh) | 交易处理方法及装置 | |
| Konstantinidou | Segment router: a novel router design for parallel computers | |
| Wang et al. | SARS: towards minimizing average coflow completion time in MapReduce systems |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| RJ01 | Rejection of invention patent application after publication | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170315 |