一种网络收包模式自动调节方法技术

技术编号:25395853 阅读:26 留言:0更新日期:2020-08-25 23:01
本发明专利技术提出了一种实现网络收包模式自动调节的方法。首先,对软件接收处理网络报文的模式划分为全中断,中断批处理,间隔轮询,忙等轮询四种收包模式;然后,设计一个网络收包调度程序,根据收包队列的读写统计计算出当前的网络负载情况,并根据网络负载情况调节收包模式。本方案可以通过收包模式的自动调节取得网络IO处理性能和CPU利用率之间的较好平衡。

【技术实现步骤摘要】
一种网络收包模式自动调节方法
本专利技术属于计算机程序运行领域,具体地说,涉及一种网络收包模式自动调节方法。
技术介绍
随着通用处理器性能的提升,云计算技术的兴起,越来越多的网络设备逐步转向通用处理器软件实现。在带来灵活性和低成本的同时,基于内核中断的软件收包处理方式逐渐成为性能瓶颈。究其原因,当网络设备收到大量网络报文时,中断会频繁发生,频繁打断报文处理逻辑的执行,使得大量CPU处理时间消耗在上下文切换上。为了解决中断收包性能较低的问题,出现了一些基于忙等轮询模式的高性能网络解决方案,例如PF_RING和DPDK。忙等轮询模式避免了频繁中断引起的CPU开销,在网络负载很高时,使CPU获得更高的网络报文处理能力。但是,轮询模式也存在问题,在网络负载不高时,忙等轮询程序仍会持续占用CPU,持续访问空的收包队列,CPU不能处理其他计算任务,造成整机性能下降,功耗上升。有的技术方案试图结合中断和轮询方式,以期获得两种模式的优点。例如,Linux内核的NAPI网络驱动程序,允许在一次中断后执行多次轮询收包,轮询的次数和轮询的时间间隔可配置。本文称这种模式为中断批处理模式。使用这种方式,可以通过轮询次数和轮询间隔的配置,适应更广的网络负载场景。但是,中断批处理模式仍缺少一种根据负载自动调整轮询间隔和次数的机制,导致其轮询调整不够及时,不能获得最好的CPU和网络性能平衡。网络设备的收包负载情况会随时间发生变化,而目前的网络设备软件收包方案,收包模式不够灵活,在网络负载变化时不能及时调整收包模式,导致网络IO性能不足或者CPU利用率不高。例如,网络负载很低时,使用中断收包模式可以避免轮询空队列带来的CPU空耗,而使用轮询忙等方式就会造成CPU的利用率降低;网络负载很高时,轮询忙等收包模式可以避免频繁发生CPU中断带来的上下文切换开销,获得最高网络处理性能,而中断收包模式会造成CPU被空耗在中断上下文的切换上,网络性能下降。术语介绍:中断:中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行轮询:由CPU定时发出询问,依序询问每一个对象是否需要其服务,有即给予服务,服务结束后再询问下一个对象,不断周而复始。
技术实现思路
本专利技术针对现有技术不能很好地平衡网络IO处理性能和CPU的利用率的问题,提出了一种网络收包模式自动调节方法,通过划分全中断,中断批处理,间隔轮询,忙等轮询四种收包模式,并设定一个收包调度程序,实现了网络IO处理性能和CPU利用率之间的较好平衡。本专利技术具体实现内容如下:本专利技术提出了一种网络收包模式自动调节方法,根据收包处理线程的负载,也就是收包处理线程的收包处理速率,设定四种收包处理模式:完全中断模式、中断批处理模式、间隔轮询模式、忙等轮询模式;并设置收包调度程序同时对多个收包处理线程的模式进行切换。为了更好地实现本专利技术,进一步地,给收包处理线程的四个模式分别设定处理负载的范围;对于收包处理线程的模式切换,具体操作如下:当处于完全中断模式的收包处理线程的负载超过完全中断模式所设定的范围时,由收包调度程序将收包处理线程的模式从完全中断模式切换为中断批处理模式;当处于中断批处理模式的收包处理线程的负载超过中断批处理模式所设定的范围时,由收包调度程序将收包处理线程的模式从中断批处理模式切换为间隔轮询模式;当处于中断批处理模式的收包处理线程的负载低于中断批处理模式所设定的范围时,由收包调度程序将收包处理线程的模式从中断批处理模式切换为完全中断模式;当处于间隔轮询模式的收包处理线程的负载超过间隔轮询模式所设定的范围时,由收包调度程序将收包处理线程的模式从间隔轮询模式切换为忙等轮询模式;当处于间隔轮询模式的收包处理线程的负载低于间隔轮询模式所设定的范围时,由收包调度程序将收包处理线程的模式从间隔轮询模式切换为中断批处理模式;当处于忙等轮询模式的收包处理线程的负载低于完全中断模式所设定的范围时,由收包调度程序将收包处理线程的模式从忙等轮询模式切换为间隔轮询模式;除此以外,还为收包处理线程设定切换模式的最短周期,所述收包处理线程只有在一个收包模式中运行超过最短周期才能进行切换。为了更好地实现本专利技术,进一步地,对于所述中断批处理模式,设定中断条件参数N;所述中断条件参数N为中断批处理模式每次中断后收包进程后需要处理的报文数量,为实际负载与系统调度周期的乘积;由收包调度程序将中断条件参数N写入内存中,在收包处理进程进行收包处理时,收包调度程序查询并使用中断条件参数N。为了更好地实现本专利技术,进一步地,对于所述间隔轮询模式,设定间断轮询条件参数T,所述间断轮询条件参数T为收包处理线程每次处理完网卡接收队列所有报文后需要主动睡眠等待的时间间隔。为了更好地实现本专利技术,进一步地,所述收包调度程序对收包处理线程进行模式切换的具体流程为:(1)首先初始化调度定时器;(2)然后初始化统计计时器;(3)根据收包处理线程的初始模式启动收包线程;(4)然后开始周期性地执行收包调度,即切换收包线程处理线程的收包模式,具体步骤如下:步骤S1.首先计算每一个收包处理线程的报文处理速度;步骤S2.判断收包处理线程是否超过当前模式所对应设置的负载范围;步骤S3.若判断为没有超过当前模式所对应设置的负载范围,则重新进行步骤S1.的操作;若判断为超过当前模式所对应设置的负载范围,则判断进一步判断收包处理线程的在当前模式下的运行时间是否达到收包模式切换的最短周期;步骤S4.对于当前模式运行时间判断为未超过最短周期的收包处理线程,重新进行步骤S1.的处理;对于当前模式运行时间判断为超过最短周期的收包处理线程,则根据当前负载情况及设定的各手包模式对应的负载范围进行收包模式的切换。为了更好地实现本专利技术,进一步地,所述每个收包处理线程的统计计数器有两个,分别为用于记录当前时间的数据包的处理数量的P计数器、记录前一次统计时已经处理的数据包数量的N计数器。为了更好地实现本专利技术,进一步地,设定收包调度程序的执行周期为T调度,则收包处理线程的负载的值为N计数器记录的数值减去P计数器记录的数值后的差值再除以T调度。为了更好地实现本专利技术,进一步地,所述收包调度程序的周期性执行依赖系统时钟触发,所述初始化调度定时器具体操作为:根据配置的收包调度程序执行周期来设定定时器。为了更好地实现本专利技术,进一步地,每个所述收包处理线程需要处理一个收包队列的数据,具体的的工作流程主要为:首先开始读取收包队列的数据包,然后对读取的数据包进行处理,在处理完读取的数据包后,将自身收包处理线程对应的统计计数器进行更新,然后继续读取收包队列的数据包,循环上述操作。为了更好地实现本专利技术,进一步地,在所述完全中断模式下,将每一次网卡的收包中断都上送到收包处理线程;在所述中断批处理模式下,在驱动程序收到多次本文档来自技高网
...

