实现多核处理器间中断负载均衡的方法

文档序号:6438412阅读:480来源:国知局
专利名称:实现多核处理器间中断负载均衡的方法
技术领域
本发明涉及计算机网络技术,尤其涉及高速网络流量监测系统多核处理器间操作系统技术。
背景技术
高速网络流量监测过程中,系统每秒钟将接收海量数据包,并对其进行分析处理, 涉及数据采集、数据分析、数据存储等。系统一般采用高性能的多核硬件平台,高效的并行接收和处理网络报文分组。在多核处理器环境中,如果所有中断都集中在某一个处理器核上处理,则在某一个处理器核上高优先级中断处理过频,则会导致低优先级中断丢失,或者由于某处理器核的中断负载过重,导致一些关键实时任务无法运行。
中国专利(公开号CN 1013M664A)文献中涉及到的一种“多核处理器中断负载均衡方法和装置”,该方法预先配置中断设备对应的调度内核组和默认处理内核;当中断设备的中断个数超过中断阀值或默认处理内核的处理量超过中断负载时,控制中断控制器将中断设备路由到默认处理内核所属的调度内核组中的一个或多个内核。该方法主要是对中断设备进行调度,没有涉及到具体的数据报处理;它需要预先设定中断设备对应的调度内核, 灵活性差,不能根据系统负载实时的调整中断调度。中国专利(公开号CN 102004673A)文献中涉及到的一种“多核处理器负载均衡的处理方法及系统”,该方法提取输入报文的标识信息,对标识信息进行HASH运算,将输入报文发送到与HASH值对应的核中进行处理;以及根据多核处理器中各个核的负载情况对选择的HASH散列因子进行调整。该方法属于已有的静态映射算法,需要对每个输入报文进行HASH散列计算,在高速网络环境下调度的实时性不高。
与本发明最接近的中断负载均衡技术为irqbalance技术,irqbalance技术针对多核以及超线程采用共享缓存的系统只处理一次设备中断均衡,即以静态方式分配各设备中断对应的处理器核。但在SMP系统的中断负载均衡处理中,特别是在高速网络流量测量系统中,irqbalance技术仅仅以静态方式将设备中断均衡分配到对应的处理器核上是远远不够的。
在高速网络流量监测系统中,不仅要考虑网卡设备硬中断在各处理器核上的负载均衡,同时还要考虑各处理器后续对所有数据包的处理。跟硬中断相比,软中断消耗的处理器资源则要大得多,所以必须采用一套完整高效的负载均衡方案,解决多处理器核对海量数据包的硬中断和软中断的均衡处理。发明内容
本发明针对现有中断负载均衡技术中仅以静态方式将设备中断均衡分配到对应的处理器核上,在某一个处理器核上高优先级中断处理过频,则会导致低优先级中断丢失, 或者由于某处理器核的中断负载过重,导致一些关键实时任务无法运行等技术问题,本发明提供一种高速网络流量监测系统中多核处理器间的中断负载均衡实现方法。该方法具体包括如下步骤 1、建立调度域
处理器初始化过程中,访问每个处理器,划分调度域,将共享二级缓存的处理器划分到同一个调度域中。调度域内部各处理器之间要实现中断负载均衡。2、IP 分流
根据源IP地址将所有数据包分流到各个调度域中去,要求各调度域间没有重合。具体可采用如下方法将源IP地址跟00000001相与,计算结果为0的数据包进入调度域一,计算结果为1的数据包进入调度域二。3、建立 hash 表
针对每个调度域,以源IP地址和目的IP地址为hash关键字分别建立一个hash表,每个调度域只对自己的hash表进行临界访问。4、处理器负载向量计算
获取CPU工作时间、CPU空闲时间,根据CPU工作时间Tuse、CPU空闲时间Ti die,调用公式
PF = Tuse / ( Tuse + Tidle ),计算处理器负载向量PF。5、调度域内的负载均衡
在各调度域内采用加权轮转调度算法实现负载均衡。用相应的权值表示服务器的处理性能,将网卡发来的中断分配到各处理器,根据权值设置服务器优先级,权值高的服务器优先收到中断并处理,相同权值的处理器轮转调度处理中断。具体技术方案为访问每个处理器,将共享二级缓存的处理器划分到同一个调度域中;根据源IP地址将所有数据包分流到各个调度域中;以源IP地址和目的IP地址为 hash关键字分别建立一个hash表,每个调度域只对自己的hash表进行临界访问,对数据包进行分析统计;根据CPU工作时间、CPU空闲时间,计算处理器负载向量PF ;在各调度域内采用加权轮转调度算法实现负载均衡,将网卡发来的中断分配到各处理器,根据权值设置服务器优先级,权值高的服务器优先收到中断并处理,相同权值的处理器轮转调度处理中断。在系统对所监控网络的所有数据包进行分析统计的过程中,系统将源/目的IP地址相同的数据包归并为同一条“流”,将每个数据包的分析结果按数据“流”的方式临时存储在缓存中。根据公式PF = Tuse / ( Tuse + Tidle )计算处理器负载向量PF,其中Tuse 为CPU工作时间,Tidle为CPU空闲时间。根据上一次调度选择的最优处理器核及其配置权值,选举当前的最优处理器核,各调度域独自保存自己的最优处理器核,调度域内所有处理器核权值的最大值为“最大权值”,各调度域独立保存自己的当前权值,配置权值大于或者等于当前权值的处理器核才可以被调度。各个调度域从处理器核链表表头开始,在该轮次中选择配置权值大于或者等于当前权值的处理器核,当出现配置权值小于当前权值的处理器核,或者已经到达链表表尾时,当前权值减1,回到表头,开始新一轮的调度,如当前权值减至0,则将其翻转为最大权值,重新开始加权轮转。本发明是一种用于高速网络环境下流量监测的多核处理器操作系统的负载均衡方法,其主要功能是通过构建调度域,在调度域内部和调度域之间进行负载的均衡,从而在多核处理器操作系统的调度下,网卡发来的中断被均勻分布在不同的处理器核上,从而提高多处理器核的执行效率。
由操作系统对中断负载进行均衡,使得网卡发来的中断能够均衡的分布在多个处理器核上,提高系统的处理效率。负载均衡能够提高多核运行的并行度,具有很好的实用性。


