调整网络设备资源配置的方法及装置的制造方法

文档序号:8433599阅读:401来源:国知局
调整网络设备资源配置的方法及装置的制造方法
【技术领域】
[0001]本发明实施例涉及通信技术领域,尤其涉及一种调整网络设备资源配置的方法及
>J-U ρ?α装直。
【背景技术】
[0002]网络设备对报文的处理,一般分为报文接收线程、业务处理线程和报文发送线程,首先报文接收线程将报文从硬件接收过来,转交给业务处理线程处理,然后再通过报文发送线程发送出去。其中,报文接收线程是整个设备流量的入口,对实时性要求很高,通常作为单独的线程运行,而业务处理线程对报文的处理可能比较耗时,不同的业务运行在不同的业务处理线程上。由于报文接收线程和业务处理线程共享CPU资源,资源在报文接收线程和业务处理线程上的分配对设备的处理能力影响很大,若报文接收线程数量过少,会造成收包不及时,CPU就会反压到硬件设备导致丢包;若报文接收线程数量过多,占用了业务处理线程的资源,会导致业务处理不及时,未被处理的报文在CPU内部积累超过预定阈值后将被直接转发,从而导致网络设备无法对业务进行有效处理。
[0003]现有的一种为报文接收线程和业务处理线程分配CPU资源的方法如下:由于报文接收线程的实时性要求较高,在多核CPU上,将报文接收线程绑定在一部分独立的内核(core)上,以便独占一部分CPU资源,业务处理线程则分布在其余的core上,这样业务处理线程与报文接收线程互不干涉,保证报文能够及时接收。
[0004]但是,上述分配方法需要预先根据实际的业务负载状况进行试验,寻找出一个合适的报文接收和业务线程占用CPU的比例,然后固化到软件中,一旦业务负载和规格发生变化,就要重新调整。而且在CPU的core比较少的时候,报文接收线程和业务线程之间的比例就更为重要,很难找到一个合适的平衡点,即使根据经验值得到一个合适的比例,在流量很小的时候,报文接收线程仍然处于空转状态参与调度,会造成CPU资源的浪费。

【发明内容】

