CN104901898B - 一种负载均衡方法及装置 - Google Patents

一种负载均衡方法及装置 Download PDF

Info

Publication number
CN104901898B
CN104901898B CN201510309271.XA CN201510309271A CN104901898B CN 104901898 B CN104901898 B CN 104901898B CN 201510309271 A CN201510309271 A CN 201510309271A CN 104901898 B CN104901898 B CN 104901898B
Authority
CN
China
Prior art keywords
cpu core
load
data packet
test item
score value
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
CN201510309271.XA
Other languages
English (en)
Other versions
CN104901898A (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.)
Neusoft Corp
Original Assignee
Neusoft Corp
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 Neusoft Corp filed Critical Neusoft Corp
Priority to CN201510309271.XA priority Critical patent/CN104901898B/zh
Publication of CN104901898A publication Critical patent/CN104901898A/zh
Application granted granted Critical
Publication of CN104901898B publication Critical patent/CN104901898B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明实施例公开了一种负载均衡方法,所述方法包括:根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力;判断所述负载处理压力是否高于或等于预设的最高处理能力;如果是,则将当前时间周期内接收到的数据包发送至其他CPU核进行处理。本发明实施例还公开了一种负载均衡装置。本发明以数据包为单位来在CPU核之间均衡负载,使更多的CPU核参与到处理该进程中来,而不是只有少数几个CPU进行处理,从而真正达到均衡负载的目的,提高了系统性能,也节约了系统资源。

Description