图1本发明实施过程示意图;图2八核二路多处理器调度域构建示意图。
具体实施方式
在高速网络流量监测过程中,网络每秒传输大于三百万个数据包。对于监测系统来说,也就是每秒至少会产生三百万个中断(包括硬中断和软中断)。基于SMP平台的监测系统必须将这些中断均衡的分配到各处理器上,同步并行响应并处理,才能实现系统的高效工作。
本发明是一种在高速网络流量监测系统中多核处理器间的中断负载均衡实现方法,下面结合图1说明其具体实施过程。
1.建立调度域。调度域是中断负载需要达到平衡的处理器核的集合,对于共享二级高速缓存的处理器核来说,是调度域构建的前提。将共享二级缓存的处理器核划分到同一个调度域中。
在计算机执行程序的过程中,由于出现某个特殊情况(或称为“事件”),使得CPU 中止现行程序,而转去执行处理该事件的处理程序(俗称中断处理或中断服务程序),待中断服务程序执行完毕,再返回断点继续执行原来的程序,这个过程称为中断。在高速网络流量监测过程中,监测系统的流量采集网卡每秒会接收海量数据包,并发出相应中断,系统处理器均将接受并处理。
在该发明中,中断是调度的基本单位,而负载是不同的处理器核需要响应的所有网卡中断。多核处理器有三个典型的特点多核处理器、处理器核间共享二级高速缓存、处理器核之间能通过寄存器直接通信。在这样的处理器上,一级高速缓存是各个处理器核私有的。
调度域是级层式结构。最高层(第η级的调度域,若有η层调度域)包含所有的处理器核,而最底层(第0级,基层调度域)的调度域表示调度中中断负载关系最为密切的处理器核。两个处理器核处在同一调度域中,则需要进行中断负载均衡。调度域之间如果有父子、祖先或者兄弟关系,那么调度域之间的处理器核能进行中断负载均衡。处理器初始化过程中,访问每个处理器,划分调度域,将共享二级缓存的处理器划分到同一个调度域中。调度域内部各处理器之间要实现中断负载均衡。
调度域内建立哈希存储链表。图2以八核二路多处理器为例,说明调度域的结构。
处理器核0、处理器核1、处理器核2和处理器核3为级层调度域,处理器核4、处理器核5、处理器核6和处理器核7亦为级层调度域。两个级层调度域共同构成上一层调度域。每个处理器核在启动时都会被分配一个逻辑ID,这些逻辑ID从0开始递增,建立哈希存储链表。在处理器核初始化的过程中,访问每个处理器核。共享二级缓存的处理器被划分到同一个调度域当中。这样,就可以形成若干个不同的调度域。可将如图2所示的多处理器,建立两个调度域(调度域一CPUO CPUl CPU2 CPU3 调度域二 CPU4 CPU5 CPU6 CPU7 )。2. IP分流。中断负载均衡,根据接收数据包的IP地址(比如数据包源IP地址) 将所有数据包分流到各个调度域中去。例如,系统有两个调度域,可将源IP跟数据序列00000001相与,其结果分别为0 或为1,于是所有的数据包被分成均衡的两部分。将计算结果为0的数据包进入调度域一, 计算结果为1的数据包进入调度域二。即,源IP的值为偶数的数据包的中断响应被划分进调度域一,同时,源IP的值为奇数的数据包的中断响应被划分进调度域二。也可采用其他方式,如按照接收数据包的IP地址顺序、数据包的IP地址的奇、偶性等特征进行调度域分配。如此一来,各调度域间没有IP地址重合的数据包,这样可以提高系统工作效率。如采用1)轮询调度算法,以轮询的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod η,并选出第i个CPU。2)最小连接调度,该算法是把新的连接请求分配到当前连接数最小的CPU。3)IP地址散列调度,该算法针对IP地址的负载均衡, 但它是一种静态映射算法,通过一个散列(Hash )函数将一个IP地址映射到一个CPU。3.建立哈希hash表。针对每个调度域,以源IP地址和目的IP地址为hash关键字分别建立一个hash表,每个调度域只对自己的hash表进行临界访问,对数据包进行分析统计。根据系统层处理流程,在系统对所监控网络的所有数据包进行分析统计的过程中,涉及到数据流信息的存储和查找,采用基于数据流的数据测量方式进行流归并,系统可将源/目的IP地址相同的数据包归并为同一条“流”,将每个数据包的分析结果按数据“流” 的方式临时存储在缓存中。同时,系统采用链表存储结构以及hash算法查找,可以在缓存中高效实现数据存储功能。针对每个调度域分别建立一个hash表,每个调度域只对自己的 hash表进行临界访问。例如,在上述的两个调度域里,为了高效的对数据流信息存储查找, 要分别建立两个hash表,hash表中hash关键字是源IP地址和目的IP地址。显然,由上述的IP分流可知,两表之间不会有相同的表项。如果只有一个hash表,对其操作必须是临界异步的,现在两表是独立的,每个调度域只要对自己的hash表实现临界异步访问即可, 效率提高。对于调度域内多核之间共享双向存储链表,那么必须实现对其临界访问,可采用 Linux多核同步机制自旋锁技术。自旋锁最多只能被一个可执行线程持有,且不会引起调用者睡眠。在自旋锁保持期间的抢占是失效的,只有在可抢占内核或SMP情况下才真正需要。4.处理器中断负载向量计算。根据CPU工作时间、CPU空闲时间,计算处理器负载向量PF。中断负载向量是指进行中断负载比较的尺度。为了对中断负载均衡进行有效的评估,需要使用中断负载向量。中断负载向量,定义为判断处理器核中断负载的基本单位。本发明使用CPU工作时间和CPU空闲时间作为计算中断负载向量的因子。下面的公式给出了处理器核的中断处理器负载向量PF的计算方式,其中Tuse为CPU工作时间,Tidle为CPU 空闲时间,有
PF = Tuse / ( Tuse + Tidle )。5.调度域内的负载均衡。在各调度域内采用加权轮转调度算法实现负载均衡。用相应的权值表示服务器的处理性能,将网卡发来的中断分配到各处理器,权值由中断负载向量PF取倒数后再取整。根据权值设置服务器优先级,权值高的服务器优先收到中断并处理,相同权值的处理器轮转调度处理中断。加权轮转算法是指在轮转算法中综合考虑调度域内各处理器核的权值,在响应新中断时尽量使调度域内各处理器核的负载趋于平衡。当调度域内各处理器核的权值相等时,为普通的轮转算法。为了满足调度域内各处理器核的负载趋于均衡,将调度域内各处理器核的组织结构设置为按权值高低排列的双向链表。系统根据计算处理器中断负载向量PF来表示相应的权值,处理器核的权值与其中断负载向量PF成反比。将网卡发来的中断分配到各处理器,权值高的服务器优先收到中断并处理, 相同权值的处理器轮转调度处理中断。
调度域内的负载均衡具体可采用如下调度算法当前选中的处理器核为“最优处理器核”。根据上一次调度选择的处理器核(上一次的最优处理器核)及其配置权值,选举当前的最优处理器核,最优处理器核为权值最大者。同样,各调度域独自保存自己的最优处理器核。
各个处理器核配置的权值为“配置权值”,调度域内所有处理器核权值的最大值为 “最大权值”,“当前权值”用于权衡最优处理器核。每个调度域内均有自己当前调度的当前权值,初始值为域内的最大权值。各调度域独立保存自己的当前权值,配置权值大于或者等于当前权值的处理器核才可以被调度。当前权值初始化为最大权值,各个调度域内加权轮转调度过程如表1所示。
表1加权轮转调度过程
权利要求
1.实现多核处理器间中断负载均衡的方法,其特征在于,访问每个处理器,将共享二级缓存的处理器划分到同一个调度域中;根据源IP地址将所有数据包分流到各个调度域中; 以源IP地址和目的IP地址为hash关键字分别建立一个hash表,每个调度域只对自己的 hash表进行临界访问,对数据包进行分析统计;根据CPU工作时间、CPU空闲时间,计算处理器负载向量PF;在各调度域内采用加权轮转调度算法实现负载均衡,将网卡发来的中断分配到各处理器,根据权值设置服务器优先级,权值高的服务器优先收到中断并处理,相同权值的处理器轮转调度处理中断。
2.根据权利要求1所述的方法,其特征在于,如系统有两个调度域,将数据包源IP地址跟数据序列00000001相与,其结果分别为0或为1,将计算结果为0的数据包进入调度域一,计算结果为1的数据包进入调度域二。
3.根据权利要求1所述的方法,其特征在于,在系统对所监控网络的所有数据包进行分析统计的过程中,系统将源/目的IP地址相同的数据包归并为同一条“流”,将每个数据包的分析结果按数据“流”的方式临时存储在缓存中。
4.根据权利要求1所述的方法,其特征在于,根据公式PF= Tuse / ( Tuse + Tidle )计算处理器负载向量PF,其中Tuse为CPU工作时间,Tidle为CPU空闲时间。
5.根据权利要求1所述的方法,其特征在于,根据上一次调度选择的最优处理器核及其配置权值,选举当前的最优处理器核,各调度域独自保存自己的最优处理器核,调度域内所有处理器核权值的最大值为“最大权值”,各调度域独立保存自己的当前权值,配置权值大于或者等于当前权值的处理器核才可以被调度。
6.根据权利要求5所述的方法,其特征在于,各个调度域从处理器核链表表头开始,在该轮次中选择配置权值大于或者等于当前权值的处理器核,当出现配置权值小于当前权值的处理器核,或者已经到达链表表尾时,当前权值减1,回到表头,开始新一轮的调度,如当前权值减至0,则将其翻转为最大权值,重新开始加权轮转。
全文摘要
本发明涉及保护网络中多核处理器间中断负载均衡的方法,涉及计算机网络技术。本发明均衡方法采用的技术方案是将共享二级缓存的处理器划分到同一个调度域中,根据源IP地址将所有数据包分流到各个调度域中,建立一个hash表,每个调度域只对自己的hash表进行临界访问,对数据包进行分析统计;在各调度域内采用加权轮转调度算法实现负载均衡,将网卡发来的中断分配到各处理器,根据权值设置服务器优先级,权值高的服务器优先收到中断并处理,相同权值的处理器轮转调度处理中断。由操作系统对中断负载进行均衡,使得网卡发来的中断能够均衡的分布在多个处理器核上,提高系统的处理效率。
文档编号G06F9/50GK102521047SQ20111036130
公开日2012年6月27日 申请日期2011年11月15日 优先权日2011年11月15日
发明者唐红, 张毅, 徐川, 赵国锋 申请人:重庆邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1