一种负载均衡方法及装置的制造方法

xiaoxiao2020-10-23  5

一种负载均衡方法及装置的制造方法
【技术领域】
[0001] 本发明设及计算机领域,尤其设及一种负载均衡方法及装置。
【背景技术】
[0002] 为了提升计算机的性能,现代计算机一般采用多核架构处理数据。当基于多核架 构的网络设备接收到一个网络数据包时,相关网卡将该网络数据包分配给CPU核处理。为 了达到不出现一些CUP核百分之百运转而另一些CPU核却无所事事,极大浪费CPU资源的 情况的目的,各种各样的负载均衡技术应用而生,即如何将负载按照一定策略合理的分配 到CUP核上。
[000引 例如,在SMP(SymmetricMulti-Processing,对称多处理器结构)环境下,经典的 linux系统将收到的数据包分到CPU核对应的进程中。每个进程都被安排到一个CPU核的 可执行队列中,如果出现不均衡的状况,linux系统通过将进程从一个CPU核的可执行队列 迁移到另一个CPU核的可执行队列中来保持CPU核之间的负载均衡。也就是说,linux系 统是W进程为单位进行负载均衡的。
[0004] 然而,对于一些用途相对单一、网络通信要求较高的高端网络通信而言(例如防 火墙只处理网络流量数据),由于需要的进程很少,需要的进程很少,在该种情况下,如果W 进程为单位进行负载均衡,就会出现只有一个或很少的几个CPU核进行运转,其他CPU核出 现无所事事的情况,导致负载反而不均衡。

【发明内容】

[0005] 为了解决现有技术中W进程为单位进行负载均衡的方法对于高端网络通信无效 的技术缺陷,本发明提供了一种针对高端网络通信的负载均衡方法和装置,实现了提高高 端网络通信的系统资源利用效率。
[0006] 本发明实施例提供了一种负载均衡方法,所述方法包括:
[0007] 根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量 确定所述第一CPU核的负载处理压力;
[0008] 判断所述负载处理压力是否高于或等于预设的最高处理能力;
[0009] 如果是,则将当前时间周期内接收到的数据包发送至其他CPU核进行处理。
[0010] 优选的,所述第一CPU核接收的数据包至少包括W下一种:
[0011] 所述第一CPU核接收的来自所在numa的物理网卡的数据包;
[0012] 所述第一CPU核接收的来自其他numa的物理网卡的数据包;
[0013] 所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
[0014] 所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
[0015] 所述第一CPU核发送的数据包至少包括W下一种:
[0016] 所述第一CPU核发送至所在numa的物理网卡的数据包;
[0017] 所述第一CPU核发送至其他numa的物理网卡的数据包;
[001引所述第一CPU核发送至所在numa内其他CPU核的数据包;
[0019] 所述第一CPU核发送至其他numa的CPU核的数据包。
[0020] 优选的,所述第一CPU核接收或发送一种数据包称为一个判定要素,所述第一CPU 核对应的测试项至少为一个,每个测试项均至少包括一个判定要素;
[0021] 根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量 确定所述第一CPU核的负载处理压力包括;
[0022] 确定所述测试项中每个判定要素的分值,根据每个判定要素的分值W及上一时间 周期内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分值;
[0023] 根据各个测试项的分值计算所述第一CPU核的负载处理压力分值。
[0024] 优选的,所述根据各个测试项的分值计算所述第一CPU核的负载处理压力分值的 计算方式如下:
[0025] M=81X1+82X2+. . . +a"Xn
[0026] 其中,所述M为所述第一CPU核的负载处理压力分值,所述Xi[iG(l,n)]为第i 个测试项的分值,所述ajiG(l,n)]为预设的第i个测试项的权重,且ai+a2+...+a"= 1, 所述n为测试项的数量。
[0027] 优选的,所述方法还包括:
[002引当所述第一CPU核在上一时间周期内处于运行稳定状态且系统没有处于负载稳 定状态时,重新确定所述第一CPU核的各个测试项的权重,使系统达到负载稳定状态,其 中,所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状态,所述负载稳定 状态是指系统的各个CPU核对负载的处理达到相对平衡的状态;
[0029] 所述根据各个测试项的分值计算所述第一CPU核的负载处理压力分值包括:
[0030] 根据各个测试项的分值W及重新确定的对应的权重计算所述第一CPU核的负载 处理压力分值。
[0031] 优选的,所述第一CPU核在上一时间周期内处于运行稳定状态包括:
[0032] 获取所述第一CPU核在上一时间周期内各时段内所述测试项的权重,所述测试项 的权重根据所述第一CPU核各个测试项在上一时间周期内各时段内接收或发送的数据包 的数量和/或流量进行确定;
[0033] 判断所述测试项的权重在所述上一时间周期内是否大致相同,如果是,则认为所 述第一CPU核在上一时间周期内处于运行稳定状态。
[0034] 优选的,所述测试项的权重根据所述第一CPU核各个测试项在上一时间周期内各 时段内接收或发送的数据包的数量和/或流量进行确定包括:
[0035] 根据各个测试项的数据包的数量和/或流量占全部测试项的比重重新确定所述 第一CPU核的各个测试项的权重。
[0036] 优选的,所述根据各个测试项的数据包的数量和/或流量占全部测试项的比重重 新确定所述第一CPU核的各个测试项的权重还包括:
[0037] 选取所述测试项的数据包的数量或流量最少的判定要素参与所述测试项权重的 计算。
[003引优选的,所述重新确定所述第一CPU核的各个测试项的权重包括:
[0039] 将所述测试项在上一时间周期内各时段的权重的均值作为所述测试项的新权 重;
[0040] 或,在所述测试项在上一时间周期内各时段的权重中选择一个权重值作为所述测 试项的新权重。
[0041] 优选的,所述判断所述测试项的权重在所述上一时间周期内是否大致相同包括:
[0042] 判断上一时间周期内各时段的所述测试项的各个权重的标准差是否小于或等于 第一预设标准差,如果是,则认为所述测试项的权重在所述上一时间周期内大致相同。
[0043] 优选的,所述系统没有处于负载稳定状态包括:
[0044] 判断各个CPU核在上一时间周期内各时段的平均丢包率是否大致相同,如果否, 则认为系统没有处于负载稳定状态。
[0045] 优选的,所述判断各个CPU核在上一时间周期内各时段的平均丢包率是否大致相 同包括:
[0046] 判断各个CPU核在上一时间周期内各时段的平均丢包率的标准差是否小于或等 于第二预设标准差,如果是,则认为各个CPU核的平均丢包率大致相同。
[0047] 优选的,所述将当前时间周期内接收到的数据包发送至其他CPU核进行处理包 括:
[0048] 判断所述第一CPU核所在的numa中是否存在能够处理负载的第二CPU核;
[0049] 如果存在,则将所述当前时间周期内接收到的数据包转发至所述第二CPU核。
[0050] 优选的,当所述第一CPU核所在的numa中不存在能够处理负载的第二CPU核时, 所述方法还包括:
[0化1] 判断其他numa中是否存在能够处理负载的第SCPU核;
[0化2] 如果存在,则将所述接收到的数据包转发至所述第SCPU核。
[0053] 本发明实施例还提供了一种负载均衡装置,所述装置包括;负载处理压力确定单 元、判断单元和发送单元,其中所述负载处理压力确定单元与所述判断单元连接,所述判断 单元与所述发送单元连接;
[0化4] 所述负载处理压力确定单元,用于根据上一时间周期内第一CPU核接收和/或发 送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力;
[0化5] 所述判断单元,用于判断所述负载处理压力是否高于或等于预设的最高处理能 力,如果是,则激活所述发送单元;
[0化6] 所述发送单元,用于将当前时间周期内接收到的数据包发送至其他CPU核进行处 理。
[0化7] 优选的,所述第一CPU核接收的数据包至少包括W下一种:
[005引所述第一CPU核接收的来自所在numa的物理网卡的数据包;
[0化9] 所述第一CPU核接收的来自其他numa的物理网卡的数据包;
[0060] 所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
[0061] 所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
[0062] 所述第一CPU核发送的数据包至少包括W下一种:
[0063] 所述第一CPU核发送至所在numa的物理网卡的数据包;
[0064] 所述第一CPU核发送至其他numa的物理网卡的数据包;
[00化]所述第一CPU核发送至所在numa内其他CPU核的数据包;
[0066] 所述第一CPU核发送至其他numa的CPU核的数据包。
[0067] 优选的,所述第一CPU核接收或发送一种数据包称为一个判定要素,所述第一CPU 核对应的测试项至少为一个,每个测试项均至少包括一个判定要素;
[0068] 所述负载处理压力确定单元包括;测试项分值计算单元和负载处理压力分值计算 单元,所述测试项分值计算单元与所述负载处理压力分值计算单元连接,所述负载处理压 力分值计算单元与所述判断单元连接;
[0069] 所述测试项分值计算单元,用于确定所述测试项中每个判定要素的分值,根据每 个判定要素的分值W及上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或 流量计算所述测试项的分值;
[0070] 所述负载处理压力分值计算单元,用于根据各个测试项的分值计算所述第一CPU 核的负载处理压力分值。
[0071] 优选的,所述负载处理压力分值计算单元,用于根据各个测试项的分值计算所述 第一CPU核的负载处理压力分值的计算方式如下:
[0072] M=81X1+82X2+. . . +a"Xn
[0073] 其中,所述M为所述第一CPU核的负载处理压力分值,所述Xi[iG(l,n)]为第i 个测试项的分值,所述ajiG(l,n)]为预设的第i个测试项的权重,且ai+a2+...+a"= 1, 所述n为测试项的数量。
[0074] 优选 的,所述负载处理压力分值计算单元包括;权重确定单元和计算单元;
[0075] 其中,所述测试项分值计算单元与所述权重确定单元连接,所述权重单元与所述 计算单元连接;
[0076] 所述权重确定单元,用于当所述第一CPU核在上一时间周期内处于运行稳定状态 且系统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重,使系统 达到负载稳定状态,其中,所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定 的状态,所述负载稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状态;
[0077] 所述计算单元,用于根据各个测试项的分值W及重新确定的对应的权重计算所述 第一CPU核的负载处理压力分值。
[007引优选的,所述发送单元包括:第二CPU核判断单元、第二CPU核发送单元;
[0079] 所述判断单元与所述第二CPU核判断单元连接,所述第二CPU核判断单元与所述 第二CPU核发送单元连接;
[0080] 所述第二CPU核判断单元,用于判断所述第一CPU核所在的numa中是否存在能够 处理负载的第二CPU核,如果存在,则激活所述第二CPU核发送单元;
[0081] 所述第二CPU核发送单元,用于将所述当前时间周期内接收到的数据包转发至所 述第二CPU核。
[0082] 优选的,所述发送单元还包括第=CPU核判断单元和第=CPU核发送单元;
[0083] 所述第二CPU核判断单元与所述第=CPU核判断单元连接,所述第=CPU核判断 单元与所述第=CPU核发送单元连接;
[0084] 所述第二CPU核判断单元,还用于当所述第一CPU核所在的numa中不存在能够处 理负载的第二CPU核时激活所述第=CPU核判断单元;
[0085] 所述第=CPU核判断单元,用于判断其他numa中是否存在能够处理负载的第= CPU核,如果存在,则激活所述第SCPU核发送单元;
[0086] 所述第=CPU核发送单元,用于将所述接收到的数据包转发至所述第=CPU核。
[0087] 相对于现有技术,本发明的优点在于:
[008引现有技术中,传统的linux系统在处理CPU核的负载均衡时是W进程为单位进行 迁移的,即一个进程的所有数据包都从一个CPU核的可执行队列转移到另外一个CPU核的 可执行队列中进行处理,该种均衡负载的方式对于进程数量较少的高端通信网络而言作用 不大,其效果是少数的CPU核处理较多的负载,多数CPU核处于空闲状态,达不到负载均衡 的目的,也浪费了很多系统资源。
[0089] 对于高端网络通信而言,一个进程会包含很多次数据包的接收和转发,对于该进 程而言,采用本实施例的W数据包为单位来在CPU核之间均衡负载的方法,可W使更多的 CPU核参与到处理该进程中来,而不是只有一个CPU进行处理,从而真正达到均衡负载的目 的,提高了系统性能,也节约了系统资源。
【附图说明】
[0090] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可W根据该些附图获得其它的附图。
[0091] 图1为本发明提供的一种负载均衡方法实施例一的流程图;
[0092] 图2为本发明提供的一种负载均衡方法实施例二的流程图;
[0093] 图3为本发明提供的一种负载均衡方法实施例二的实例结果图;
[0094] 图4为本发明提供的一种负载均衡装置实施例一的结构框图;
[0095] 图5为本发明提供的一种负载均衡装置实施例二的结构框图。
【具体实施方式】
[0096] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的 附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本 发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在 没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0097] 方法实施例一;
[009引参见图1,该图为本发明提供的一种负载均衡方法实施例一的流程图。
[0099] 本实施例提供的负载均衡方法包括如下步骤:
[0100] 步骤S101 ;根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/ 或数据流量确定所述第一CPU核的负载处理压力。
[0101] 在本发明中,高端通信网络设备是指对网络性能要求较高且用途相对简单的通信 网络设备,例如交换机、路由器、防火墙等。现代高端网络通信设备通常采用的多核架构为 numa(Non-Uni化rmMemoryAccess,非统一内存访问)架构,该种架构的特点是各个numa 下的CPU核、内存、网卡等硬件设备是独立的。举例而言,一个系统包括两个numa,每个numa 内包括8个CPU核和2块物理网卡。其中,每块物理网卡均有4个接口,用于接收和发送数 据包,该16个CPU核分别与该4块物理网卡中的每一块网卡进行连接,各个CPU核之间也 相互连接。
[0102] 对于numa架构的第一CPU核,其接收的数据包至少来自W下一种途径:
[0103] 所述第一CPU核接收的来自所在numa的物理网卡的数据包;
[0104] 所述第一CPU核接收的来自其他numa的物理网卡的数据包;
[01化]所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
[0106] 所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
[0107] 对应的,所述第一CPU核发送的数据包也至少包括W下一种途径:
[0108] 所述第一CPU核发送至所在numa的物理网卡的数据包;
[0109] 所述第一CPU核发送至其他numa的物理网卡的数据包;
[0110] 所述第一CPU核发送至所在numa内其他CPU核的数据包;
[011U所述第一CPU核发送至其他numa的CPU核的数据包。
[0112] 本实施例根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或 数据流量确定所述第一CPU核的负载处理压力,具体如何确定,本发明不做具体限定。
[0113] 步骤S102 ;判断所述负载处理压力是否高于或等于预设的最高处理能力,如果 是,则执行步骤S103。
[0114] 本实施例通过判断所述第一CPU核在上一时间周期内的负载处理压力是否高于 或等于预设的最高处理能力,如果是,则将当前时间周期内接收到的数据包转发至其他CPU 核进行处理;如果否,则说明所述第一CPU核还有处理负载的能力,因此可W继续处理当前 时间周期内接收到的数据包。
[0115] 步骤S103 ;将当前时间周期内接收到的数据包发送至其他CPU核进行处理。
[0116] 现有技术中,传统的linux系统在处理CPU核的负载均衡时是W进程为单位进行 迁移的,即一个进程的所有数据包都从一个CPU核的可执行队列转移到另外一个CPU核的 可执行队列中进行处理,该种均衡负载的方式对于进程数量较少的高端通信网络而言作用 不大,其效果是少数的CPU核处理较多的负载,多数CPU核处于空闲状态,达不到负载均衡 的目的,也浪费了很多系统资源。
[0117] 对于高端网络通信而言,一个进程会包含很多次数据包的接收和转发,对于该进 程而言,采用本实施例的W数据包为单位来在CPU核之间均衡负载的方法,可W使更多的 CPU参与到处理该进程中来,而不是只有一个CPU进行处理,从而真正达到均衡负载的目 的,提高了系统性能,也节约了系统资源。
[0118] 方法实施例二
[0119] 参见图2,该图为本发明提供的一种负载均衡方法实施例二的流程图。
[0120] 本实施例提供的负载均衡方法包括如下步骤:
[0121] 步骤S201 ;确定测试项中每个判定要素的分值,根据每个判定要素的分值W及上 一时间周期内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分 值。
[0122] 步骤S202 ;根据各个测试项的分值计算所述第一CPU核的负载处理压力分值。
[0123] 现有技术中通常通过检测CPU占用率来衡量CPU核的负载处理压力,即CPU占用 率越高,CPU核的负载处理压力越大。但是对于W轮训方式接收数据包的高端网络设备而 言,该种方法无法反应出CPU核真正的负载处理压力,因为轮训方式是指CPU核周期性的 向网卡和其他CPU核询问是否有其需要接收的数据包,该种询问并不属于处理数据包的范 畴,反应不出对负载的处理能力,因此,利用CPU占用率来衡量CPU核的负载处理压力并不 准确。
[0124] 本实施例采用计分的方式来确定所述第一CPU核的负载处理压力。
[0125] 首先计算各个测试项的分值。在本实施例中,用于计算所述第一CPU核的负载处 理压力的测试项至少包括一个,每个测试项中至少包括一个判定要素,所述判定要素是指 所述第一CPU接收或发送一种数据包。其中,发送和接收的数据包种类在方法实施例一中 已经说明,在此不再寶述。每个测试项中可W仅包括数据包发送的判定要素,也可W仅包括 数据包接收的判定要素,还可W既包括数据包发送又包括接收的判定要素。当测试项中的 判定要素既包括数据包发送又包括接收时,发送数据包的种类和接收数据包的种类可W相 同,也可W不同,例如,假设一个测试项中接收的数据包来自第一CPU核所在numa内的物理 网卡,那么发送的数据包可W是发送至第一CPU核所在numa内的物理网卡的数据包,也可 W是发送至第一CPU核所在numa内其他核的数据包,或者是发送至其他numa内的物理网 卡的数据包,还可W是发送至其他numa内的CPU核的数据包。
[0126] 计算测试项的分值首先需要确定所述测试项中每个判定要素的分值。各个判定要 素对于所述第一CPU核的重要性不同。例如,由于numa架构的特点是不同numa的CPU通 信是由专口的通道来完成,跨numa处理数据包的效率要远远小于本numa内CPU的处理效 率,因而判定要素为所述第一CPU核接收的或发送至其他numa的物理网卡或其他CPU核的 数据包的重要程度小于判定要素为所述第一CPU接收的或发送至本numa的物理网卡或其 他CPU核的数据包,因此前者的分值要高于后者。当然,本领域技术人员还可W根据实际应 用场景自行设定所述各个判定要素分数的原则,本发明不做具体限定,例如,所有判定要素 的分数均相同。
[0127] 在确定了各个判定要素的分数后,根据每个判定要素的分值W及上一时间周期内 第一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。
[0128] 再举一个例子,假设测试项W及判定要素分值的设计和上个例子相同,不同的 是,在一个时间周期内,所述第一CPU接收的来自所在numa的其他CPU核的数据包的流 量为2G,且发送了流量为1G的数据包至其他numa的CPU核,那么所述测试项的分数为 1 本2+0. 5本 1 = 2. 5。
[0129] 在确定了各个测试项的分数后,可W根据公式(1)计算所述第一CPU核的负载处 理压力分值:
[0130] M= 31又1+32又2+. . . +3。又。(1)
[0131] 其中,所述M为所述第一CPU核的负载处理压力分值,所述Xi[iG(l,n)]为第i 个测试项的分值,所述ajiG(l,n)]为预设的第i个测试项的权重,且ai+a2+...+a"= 1, 所述n为测试项的数量。
[0132] 在实际应用中,技术人员可W在系统运行初期为每个测试项均设定一个初始权重 值,然后在运行过程中根据所述第一CPU核的运行稳定状态和系统的负载稳定状态进行自 动调整。所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状态,所述负载 稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状态。负载稳定状态是建 立在运行稳定状态基础上的,如果单个CPU核没有达到运行稳定状态,系统就不会处于负 载稳定状态。在本实施例中,当所述第一CPU核在上一时间周期内处于运行稳定状态且系 统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重。而如果所述 第一CPU核在上一个时间周期内没有处于运行稳定状态,那么在计算所述第一CPU核的负 载处理压力时就不对各测试项的权重进行调整,依旧使用上上个时间周期的权重值进行计 算。
[0133] 具体的,本实施例选取上一个时间周期内的各测试项的权重值来衡量所述第一 CPU核是否处于运行稳定状态,当然,可W理解的是,本领域技术人员还可W选取其他指标, 本发明不做具体限定。举例而言,若一个时间周期为1分钟,那么可W获取所述测试项每一 秒的动态权重,该些权重都是依据同一个算法确定的,因此具有可比性。技术人员可W判断 该些动态权重是否大致相同,如果是,则说明所述第一CPU核是处于运行稳定状态的;如果 否,则说明所述第一CPU的运行状态不稳定。
[0134] 本实施例还提供一种动态权重的算法,即根据所述第一CPU核各个测试项在上一 时间周期内各时段内接收或发送的数据包的数量和/或流量进行确定,具体的,根据各个 测试项的数据包的数量或流量占全部测试项的比重重新确定。例如,用于计算所述第一CPU 的负载处理压力分值的测试项包括两个,其中,第一个测试项中的判定要素为所述第一CPU 核接收的来自其他numa的物理网卡的数据包,第二个测试项的判定要素为所述第一CPU发 送至其他numa的物理网卡的数据包。经过检测,某一秒接收的来自其他numa的物理网卡 的数据包的数量为31,发送至其他numa的物理网卡的数据包的数量为a,,那么,在该秒第一 个测试项的权重是ai/(ai+a2),第二个测试项的权重是a2/(ai+a2)。
[0135] 如果一个测试项中包括多个判定要素,那么具体选择哪个来计算权重本领域技术 人员可W自行设定,优选的,选择判定要素中数据包数量或流量最少的参与权重的计算。例 如,某测试项的判定要素有两个,分别是第一CPU核接收的来自其他numa的CPU核转发的 数据包和发送至其他numa的CPU核的数据包,如果在一秒中测得,前者的数量为bi,后者的 数量为b2,且bi〉b2,那么选择b2来参与权重的计算,因为它意味着在该1秒内至少有b2个 数据包经历了该两个判定要素组成的全部流程,即经历了从其他numa的CPU核转发至所述 第一CPU核,又从所述第一CPU核转发至其他numa的CPU核的过程。该样一个完整的流程 有利于确定所述第一CPU核的真实的负载处理压力。
[0136] 另外,关于所述测试项在上一个时间周期内的各个动态权重是否大致相同,本实 施例通过判断上一时间周期内各时段的所述测试项的权重的标准差是否小于或等于第 一预设标准差来进行确定,如果是,则表明该些动态的权重大致相同。其中,所述标准差 (StandardDeviation)也称为标准偏差,计算公式为; IN
[0137] 任=、万]S-八):: (2 ) Vi=I
[0138]在本实施例的场景中,所述0为某测试项权重的标准差,所述Xi为第i个权重, 所述y为所有权重的均值,所述N为权重的个数。如果一个时间周期为1分钟,每个时间 段为1秒钟,那么所述N为60。
[0139]当然,可W理解的是,本实施例中利用标准差来判断各个动态权重是否大致相同 的技术手段并不构成对本发明的限定,本领域技术人员可W根据实际需要自行设定。
[0140] 关于系统的负载稳定状态,具体的,在本实施例中,所谓负载稳定状态采用各个 CPU核在一个时间周期内各个时段的平均丢包率是否大致相同来衡量。之所W是大致相同, 而不是完全相同,是因为每个CPU核的负载情况不同。具体的,本实施例通过判断各个CPU 核在上一个时间周期内各时段的平均丢包率的标准差是否小于或等于第二预设标准差,如 果是,则认为各个CPU核的平均丢包率大致相同。其中,所述标准差公式(2)中的0为平 均丢包率的标准差,所述Xi为第i个CPU核的平均丢包率,所述y为所有CPU核的平均丢 包率的均值,所述N为CPU核的个数。
[0141] 当然,可W理解的是,本实施例中利用平均丢包率衡量负载稳定状态W及利用标 准差来判断各CPU核的平均丢包率是否处于大致相同的状态的方案均不构成对本发明的 限定,本领域技术人员还可W根据实际需求自行设定。
[0142] 在本实施例中,当所述第一CPU核处于运行稳定状态且系统未处于负载稳定状态 时,重新确定所述第一CPU核的各个测试项的权重。在本实施例中,可W将某测试项在上一 时间周期内各时段的权重的均值作为该测试项的新权重;或者,由于各时段的权重大致相 同,因此也可W在所述测试项在上一时间周期内各时段的权重中选择一个权重值作为所述 测试项的新权重。
[0143] 步骤S203;判断所述负载处理压力是否高于或等于预设的最高处理能力,如果 是,则执行步骤S204。
[0144] 所述预设的最高处理能力分值可W是技术人员自己设计的分值,也可W根据公式 (1)的思想进行计算,与计算负载处理压力分值不同的是,在计算最高处理能力分值中各测 试项的分值时,可W首先计算极限处理能力分值,所述极限处理能力分值是依据每个判定 要素的分值W及一个时间周期内所述第一CPU核接收和/或发送的数据包的最多数量和/ 或最高流量,该可W通过系统测试获得。预设的最高处理能力分值可W与所述极限处理能 力分值相同,也可W比所述极限处理能力分值稍小,例如是极限处理能力分值的90%。
[0145] 在实际应用中,可W为每个CPU核设立一个转发标签flag,若flag= 1表示该 CPU核还有处理负载的能力;若flag= 0,则表示该CPU不具备处理负载的能力。每个CPU 核初始的flag值均为1。当一个CPU核的负载处理压力达到预设的最高处理能力时,则将 flag由1置为0。若经过检测,该CPU的核的负载处理压力小于预设的最高处理能力时,贝U 将flag由0置为1。
[0146] 当所述负载处理压力高于或等于预设的最高处理能力时,需要将当前时间周期内 接收到的数据包转发至其他CPU核进行处理。那么具体转发到哪个CPU核呢?根据numa架 构的特点:跨numa数据包处理效率低于本numa数据处理效率,在本实施例中,优先将数据 包转发至所述第一CPU核所在的numa的其他CPU核进行处理,如果所在numa的其他CPU核 的负载处理压力均高于或等于其对应的预设最高处理能力,即不能再处理负载时,再把数 据包发给其他numa内的有负载处理能力的CPU核进行处理,从而提高数据包的处理效率, 提升系统性能。
[0147] 步骤S204 ;判断所述第一CPU核所在的numa中是否存在能够处理负载的第二CPU 核,如果是,则执行步骤S205 ;如果否,则执行步骤S206。
[0148] 步骤S205 ;将所述当前时间周期内接收到的数据包转发至所述第二CPU核,流程 结束。
[0149] 步骤S206;判断其他numa中是否存在能够处理负载的第SCPU核,如果是,则执 行步骤S207。
[0150] 步骤S207;将所述接收到的数据包转发至所述第=CPU核,流程结束。
[0151] 本实施例有如下有益效果:
[0152] 1、相对于现有技术中通过检测CPU核占用率来衡量负载处理压力的方法,本实施 例采用计分的方式来确定CPU核的负载处理压力,该种计分方式只关屯、数据包本身,不设 及轮训等和负载无关的处理内容,因此计算出来的负载处理压力更为准确,从而提高系统 进行负载均衡的能力。
[0153] 2、本实施例在所述第一CPU核处于运行稳定状态且系统未处于负载稳定状态时 进行自学习,W重新确定各个测试项的权重,从而提高了系统的负载均衡效果。
[0154] 3、本实施例在将负载转移给其他CPU核时优先考虑所述第一CPU核所在的numa 内的其他CPU核,提高了数据包的处理效率。
[0155] 为了更直观的看到应用本实施例提供的负载均衡方法所产生的效果,参见图3,该 图为一个观测实例的结果图。所述观测实例的被测系统包含有两个numa,每个numa下包含 有8个CPU核和2块4 口万兆网卡,每个CPU核都在该16个接口上分别绑定了发送队列,但 是每个CPU核都只和一个网卡的一个接口绑定接收队列,所述发送队列用于发送数据包, 所述接收队列用于接收数据包。在测试时,第0号接口输入,第1号接口输出,第0号接口 和第1号接口对应的网卡属于同一个numa。
[0156] 该观测实例中包括S个测试项,其中,第一个测试项包括两个判定要素,分别是: CPU核接收的来自所在numa的物理网卡的数据包和CPU核发送至所在numa的物理网卡的 数据包;第二个测试项包括CPU核发送至所在numa的物理网卡的数据包和CPU核接收的来 自所在numa内其他CPU核转发的数据包两个判定要素;第=个测试项包括CPU核发送的来 自其他numa的物理网卡的数据包和CPU核接收的来自其他numa的CPU核转发的数据包。 每个数据包的吞吐量均为64bit。
[0157] 现有技术中,由于只有少数几个CP U核参与负载的处理,因此系统的吞吐量非常 小。从图3中可W看出,随着CPU核数的增多,系统的吞吐量有着显著提升,最高可达到 5562Mbps。而且,由于第1-8个CPU核与被测网卡在同一numa内,因此其吞吐量的增长率 较与被测网卡处于不同numa内的第9-18个CPU核参与时吞吐量的增长率。但是,并不是 参与负载的CPU核数越多越好,图3中当第15个和第16个CPU参与负载均衡时吞吐量有 所下降,该是因为转移负载本身也是对系统性能造成损耗。我们知道,参与转移的CPU核越 多,能够转移的数据包数量越多、流量越大,为了转移数据包,CPU核需要先将负载放入一个 公用的队列中,供其他CPU核定期的读取该个公用队列并提取相应的数据包。而"放包"该 个动作也需要占用CPU核的资源,如果需要放的包太多,则CPU核自身处理数据包的能力就 会下降,所W,CPU核的性能不会因为参与的其他CPU核越多而越高,而是在增长到一定程 度时趋于稳定,甚至出现性能略微下降的情况,因此在实际应用中,需要对各个CPU核所能 转移负载的最大核数进行限制。
[0158]基于W上实施例提供的一种负载均衡方法,本发明实施例还提供了一种负载均衡 装置,下面结合附图来详细说明其工作原理。
[0159] 装置实施例一
[0160] 参见图4,该图为本发明提供的一种负载均衡装置实施例一的结构框图。
[0161] 本实施例提供的负载均衡装置包括:负载处理压力确定单元301、判断单元302和 发送单元303,其中所述负载处理压力确定单元301与所述判断单元302连接,所述判断单 元302与所述发送单元303连接;
[0162] 所述负载处理压力确定单元301,用于根据上一时间周期内第一CPU核接收和/或 发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力;
[0163] 所述判断单元302,用于判断所述负载处理压力是否高于或等于预设的最高处理 能力,如果是,则激活所述发送单元;
[0164] 所述发送单元303,用于将当前时间周期内接收到的数据包发送至其他CPU核进 行处理。
[0165] 现有技术中,传统的linux系统在处理CPU核的负载均衡时是W进程为单位进行 迁移的,即一个进程的所有数据包都从一个CPU核的可执行队列转移到另外一个CPU核的 可执行队列中进行处理,该种均衡负载的方式对于进程数量较少的高端通信网络而言作用 不大,其效果是少数的CPU核处理较多的负载,多数CPU核处于空闲状态,达不到负载均衡 的目的,也浪费了很多系统资源。
[0166] 对于高端网络通信而言,一个进程会包含很多次数据包的接收和转发,对于该进 程而言,采用本实施例的W数据包为单位来在CPU核之间均衡负载的方法,可W使更多的 CPU参与到处理该进程中来,而不是只有一个CPU进行处理,从而真正达到均衡负载的目 的,提高了系统性能,也节约了系统资源。
[0167] 装置实施例二
[0168] 参见图5,该图为本发明提供的一种负载均衡装置实施例二的结构框图。
[0169] 在本发明中,高端通信网络设备是指对网络性能要求较高且用途相对简单的通信 网络设备,例如交换机、路由器、防火墙等。现代高端网络通信设备通常采用的多核架构为 numa(Non-Uni化rmMemoryAccess,非统一内存访问)架构,该种架构的特点是各个numa 下的CPU核、内存、网卡等硬件设备是独立的。
[0170] 对于numa架构的第一CPU核,其接收的数据包至少来自W下一种途径:
[0171] 所述第一CPU核接收的来自所在numa的物理网卡的数据包;
[0172] 所述第一CPU核接收的来自其他numa的物理网卡的数据包;
[0173] 所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包;
[0174] 所述第一CPU核接收的来自其他numa的CPU核转发的数据包;
[01巧]对应的,所述第一CPU核发送的数据包也至少包括W下一种途径:
[0176] 所述第一CPU核发送至所在numa的物理网卡的数据包;
[0177] 所述第一CPU核发送至其他numa的物理网卡的数据包;
[0178] 所述第一CPU核发送至所在numa内其他CPU核的数据包;
[01巧]所述第一CPU核发送至其他numa的CPU核的数据包。
[0180] 在本实施例中,所述负载均衡装置中,所述第一CPU接收或发送一种数据包称为 一个判定要素,所述测试项至少为一个,每个测试项均至少包括一个判定要素;
[0181] 所述负载处理压力确定单元301包括;测试项分值计算单元3011和负载处理压 力分值计算单元3012,所述测试项分值计算单元3011与所述负载处理压力分值计算单元 3012连接,所述负载处理压力分值计算单元3012与所述判断单元302连接;
[0182] 所述测试项分值计算单元3011,用于确定所述测试项中每个判定要素的分值,根 据每个判定要素的分值W及上一时间周期内第一CPU核接收和/或发送的数据包的数量和 /或流量计算所述测试项的分值;
[0183] 所述负载处理压力分值计算单元3012,用于根据各个测试项的分值计算所述第一 CPU核的负载处理压力分值。
[0184] 在本实施中,所述负载处理压力分值计算单元3012,用于根据各个测试项的分值 计算所述第一CPU核的负载处理压力分值的计算方式如下:
[0185] M= 31又1+32又2+. . . +3。又。
[0186] 其中,所述M为所述第一CPU核的负载处理压力分值,所述Xi[iG(l,n)]为第i 个测试项的分值,所述ajiG(l,n)]为预设的第i个测试项的权重,且ai+a2+...+a"= 1, 所述n为测试项的数量。
[0187] 可W理解的是,上述第一CPU核的负载处理压力分值的计算方式并不构成对本发 明的限定,本领域技术人员可W根据实际应用场景自行设定。
[0188] 为了提高系统的负载稳定程度,所述负载处理压力分值计算单元3012包括;权重 确定单元30121和计算单元30122 ;
[0189] 其中,所述测试项分值计算单元3011与所述权重确定单元30121连接,所述权重 单元30121与所述计算单元30122连接;
[0190] 所述权重确定单元30121,用于当所述第一CPU核在上一时间周期内处于运行稳 定状态且系统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重, 使系统达到负载稳定状态,其中,所述运行稳定状态是指所述第一CPU核各个指标处于相 对稳定的状态,所述负载稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状 态;
[0191] 所述计算单元30122,用于根据各个测试项的分值W及重新确定的对应的权重计 算所述第一CPU核的负载处理压力分值。
[0192] 为了提高数据包的处理效率,提升系统性能,所述发送单元303包括;第二CPU核 判断单元3031、第二CPU核发送单元3032 ;
[0193] 所述判断单元302与所述第二CPU核判断单元3031连接,所述第二CPU核判断单 元3031与所述第二CPU核发送单元3032连接;
[0194] 所述第二CPU核判断单元3031,用于判断所述第一CPU核所在的numa中是否存在 能够处理负载的第二CPU核,如果存在,则激活所述第二CPU核发送单元3032 ;
[01巧]所述第二CPU核发送单元3032,用于将所述当前时间周期内接收到的数据包转发 至所述第二CPU核。
[0196] 所述发送单元303还包括第SCPU核判断单元3033和第SCPU核发送单元3034 ;
[0197] 所述第二CPU核判断单元3031与所述第SCPU核判断单元3033连接,所述第S CPU核判断单元3033与所述第=CPU核发送单元3034连接;
[0198] 所述第二CPU核判断单元3031,还用于当所述第一CPU核所在的numa中不存在能 够处理负载的第二CPU核时激活所述第=CPU核判断单元3033 ;
[0199] 所述第SCPU核判断单元3033,用于判断其他numa中是否存在能够处理负载的第 SCPU核,如果存在,则激活所述第SCPU核发送单元3034 ;
[0200] 所述第=CPU核发送单元3034,用于将所述接收到的数据包转发至所述第=CPU 核。
[0201] 本实施例有如下有益效果:
[0202] 1、相对于现有技术中通过检测CPU核占用率来衡量负载处理压力的方法,本实施 例采用计分的方式来确定CPU核的负载处理压力,该种计分方式只关屯、数据包本身,不设 及轮训等和负载无关的处理内容,因此计算出来的负载处理压力更为准确,从而提高系统 进行负载均衡的能力。
[0203] 2、本实施例在所述第一CPU核处于运行稳定状态且系统未处于负载稳定状态时 进行自学习,W重新确定各个测试项的权重,从而提高了系统的负载均衡效果。
[0204] 3、本实施例在将负载转移给其他CPU核时优先考虑所述第一CPU核所在的numa 内的其他CPU核,提高了数据包的处理效率。
[02化]需要说明的是,本领域普通技术人员可W理解实现上述方法实施例中的全部或部 分流程,是可W通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机 可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。其中,所述存储 介质可为磁碟、光盘、只读存储记忆体化eacHDnlyMemory,ROM)或随机存储记忆体(Random AccessMemoir,RAM)等。
[0206] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部 分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实 施例而言,由于其基本相似于方法实施例,所W描述得比较简单,相关之处参见方法实施例 的部分说明即可。W上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明 的单元及模块可W是或者也可W不是物理上分开的。另外,还可W根据实际的需要选择其 中的部分或者全部单元和模块来实现本实施例方案的目的。本领域普通技术人员在不付出 创造性劳动的情况下,即可W理解并实施。
[0207] W上所述仅是本发明的【具体实施方式】,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可W做出若干改进和润饰,该些改进和润饰也应 视为本发明的保护范围。
【主权项】
1. 一种负载均衡方法,其特征在于,所述方法包括: 根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定 所述第一CPU核的负载处理压力; 判断所述负载处理压力是否高于或等于预 设的最高处理能力; 如果是,则将当前时间周期内接收到的数据包发送至其他CPU核进行处理。2. 根据权利要求1所述的负载均衡方法,其特征在于,所述第一CPU核接收的数据包至 少包括以下一种: 所述第一CPU核接收的来自所在numa的物理网卡的数据包; 所述第一CPU核接收的来自其他numa的物理网卡的数据包; 所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包; 所述第一CPU核接收的来自其他numa的CPU核转发的数据包; 所述第一CPU核发送的数据包至少包括以下一种: 所述第一CPU核发送至所在numa的物理网卡的数据包; 所述第一CPU核发送至其他numa的物理网卡的数据包; 所述第一CPU核发送至所在numa内其他CPU核的数据包; 所述第一CPU核发送至其他numa的CPU核的数据包。3. 根据权利要求2所述的负载均衡方法,其特征在于,所述第一CPU核接收或发送一种 数据包称为一个判定要素,所述第一CPU核对应的测试项至少为一个,每个测试项均至少 包括一个判定要素; 根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定 所述第一CPU核的负载处理压力包括: 确定所述测试项中每个判定要素的分值,根据每个判定要素的分值以及上一时间周期 内第一CPU核接收和/或发送的数据包的数量和/或流量计算所述测试项的分值; 根据各个测试项的分值计算所述第一CPU核的负载处理压力分值。4. 根据权利要求3所述的负载均衡方法,其特征在于,所述根据各个测试项的分值计 算所述第一CPU核的负载处理压力分值的计算方式如下: M=B1X^a2X2+. . . +anxn 其中,所述M为所述第一CPU核的负载处理压力分值,所述Xi[ie(l,n)]为第i个测 试项的分值,所述ajie(l,n)]为预设的第i个测试项的权重,且ai+a2+...+an= 1,所述 n为测试项的数量。5. 根据权利要求4所述的负载均衡方法,其特征在于,所述方法还包括: 当所述第一CPU核在上一时间周期内处于运行稳定状态且系统没有处于负载稳定状 态时,重新确定所述第一CPU核的各个测试项的权重,使系统达到负载稳定状态,其中,所 述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状态,所述负载稳定状态是 指系统的各个CPU核对负载的处理达到相对平衡的状态; 所述根据各个测试项的分值计算所述第一CPU核的负载处理压力分值包括: 根据各个测试项的分值以及重新确定的对应的权重计算所述第一CPU核的负载处理 压力分值。6. 根据权利要求5所述的负载均衡方法,其特征在于,所述第一CPU核在上一时间周期 内处于运行稳定状态包括: 获取所述第一CPU核在上一时间周期内各时段内所述测试项的权重,所述测试项的权 重根据所述第一CPU核各个测试项在上一时间周期内各时段内接收或发送的数据包的数 量和/或流量进行确定; 判断所述测试项的权重在所述上一时间周期内是否大致相同,如果是,则认为所述第 一CPU核在上一时间周期内处于运行稳定状态。7. 根据权利要求6所述的负载均衡方法,其特征在于,所述测试项的权重根据所述第 一CPU核各个测试项在上一时间周期内各时段内接收或发送的数据包的数量和/或流量进 行确定包括: 根据各个测试项的数据包的数量和/或流量占全部测试项的比重重新确定所述第一(PU核的各个测试项的权重。8. 根据权利要求7所述的负载均衡方法,其特征在于,所述根据各个测试项的数据包 的数量和/或流量占全部测试项的比重重新确定所述第一CPU核的各个测试项的权重还包 括: 选取所述测试项的数据包的数量或流量最少的判定要素参与所述测试项权重的计算。9. 根据权利要求6-8任意一项所述的负载均衡方法,其特征在于,所述重新确定所述 第一CPU核的各个测试项的权重包括: 将所述测试项在上一时间周期内各时段的权重的均值作为所述测试项的新权重; 或,在所述测试项在上一时间周期内各时段的权重中选择一个权重值作为所述测试项 的新权重。10. 根据权利要求6所述的负载均衡方法,其特征在于,所述判断所述测试项的权重在 所述上一时间周期内是否大致相同包括: 判断上一时间周期内各时段的所述测试项的各个权重的标准差是否小于或等于第一 预设标准差,如果是,则认为所述测试项的权重在所述上一时间周期内大致相同。11. 根据权利要求5所述的负载均衡方法,其特征在于,所述系统没有处于负载稳定状 态包括: 判断各个CPU核在上一时间周期内各时段的平均丢包率是否大致相同,如果否,则认 为系统没有处于负载稳定状态。12. 根据权利要求11所述的负载均衡方法,其特征在于,所述判断各个CPU核在上一时 间周期内各时段的平均丢包率是否大致相同包括: 判断各个CPU核在上一时间周期内各时段的平均丢包率的标准差是否小于或等于第 二预设标准差,如果是,则认为各个CPU核的平均丢包率大致相同。13. 根据权利要求1所述的负载均衡方法,其特征在于,所述将当前时间周期内接收到 的数据包发送至其他CPU核进行处理包括: 判断所述第一CPU核所在的numa中是否存在能够处理负载的第二CPU核; 如果存在,则将所述当前时间周期内接收到的数据包转发至所述第二CPU核。14. 根据权利要求13所述的负载均衡方法,其特征在于,当所述第一CPU核所在的 numa中不存在能够处理负载的第二CPU核时,所述方法还包括: 判断其他numa中是否存在能够处理负载的第三CPU核; 如果存在,则将所述接收到的数据包转发至所述第三CPU核。15. -种负载均衡装置,其特征在于,所述装置包括:负载处理压力确定单元、判断单 元和发送单元,其中所述负载处理压力确定单元与所述判断单元连接,所述判断单元与所 述发送单元连接; 所述负载处理压力确定单元,用于根据上一时间周期内第一CPU核接收和/或发送的 数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力; 所述判断单元,用于判断所述负载处理压力是否高于或等于预设的最高处理能力,如 果是,则激活所述发送单元; 所述发送单元,用于将当前时间周期内接收到的数据包发送至其他CPU核进行处理。16. 根据权利要求15所述的负载均衡装置,其特征在于,所述第一CPU核接收的数据包 至少包括以下一种: 所述第一CPU核接收的来自所在numa的物理网卡的数据包; 所述第一CPU核接收的来自其他numa的物理网卡的数据包; 所述第一CPU核接收的来自所在numa内其他CPU核转发的数据包; 所述第一CPU核接收的来自其他numa的CPU核转发的数据包; 所述第一CPU核发送的数据包至少包括以下一种: 所述第一CPU核发送至所在numa的物理网卡的数据包; 所述第一CPU核发送至其他numa的物理网卡的数据包; 所述第一CPU核发送至所在numa内其他CPU核的数据包; 所述第一CPU核发送至其他numa的CPU核的数据包。17. 根据权利要求16所述的负载均衡装置,其特征在于,所述第一CPU核接收或发送一 种数据包称为一个判定要素,所述第一CPU核对应的测试项至少为一个,每个测试项均至 少包括一个判定要素; 所述负载处理压力确定单元包括:测试项分值计算单元和负载处理压力分值计算单 元,所述测试项分值计算单元与所述负载处理压力分值计算单元连接,所述负载处理压力 分值计算单元与所述判断单元连接; 所述测试项分值计算单元,用于确定所述测试项中每个判定要素的分值,根据每个判 定要素的分值以及上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或流量 计算所述测试项的分值; 所述负载处理压力分值计算单元,用于根据各个测试项的分值计算所述第一CPU核的 负载处理压力分值。18. 根据权利要求17所述的负载均衡装置,其特征在于,所述负载处理压力分值计算 单元,用于根据各个测试项的分值计算所述第一CPU核的负载处理压力分值的计算方式如 下: M=B1X^a2X2+. . . +anxn 其中,所述M为所述第一CPU核的负载处理压力分值,所述Xi[ie(l,n)]为第i个测 试项的分值,所述ajie(l,n)]为预设的第i个测试项的权重,且ai+a2+...+an= 1,所述 n为测试项的数量。19. 根据权利要求18所述的负载均衡装置,其特征在于,所述负载处理压力分值计算 单元包括:权重确定单元和计算单元; 其中,所述测试项分值计算单元与所述权重确定单元连接,所述权重单元与所述计算 单元连接; 所述权重确定单元,用于当所述第一CPU核在上一时间周期内处于运行稳定状态且系 统没有处于负载稳定状态时,重新确定所述第一CPU核的各个测试项的权重,使系统达到 负载稳定状态,其中,所述运行稳定状态是指所述第一CPU核各个指标处于相对稳定的状 态,所述负载稳定状态是指系统的各个CPU核对负载的处理达到相对平衡的状态; 所述计算单元,用于根据各个测试项的分值以及重新确定的对应的权重计算所述第一(PU核的负载处理压力分值。20. 根据权利要求15所述的负载均衡装置,其特征在于,所述发送单元包括:第二CPU 核判断单元、第二CPU核发送单元; 所述判断单元与所述第二CPU核判断单元连接,所述第二CPU核判断单元与所述第二CPU核发送单元连接; 所述第二CPU核判断单元,用于判断所述第一CPU核所在的numa中是否存在能够处理 负载的第二CPU核,如果存在,则激活所述第二CPU核发送单元; 所述第二CPU核发送单元,用于将所述当前时间周期内接收到的数据包转发至所述第 二CPU核。21. 根据权利要求20所述的负载均衡装置,其特征在于,所述发送单元还包括第三CPU 核判断单元和第三CPU核发送单元; 所述第二CPU核判断单元与所述第三CPU核判断单元连接,所述第三CPU核判断单元 与所述第三CPU核发送单元连接; 所述第二CPU核判断单元,还用于当所述第一CPU核所在的numa中不存在能够处理负 载的第二CPU核时激活所述第三CPU核判断单元; 所述第三CPU核判断单元,用于判断其他numa中是否存在能够处理负载的第三CPU核,如果存在,则激活所述第三CPU核发送单元; 所述第三CPU核发送单元,用于将所述接收到的数据包转发至所述第三CPU核。
【专利摘要】本发明实施例公开了一种负载均衡方法,所述方法包括:根据上一时间周期内第一CPU核接收和/或发送的数据包的数量和/或数据流量确定所述第一CPU核的负载处理压力;判断所述负载处理压力是否高于或等于预设的最高处理能力;如果是,则将当前时间周期内接收到的数据包发送至其他CPU核进行处理。本发明实施例还公开了一种负载均衡装置。本发明以数据包为单位来在CPU核之间均衡负载,使更多的CPU核参与到处理该进程中来,而不是只有少数几个CPU进行处理,从而真正达到均衡负载的目的,提高了系统性能,也节约了系统资源。
【IPC分类】H04L12/803, G06F9/50
【公开号】CN104901898
【申请号】CN201510309271
【发明人】孙浩
【申请人】东软集团股份有限公司
【公开日】2015年9月9日
【申请日】2015年6月8日

最新回复(0)