一种负载均衡方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种负载均衡方法及装置。
背景技术
为了提升计算机的性能,现代计算机一般采用多核架构处理数据。当基于多核架构的网络设备接收到一个网络数据包时,相关网卡将该网络数据包分配给CPU核处理。为了达到不出现一些CUP核百分之百运转而另一些CPU核却无所事事,极大浪费CPU资源的情况的目的,各种各样的负载均衡技术应用而生,即如何将负载按照一定策略合理的分配到CUP核上。
例如,在SMP(Symmetric Multi-Processing,对称多处理器结构)环境下,经典的linux系统将收到的数据包分到CPU核对应的进程中。每个进程都被安排到一个CPU核的可执行队列中,如果出现不均衡的状况,linux系统通过将进程从一个CPU核的可执行队列迁移到另一个CPU核的可执行队列中来保持CPU核之间的负载均衡。也就是说,linux系统是以进程为单位进行负载均衡的。
然而,对于一些用途相对单一、网络通信要求较高的高端网络通信而言(例如防火墙只处理网络流量数据),由于需要的进程很少,需要的进程很少,在这种情况下,如果以进程为单位进行负载均衡,就会出现只有一个或很少的几个CPU核进行运转,其他CPU核出现无所事事的情况,导致负载反而不均衡。
发明内容
为了解决现有技术中以进程为单位进行负载均衡的方法对于高端网络通信无效的技术缺陷,本发明提供了一种针对高端网络通信的负载均衡方法和装置,实现了提高高端网络通信的系统资源利用效率。
本发明实施例提供了一种负载均衡方法,所述方法包括:
根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力;
判断所述负载处理压力是否高于或等于预设的最高处理能力;
如果是,则将当前时间周期内接收到的数据包发送至其他CPU核进行处理。
优选的,所述第一CPU核接收的数据包至少包括以下一种:
所述第一CPU核接收的来自所在numa的物理网卡的数据包;
所述第一CPU核接收的来自其他numa的物理网卡的数据包;
所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
所述第一CPU核发送的数据包至少包括以下一种:
所述第一CPU核发送至所在numa的物理网卡的数据包;
所述第一CPU核发送至其他numa的物理网卡的数据包;
所述第一CPU核发送至所在numa内其他CPU核的数据包;
所述第一CPU核发送至其他numa的CPU核的数据包。
优选的,所述第一CPU核接收或发送一种数据包称为一个判定要素,所述第一CPU核对应的测试项至少为一个,每个测试项均至少包括一个判定要素;
根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力包括:
确定所述测试项中每个判定要素的分值,根据每个判定要素的分值以及上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分值;
根据各个测试项的分值计算所述第一CPU核的负载处理压力分值。
优选的,所述根据各个测试项的分值计算所述第一CPU核的负载处理压力分值的计算方式如下:
M=a1x1+a2x2+...+anxn
其中,所述M为所述第一CPU核的负载处理压力分值,所述xi[i∈(1,n)]为第i个测试项的分值,所述ai[i∈(1,n)]为预设的第i个测试项的权重,且a1+a2+...+an=1,所述n为测试项的数量。
优选的,所述方法还包括:
当所述第一CPU核在上一时间周期内处于运行稳定状态且系统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重,使系统达到负载稳定状态,其中,所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状态,所述负载稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状态;
所述根据各个测试项的分值计算所述第一CPU核的负载处理压力分值包括:
根据各个测试项的分值以及重新确定的对应的权重计算所述第一CPU核的负载处理压力分值。
优选的,所述第一CPU核在上一时间周期内处于运行稳定状态包括:
获取所述第一CPU核在上一时间周期内各时段内所述测试项的权重,所述测试项的权重根据所述第一CPU核各个测试项在上一时间周期内各时段内接收或发送的数据包的数量和/或流量进行确定;
判断所述测试项的权重在所述上一时间周期内是否大致相同,如果是,则认为所述第一CPU核在上一时间周期内处于运行稳定状态。
优选的,所述测试项的权重根据所述第一CPU核各个测试项在上一时间周期内各时段内接收或发送的数据包的数量和/或流量进行确定包括:
根据各个测试项的数据包的数量和/或流量占全部测试项的比重重新确定所述第一CPU核的各个测试项的权重。
优选的,所述根据各个测试项的数据包的数量和/或流量占全部测试项的比重重新确定所述第一CPU核的各个测试项的权重还包括:
选取所述测试项的数据包的数量或流量最少的判定要素参与所述测试项权重的计算。
优选的,所述重新确定所述第一CPU核的各个测试项的权重包括:
将所述测试项在上一时间周期内各时段的权重的均值作为所述测试项的新权重;
或,在所述测试项在上一时间周期内各时段的权重中选择一个权重值作为所述测试项的新权重。
优选的,所述判断所述测试项的权重在所述上一时间周期内是否大致相同包括:
判断上一时间周期内各时段的所述测试项的各个权重的标准差是否小于或等于第一预设标准差,如果是,则认为所述测试项的权重在所述上一时间周期内大致相同。
优选的,所述系统没有处于负载稳定状态包括:
判断各个CPU核在上一时间周期内各时段的平均丢包率是否大致相同,如果否,则认为系统没有处于负载稳定状态。
优选的,所述判断各个CPU核在上一时间周期内各时段的平均丢包率是否大致相同包括:
判断各个CPU核在上一时间周期内各时段的平均丢包率的标准差是否小于或等于第二预设标准差,如果是,则认为各个CPU核的平均丢包率大致相同。
优选的,所述将当前时间周期内接收到的数据包发送至其他CPU核进行处理包括:
判断所述第一CPU核所在的numa中是否存在能够处理负载的第二CPU核;
如果存在,则将所述当前时间周期内接收到的数据包转发至所述第二CPU核。
优选的,当所述第一CPU核所在的numa中不存在能够处理负载的第二CPU核时,所述方法还包括:
判断其他numa中是否存在能够处理负载的第三CPU核;
如果存在,则将所述接收到的数据包转发至所述第三CPU核。
本发明实施例还提供了一种负载均衡装置,所述装置包括:负载处理压力确定单元、判断单元和发送单元,其中所述负载处理压力确定单元与所述判断单元连接,所述判断单元与所述发送单元连接;
所述负载处理压力确定单元,用于根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力;
所述判断单元,用于判断所述负载处理压力是否高于或等于预设的最高处理能力,如果是,则激活所述发送单元;
所述发送单元,用于将当前时间周期内接收到的数据包发送至其他CPU核进行处理。
优选的,所述第一CPU核接收的数据包至少包括以下一种:
所述第一CPU核接收的来自所在numa的物理网卡的数据包;
所述第一CPU核接收的来自其他numa的物理网卡的数据包;
所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
所述第一CPU核发送的数据包至少包括以下一种:
所述第一CPU核发送至所在numa的物理网卡的数据包;
所述第一CPU核发送至其他numa的物理网卡的数据包;
所述第一CPU核发送至所在numa内其他CPU核的数据包;
所述第一CPU核发送至其他numa的CPU核的数据包。
优选的,所述第一CPU核接收或发送一种数据包称为一个判定要素,所述第一CPU核对应的测试项至少为一个,每个测试项均至少包括一个判定要素;
所述负载处理压力确定单元包括:测试项分值计算单元和负载处理压力分值计算单元,所述测试项分值计算单元与所述负载处理压力分值计算单元连接,所述负载处理压力分值计算单元与所述判断单元连接;
所述测试项分值计算单元,用于确定所述测试项中每个判定要素的分值,根据每个判定要素的分值以及上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分值;
所述负载处理压力分值计算单元,用于根据各个测试项的分值计算所述第一CPU核的负载处理压力分值。
优选的,所述负载处理压力分值计算单元,用于根据各个测试项的分值计算所述第一CPU核的负载处理压力分值的计算方式如下:
M=a1x1+a2x2+...+anxn
其中,所述M为所述第一CPU核的负载处理压力分值,所述xi[i∈(1,n)]为第i个测试项的分值,所述ai[i∈(1,n)]为预设的第i个测试项的权重,且a1+a2+...+an=1,所述n为测试项的数量。
优选的,所述负载处理压力分值计算单元包括:权重确定单元和计算单元;
其中,所述测试项分值计算单元与所述权重确定单元连接,所述权重单元与所述计算单元连接;
所述权重确定单元,用于当所述第一CPU核在上一时间周期内处于运行稳定状态且系统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重,使系统达到负载稳定状态,其中,所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状态,所述负载稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状态;
所述计算单元,用于根据各个测试项的分值以及重新确定的对应的权重计算所述第一CPU核的负载处理压力分值。
优选的,所述发送单元包括:第二CPU核判断单元、第二CPU核发送单元;
所述判断单元与所述第二CPU核判断单元连接,所述第二CPU核判断单元与所述第二CPU核发送单元连接;
所述第二CPU核判断单元,用于判断所述第一CPU核所在的numa中是否存在能够处理负载的第二CPU核,如果存在,则激活所述第二CPU核发送单元;
所述第二CPU核发送单元,用于将所述当前时间周期内接收到的数据包转发至所述第二CPU核。
优选的,所述发送单元还包括第三CPU核判断单元和第三CPU核发送单元;
所述第二CPU核判断单元与所述第三CPU核判断单元连接,所述第三CPU核判断单元与所述第三CPU核发送单元连接;
所述第二CPU核判断单元,还用于当所述第一CPU核所在的numa中不存在能够处理负载的第二CPU核时激活所述第三CPU核判断单元;
所述第三CPU核判断单元,用于判断其他numa中是否存在能够处理负载的第三CPU核,如果存在,则激活所述第三CPU核发送单元;
所述第三CPU核发送单元,用于将所述接收到的数据包转发至所述第三CPU核。
相对于现有技术,本发明的优点在于:
现有技术中,传统的linux系统在处理CPU核的负载均衡时是以进程为单位进行迁移的,即一个进程的所有数据包都从一个CPU核的可执行队列转移到另外一个CPU核的可执行队列中进行处理,这种均衡负载的方式对于进程数量较少的高端通信网络而言作用不大,其效果是少数的CPU核处理较多的负载,多数CPU核处于空闲状态,达不到负载均衡的目的,也浪费了很多系统资源。
对于高端网络通信而言,一个进程会包含很多次数据包的接收和转发,对于该进程而言,采用本实施例的以数据包为单位来在CPU核之间均衡负载的方法,可以使更多的CPU核参与到处理该进程中来,而不是只有一个CPU进行处理,从而真正达到均衡负载的目的,提高了系统性能,也节约了系统资源。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明提供的一种负载均衡方法实施例一的流程图;
图2为本发明提供的一种负载均衡方法实施例二的流程图;
图3为本发明提供的一种负载均衡方法实施例二的实例结果图;
图4为本发明提供的一种负载均衡装置实施例一的结构框图;
图5为本发明提供的一种负载均衡装置实施例二的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
方法实施例一:
参见图1,该图为本发明提供的一种负载均衡方法实施例一的流程图。
本实施例提供的负载均衡方法包括如下步骤:
步骤S101:根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力。
在本发明中,高端通信网络设备是指对网络性能要求较高且用途相对简单的通信网络设备,例如交换机、路由器、防火墙等。现代高端网络通信设备通常采用的多核架构为numa(Non-Uniform Memory Access,非统一内存访问)架构,这种架构的特点是各个numa下的CPU核、内存、网卡等硬件设备是独立的。举例而言,一个系统包括两个numa,每个numa内包括8个CPU核和2块物理网卡。其中,每块物理网卡均有4个接口,用于接收和发送数据包,这16个CPU核分别与这4块物理网卡中的每一块网卡进行连接,各个CPU核之间也相互连接。
对于numa架构的第一CPU核,其接收的数据包至少来自以下一种途径:
所述第一CPU核接收的来自所在numa的物理网卡的数据包;
所述第一CPU核接收的来自其他numa的物理网卡的数据包;
所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
对应的,所述第一CPU核发送的数据包也至少包括以下一种途径:
所述第一CPU核发送至所在numa的物理网卡的数据包;
所述第一CPU核发送至其他numa的物理网卡的数据包;
所述第一CPU核发送至所在numa内其他CPU核的数据包;
所述第一CPU核发送至其他numa的CPU核的数据包。
本实施例根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力,具体如何确定,本发明不做具体限定。
步骤S102:判断所述负载处理压力是否高于或等于预设的最高处理能力,如果是,则执行步骤S103。
本实施例通过判断所述第一CPU核在上一时间周期内的负载处理压力是否高于或等于预设的最高处理能力,如果是,则将当前时间周期内接收到的数据包转发至其他CPU核进行处理;如果否,则说明所述第一CPU核还有处理负载的能力,因此可以继续处理当前时间周期内接收到的数据包。
步骤S103:将当前时间周期内接收到的数据包发送至其他CPU核进行处理。
现有技术中,传统的linux系统在处理CPU核的负载均衡时是以进程为单位进行迁移的,即一个进程的所有数据包都从一个CPU核的可执行队列转移到另外一个CPU核的可执行队列中进行处理,这种均衡负载的方式对于进程数量较少的高端通信网络而言作用不大,其效果是少数的CPU核处理较多的负载,多数CPU核处于空闲状态,达不到负载均衡的目的,也浪费了很多系统资源。
对于高端网络通信而言,一个进程会包含很多次数据包的接收和转发,对于该进程而言,采用本实施例的以数据包为单位来在CPU核之间均衡负载的方法,可以使更多的CPU参与到处理该进程中来,而不是只有一个CPU进行处理,从而真正达到均衡负载的目的,提高了系统性能,也节约了系统资源。
方法实施例二
参见图2,该图为本发明提供的一种负载均衡方法实施例二的流程图。
本实施例提供的负载均衡方法包括如下步骤:
步骤S201:确定测试项中每个判定要素的分值,根据每个判定要素的分值以及上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分值。
步骤S202:根据各个测试项的分值计算所述第一CPU核的负载处理压力分值。
现有技术中通常通过检测CPU占用率来衡量CPU核的负载处理压力,即CPU占用率越高,CPU核的负载处理压力越大。但是对于以轮训方式接收数据包的高端网络设备而言,这种方法无法反应出CPU核真正的负载处理压力,因为轮训方式是指CPU核周期性的向网卡和其他CPU核询问是否有其需要接收的数据包,这种询问并不属于处理数据包的范畴,反应不出对负载的处理能力,因此,利用CPU占用率来衡量CPU核的负载处理压力并不准确。
本实施例采用计分的方式来确定所述第一CPU核的负载处理压力。
首先计算各个测试项的分值。在本实施例中,用于计算所述第一CPU核的负载处理压力的测试项至少包括一个,每个测试项中至少包括一个判定要素,所述判定要素是指所述第一CPU接收或发送一种数据包。其中,发送和接收的数据包种类在方法实施例一中已经说明,在此不再赘述。每个测试项中可以仅包括数据包发送的判定要素,也可以仅包括数据包接收的判定要素,还可以既包括数据包发送又包括接收的判定要素。当测试项中的判定要素既包括数据包发送又包括接收时,发送数据包的种类和接收数据包的种类可以相同,也可以不同,例如,假设一个测试项中接收的数据包来自第一CPU核所在numa内的物理网卡,那么发送的数据包可以是发送至第一CPU核所在numa内的物理网卡的数据包,也可以是发送至第一CPU核所在numa内其他核的数据包,或者是发送至其他numa内的物理网卡的数据包,还可以是发送至其他numa内的CPU核的数据包。
计算测试项的分值首先需要确定所述测试项中每个判定要素的分值。各个判定要素对于所述第一CPU核的重要性不同。例如,由于numa架构的特点是不同numa的CPU通信是由专门的通道来完成,跨numa处理数据包的效率要远远小于本numa内CPU的处理效率,因而判定要素为所述第一CPU核接收的或发送至其他numa的物理网卡或其他CPU核的数据包的重要程度小于判定要素为所述第一CPU接收的或发送至本numa的物理网卡或其他CPU核的数据包,因此前者的分值要高于后者。当然,本领域技术人员还可以根据实际应用场景自行设定所述各个判定要素分数的原则,本发明不做具体限定,例如,所有判定要素的分数均相同。
在确定了各个判定要素的分数后,根据每个判定要素的分值以及上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分值。举例而言,假设一个测试项包括两个判定要素,其中一个判定要素是所述第一CPU核接收的来自所在numa的其他CPU核的数据包,分数为1分;另一个判定要素是所述第一CPU的发送至其他numa的CPU核的数据包,分数为0.5分。在一个时间周期内,所述第一CPU接收到1万个来自所在numa的其他CPU核的数据包,且发送了1.2万个数据包至其他numa的CPU核,那么所述测试项的分数为1*1+0.5*1.2=1.6。
再举一个例子,假设测试项以及判定要素分值的设计和上个例子相同,不同的是,在一个时间周期内,所述第一CPU接收的来自所在numa的其他CPU核的数据包的流量为2G,且发送了流量为1G的数据包至其他numa的CPU核,那么所述测试项的分数为1*2+0.5*1=2.5。
在确定了各个测试项的分数后,可以根据公式(1)计算所述第一CPU核的负载处理压力分值:
M=a1x1+a2x2+...+anxn (1)
其中,所述M为所述第一CPU核的负载处理压力分值,所述xi[i∈(1,n)]为第i个测试项的分值,所述ai[i∈(1,n)]为预设的第i个测试项的权重,且a1+a2+...+an=1,所述n为测试项的数量。
在实际应用中,技术人员可以在系统运行初期为每个测试项均设定一个初始权重值,然后在运行过程中根据所述第一CPU核的运行稳定状态和系统的负载稳定状态进行自动调整。所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状态,所述负载稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状态。负载稳定状态是建立在运行稳定状态基础上的,如果单个CPU核没有达到运行稳定状态,系统就不会处于负载稳定状态。在本实施例中,当所述第一CPU核在上一时间周期内处于运行稳定状态且系统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重。而如果所述第一CPU核在上一个时间周期内没有处于运行稳定状态,那么在计算所述第一CPU核的负载处理压力时就不对各测试项的权重进行调整,依旧使用上上个时间周期的权重值进行计算。
具体的,本实施例选取上一个时间周期内的各测试项的权重值来衡量所述第一CPU核是否处于运行稳定状态,当然,可以理解的是,本领域技术人员还可以选取其他指标,本发明不做具体限定。举例而言,若一个时间周期为1分钟,那么可以获取所述测试项每一秒的动态权重,这些权重都是依据同一个算法确定的,因此具有可比性。技术人员可以判断这些动态权重是否大致相同,如果是,则说明所述第一CPU核是处于运行稳定状态的;如果否,则说明所述第一CPU的运行状态不稳定。
本实施例还提供一种动态权重的算法,即根据所述第一CPU核各个测试项在上一时间周期内各时段内接收或发送的数据包的数量和/或流量进行确定,具体的,根据各个测试项的数据包的数量或流量占全部测试项的比重重新确定。例如,用于计算所述第一CPU的负载处理压力分值的测试项包括两个,其中,第一个测试项中的判定要素为所述第一CPU核接收的来自其他numa的物理网卡的数据包,第二个测试项的判定要素为所述第一CPU发送至其他numa的物理网卡的数据包。经过检测,某一秒接收的来自其他numa的物理网卡的数据包的数量为a1,发送至其他numa的物理网卡的数据包的数量为a2,那么,在该秒第一个测试项的权重是a1/(a1+a2),第二个测试项的权重是a2/(a1+a2)。
如果一个测试项中包括多个判定要素,那么具体选择哪个来计算权重本领域技术人员可以自行设定,优选的,选择判定要素中数据包数量或流量最少的参与权重的计算。例如,某测试项的判定要素有两个,分别是第一CPU核接收的来自其他numa的CPU核转发的数据包和发送至其他numa的CPU核的数据包,如果在一秒中测得,前者的数量为b1,后者的数量为b2,且b1>b2,那么选择b2来参与权重的计算,因为它意味着在这1秒内至少有b2个数据包经历了这两个判定要素组成的全部流程,即经历了从其他numa的CPU核转发至所述第一CPU核,又从所述第一CPU核转发至其他numa的CPU核的过程。这样一个完整的流程有利于确定所述第一CPU核的真实的负载处理压力。
另外,关于所述测试项在上一个时间周期内的各个动态权重是否大致相同,本实施例通过判断上一时间周期内各时段的所述测试项的权重的标准差是否小于或等于第一预设标准差来进行确定,如果是,则表明这些动态的权重大致相同。其中,所述标准差(Standard Deviation)也称为标准偏差,计算公式为:
在本实施例的场景中,所述σ为某测试项权重的标准差,所述xi为第i个权重,所述μ为所有权重的均值,所述N为权重的个数。如果一个时间周期为1分钟,每个时间段为1秒钟,那么所述N为60。
当然,可以理解的是,本实施例中利用标准差来判断各个动态权重是否大致相同的技术手段并不构成对本发明的限定,本领域技术人员可以根据实际需要自行设定。
关于系统的负载稳定状态,具体的,在本实施例中,所谓负载稳定状态采用各个CPU核在一个时间周期内各个时段的平均丢包率是否大致相同来衡量。之所以是大致相同,而不是完全相同,是因为每个CPU核的负载情况不同。具体的,本实施例通过判断各个CPU核在上一个时间周期内各时段的平均丢包率的标准差是否小于或等于第二预设标准差,如果是,则认为各个CPU核的平均丢包率大致相同。其中,所述标准差公式(2)中的σ为平均丢包率的标准差,所述xi为第i个CPU核的平均丢包率,所述μ为所有CPU核的平均丢包率的均值,所述N为CPU核的个数。
当然,可以理解的是,本实施例中利用平均丢包率衡量负载稳定状态以及利用标准差来判断各CPU核的平均丢包率是否处于大致相同的状态的方案均不构成对本发明的限定,本领域技术人员还可以根据实际需求自行设定。
在本实施例中,当所述第一CPU核处于运行稳定状态且系统未处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重。在本实施例中,可以将某测试项在上一时间周期内各时段的权重的均值作为该测试项的新权重;或者,由于各时段的权重大致相同,因此也可以在所述测试项在上一时间周期内各时段的权重中选择一个权重值作为所述测试项的新权重。
步骤S203:判断所述负载处理压力是否高于或等于预设的最高处理能力,如果是,则执行步骤S204。
所述预设的最高处理能力分值可以是技术人员自己设计的分值,也可以根据公式(1)的思想进行计算,与计算负载处理压力分值不同的是,在计算最高处理能力分值中各测试项的分值时,可以首先计算极限处理能力分值,所述极限处理能力分值是依据每个判定要素的分值以及一个时间周期内所述第一CPU核接收和/或发送的数据包的最多数量和/或最高流量,这可以通过系统测试获得。预设的最高处理能力分值可以与所述极限处理能力分值相同,也可以比所述极限处理能力分值稍小,例如是极限处理能力分值的90%。
在实际应用中,可以为每个CPU核设立一个转发标签flag,若flag=1表示该CPU核还有处理负载的能力;若flag=0,则表示该CPU不具备处理负载的能力。每个CPU核初始的flag值均为1。当一个CPU核的负载处理压力达到预设的最高处理能力时,则将flag由1置为0。若经过检测,该CPU的核的负载处理压力小于预设的最高处理能力时,则将flag由0置为1。
当所述负载处理压力高于或等于预设的最高处理能力时,需要将当前时间周期内接收到的数据包转发至其他CPU核进行处理。那么具体转发到哪个CPU核呢?根据numa架构的特点:跨numa数据包处理效率低于本numa数据处理效率,在本实施例中,优先将数据包转发至所述第一CPU核所在的numa的其他CPU核进行处理,如果所在numa的其他CPU核的负载处理压力均高于或等于其对应的预设最高处理能力,即不能再处理负载时,再把数据包发给其他numa内的有负载处理能力的CPU核进行处理,从而提高数据包的处理效率,提升系统性能。
步骤S204:判断所述第一CPU核所在的numa中是否存在能够处理负载的第二CPU核,如果是,则执行步骤S205;如果否,则执行步骤S206。
步骤S205:将所述当前时间周期内接收到的数据包转发至所述第二CPU核,流程结束。
步骤S206:判断其他numa中是否存在能够处理负载的第三CPU核,如果是,则执行步骤S207。
步骤S207:将所述接收到的数据包转发至所述第三CPU核,流程结束。
本实施例有如下有益效果:
1、相对于现有技术中通过检测CPU核占用率来衡量负载处理压力的方法,本实施例采用计分的方式来确定CPU核的负载处理压力,这种计分方式只关心数据包本身,不涉及轮训等和负载无关的处理内容,因此计算出来的负载处理压力更为准确,从而提高系统进行负载均衡的能力。
2、本实施例在所述第一CPU核处于运行稳定状态且系统未处于负载稳定状态时进行自学习,以重新确定各个测试项的权重,从而提高了系统的负载均衡效果。
3、本实施例在将负载转移给其他CPU核时优先考虑所述第一CPU核所在的numa内的其他CPU核,提高了数据包的处理效率。
为了更直观的看到应用本实施例提供的负载均衡方法所产生的效果,参见图3,该图为一个观测实例的结果图。所述观测实例的被测系统包含有两个numa,每个numa下包含有8个CPU核和2块4口万兆网卡,每个CPU核都在这16个接口上分别绑定了发送队列,但是每个CPU核都只和一个网卡的一个接口绑定接收队列,所述发送队列用于发送数据包,所述接收队列用于接收数据包。在测试时,第0号接口输入,第1号接口输出,第0号接口和第1号接口对应的网卡属于同一个numa。
该观测实例中包括三个测试项,其中,第一个测试项包括两个判定要素,分别是:CPU核接收的来自所在numa的物理网卡的数据包和CPU核发送至所在numa的物理网卡的数据包;第二个测试项包括CPU核发送至所在numa的物理网卡的数据包和CPU核接收的来自所在numa内其他CPU核转发的数据包两个判定要素;第三个测试项包括CPU核发送的来自其他numa的物理网卡的数据包和CPU核接收的来自其他numa的CPU核转发的数据包。每个数据包的吞吐量均为64bit。
现有技术中,由于只有少数几个CPU核参与负载的处理,因此系统的吞吐量非常小。从图3中可以看出,随着CPU核数的增多,系统的吞吐量有着显著提升,最高可达到5562Mbps。而且,由于第1-8个CPU核与被测网卡在同一numa内,因此其吞吐量的增长率较与被测网卡处于不同numa内的第9-18个CPU核参与时吞吐量的增长率。但是,并不是参与负载的CPU核数越多越好,图3中当第15个和第16个CPU参与负载均衡时吞吐量有所下降,这是因为转移负载本身也是对系统性能造成损耗。我们知道,参与转移的CPU核越多,能够转移的数据包数量越多、流量越大,为了转移数据包,CPU核需要先将负载放入一个公用的队列中,供其他CPU核定期的读取这个公用队列并提取相应的数据包。而“放包”这个动作也需要占用CPU核的资源,如果需要放的包太多,则CPU核自身处理数据包的能力就会下降,所以,CPU核的性能不会因为参与的其他CPU核越多而越高,而是在增长到一定程度时趋于稳定,甚至出现性能略微下降的情况,因此在实际应用中,需要对各个CPU核所能转移负载的最大核数进行限制。
基于以上实施例提供的一种负载均衡方法,本发明实施例还提供了一种负载均衡装置,下面结合附图来详细说明其工作原理。
装置实施例一
参见图4,该图为本发明提供的一种负载均衡装置实施例一的结构框图。
本实施例提供的负载均衡装置包括:负载处理压力确定单元301、判断单元302和发送单元303,其中所述负载处理压力确定单元301与所述判断单元302连接,所述判断单元302与所述发送单元303连接;
所述负载处理压力确定单元301,用于根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力;
所述判断单元302,用于判断所述负载处理压力是否高于或等于预设的最高处理能力,如果是,则激活所述发送单元;
所述发送单元303,用于将当前时间周期内接收到的数据包发送至其他CPU核进行处理。
现有技术中,传统的linux系统在处理CPU核的负载均衡时是以进程为单位进行迁移的,即一个进程的所有数据包都从一个CPU核的可执行队列转移到另外一个CPU核的可执行队列中进行处理,这种均衡负载的方式对于进程数量较少的高端通信网络而言作用不大,其效果是少数的CPU核处理较多的负载,多数CPU核处于空闲状态,达不到负载均衡的目的,也浪费了很多系统资源。
对于高端网络通信而言,一个进程会包含很多次数据包的接收和转发,对于该进程而言,采用本实施例的以数据包为单位来在CPU核之间均衡负载的方法,可以使更多的CPU参与到处理该进程中来,而不是只有一个CPU进行处理,从而真正达到均衡负载的目的,提高了系统性能,也节约了系统资源。
装置实施例二
参见图5,该图为本发明提供的一种负载均衡装置实施例二的结构框图。
在本发明中,高端通信网络设备是指对网络性能要求较高且用途相对简单的通信网络设备,例如交换机、路由器、防火墙等。现代高端网络通信设备通常采用的多核架构为numa(Non-Uniform Memory Access,非统一内存访问)架构,这种架构的特点是各个numa下的CPU核、内存、网卡等硬件设备是独立的。
对于numa架构的第一CPU核,其接收的数据包至少来自以下一种途径:
所述第一CPU核接收的来自所在numa的物理网卡的数据包;
所述第一CPU核接收的来自其他numa的物理网卡的数据包;
所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
对应的,所述第一CPU核发送的数据包也至少包括以下一种途径:
所述第一CPU核发送至所在numa的物理网卡的数据包;
所述第一CPU核发送至其他numa的物理网卡的数据包;
所述第一CPU核发送至所在numa内其他CPU核的数据包;
所述第一CPU核发送至其他numa的CPU核的数据包。
在本实施例中,所述负载均衡装置中,所述第一CPU接收或发送一种数据包称为一个判定要素,所述测试项至少为一个,每个测试项均至少包括一个判定要素;
所述负载处理压力确定单元301包括:测试项分值计算单元3011和负载处理压力分值计算单元3012,所述测试项分值计算单元3011与所述负载处理压力分值计算单元3012连接,所述负载处理压力分值计算单元3012与所述判断单元302连接;
所述测试项分值计算单元3011,用于确定所述测试项中每个判定要素的分值,根据每个判定要素的分值以及上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分值;
所述负载处理压力分值计算单元3012,用于根据各个测试项的分值计算所述第一CPU核的负载处理压力分值。
在本实施中,所述负载处理压力分值计算单元3012,用于根据各个测试项的分值计算所述第一CPU核的负载处理压力分值的计算方式如下:
M=a1x1+a2x2+...+anxn
其中,所述M为所述第一CPU核的负载处理压力分值,所述xi[i∈(1,n)]为第i个测试项的分值,所述ai[i∈(1,n)]为预设的第i个测试项的权重,且a1+a2+...+an=1,所述n为测试项的数量。
可以理解的是,上述第一CPU核的负载处理压力分值的计算方式并不构成对本发明的限定,本领域技术人员可以根据实际应用场景自行设定。
为了提高系统的负载稳定程度,所述负载处理压力分值计算单元3012包括:权重确定单元30121和计算单元30122;
其中,所述测试项分值计算单元3011与所述权重确定单元30121连接,所述权重单元30121与所述计算单元30122连接;
所述权重确定单元30121,用于当所述第一CPU核在上一时间周期内处于运行稳定状态且系统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重,使系统达到负载稳定状态,其中,所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状态,所述负载稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状态;
所述计算单元30122,用于根据各个测试项的分值以及重新确定的对应的权重计算所述第一CPU核的负载处理压力分值。
为了提高数据包的处理效率,提升系统性能,所述发送单元303包括:第二CPU核判断单元3031、第二CPU核发送单元3032;
所述判断单元302与所述第二CPU核判断单元3031连接,所述第二CPU核判断单元3031与所述第二CPU核发送单元3032连接;
所述第二CPU核判断单元3031,用于判断所述第一CPU核所在的numa中是否存在能够处理负载的第二CPU核,如果存在,则激活所述第二CPU核发送单元3032;
所述第二CPU核发送单元3032,用于将所述当前时间周期内接收到的数据包转发至所述第二CPU核。
所述发送单元303还包括第三CPU核判断单元3033和第三CPU核发送单元3034;
所述第二CPU核判断单元3031与所述第三CPU核判断单元3033连接,所述第三CPU核判断单元3033与所述第三CPU核发送单元3034连接;
所述第二CPU核判断单元3031,还用于当所述第一CPU核所在的numa中不存在能够处理负载的第二CPU核时激活所述第三CPU核判断单元3033;
所述第三CPU核判断单元3033,用于判断其他numa中是否存在能够处理负载的第三CPU核,如果存在,则激活所述第三CPU核发送单元3034;
所述第三CPU核发送单元3034,用于将所述接收到的数据包转发至所述第三CPU核。
本实施例有如下有益效果:
1、相对于现有技术中通过检测CPU核占用率来衡量负载处理压力的方法,本实施例采用计分的方式来确定CPU核的负载处理压力,这种计分方式只关心数据包本身,不涉及轮训等和负载无关的处理内容,因此计算出来的负载处理压力更为准确,从而提高系统进行负载均衡的能力。
2、本实施例在所述第一CPU核处于运行稳定状态且系统未处于负载稳定状态时进行自学习,以重新确定各个测试项的权重,从而提高了系统的负载均衡效果。
3、本实施例在将负载转移给其他CPU核时优先考虑所述第一CPU核所在的numa内的其他CPU核,提高了数据包的处理效率。
需要说明的是,本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元及模块可以是或者也可以不是物理上分开的。另外,还可以根据实际的需要选择其中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (17)