【技术保护点】
1.一种网络收包模式自动调节方法,其特征在于,根据收包处理线程的负载,也就是收包处理线程的收包处理速率,设定四种收包处理模式:完全中断模式、中断批处理模式、间隔轮询模式、忙等轮询模式;并设置收包调度程序同时对多个收包处理线程的模式进行切换。/n

【技术特征摘要】
1.一种网络收包模式自动调节方法,其特征在于,根据收包处理线程的负载,也就是收包处理线程的收包处理速率,设定四种收包处理模式:完全中断模式、中断批处理模式、间隔轮询模式、忙等轮询模式;并设置收包调度程序同时对多个收包处理线程的模式进行切换。


2.如权利要求1所述的一种网络收包模式自动调节方法,其特征在于,给收包处理线程的四个模式分别设定处理负载的范围;对于收包处理线程的模式切换,具体操作如下:
(1)当处于完全中断模式的收包处理线程的负载超过完全中断模式所设定的范围时,由收包调度程序将收包处理线程的模式从完全中断模式切换为中断批处理模式;
(2)当处于中断批处理模式的收包处理线程的负载超过中断批处理模式所设定的范围时,由收包调度程序将收包处理线程的模式从中断批处理模式切换为间隔轮询模式;当处于中断批处理模式的收包处理线程的负载低于中断批处理模式所设定的范围时,由收包调度程序将收包处理线程的模式从中断批处理模式切换为完全中断模式;
(3)当处于间隔轮询模式的收包处理线程的负载超过间隔轮询模式所设定的范围时,由收包调度程序将收包处理线程的模式从间隔轮询模式切换为忙等轮询模式;当处于间隔轮询模式的收包处理线程的负载低于间隔轮询模式所设定的范围时,由收包调度程序将收包处理线程的模式从间隔轮询模式切换为中断批处理模式;
(4)当处于忙等轮询模式的收包处理线程的负载低于完全中断模式所设定的范围时,由收包调度程序将收包处理线程的模式从忙等轮询模式切换为间隔轮询模式;
除此以外,还为收包处理线程设定切换模式的最短周期,所述收包处理线程只有在一个收包模式中运行超过最短周期才能进行切换。


3.如权利要求1所述的一种网络收包模式自动调节方法,其特征在于,对于所述中断批处理模式,设定中断条件参数N;所述中断条件参数N为中断批处理模式每次中断后收包进程需要处理的报文数量,为实际负载与系统调度周期的乘积;由收包调度程序将中断条件参数N写入内存中,在收包处理进程进行收包处理时,收包调度程序查询并使用中断条件参数N。


4.如权利要求1所述的一种网络收包模式自动调节方法,其特征在于,对于所述间隔轮询模式,设定间断轮询条件参数T,所述间断轮询条件参数T为收包处理线程每次处理完网卡接收队列所有报文后需要主动睡眠等待的时间间隔。


5.如权利要求2所述的一种网络收包模式自动调节方法,其特征在于,所述收包调度程序对收包处理线程进行模式切换的具体流程为:
(1)首先初始化调度定时器;
(2)然后初始化统计计时器;
(3)根据收包处理线程的初始模式启动收包线程;
(4)然后开始周期性地执行收包调度,即切换收包线程处理线程的...

【专利技术属性】
技术研发人员:刘佳范渊吴永越郑学新刘韬
申请(专利权)人:成都安恒信息技术有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1