负载均衡的方法、装置以及网卡与流程

文档序号:30230398发布日期:2022-06-01 04:51阅读:134来源:国知局
负载均衡的方法、装置以及网卡与流程

1.本技术涉及服务器领域,更具体地,涉及一种负载均衡的方法、装置以及网卡。


背景技术:

2.在第五代移动网络(5th generation mobile networks,5g)电信云应用场景中,用户态转发需要具有低延时和高吞吐的要求。由于主机中的多个处理器是静态部署的,如果网卡端口队列的流量负载不均,无法动态地分配处理器资源,导致多个处理器的负载不均衡,影响报文转发的时延及吞吐性能。
3.相关的技术方案中,通过实现网卡端口队列收包work的跨numa动态迁移,以达到处理器负载的动态均衡。但是,上述相关的技术方案会存在报文丢包、报文乱序等问题。例如,网卡端口队列收发包work动态迁移,在迁移过程中就可能存在该work服务的端口队列由于收包不及时而导致的丢包。又如,网卡端口队列收发包work动态迁移,在迁移过程中由于该work服务的端口队列的报文已经在处理器1处理了,迁移到处理器2时,该work服务的端口队列报文可能也会并发的在处理器2处理,存在报文乱序。又如,将numa0上处理器1的端口队列收发包work迁移到numa1上的处理器2,work在处理器2上运行时需要访问numa0的内存,存在跨numa的内存访问,work在处理器2上的运行开销变大,影响性能。


技术实现要素:

4.本技术提供一种负载均衡的方法、装置以及网卡,可以在对系统的性能没有影响的情况下,实现多个处理器上的负载均衡,并且还可以避免报文丢包、报文乱序等问题。
5.第一方面,提供了一种负载均衡的方法,包括:网卡确定主机中的第一处理器和第二处理器的负载,所述第一处理器的负载指示所述第一处理器处理所述网卡的第一队列中的报文数量,所述第二处理器的负载指示所述第二处理器处理所述网卡的第二队列中的报文数量;所述网卡根据所述第一处理器的负载和所述第二处理器的负载对第一映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整,使得调整之后所述第一处理器上的负载和所述第二处理器上的负载均衡。
6.上述技术方案中,通过对报文和队列之间的映射关系进行调整,从而引导网卡将流量按照一定负载分流到不同的处理器上,从而均衡不同的处理器上的负载。并且,在上述调整的过程中,没有改变网卡端口收发包work和处理器之间的部署关系,因此可以避免报文丢包、报文乱序等问题。
7.在一种可能的实现方式中,所述网卡在确定所述第一处理器上的负载和所述第二处理器上的负载不均衡的情况下,对所述第一映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整。
8.在另一种可能的实现方式中,所述网卡在确定所述第一处理器上的负载和所述第二处理器上的负载不均衡之前,对所述第一映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整。
9.在另一种可能的实现方式中,所述网卡对所述多个报文进行哈希计算,得到所述多个报文分别对应的多个哈希计算结果;所述网卡调整所述多个哈希计算结果和所述第一队列、所述第二队列之间的对应关系,使得调整之后所述第一处理器上的负载和所述第二处理器上的负载均衡。
10.在另一种可能的实现方式中,所述网卡分别获取所述每个所述报文的信息;所述网卡分别根据所述每个报文的五元组信息以及哈希函数确定所述每个报文对应的哈希值。
11.在另一种可能的实现方式中,所述报文的信息包括以下中的一种或任意多种的组合:所述报文的源互联网ip地址、所述报文的目的ip地址、所述报文的源端口号、所述报文的目的端口号、所述报文的协议类型。
12.第二方面,提供了一种载均衡的装置,包括:确定模块、调整模块,
13.确定模块,用于确定主机中的第一处理器和第二处理器的负载,所述第一处理器的负载指示所述第一处理器处理所述网卡的第一队列中的报文数量,所述第二处理器的负载指示所述第二处理器处理所述网卡的第二队列中的报文数量;
14.调整模块,用于根据所述第一处理器的负载和所述第二处理器的负载对第一映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整,使得调整之后所述第一处理器上的负载和所述第二处理器上的负载均衡。
15.在一种可能的实现方式中,所述调整模块具体用于:在确定所述第一处理器上的负载和所述第二处理器上的负载不均衡的情况下,对所述第一映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整。
16.在另一种可能的实现方式中,所述调整模块具体用于:在确定所述第一处理器上的负载和所述第二处理器上的负载不均衡之前,对所述第一映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整。
17.在另一种可能的实现方式中,所述调整模块具体用于:对所述多个报文进行哈希计算,得到所述多个报文分别对应的多个哈希计算结果;调整所述多个哈希计算结果和所述第一队列、所述第二队列之间的对应关系,使得调整之后所述第一处理器上的负载和所述第二处理器上的负载均衡。
18.在另一种可能的实现方式中,所述调整模块具体用于:分别获取所述每个所述报文的信息;分别根据所述每个报文的五元组信息以及哈希函数确定所述每个报文对应的哈希值。
19.在另一种可能的实现方式中,所述报文的信息包括以下中的一种或任意多种的组合:所述报文的源互联网ip地址、所述报文的目的ip地址、所述报文的源端口号、所述报文的目的端口号、所述报文的协议类型。
20.第二方面和第二方面的任意一个可能的实现方式的有益效果和第一方面以及第一方面的任意一个可能的实现方式的有益效果是对应的,对此,不再赘述。
21.第三方面,提供了一种网卡,包括:处理器和存储器,所述处理器运行所述存储器中的指令,使得所述计算设备执行如上述第一方面或第一方面的任意一种可能的实现方式中所执行的方法步骤。
22.第四方面,提供了一种服务器,包括如上述第二方面或第二方面的任意一种可能的实现方式中的网卡。
23.第五方面,提供了一种计算机可读存储介质,包括指令;所述指令用于实现如第一方面或第一方面的任意一种可能的实现方式中所执行的方法步骤。
24.可选地,作为一种实现方式,上述存储介质具体可以是非易失性存储介质。
25.第六方面,提供一种芯片,该芯片获取指令并执行该指令来实现上述第一方面以及第一方面的任意一种实现方式中的方法。
26.可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行上述第一方面以及第一方面的任意一种实现方式中的方法。
27.可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于执行第一方面以及第一方面中的任意一种实现方式中的方法。
附图说明
28.图1是本技术实施例提供的一种场景示意图。
29.图2是本技术实施例提供的一种负载均衡的方法的示意性流程图。
30.图3是本技术实施例提供的另一种负载均衡的方法的示意性流程图。
31.图4是本技术实施例提供的一种调整之前的映射关系示意图。
32.图5是本技术实施例提供的一种调整之前的cpu0和cpu1的负载示意图。
33.图6是本技术实施例提供的一种调整之后的映射关系示意图。
34.图7是本技术实施例提供的一种调整之后的cpu0和cpu1的负载示意图。
35.图8是本技术实施例提供的一种负载均衡的装置800的示意性框图。
具体实施方式
36.下面将结合附图,对本技术中的技术方案进行描述。
37.本技术将围绕包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
38.另外,在本技术实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
39.本技术实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
40.本技术实施例描述的网络架构以及业务场景是为了更加清楚地说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
41.在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的
不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
42.本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:包括单独存在a,同时存在a和b,以及单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
43.下面结合图1,对适用于本技术实施例的一种应用场景进行详细描述。
44.图1是本技术实施例提供的一种场景示意图。如图1所示,该场景中可以包括主机210和网卡220。下面分别对各个设备进行详细描述。
45.1、主机210
46.主机210中可以包括至少一个处理器211以及存储器212。
47.可选地,主机210中还包括系统总线213。其中,至少一个处理器211和存储器212分别与系统总线213连接。
48.处理器211能够通过系统总线213访问存储器212,例如,处理器211能够通过系统总线在存储器212中进行数据读写或代码执行。该系统总线213例如可以是快速路径互连(quick path interconnect,qpi)或超路径互连(ultra path interconnect,upi)等。所述系统总线213分为地址总线、数据总线、控制总线等。为便于表示,图1中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
49.一种可能的实现方式,处理器211的功能主要是解释计算机程序的指令(或者说,代码)以及处理计算机软件中的数据。其中,该计算机程序的指令以及计算机软件中的数据能够保存在存储器212中。
50.处理器211是主机210的运算核心和控制核心(control unit)。处理器211中可以包括多个处理器核(core)。处理器211中所有的计算、接受命令、存储命令、处理数据都由处理器核(core)执行。处理器核(core)分别独立地运行程序指令,利用并行计算的能力加快程序的运行速度。处理器核(core)具有固定的逻辑结构,例如,包括一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元。
51.可选地,处理器211可能是集成电路芯片,并具有信号的处理能力。作为示例而非限定,处理器110是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。其中,通用处理器是微处理器等。例如,该处理器110是中央处理单元(central processing unit,cpu)。
52.存储器212是主机210的主存(也可以称为主机210的内存)。存储器212通常用来存放操作系统中各种正在运行的软件程序、上层应用下发的输入输出(input output,io)命令以及与外存交换的信息等。为了提高处理器211的访问速度,存储器212需要具备访问速
度快的优点。在一些计算机系统架构中,采用动态随机存取存储器(dynamic random access memory,dram)作为存储器212。处理器211能够通过内存控制器(图1中未示出)高速访问存储器212,对存储器212中的任意一个存储单元进行读操作和写操作。
53.还应理解,本技术实施例中的存储器212可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,ram)可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
54.2、网卡(network interface card)220
55.应理解,网卡也可以称为网络接口控制器(network interface controller,nic)或网络适配器(network adapter)。
56.网卡220用于实现主机210与通信网络中的其他服务器(图1中未示出)之间的通讯。网卡220可以内置在主机210中,或者还可以作为主机210的外接设备,并通过接口与主机210连接。该接口例如可以是总线和接口标准(peripheral component interface express,pcie)接口。
57.为了便于描述,图1中以网卡220作为主机210的外接设备进行描述。
58.网卡220也可以包括存储器、处理器。可选地,网卡还可以包括总线。网卡的内部结构可以与主机类似,具体的请参考上文对主机中各部分的描述,此处不再赘述。
59.主机210可以通过远程直接数据存取(remote direct memory access,rdma)技术访问网卡220的存储器中存储的数据。同样的,网卡220也可以通过rdma技术访问主机210的存储器212中存储的数据。
60.应理解,rdma是将一个设备的内存中存储的数据快速传输至其他设备的内存中,而无需双方操作系统介入的一种内存访问技术。rdma技术可以适用于高吞吐、低延迟的网络通信,尤其适合在大规模并行计算机集群中使用。
61.非统一内存访问(non-uniform memory access,numa)架构是一种关于多个cpu如何访问内存的架构模型。在numa架构中,主机210中的一个物理cpu(一般包含多个逻辑cpu或者说多个cpu核)构成一个numa。这个numa不仅包括cpu,还包括一组内存插槽。也就是说,主机210中的一个物理cpu以及一块内存构成了一个numa。
62.应理解,每个cpu可以访问自己numa下的内存,也可以访问其他numa的内存,但是访问速度是不一样的,cpu访问自己numa下的内存的速度更快。
63.以虚拟交换机(virtual switch,vswitch)转发架构为例,主机210中的cpu和网卡端口队列收发包work是静态部署的。应理解,网卡端口队列收发包work用于从网卡220的队列中获取存储的报文,并通过rdma技术将该报文存储在对应的内存中,以便于主机210的
cpu从该内存中获取报文并进行处理。也就是说,一个cpu上的网卡端口队列收发包work用于反映该cpu上的负载情况。
64.在第五代移动网络(5th generation mobile networks,5g)电信云应用场景中,用户态转发需要具有低延时和高吞吐的要求。由于网卡端口队列收发包work与主机210中的cpu是静态部署的,如果网卡220端口队列的流量负载不均,无法动态地分配cpu资源,导致不同numa中的cpu负载不均衡,影响报文转发的时延及吞吐性能。
65.因此,如何实现主机210中的多个cpu的负载均衡成为亟需要解决的问题。
66.相关的技术方案中,通过实现网卡端口队列收包work的跨numa动态迁移,以达到cpu负载的动态均衡。例如,在流量不均的时候,两个numa中的两个cpu负载一个达到95%,一个达到50%,导致cpu资源利用不均衡。当前相关的技术方案中将负载高的cpu1中的端口收发包work3动态迁移到负载低的cpu2中,使得两个cpu的负载趋于均衡。
67.但是,上述相关的技术方案会存在以下几个问题:1、网卡端口队列收发包work动态迁移,在迁移过程中就可能存在该work服务的端口队列由于收包不及时而导致的丢包。2、网卡端口队列收发包work动态迁移,在迁移过程中由于该work服务的端口队列的报文已经在cpu1处理了,迁移到cpu2时,该work服务的端口队列报文可能也会并发的在cpu2处理,存在报文乱序。3、将numa0上cpu1的端口队列收发包work迁移到numa1上的cpu2,work在cpu2上运行时需要访问numa0的内存,存在跨numa的内存访问(mbuf、que及work内存等),work在cpu2上的运行开销变大,影响性能。
68.有鉴于此,本技术实施例提供了一种负载均衡的方法,可以在实现主机中的多个cpu的负载均衡的同时,对系统的性能没有影响,并且可以避免相关技术方案中的丢包、报文乱序等问题。
69.下面结合图2,对本技术实施例提供的一种负载均衡的方法进行详细的介绍。
70.图2是本技术实施例提供的一种负载均衡的方法的示意性流程图。如图2所示,该方法可以包括步骤210-220,下面分别对步骤210-220进行详细描述。
71.步骤210:网卡确定主机中的第一处理器和第二处理器的负载。
72.其中,第一处理器的负载指示所述第一处理器处理所述网卡的第一队列中的报文数量。所述第二处理器的负载指示所述第二处理器处理所述网卡的第二队列中的报文数量。
73.步骤220:所述网卡根据所述第一处理器的负载和所述第二处理器的负载对第一映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整,使得调整之后所述第一处理器上的负载和所述第二处理器上的负载均衡。
74.上述技术方案中,通过对报文和队列之间的映射关系进行调整,从而引导网卡将流量按照一定负载分流到不同的处理器上,从而均衡不同的处理器上的负载。并且,在上述调整的过程中,没有改变网卡端口收发包work和处理器之间的部署关系,因此可以避免报文丢包、报文乱序等问题。
75.下面结合图3中的例子,详细描述负载均衡的方法的一种具体实现方式。应理解,图3的例子仅仅是为了帮助本领域技术人员理解本技术实施例,而非要将申请实施例限制于图3的具体数值或具体场景。本领域技术人员根据所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本技术实施例的范围内。
76.图3是本技术实施例提供的另一种负载均衡的方法的示意性流程图。如图3所示,该方法可以包括步骤310-340,下面分别对步骤310-340进行详细描述。
77.步骤310:网卡220接收报文并计算报文的哈希值。
78.网卡220在接收到报文之后,可以先将其缓存在网卡220的缓存(buffer)中,然后再对报文进行解析,提取报文的五元组信息。应理解,报文的五元组信息可以包括:报文的源互联网协议(internet protocol,ip)地址、目的ip地址、源端口(port)、目的端口(port)、协议号(protocol number)。
79.网卡220在获取到报文的五元组信息后,可以将该五元组信息作为接收方缩放(receive side scaling,rss)的哈希键(hash key)输入到hash函数中进行计算,得到该报文对应的哈希值。
80.应理解,rss是一种网络驱动程序技术,可在多处理器系统中的多个cpu之间有效分配网络接收处理。rss也称为多队列接收,它在多个基于硬件的接收队列之间分配网络接收处理,从而允许多个cpu处理入站网络流量。rss可用于缓解单个cpu过载导致的接收中断处理瓶颈,并减少网络延迟。
81.rss的作用是在每个传入的数据包上发出带有预定义哈希键的哈希函数。哈希函数将数据包的五元组信息作为键并计算哈希值。
82.步骤320:网卡220根据所述报文的哈希值确定收包队列(queue)的标识(identity,id),并将该报文存储在对应的收包队列中。
83.网卡220在计算得到报文的哈希值之后,可以根据映射关系确定该报文的哈希值对应的收包队列的id,从而将该报文存储在所述收包队列中。
84.作为示例,上述映射关系如图4所示。参见图4,报文的哈希值和收包队列的id之间有一一对应的映射关系。例如,哈希值为0的报文需要存储在id为0的收包队列中。又如,哈希值为1的报文需要存储在id为1的收包队列中。又如,哈希值为2的报文需要存储在id为0的收包队列中。又如,哈希值为3的报文需要存储在id为1的收包队列中,依次类推。
85.应理解,在图4中,收包队列和运行在主机210的cpu中的work之间也是一一对应的关系。也就是说,主机210的cpu中的一个work对应一个网卡220的收包队列,该work用于从其对应的收包队列中获取存储的报文,并通过运行该work的cpu对获取的报文进行处理。例如,work0对应id为0的收包队列,work1对应id为1的收包队列。
86.假设每个报文的流量负载均为10%,哈希值为0、2、4的报文同属于id为0的收包队列,因此,和id为0的收包队列对应的work0的流量负载为30%。同样的,和id为1的收包队列对应的work1的流量负载也为30%。
87.需要说明的是,该假定主要通过测试仪发包的时候对报文五元组的某个值进行递增操作,使得测试仪打流的时候每条流的流量大小相同,这样,rss hash之后每条流量负载都是一样的,例如,每条流量负载都为10%。
88.步骤330:网卡220确定主机210中的cpu负载不均衡。
89.假设主机210中包括两个cpu。例如,参见图5,cpu0中运行有work0、work1、work2,cpu1中运行有work3、work4、work5。work和网卡220的收包队列一一对应,例如,cpu0中的work0与id为0的收包队列对应,用于获取id为0的收包队列中的报文。又如,cpu1中的work3与id为1的收包队列对应,用于获取id为1的收包队列中的报文。
90.如图5所示,调整之前,根据图4所示的映射关系,work0的流量负载为30%、work1的流量负载为40%、work2的流量负载为20%,因此,cpu0的负载为90%。work3的流量负载为30%、work4的流量负载为10%、work5的流量负载为10%,因此,cpu1的负载为50%。由此可见,cpu0和cpu1出现负载不均衡的问题。
91.步骤340:网卡220对流量进行迁移,使得主机210中的cpu负载均衡。
92.如图5所示,在cpu0和cpu1的负载不均衡时,可以动态的将cpu0上的一部分负载迁移到cpu1上,从而实现cpu0和cpu1的负载均衡。
93.具体的,假设work0和work3分别对应网卡220端口上的id为0的收包队列和id为1的收包队列,其他work(例如,work1、work2、work4、work5)不属于网卡220端口上的队列,因此,本技术实施例中需要对work0和work3进行流量均衡,其他work(例如,work1、work2、work4、work5)不做流量均衡操作。
94.为了便于描述,可以将id为0的收包队列简称为队列0,将id为1的收包队列简称为队列1。
95.参见图6,通过计算需要将20%的负载从cpu0转移到cpu1上,这样,cpu0的负载为70%,cpu1的负载为70%,就可以实现cpu0和cpu1的负载均衡。具体的,cpu0上运行的work0对应队列0,队列0中存储有哈希值分别为0、2、4的报文,因此,可以将队列0中的其中两个报文转移到cpu1上运行的work3中去。
96.例如,如图6所示,可以通过修改报文和队列id之间的映射关系,使得报文的哈希值分别为0、2的报文对应队列1。这样,哈希值分别为0、2、1、3、5的报文均需要存储在队列1中,哈希值为4的报文需要存储在队列0中。cpu1上运行的work3对应队列1,work3可以从队列1中获取哈希值分别为0、2、1、3、5的报文,work3的流量负载由原来的30%变为50%。同样的,修改映射关系后,队列0中仅存储哈希值为4的报文,cpu0上运行的work0对应队列0,work0可以从队列0中获取哈希值为4的报文,work0的流量负载由原来的30%变为10%。
97.由此可见,调整之后,如图7所示,cpu0的负载由原来的90%变为70%,cpu1的负载由原来的50%变为70%,实现了cpu0和cpu1的负载均衡,且不存在由于work的迁移所导致的丢包、报文乱序等问题。
98.可选地,在一些实施例中,还可以结合机器学习、深度学习等人工智能(artificial intelligence,ai)技术,观察一段时间内cpu的负载,可以提前根据本技术实施例提供的方法对cpu的负载进行均衡调整,避免在cpu的负载出现不均衡的情况下再进行调整。
99.上文结合图1至图7,详细描述了本技术实施例中负载均衡的方法,下面将结合图8,详细描述本技术的装置实施例。
100.图8是本技术实施例提供的一种负载均衡的装置800的示意性框图。负载均衡的装置800能够执行图2、图3所示的方法中网卡执行的各个步骤,为了避免重复,此处不再详述。负载均衡的装置800包括:确定模块810,调整模块820,
101.确定模块810,用于确定主机中的第一处理器和第二处理器的负载,所述第一处理器的负载指示所述第一处理器处理所述网卡的第一队列中的报文数量,所述第二处理器的负载指示所述第二处理器处理所述网卡的第二队列中的报文数量;
102.调整模块820,用于根据所述第一处理器的负载和所述第二处理器的负载对第一
映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整,使得调整之后所述第一处理器上的负载和所述第二处理器上的负载均衡。
103.可选地,所述调整模块820具体用于:在确定所述第一处理器上的负载和所述第二处理器上的负载不均衡的情况下,对所述第一映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整。
104.可选地,所述调整模块820具体用于:在确定所述第一处理器上的负载和所述第二处理器上的负载不均衡之前,对所述第一映射关系中多个报文和所述第一队列、所述第二队列之间的映射关系进行调整。
105.可选地,所述调整模块820具体用于:对所述多个报文进行哈希计算,得到所述多个报文分别对应的多个哈希计算结果;调整所述多个哈希计算结果和所述第一队列、所述第二队列之间的对应关系,使得调整之后所述第一处理器上的负载和所述第二处理器上的负载均衡。
106.可选地,所述调整模块820具体用于:分别获取所述每个所述报文的信息;分别根据所述每个报文的五元组信息以及哈希函数确定所述每个报文对应的哈希值。
107.可选地,所述报文的信息包括以下中的一种或任意多种的组合:所述报文的源互联网ip地址、所述报文的目的ip地址、所述报文的源端口号、所述报文的目的端口号、所述报文的协议类型。
108.上述描述的各示例的模块,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
109.这里的负载均衡的装置800可以以功能模块的形式体现。这里的术语“模块”可以通过软件和/或硬件形式实现,对此不作具体限定。
110.例如,“模块”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(application specific integrated circuit,asic)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
111.本技术实施例还提供一种芯片,该芯片获取指令并执行该指令来实现上述的方法。
112.可选地,作为一种实现方式,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,执行上述方法。
113.可选地,作为一种实现方式,该芯片还可以包括存储器,该存储器中存储有指令,该处理器用于执行该存储器上存储的指令,当该指令被执行时,该处理器用于执行上述方法。
114.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有指令,该指令用于上述方法实施例中的方法。
115.本技术实施例还提供一种包含指令的计算机程序产品,该指令用于实现上述方法实施例中的方法。
116.一种实现举例,处理器可以为中央处理单元(central processing unit,cpu),该
处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
117.一种实现举例,存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,ram)可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
118.在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
119.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
120.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
121.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1