1.一种负载均衡方法,其特征在于,所述方法包括:
根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力;
判断所述负载处理压力是否高于或等于预设的最高处理能力;
如果是,则将当前时间周期内接收到的数据包发送至其他CPU核进行处理;
所述第一CPU核接收的数据包至少包括以下一种:
所述第一CPU核接收的来自所在numa的物理网卡的数据包;
所述第一CPU核接收的来自其他numa的物理网卡的数据包;
所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
所述第一CPU核发送的数据包至少包括以下一种:
所述第一CPU核发送至所在numa的物理网卡的数据包;
所述第一CPU核发送至其他numa的物理网卡的数据包;
所述第一CPU核发送至所在numa内其他CPU核的数据包;
所述第一CPU核发送至其他numa的CPU核的数据包;
所述第一CPU核接收或发送一种数据包称为一个判定要素,所述第一CPU核对应的测试项至少为一个,每个测试项均至少包括一个判定要素;
根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力包括:
确定所述测试项中每个判定要素的分值,根据每个判定要素的分值以及上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分值;
根据各个测试项的分值计算所述第一CPU核的负载处理压力分值。
2.根据权利要求1所述的负载均衡方法,其特征在于,所述根据各个测试项的分值计算所述第一CPU核的负载处理压力分值的计算方式如下:
M=a1x1+a2x2+...+anxn
其中,所述M为所述第一CPU核的负载处理压力分值,xi为第i个测试项的分值,ai为预设的第i个测试项的权重,i∈(1,n)且a1+a2+...+an=1,所述n为测试项的数量。
3.根据权利要求2所述的负载均衡方法,其特征在于,所述方法还包括:
当所述第一CPU核在上一时间周期内处于运行稳定状态且系统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重,使系统达到负载稳定状态,其中,所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状态,所述负载稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状态;
所述根据各个测试项的分值计算所述第一CPU核的负载处理压力分值包括:
根据各个测试项的分值以及重新确定的对应的权重计算所述第一CPU核的负载处理压力分值。
4.根据权利要求3所述的负载均衡方法,其特征在于,所述第一CPU核在上一时间周期内处于运行稳定状态包括:
获取所述第一CPU核在上一时间周期内各时段内所述测试项的权重,所述测试项的权重根据所述第一CPU核各个测试项在上一时间周期内各时段内接收或发送的数据包的数量和/或流量进行确定;
判断所述测试项的权重在所述上一时间周期内是否大致相同,如果是,则认为所述第一CPU核在上一时间周期内处于运行稳定状态。
5.根据权利要求4所述的负载均衡方法,其特征在于,所述测试项的权重根据所述第一CPU核各个测试项在上一时间周期内各时段内接收或发送的数据包的数量和/或流量进行确定包括:
根据各个测试项的数据包的数量和/或流量占全部测试项的比重重新确定所述第一CPU核的各个测试项的权重。
6.根据权利要求5所述的负载均衡方法,其特征在于,所述根据各个测试项的数据包的数量和/或流量占全部测试项的比重重新确定所述第一CPU核的各个测试项的权重还包括:
选取所述测试项的数据包的数量或流量最少的判定要素参与所述测试项权重的计算。
7.根据权利要求4-6任意一项所述的负载均衡方法,其特征在于,所述重新确定所述第一CPU核的各个测试项的权重包括:
将所述测试项在上一时间周期内各时段的权重的均值作为所述测试项的新权重;
或,在所述测试项在上一时间周期内各时段的权重中选择一个权重值作为所述测试项的新权重。
8.根据权利要求4所述的负载均衡方法,其特征在于,所述判断所述测试项的权重在所述上一时间周期内是否大致相同包括:
判断上一时间周期内各时段的所述测试项的各个权重的标准差是否小于或等于第一预设标准差,如果是,则认为所述测试项的权重在所述上一时间周期内大致相同。
9.根据权利要求3所述的负载均衡方法,其特征在于,所述系统没有处于负载稳定状态包括:
判断各个CPU核在上一时间周期内各时段的平均丢包率是否大致相同,如果否,则认为系统没有处于负载稳定状态。
10.根据权利要求9所述的负载均衡方法,其特征在于,所述判断各个CPU核在上一时间周期内各时段的平均丢包率是否大致相同包括:
判断各个CPU核在上一时间周期内各时段的平均丢包率的标准差是否小于或等于第二预设标准差,如果是,则认为各个CPU核的平均丢包率大致相同。
11.根据权利要求1所述的负载均衡方法,其特征在于,所述将当前时间周期内接收到的数据包发送至其他CPU核进行处理包括:
判断所述第一CPU核所在的numa中是否存在能够处理负载的第二CPU核;
如果存在,则将所述当前时间周期内接收到的数据包转发至所述第二CPU核。
12.根据权利要求11所述的负载均衡方法,其特征在于,当所述第一CPU核所在的numa中不存在能够处理负载的第二CPU核时,所述方法还包括:
判断其他numa中是否存在能够处理负载的第三CPU核;
如果存在,则将所述接收到的数据包转发至所述第三CPU核。
13.一种负载均衡装置,其特征在于,所述装置包括:负载处理压力确定单元、判断单元和发送单元,其中所述负载处理压力确定单元与所述判断单元连接,所述判断单元与所述发送单元连接;
所述负载处理压力确定单元,用于根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力;
所述判断单元,用于判断所述负载处理压力是否高于或等于预设的最高处理能力,如果是,则激活所述发送单元;
所述发送单元,用于将当前时间周期内接收到的数据包发送至其他CPU核进行处理;
所述第一CPU核接收的数据包至少包括以下一种:
所述第一CPU核接收的来自所在numa的物理网卡的数据包;
所述第一CPU核接收的来自其他numa的物理网卡的数据包;
所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
所述第一CPU核发送的数据包至少包括以下一种:
所述第一CPU核发送至所在numa的物理网卡的数据包;
所述第一CPU核发送至其他numa的物理网卡的数据包;
所述第一CPU核发送至所在numa内其他CPU核的数据包;
所述第一CPU核发送至其他numa的CPU核的数据包;
所述第一CPU核接收或发送一种数据包称为一个判定要素,所述第一CPU核对应的测试项至少为一个,每个测试项均至少包括一个判定要素;
所述负载处理压力确定单元包括:测试项分值计算单元和负载处理压力分值计算单元,所述测试项分值计算单元与所述负载处理压力分值计算单元连接,所述负载处理压力分值计算单元与所述判断单元连接;
所述测试项分值计算单元,用于确定所述测试项中每个判定要素的分值,根据每个判定要素的分值以及上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分值;
所述负载处理压力分值计算单元,用于根据各个测试项的分值计算所述第一CPU核的负载处理压力分值。
14.根据权利要求13所述的负载均衡装置,其特征在于,所述负载处理压力分值计算单元,用于根据各个测试项的分值计算所述第一CPU核的负载处理压力分值的计算方式如下:
M=a1x1+a2x2+...+anxn
其中,所述M为所述第一CPU核的负载处理压力分值,xi为第i个测试项的分值,ai为预设的第i个测试项的权重,i∈(1,n)且a1+a2+...+an=1,所述n为测试项的数量。
15.根据权利要求14所述的负载均衡装置,其特征在于,所述负载处理压力分值计算单元包括:权重确定单元和计算单元;
其中,所述测试项分值计算单元与所述权重确定单元连接,所述权重单元与所述计算单元连接;
所述权重确定单元,用于当所述第一CPU核在上一时间周期内处于运行稳定状态且系统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重,使系统达到负载稳定状态,其中,所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状态,所述负载稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状态;
所述计算单元,用于根据各个测试项的分值以及重新确定的对应的权重计算所述第一CPU核的负载处理压力分值。
16.根据权利要求13所述的负载均衡装置,其特征在于,所述发送单元包括:第二CPU核判断单元、第二CPU核发送单元;
所述判断单元与所述第二CPU核判断单元连接,所述第二CPU核判断单元与所述第二CPU核发送单元连接;
所述第二CPU核判断单元,用于判断所述第一CPU核所在的numa中是否存在能够处理负载的第二CPU核,如果存在,则激活所述第二CPU核发送单元;
所述第二CPU核发送单元,用于将所述当前时间周期内接收到的数据包转发至所述第二CPU核。
17.根据权利要求16所述的负载均衡装置,其特征在于,所述发送单元还包括第三CPU核判断单元和第三CPU核发送单元;
所述第二CPU核判断单元与所述第三CPU核判断单元连接,所述第三CPU核判断单元与所述第三CPU核发送单元连接;
所述第二CPU核判断单元,还用于当所述第一CPU核所在的numa中不存在能够处理负载的第二CPU核时激活所述第三CPU核判断单元;
所述第三CPU核判断单元,用于判断其他numa中是否存在能够处理负载的第三CPU核,如果存在,则激活所述第三CPU核发送单元;
所述第三CPU核发送单元,用于将所述接收到的数据包转发至所述第三CPU核。
CN201510309271.XA 2015-06-08 2015-06-08 一种负载均衡方法及装置 Active CN104901898B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510309271.XA CN104901898B (zh) 2015-06-08 2015-06-08 一种负载均衡方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510309271.XA CN104901898B (zh) 2015-06-08 2015-06-08 一种负载均衡方法及装置