[0005]本发明实施例提供一种调整网络设备资源配置的方法及装置,以解决报文接收线程和业务处理线程之间的CPU资源占用问题,减少CPU资源的浪费。
[0006]第一方面,本发明实施例提供一种调整网络设备资源配置的方法,包括:
[0007]网络设备在操作系统初始化时,所述网络设备的操作系统内核将M个报文接收线程的工作状态设置为休眠状态、将N个报文接收线程的工作状态设置为非休眠状态,M和N均为自然数,M大于N,M与N的和是一固定值;
[0008]在检测周期内,所述操作系统内核统计所有非休眠状态的报文接收线程的空闲计数值的总和,所述空闲计数值是指一个非休眠状态的报文接收线程在一个所述检测周期内未接收到数据包的次数;
[0009]所述操作系统内核根据所述空闲计数值的总和,调整报文接收线程的工作状态。
[0010]结合第一方面,在第一方面的第一种可能的实现方式中,所述网络设备的操作系统内核将M个报文接收线程的工作状态设置为休眠状态、将N个报文接收线程的工作状态设置为非休眠状态,包括:
[0011]所述操作系统内核分别为所述M个报文接收线程中的每个报文接收线程创建对应的信号量和休眠标识,所述休眠标识用于指示报文接收线程处于休眠状态,并获取所述操作系统内核创建的信号量,陷入内核;
[0012]所述操作系统内核分别为所述N个报文接收线程中的每个报文接收线程创建信号量和非休眠标识,所述非休眠标识用于指示报文接收线程处于非休眠状态,并在有数据包到来时接收所述数据包,无数据包到来时将所述报文接收线程的空闲计数值进行加一操作。
[0013]结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述操作系统内核根据所述空闲计数值的总和,调整报文接收线程的工作状态,包括:
[0014]所述操作系统内核在一个处理器核心的所述检测周期内根据所述空闲计数值的总和,调整报文接收线程的工作状态。
[0015]结合第一方面、第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述检测周期为所述操作系统的一个时隙中断时间的整数倍。
[0016]结合第一方面至第一方面的第三种可能的实现方式中任一项所述的方法,在第一方面的第四种可能的实现方式中,所述操作系统内核根据所述空闲计数值的总和,调整报文接收线程的工作状态,包括:
[0017]如果所述空闲计数值的总和大于第一门限,所述操作系统内核在所有处于非休眠状态的报文接收线程中选择一报文接收线程,对被选择的报文接收线程进行休眠处理;
[0018]如果所述空闲计数值的总和小于第二门限,所述操作系统内核在所有处于休眠状态的报文接收线程中选择一报文接收线程,对被选择的报文接收线程进行唤醒处理;
[0019]将所有非休眠状态的报文接收线程的空闲计数值清零。
[0020]结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,所述操作系统内核在所有处于非休眠状态的报文接收线程中选择一报文接收线程,对被选择的报文接收线程进行休眠处理,包括:
[0021]所述操作系统内核获取所述被选择的报文接收线程的信号量,并将所述被选择的报文接收线程的非休眠标识改为休眠标识;
[0022]所述操作系统内核在所有处于休眠状态的报文接收线程中选择一报文接收线程,对被选择的报文接收线程进行唤醒处理,包括:
[0023]所述操作系统内核将所述被选择的报文接收线程的休眠标识改为非休眠标识,并将所述被选择的报文接收线程的信号量释放。
[0024]第二方面,本发明实施例提供一种调整网络设备资源配置的装置,包括:
[0025]设置模块,用于在网络设备操作系统初始化时,将M个报文接收线程的工作状态设置为休眠状态、将N个报文接收线程的工作状态设置为非休眠状态,M和N均为自然数,M大于N, M与N的和是一固定值;
[0026]统计模块,用于在检测周期内,统计所有非休眠状态的报文接收线程的空闲计数值的总和,所述空闲计数值是指一个非休眠状态的报文接收线程在一个所述检测周期内未接收到数据包的次数;
[0027]调整模块,用于根据所述统计模块得到的所述空闲计数值的总和,调整报文接收线程的工作状态。
[0028]结合第二方面,在第二方面的第一种可能的实现方式中,所述设置模块用于:
[0029]分别为所述M个报文接收线程中的每个报文接收线程创建对应的信号量和休眠标识,所述休眠标识用于指示报文接收线程处于休眠状态,并获取所述操作系统内核创建的信号量,陷入内核;
[0030]分别为所述N个报文接收线程中的每个报文接收线程创建信号量和非休眠标识,所述非休眠标识用于指示报文接收线程处于非休眠状态,并在有数据包到来时接收所述数据包,无数据包到来时将所述报文接收线程的空闲计数值进行加一操作。
[0031]结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述调整模块用于:
[0032]在一个处理器核心的所述检测周期内根据所述空闲计数值的总和,调整报文接收线程的工作状态。
[0033]结合第二方面、第二方面的第一种或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述检测周期为所述操作系统的一个时隙中断时间的整数倍。
[0034]结合第二方面至第二方面的第三种可能的实现方式中任一项所述的装置,在第二方面的第四种可能的实现方式中,所述调整模块用于:
[0035]如果所述空闲计数值的总和大于第一门限,在所有处于非休眠状态的报文接收线程中选择一报文接收线程,对被选择的报文接收线程进行休眠处理;
[0036]如果所述空闲计数值的总和小于第二门限,在所有处于休眠状态的报文接收线程中选择一报文接收线程,对被选择的报文接收线程进行唤醒处理;
[0037]将所有非休眠状态的报文接收线程的空闲计数值清零。
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1