CN106533978B - 一种网络负载均衡方法及系统 - Google Patents

一种网络负载均衡方法及系统 Download PDF

Info

Publication number
CN106533978B
CN106533978B CN201611061061.4A CN201611061061A CN106533978B CN 106533978 B CN106533978 B CN 106533978B CN 201611061061 A CN201611061061 A CN 201611061061A CN 106533978 B CN106533978 B CN 106533978B
Authority
CN
China
Prior art keywords
queue
polling cycle
cpu
user space
weighted 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
CN201611061061.4A
Other languages
English (en)
Other versions
CN106533978A (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 CN201611061061.4A priority Critical patent/CN106533978B/zh
Publication of CN106533978A publication Critical patent/CN106533978A/zh
Application granted granted Critical
Publication of CN106533978B publication Critical patent/CN106533978B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • H04L47/522Dynamic queue service slot or variable bandwidth allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/623Weighted service order

Abstract

本发明提供了一种网络负载均衡方法,对于任意一个用户态cpu,确定该用户态cpu在其当前的轮询周期内,从每一个队列中接收的报文数量;依据从每一个队列中接收的报文数量,对每一个队列在下一个轮询周期内的权值进行计算;依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间。本发明提供的网络负载均衡方法,在一个轮询周期内,对每个队列的轮询时间,依据从该队列中接收到的报文数量进行确定,针对接收到的不同的报文数量,为相应队列分配不同的轮询时间,实现了用户态cpu从各个队列接收数据时的网络负载均衡。

Description

一种网络负载均衡方法及系统
技术领域
本发明涉及异构平台技术领域,特别涉及一种网络负载均衡方法及系统。
背景技术
随着科技的发展,多核异构平台的应用越来越广泛。在多核异构平台中设置有多个cpu,这些cup分为用户态cpu和内核态cpu。其中,内核态cpu具有较高的访问权限,可以访问内存中所有的数据。用户态cpu主要用于对数据的处理及快速转发。
现有多核异构平台中,处于用户态的cpu采用轮询的方式分别从各个数据报文队列中接收报文数据,从每个数据报文队列中接收报文的时间相同。而每个数据报文队列对于数据报文的传输量存在较大差异,因此,会出现从某一数据报文队列接收数据时,数据未接收完成,便轮询到下一数据报文队列的情况,导致了对各个数据报文队列的负载不均衡。
发明内容
本发明所要解决的技术问题是提供一种网络负载均衡方法,为各个数据报文队列分配相应的轮询时间,以使用户态cpu对每一个数据报文队列达到网络负载均衡。
本发明还提供一种网络负载均衡设备,用以保证上述方法在实际中的实现及应用。
一种网络负载均衡方法,所述方法应用于异构平台,所述异构平台由多个非统一内存访问numa架构组成;每一个所述numa架构中设置有多个用户态cpu和多个内核态cpu,所述用户态cpu和所述内核态cpu一一对应,组成多个核间队列;每一个所述用户态cpu,同与其存在上下文关系的其它用户态cpu组成共享队列;同与其所在numa架构中的各个网卡分别组成接收队列;每一个所述用户态cpu通过其所在的各个队列接收数据报文;所述方法包括:
对于任意一个用户态cpu,确定该用户态cpu在其对应的当前轮询周期内,从每一个队列中接收的报文数量;
依据各个所述报文数量,按预设的计算规则,对每一个队列在下一轮询周期内所对应的权重值进行计算;
依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间,使得该用户态cpu在各个队列对应的轮询时间内,从各个队列中接收相应数量的报文,进而实现对每一个队列的网络负载均衡。
上述的方法,优选的,所述确定该用户态cpu在其对应的当前轮询周期内,从每一个队列接收的报文数量,包括:
当该用户态cpu进入当前轮询周期时,实时记录每一个队列接收到的每一条报文数量;
在所述当前轮询周期结束时,对记录的每一条报文数量进行累加,获得每一个队列在当前轮询周期内接收的总的报文数量。
上述的方法,优选的,所述依据各个所述报文数量,按预设的计算规则,对每一个队列在下一轮询周期内所对应的权重值进行计算,包括:
对于该用户态cpu所在的任意一个队列,确定该队列在当前轮询周期内接收的报文数量所在的数据范围;
依据所述数据范围,结合该队列在当前轮询周期中对应权重值所在的预设权重区间中的位置,对该队列在下一轮询周期中对应的权重值进行计算;所述预设权重区间根据每一个队列的队列类型进行预设。
上述的方法,优选的,所述依据所述数据范围,结合该队列在当前轮询周期中对应权重值所在的预设权重区间中的位置,对该队列在下一轮询周期中对应的权重值进行计算,包括:
判断该队列在当前轮询周期中对应权重值是否达到所述预设权重区间中的设定值;
当达到所述设定值,且所述数据范围满足相应的范围条件时,将该队列在当前轮询周期中的权重值作为该队列在下一轮询周期中的权重值。
上述的方法,优选的,依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间包括:
确定每一个队列所对应的权重值在总的权重值中所占的比例;
按所述比例为所述队列分配对应的轮询时间。
一种网络负载均衡系统,所述系统应用于异构平台,所述异构平台由多个非统一内存访问numa架构组成;每一个所述numa架构中设置有多个用户态cpu和多个内核态cpu,所述用户态cpu和所述内核态cpu一一对应,组成多个核间队列;每一个所述用户态cpu,同与其存在上下文关系的其它用户态cpu组成共享队列;同与其所在numa架构中的各个网卡分别组成接收队列;每一个所述用户态cpu通过其所在的各个队列接收数据报文;所述系统包括:
确定单元,用于对于任意一个用户态cpu,确定该用户态cpu在其对应的当前轮询周期内,从每一个队列中接收的报文数量;
计算单元,用于依据各个所述报文数量,按预设的计算规则,对每一个队列在下一轮询周期内所对应的权重值进行计算;
分配单元,用于依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间,使得该用户态cpu在各个队列对应的轮询时间内,从各个队列中接收相应数量的报文,进而实现对每一个队列的网络负载均衡。
上述的系统,优选的,所述确定单元包括:
记录子单元,用于当该用户态cpu进入当前轮询周期时,实时记录每一个队列接收到的每一条报文数量;
累加子单元,用于在所述当前轮询周期结束时,对记录的每一条报文数量进行累加,获得每一个队列在当前轮询周期内接收的总的报文数量。
上述的系统,优选的,所述计算单元包括:
第一确定子单元,用于对于该用户态cpu所在的任意一个队列,确定该队列在当前轮询周期内接收的报文数量所在的数据范围;
计算子单元,用于依据所述数据范围,结合该队列在当前轮询周期中对应权重值所在的预设权重区间中的位置,对该队列在下一轮询周期中对应的权重值进行计算;所述预设权重区间根据每一个队列的队列类型进行预设。
上述的系统,优选的,所述计算子单元包括:
判断模块,用于判断该队列在当前轮询周期中对应权重值是否达到所述预设权重区间中的设定值。
上述的系统,优选的,所述分配单元包括:
第二确定子单元,用于确定每一个队列所对应的权重值在总的权重值中所占的比例;
分配子单元,用于按所述比例为所述队列分配对应的轮询时间。
与现有技术相比,本发明包括以下优点:
本发明提供了一种网络负载均衡方法,对于任意一个用户态cpu,确定该用户态cpu在其当前的轮询周期内,从每一个队列中接收的报文数量;依据从每一个队列中接收的报文数量,对每一个队列在下一个轮询周期内的的权值进行计算;依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间。本发明提供的网络负载均衡方法,在一个轮询周期内,对每个队列的轮询时间,依据从该队列中接收到的报文数量进行确定,针对接收到的不同的报文数量,为相应队列分配不同的轮询时间,实现了用户态cpu从各个队列接收数据时的网络负载均衡。
同时,本发明提供的负载均衡方法,所应用的异构平台,由多个非统一内存访问numa架构组成;每一个所述numa架构中设置有多个用户态cpu和多个内核态cpu,所述用户态cpu和所述内核态cpu一一对应,组成多个核间队列;每一个所述用户态cpu,同与其存在上下文关系的其它用户态cpu组成共享队列;同与其所在numa架构中的各个网卡分别组成接收队列;每一个所述用户态cpu通过其所在的各个队列接收数据报文。该异构平台中,用户态cpu与内核态cpu之间一一对应设置,在数据处理过程中,无资源竞争,提升了数据处理的速率。
当然,实施本发明的任一产品并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种网络负载均衡方法的方法流程图;
图2为本发明提供的一种网络负载均衡方法的又一方法流程图;
图3为本发明提供的一种网络负载均衡方法的又一方法流程图;
图4为本发明提供的一种异构平台的架构示意图;
图5为本发明提供的一种异构平台的又一架构示意图;
图6为本发明提供的一种异构平台的又一架构示意图;
图7为本发明提供的一种异构平台的又一架构示意图;
图8为本发明提供的一种异构平台的又一架构示意图;
图9为本发明提供的一种异构平台的又一架构示意图;
图10为本发明提供的一种异构平台的又一架构示意图;
图11为本发明提供的一种网络负载均衡系统的结构示意图;
图12为本发明提供的一种网络负载均衡系统的又一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。
本发明提供了一种网络负载均衡方法,所述方法应用于异构平台,所述方法的执行主体可以为所述异构平台中的处理器。所述异构平台由多个非统一内存访问numa(Non-Uniform Memory Access Architecture)架构组成;每一个所述numa架构中设置有多个用户态cpu和多个内核态cpu,所述用户态cpu和所述内核态cpu一一对应,组成多个核间队列;每一个所述用户态cpu,同与其存在上下文关系的其它用户态cpu组成共享队列;同与其所在numa架构中的各个网卡分别组成接收队列;每一个所述用户态cpu通过其所在的各个队列接收数据报文;图1示出了所述方法的方法流程图,包括步骤:
S101:对于任意一个用户态cpu,确定该用户态cpu在其对应的当前轮询周期内,从每一个队列中接收的报文数量;
本发明实施例中,在用户态cpu对应的当前轮询周期内,对所述用户态cpu从其所在的各个队列中接收的报文数量进行统计。所述各个队列包括所述用户态所在的核间队列、共享队列及接收队列。
S102:依据各个所述报文数量,按预设的计算规则,对每一个队列在下一轮询周期内所对应的权重值进行计算;
本发明实施例中,依据从每一个队列中接收到的报文数量,对该队列在下一轮询周期中对应的权重值进行计算。
S103:依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间,使得该用户态cpu在各个队列对应的轮询时间内,从各个队列中接收相应数量的报文,进而实现对每一个队列的网络负载均衡。
本发明实施例提供的网络负载均衡方法,对于所述异构平台中的任意一个用户态cpu,在该用户态cpu当前的轮询周期内,实时统计该用户态cpu从各个队列中接收的报文数量,当当前轮询周期结束时,依据从每一个队列中接收的报文的总数量,对该队列在下一个轮询周期内对应的权重值进行重新计算,并依据重新计算的权重值为该队列在下一个轮询周期内分配相应的轮询时间。从而使得,用户态cpu在以轮询的方式从各个队列中接收报文时,不再以同样的轮询时间进行轮询,而是依据每一个队列传输数据量的大小,动态的对该队列进行轮询,对于报文传输量大的队列分配较多的轮询时间,从而避免了由于对各个队列平均轮询时间,而造成的各个队列的网络负载不均衡的问题。
如图2所示,示出了,确定用户态cpu在其对应的当前轮询周期内,从每一个队列接收的报文数量的具体过程,包括步骤:
S201:当该用户态cpu进入当前轮询周期时,实时记录每一个队列接收到的每一条报文数量;
S202:在所述当前轮询周期结束时,对记录的每一条报文数量进行累加,获得每一个队列在当前轮询周期内接收的总的报文数量。
本发明实施例提供的方法中,在用户态cpu对应的当前轮询周期内,可以实时的对从每一个队列中接收的报文逐条进行统计,在当前轮询周期结束时,以累加的方式获得从每一个队列中接收的报文的总数量。
如图3所示,示出了,所述依据各个所述报文数量,按预设的计算规则,对每一个队列在下一轮询周期内所对应的权重值进行计算的具体过程,包括:
S301:对于该用户态cpu所在的任意一个队列,确定该队列在当前轮询周期内接收的报文数量所在的数据范围;
S302:依据所述数据范围,结合该队列在当前轮询周期中对应权重值所在的预设权重区间中的位置,对该队列在下一轮询周期中对应的权重值进行计算;所述预设权重区间根据每一个队列的队列类型进行预设。
本发明实施例提供的方法中,用户态cpu所在的各个队列的,队列类型不同,由上述方案的描述可知,至少包含了核间队列,共享队列和接收队列。本发明中,对于不同类型的队列,在用户态cpu进行轮询方式数据接收初始阶段,为不同类型的队列设置有不同的权值区间,在具体的轮询过程中,各个队列的权重值的计算不会超出其所在的权值区间。
本发明中,对于从每一个队列中接收报文的报文数据量也设置有相应的数据范围,该数据范围针对用户态cpu所在的所有的队列进行设置。
例如,对于用户态cpu从核间队列中接收报文,设定接收报文的数量区间为[a,b],核间队列的权重值的区间范围[c,d],本发明实施例中,对于任意一个队列M,首先确定用户态cpu在当前轮询周期T1中,从队列M中接收的报文量N,判断N在区间[a,b]中所处的位置,例如如果N已经达到区间的上限,则表明队列M中需要接收的报文十分充足,则对队列的M权重值进行增加。
本发明中,在确定报文量N的前提下,还可以结合当前轮询周期中队列M对应的当前权重值在区间范围[c,d]中的位置进一步对队列M在下一轮询周期T2中的权重值进行计算。
本发明中,所述依据所述数据范围,结合该队列在当前轮询周期中对应权重值所在的预设权重区间中的位置,对该队列在下一轮询周期中对应的权重值进行计算,具体包括:
判断该队列在当前轮询周期中对应权重值是否达到所述预设权重区间中的设定值;
当达到所述设定值,且所述数据范围满足相应的范围条件时,将该队列在当前轮询周期中的权重值作为该队列在下一轮询周期中的权重值。
本发明中,对于区间范围[c,d]也进行了具体划分,例如分为[c,c1],[c1,d1],[d1,d],三部分,当队列M在当前轮询周期内的权重值落在[c,c1],[d1,d]两个部分时,结合N所在的范围位置,对队列M在下一轮询周期的权重值,进行计算。
本发明中,当队列M的当前权重值到达权值区间中的设定值,如c1和d1位置时,保持队列M的权重值不变。不再对队列M在下一轮询周期中的权重值进行重新计算。
本发明实施例中,依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间的过程包括:
确定每一个队列所对应的权重值在总的权重值中所占的比例;
按所述比例为所述队列分配对应的轮询时间。
本发明中,可以在一定范围内设定一个总的权重值,然后分别获取每一个队列的权重值所占的比例,依据不同的比例关系,对每一个队列的轮询时间进行分配。
本发明实施例提供的网络负载均衡方法,应用于异构平台,以下结合图4至图10,对该异构平台的架构进行描述,图4至图10中的各个连线只用来表明架构的划分,所有连线的交叉位置并未处于连接状态。图4示出了该异构平台中的一架构示意图,在该异构平台中,处于用户态的cpu接收网卡报文并实现快速转发逻辑,使用dpdk开发平台快速处理报文。处于内核态的cpu主要用于实现功能复杂的逻辑。
如图4所示,该异构平台下,内核态cpu和用户态cpu为一一对应设置,组成了多个核间队列。采用这样的设置方式,当防火墙建立核间队列时,能够保证建立的队列的数量最少,每一个核间队列都是一一对应的,不会存在任何资源竞争,例如两个用户态cpu向同一个内核态cpu发送消息。性能上可以做到用户态cpu向内核态cpu发送消息时,无需加锁;内核态cpu向用户态cpu发送消息时,无需加锁,多核状态下如果需要将报文由快速转到慢速时,快慢速之间的通道可以做到线性翻倍。
本发明实施例中,该异构平台下,如图5所示,对于处于同一上下文的各个cpu之间组成了共享队列。对于同一上下文的转发核,其对应关系是每个cpu建立唯一一个接收队列,允许其他cpu向其发送报文消息,即该队列为单接收者、多发送者,保证在接收报文时每核可以独立处理该资源,做到多核并发处理时可以性能线性增长。
图5中,示出了内核态与内核态的cpu之间的队列关系,以及用户态与用户态之间的队列关系,同一上下文的每个cpu均存在一个核间接收队列,其他cpu可以向该cpu发送报文。由于用户态cpu和内核态cpu之间采取一一对应关系,故而当用户态的cpu想将报文发送给非对应cpu时,需要先将该报文倒核到与内核cpu一一对应的用户态cpu再次发送。
本发明实施例中,该异构平台下,如图6所示,本发明的网卡收包在快速逻辑实现,是基于dpdk平台实现的快速转发逻辑,cpu与网卡的对应关系是基于numa架构的设计,即每个cpu只接受该numa内网卡的报文,并不接受其他numa的报文;但是每个cpu可以向任何一个numa发送报文。
图6中,每一个网卡只创建相应numa架构内cpu个数个接收队列,将接收到的报文发给该numa架构中的cpu进行处理。即,网卡收到的报文,只会交给该numa内部的cpu,并不会将报文跨越numa处理,这样处理减少了cpu跨numa访问内存,访问网卡造成的性能开销。
例如在图7中,cpu1只接收从网卡1-网卡4的报文,并不从网卡5-网卡8收包;cpu7只接收从网卡5-网卡8的报文,并不接收从网卡1到网卡4的报文。这样做是因为,在numa架构下,如果cpu访问非该cpu所属网卡,处理非该cpu的内存,性能下浮较大。本发明按照1、2口,3、4口,5、6口,7、8口进行二层转发,三层转发做过性能测试对比,如上架构与每核接收所有网卡的队列,同样做转发,后者性较前者下降至少30%。
图8、图9中,对于网卡而言,每个cpu都可以向numa0的网卡1发送报文,每个cpu都可以向numa1的网卡5发送报文,对应关系全连接。每一个cpu的发包队列都是全连接的,每一个cpu都可以将报文直接发送出去。
基于上述对异构平台中各个不同架构的描述,如图10所示,对于任意一个用户态cpu,用户态cpu分别从各个网卡的接收队列中接收报文,接收队列的数量为该用户态cpu所在numa架构中网卡的数量,从用户态cpu的共享队列中接收报文,同时还从与内核态cpu建立的核间队列中接收报文。
本发明实施例提供一个具体实例,如果一个numa架构内有20块网卡,其中16块千兆网卡,4块万兆网卡,那么在进行网络转发的过程中,如果轮询的概率是均匀的,当万兆网卡流量较大时,很容易导致因为处理不及时而大量丢包,如果使用perf抓耗性能点,会发现千兆网卡没有报文收到却占用cpu好高,很明显这样设计是不合理的,本发明使用是基于改进的权重值的、随真实网络流量变化的轮询算法,可以做到报文的处理时负载均衡的,哪个队列收到的流量较大,轮询处理的时间就长(分到的cpu时间片就多)。在网络转发核每结束一轮轮询后,计算从每个队列中收到的报文数量,并进行权重值计算,来决定下一次从每个队列中接收报文的个数。
初始化时万兆网卡的权重为100,千兆网卡的权重为20,用户态核间队列和内核态核间队列的权重值为50。其中千兆网卡的最高权重值为50,最低权重值为5;万兆网卡的最高权重值为250,最低权重值为25;核间队列的最高权重值为125,最低权重值为12。具体权重改变规则如下:
每一轮如果任意队列的接收数量为0,则权重值减2直至最低权重值;
如果接收队列收到的报文数量等于32,则权重值加2直至最高权重值。这是因为为了提升防火墙的处理性能,快速对队列的处理都是批量收包,即每收到一次都是收32个报文。报文数量为32相当于满负荷收包,代表这个网卡报文数量十分充足。
如果接收到的报文数量大于16小于32,且权重值的数量在最低和正常的四分之一之间,则权重值加1直至正常的四分之一。
如果接收到的报文数量大于16小于32,且权重值的数量在最高和正常的四分之三之间,则权重值减1直至正常的四分之三。
如果该队列的权重值达到最低值,则只要它再次收到报文,权重值即加1。
如果该队列的权重值达到最高值,如果接收到的报文数量不足32,则权重值减1。
综上,本发明基于如上规则根据每个队列收到的报文数量对进行权重值计算,并根据权重值决定每个队列分到的时间片长短。这样做大大增加了的防火墙在处理不同类型的转发的性能。在测试udp吞吐时,报文性能提升10%到25%不等,因为正常的吞吐测试需要轮询核间队列,故而相对于等同概率的接收队列,调用网卡队列次数增加,减少了核间队列的调用,更加符合实际场景,性能得到大幅提升。同理测试新建性能时,性能提升15%到30%左右,因为随着新建性能的测试,慢速发送报文数量增加,故而kfast到ufast的权重值会随之增加,得到更加公平的调用,使得通道报文能得到及时调用,大幅提升新建性能。
本发明提供的方法中,异构平台下使用改进的权重值法来轮询每个队列,防火墙的处理流程可以做到真正的负载均衡。
根据队列的类型不同,初始化时每个队列予以不同的权重值,中间会随着该队列单位时间内收到报文的数量决定下一轮的权重值,根据权重值对队列进行时间片分配(轮询次数不同),实现用户态处理转发报文可以负载均衡。
本发明中,最小化每核处理队列数,全部为单消费者,队列访问无任何竞争资源,多核下性能可以做到线性增长。
本发明的队列均设计为单消费者,多核下无任何资源竞争,整个快速模块的功能就是轮询处理队列中的报文并转发,因为本发明中的队列均为单消费者,从而做到性能可以随cpu增加,做到线性增加。
与图1所示的网络负载均衡方法相对应,本发明实施例还提供了一种网络负载均衡系统,所述系统应用于异构平台,所述异构平台由多个非统一内存访问numa架构组成;每一个所述numa架构中设置有多个用户态cpu和多个内核态cpu,所述用户态cpu和所述内核态cpu一一对应,组成多个核间队列;每一个所述用户态cpu,同与其存在上下文关系的其它用户态cpu组成共享队列;同与其所在numa架构中的各个网卡分别组成接收队列;每一个所述用户态cpu通过其所在的各个队列接收数据报文;其结构示意图如图11所示,所述系统包括:
确定单元401,用于对于任意一个用户态cpu,确定该用户态cpu在其对应的当前轮询周期内,从每一个队列中接收的报文数量;
计算单元402,用于依据各个所述报文数量,按预设的计算规则,对每一个队列在下一轮询周期内所对应的权重值进行计算;
分配单元403,用于依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间,使得该用户态cpu在各个队列对应的轮询时间内,从各个队列中接收相应数量的报文,进而实现对每一个队列的网络负载均衡。
本发明实施例提供的网络负载均衡系统,对于异构平台中的任意一个用户态cpu,在该用户态cpu的各个轮询周期,对于每一个轮询周期,确定当前轮询周期结束时,用户态cpu从各个队列中接收的报文数据量,依据所述报文数据量确定每一个队列在下一个轮询周期内对应的权值,然后依据各自的权值对每一个队列分配轮询时间,从而使得用户态cpu依据从每一个队列中接收了多少数据量来为每一个队列动态分配轮询时间,达到了各个队列的动态网络负载均衡。
图12在图11的基础上,示出了本发明实施例中网络负载均衡系统的一详细结构示意图,所述确定单元401包括:
记录子单元404,用于当该用户态cpu进入当前轮询周期时,实时记录每一个队列接收到的每一条报文;
累加子单元405,用于在所述当前轮询周期结束时,对记录的每一条报文进行累加,获得每一个队列在当前轮询周期内接收的总的报文数量。
所述计算单元402包括:
第一确定子单元406,用于对于该用户态cpu所在的任意一个队列,确定该队列在当前轮询周期内接收的报文数量所在的数据范围;
计算子单元407,用于依据所述数据范围,结合该队列在当前轮询周期中对应权重值所在的预设权重区间中的位置,对该队列在下一轮询周期中对应的权重值进行计算;所述预设权重区间根据每一个队列的队列类型进行预设。
所述计算子单元407包括:
判断模块408,用于判断该队列在当前轮询周期中对应权重值是否达到所述预设权重区间中的设定值。
所述分配单元403包括:
第二确定子单元409,用于确定每一个队列所对应的权重值在总的权重值中所占的比例;
分配子单元410,用于按所述比例为所述队列分配对应的轮询时间。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种网络负载均衡方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种网络负载均衡方法,其特征在于,所述方法应用于异构平台,所述异构平台由多个非统一内存访问numa架构组成;每一个所述numa架构中设置有多个用户态cpu和多个内核态cpu,所述用户态cpu和所述内核态cpu一一对应,组成多个核间队列;每一个所述用户态cpu,同与其存在上下文关系的其它用户态cpu组成共享队列;同与其所在numa架构中的各个网卡分别组成接收队列;每一个所述用户态cpu通过其所在的各个队列接收数据报文;所述方法包括:
对于任意一个用户态cpu,确定该用户态cpu在其对应的当前轮询周期内,从每一个队列中接收的报文数量;
依据各个队列接收到的所述报文数量,结合当前轮询周期内各个队列对应权重值在预设权重区间中的位置,对每一个队列在下一轮询周期内所对应的权重值进行计算;
依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间,使得该用户态cpu在各个队列对应的轮询时间内,从各个队列中接收相应数量的报文,进而实现对每一个队列的网络负载均衡。
2.根据权利要求1所述的方法,其特征在于,所述确定该用户态cpu在其对应的当前轮询周期内,从每一个队列接收的报文数量,包括:
当该用户态cpu进入当前轮询周期时,实时记录每一个队列接收到的每一条报文数量;
在所述当前轮询周期结束时,对记录的每一条报文数量进行累加,获得每一个队列在当前轮询周期内接收的总的报文数量。
3.根据权利要求1或2所述的方法,其特征在于,所述依据各个队列接收到的所述报文数量,结合当前轮询周期内各个队列对应权重值在预设权重区间中的位置,对每一个队列在下一轮询周期内所对应的权重值进行计算,包括:
对于该用户态cpu所在的任意一个队列,确定该队列在当前轮询周期内接收的报文数量所在的数据范围;
依据所述数据范围,结合该队列在当前轮询周期中对应权重值所在的所述预设权重区间中的位置,对该队列在下一轮询周期中对应的权重值进行计算;所述预设权重区间根据每一个队列的队列类型进行预设。
4.根据权利要求3所述的方法,其特征在于,所述依据所述数据范围,结合该队列在当前轮询周期中对应权重值所在的预设权重区间中的位置,对该队列在下一轮询周期中对应的权重值进行计算,包括:
判断该队列在当前轮询周期中对应权重值是否达到所述预设权重区间中的设定值;
当达到所述设定值,且所述数据范围满足相应的范围条件时,将该队列在当前轮询周期中的权重值作为该队列在下一轮询周期中的权重值。
5.根据权利要求1所述的方法,其特征在于,依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间包括:
确定每一个队列所对应的权重值在总的权重值中所占的比例;
按所述比例为所述队列分配对应的轮询时间。
6.一种网络负载均衡系统,其特征在于,所述系统应用于异构平台,所述异构平台由多个非统一内存访问numa架构组成;每一个所述numa架构中设置有多个用户态cpu和多个内核态cpu,所述用户态cpu和所述内核态cpu一一对应,组成多个核间队列;每一个所述用户态cpu,同与其存在上下文关系的其它用户态cpu组成共享队列;同与其所在numa架构中的各个网卡分别组成接收队列;每一个所述用户态cpu通过其所在的各个队列接收数据报文;所述系统包括:
确定单元,用于对于任意一个用户态cpu,确定该用户态cpu在其对应的当前轮询周期内,从每一个队列中接收的报文数量;
计算单元,用于依据各个队列接收到的所述报文数量,结合当前轮询周期内各个队列对应权重值在预设权重区间中的位置,对每一个队列在下一轮询周期内所对应的权重值进行计算;
分配单元,用于依据计算的各个权重值,为每一个队列在下一轮询周期内分配对应的轮询时间,使得该用户态cpu在各个队列对应的轮询时间内,从各个队列中接收相应数量的报文,进而实现对每一个队列的网络负载均衡。
7.根据权利要求6所述的系统,其特征在于,所述确定单元包括:
记录子单元,用于当该用户态cpu进入当前轮询周期时,实时记录每一个队列接收到的每一条报文数量;
累加子单元,用于在所述当前轮询周期结束时,对记录的每一条报文数量进行累加,获得每一个队列在当前轮询周期内接收的总的报文数量。
8.根据权利要求6或7所述的系统,其特征在于,所述计算单元包括:
第一确定子单元,用于对于该用户态cpu所在的任意一个队列,确定该队列在当前轮询周期内接收的报文数量所在的数据范围;
计算子单元,用于依据所述数据范围,结合该队列在当前轮询周期中对应权重值所在的所述预设权重区间中的位置,对该队列在下一轮询周期中对应的权重值进行计算;所述预设权重区间根据每一个队列的队列类型进行预设。
9.根据权利要求8所述的系统,其特征在于,所述计算子单元包括:
判断模块,用于判断该队列在当前轮询周期中对应权重值是否达到所述预设权重区间中的设定值。
10.根据权利要求6所述的系统,其特征在于,所述分配单元包括:
第二确定子单元,用于确定每一个队列所对应的权重值在总的权重值中所占的比例;
分配子单元,用于按所述比例为所述队列分配对应的轮询时间。
CN201611061061.4A 2016-11-24 2016-11-24 一种网络负载均衡方法及系统 Active CN106533978B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611061061.4A CN106533978B (zh) 2016-11-24 2016-11-24 一种网络负载均衡方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611061061.4A CN106533978B (zh) 2016-11-24 2016-11-24 一种网络负载均衡方法及系统

Publications (2)

Publication Number Publication Date
CN106533978A CN106533978A (zh) 2017-03-22
CN106533978B true CN106533978B (zh) 2019-09-10

Family

ID=58356995

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611061061.4A Active CN106533978B (zh) 2016-11-24 2016-11-24 一种网络负载均衡方法及系统

Country Status (1)

Country Link
CN (1) CN106533978B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107567047B (zh) * 2017-09-28 2019-10-08 北京邮电大学 一种异构网络中基于网络流量时空动态变化的负载均衡方法
CN108023829B (zh) * 2017-11-14 2021-04-23 东软集团股份有限公司 报文处理方法及装置、存储介质、电子设备
CN108363621B (zh) * 2018-01-18 2020-09-01 东软集团股份有限公司 numa架构下的报文转发方法、装置、存储介质及电子设备
CN109831524B (zh) * 2019-03-11 2023-04-18 平安科技(深圳)有限公司 一种负载均衡处理方法及装置
CN111049750B (zh) * 2019-12-05 2022-12-09 东软集团股份有限公司 一种报文转发方法、系统及设备
CN111865713B (zh) * 2020-06-23 2022-02-08 东软集团股份有限公司 吞吐测试方法、装置、存储介质和电子设备
CN114553780A (zh) * 2020-11-11 2022-05-27 北京华为数字技术有限公司 负载均衡的方法、装置以及网卡
CN115002047B (zh) * 2022-05-20 2023-06-13 北京百度网讯科技有限公司 一种远程直接数据存取方法、装置、设备以及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101013388A (zh) * 2007-01-26 2007-08-08 浙江大学 面向异构多核体系的进程调度方法
CN102271078A (zh) * 2010-06-07 2011-12-07 龚华清 面向服务质量保障的负载均衡方法
CN102404211A (zh) * 2011-11-15 2012-04-04 北京天融信科技有限公司 一种amp架构下处理器负载均衡的实现方法及装置
CN102970244A (zh) * 2012-11-23 2013-03-13 上海寰创通信科技股份有限公司 一种多cpu核间负载均衡的网络报文处理方法
CN103685053A (zh) * 2013-11-26 2014-03-26 北京航空航天大学 一种基于剩余任务处理时间补偿的网络处理器负载均衡调度方法
CN104901898A (zh) * 2015-06-08 2015-09-09 东软集团股份有限公司 一种负载均衡方法及装置
CN105491138A (zh) * 2015-12-15 2016-04-13 国网智能电网研究院 一种基于负载率分级触发的分布式负载调度方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101013388A (zh) * 2007-01-26 2007-08-08 浙江大学 面向异构多核体系的进程调度方法
CN102271078A (zh) * 2010-06-07 2011-12-07 龚华清 面向服务质量保障的负载均衡方法
CN102404211A (zh) * 2011-11-15 2012-04-04 北京天融信科技有限公司 一种amp架构下处理器负载均衡的实现方法及装置
CN102970244A (zh) * 2012-11-23 2013-03-13 上海寰创通信科技股份有限公司 一种多cpu核间负载均衡的网络报文处理方法
CN103685053A (zh) * 2013-11-26 2014-03-26 北京航空航天大学 一种基于剩余任务处理时间补偿的网络处理器负载均衡调度方法
CN104901898A (zh) * 2015-06-08 2015-09-09 东软集团股份有限公司 一种负载均衡方法及装置
CN105491138A (zh) * 2015-12-15 2016-04-13 国网智能电网研究院 一种基于负载率分级触发的分布式负载调度方法

Also Published As

Publication number Publication date
CN106533978A (zh) 2017-03-22

Similar Documents

Publication Publication Date Title
CN106533978B (zh) 一种网络负载均衡方法及系统
CN109104500A (zh) 一种动态调整的服务器负载均衡方法及装置
CN104901898B (zh) 一种负载均衡方法及装置
CN104902001B (zh) 基于操作系统虚拟化的Web请求负载均衡方法
CN109218355A (zh) 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法
US20180247265A1 (en) Task grouping method and apparatus, electronic device, and computer storage medium
CN110233860A (zh) 一种负载均衡方法、装置和系统
US20110167112A1 (en) Distributed data processing system
CN109831524B (zh) 一种负载均衡处理方法及装置
CN103699445A (zh) 一种任务调度方法、装置及系统
CN105208133B (zh) 一种服务器、负载均衡器以及服务器负载均衡方法和系统
CN103401947A (zh) 多个服务器的任务分配方法和装置
CN109558446A (zh) 作业请求方法、装置、电子设备及存储介质
CA2532677A1 (en) Communications system providing server load balancing based upon weighted health metrics and related methods
CN102611605A (zh) 一种数据交换网的调度方法、装置和系统
CN104639645A (zh) 网络负载均衡方法、装置及集群服务系统
CN110574010A (zh) 用于任务分配系统中的行为配对的技术
CN109617750A (zh) 一种服务预警方法及网关
CN109617710A (zh) 数据中心间有截止时间约束的大数据传输带宽调度方法
CN106385375B (zh) 用于消息队列的负载均衡方法和装置
CN108111567A (zh) 实现服务器负载均匀的方法及系统
CN104702521A (zh) 负载均衡方法和装置
US6212361B1 (en) Ordering message signals for transmission over a telecommunications channel
CN103795788B (zh) 即时通讯服务器的负载均衡方法和负载均衡服务器
CN107547643A (zh) 一种负载分担方法和装置

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
GR01 Patent grant
GR01 Patent grant