Publications (2)

Publication Number Publication Date
CN104901898A CN104901898A (zh) 2015-09-09
CN104901898B true CN104901898B (zh) 2018-08-03

Family

ID=54034298

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510309271.XA Active CN104901898B (zh) 2015-06-08 2015-06-08 一种负载均衡方法及装置

Country Status (1)

Country Link
CN (1) CN104901898B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106936739B (zh) * 2015-12-30 2020-02-11 新华三技术有限公司 一种报文转发方法及装置
CN106101207B (zh) * 2016-06-03 2019-07-12 东软集团股份有限公司 采集器控制方法及装置
CN106357726B (zh) * 2016-08-24 2019-08-20 东软集团股份有限公司 负载均衡方法及装置
CN106533978B (zh) * 2016-11-24 2019-09-10 东软集团股份有限公司 一种网络负载均衡方法及系统
CN108123901B (zh) * 2016-11-30 2020-12-29 新华三技术有限公司 一种报文传输方法和装置
CN106713185B (zh) * 2016-12-06 2019-09-13 瑞斯康达科技发展股份有限公司 一种多核cpu的负载均衡方法及装置
CN107196870B (zh) * 2017-07-20 2021-07-20 哈尔滨工业大学 一种基于dpdk的流量动态负载均衡方法
CN108259328B (zh) 2017-08-30 2020-06-05 新华三技术有限公司 报文转发方法及装置
CN107948072B (zh) * 2017-10-31 2021-04-27 新华三技术有限公司 报文转发方法和装置
CN107977269B (zh) * 2017-11-06 2020-12-01 东软集团股份有限公司 一种报文转发系统中的超时事件处理方法、装置及设备
CN108415769A (zh) * 2018-01-14 2018-08-17 长沙开雅电子科技有限公司 一种存储系统cpu加速处理数据请求指令实现方法
CN109150657B (zh) * 2018-08-16 2020-09-04 腾讯科技(深圳)有限公司 一种报文操作性能分析方法、装置及存储介质
CN113055292B (zh) * 2021-03-11 2022-11-04 青岛矽昌通信技术有限公司 一种提升多核路由器转发性能的方法及一种多核路由器
CN113806083B (zh) * 2021-09-06 2023-07-25 杭州迪普科技股份有限公司 一种处理聚合流数据的方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354664A (zh) * 2008-08-19 2009-01-28 中兴通讯股份有限公司 多核处理器中断负载均衡方法和装置
CN101840356A (zh) * 2009-12-25 2010-09-22 北京网康科技有限公司 一种基于ring的多核CPU负载均衡方法及系统
CN102521047A (zh) * 2011-11-15 2012-06-27 重庆邮电大学 实现多核处理器间中断负载均衡的方法
CN102646059A (zh) * 2011-12-01 2012-08-22 中兴通讯股份有限公司 多核处理器系统的负载平衡处理方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5786942B2 (ja) * 2011-08-26 2015-09-30 富士通株式会社 スケジューリングシステム、データ処理システムおよびスケジューリング方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354664A (zh) * 2008-08-19 2009-01-28 中兴通讯股份有限公司 多核处理器中断负载均衡方法和装置
CN101840356A (zh) * 2009-12-25 2010-09-22 北京网康科技有限公司 一种基于ring的多核CPU负载均衡方法及系统
CN102521047A (zh) * 2011-11-15 2012-06-27 重庆邮电大学 实现多核处理器间中断负载均衡的方法
CN102646059A (zh) * 2011-12-01 2012-08-22 中兴通讯股份有限公司 多核处理器系统的负载平衡处理方法及装置

Also Published As

Publication number Publication date
CN104901898A (zh) 2015-09-09

Similar Documents

Publication Publication Date Title
CN104901898B (zh) 一种负载均衡方法及装置
CN107196869B (zh) 基于主机实际负载的自适应负载均衡方法、设备和系统
CN109218355B (zh) 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法
CN106506670B (zh) 一种云平台虚拟资源高速调度方法与系统
US20120060167A1 (en) Method and system of simulating a data center
CN105007337A (zh) 集群系统负载均衡的方法和系统
CN101610209A (zh) 一种多核并行的网络业务流处理方法及设备
CN104901989B (zh) 一种现场服务提供系统及方法
CN106533978B (zh) 一种网络负载均衡方法及系统
CN103401939A (zh) 一种采用混合调度策略的负载均衡方法
CN107135279A (zh) 一种处理长连接建立请求的方法和装置
CN104182278B (zh) 一种判定计算机硬件资源繁忙程度的方法和装置
CN109831524A (zh) 一种负载均衡处理方法及装置
CN107426332A (zh) 一种web服务器集群的负载均衡方法及系统
CN102110014A (zh) 虚拟机负载均衡处理的方法
CN107291544A (zh) 任务调度的方法及装置、分布式任务执行系统
CN103945005B (zh) 基于多评价指标的动态负载均衡框架
CN107707612B (zh) 一种负载均衡集群的资源利用率的评估方法及装置
CN105144109A (zh) 分布式数据中心技术
CN110209500A (zh) 服务器负载均衡方法及装置
CN106059940B (zh) 一种流量控制方法及装置
CN106385375B (zh) 用于消息队列的负载均衡方法和装置
CN116700920A (zh) 云原生混合部署集群资源调度方法及装置
CN106998340A (zh) 一种板卡资源的负载均衡方法及装置
CN109729113A (zh) 管理专用处理资源的方法、服务器系统和计算机程序产品

Legal Events

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