网络流量相关

中断

     简单的说,每个设备(网卡、硬盘等)都需要和CPU有某种形式的通信以便CPU及时知道发生了什么事情,这样CPU就会放下手中的事情去处理应急事件,硬件设备主动打扰CPU的现象就是硬件中断。
     硬中断的特点:
  • 硬中断是由硬件产生,比如硬盘、网卡、键盘灯。每个设备都有它自己的IRQ(中断请求)。基于IRQ,CPU可以相应的将请求分配到对应的硬件驱动(硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。
  • 处理中断的驱动是需要运行在CPU上的,因此当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。有多核的系统上,一个中断通常只能中断一个CPU(也有特殊的情况,就是在大型主机上有硬件通道的,它可以没有主CPU的支持下,可以同时处理多个中断)。
  • 硬中断可以直接中断CPU。它会引起内核中相关的代码被触发。对于那些需要花费一些时间去处理的进程,中断代码本身可以被其他硬中断中断。
  • 对于时钟中断,内核调度代码会将当前正在运行的进程挂起,从而让其他的进程运行。它的存在是为了让调度器可以调度多任务。
     软中断特点:
  • 软中断的处理非常像硬中断。然而,它们仅仅是由当前运行的进程产生的。
  • 通常,软中断是一些对IO请求。这些请求会调用内核中可以调度IO发生的程序。对于某些设备,IO请求需要被立即处理,而磁盘IO请求通常可以排队并且稍后处理。根据IO模型的不同,进程或许会被挂起直到IO完成,此时内核调度器会选择另一个进程去运行。IO可以在进程之间产生并且调度过程和磁盘IO的方式相同。
  • 软中断仅与内核有联系。而内核主要负责对需要运行的其他的进程进行调度。一些内核允许设备驱动的一部分在用户空间,并且当需要的时候内核也会调度这个进程去运行。
  • 软中断不会直接中断CPU。而只有当前运行的代码(进程)才会产生软中断。这种中断是一种需要内核为正在运行的进程去做一些事情的请求。
SMP IRQ Affinity

     新的内核,Linux改进了分配特定中断到指定的处理器(或处理器组)的功能,这被称为SMP IRQ Affinity,它可以控制系统如何响应各种硬件时间。允许你限制或者重新分配服务器的工作负载,从而让服务器更有效的工作,以网卡中断为例,在没有设置SMP IRQ Affinity时,所有网卡中断都关联到CPU0,这导致了CPU0负载过高,而无法有效快速的处理网络数据包,导致了瓶颈。通过SMP IRQ Affinity,把网卡多个中断分配到多个CPU上,可以分散CPU压力,提高数据处理速度。

Irqbalance

     irqbalance用于优化中断分配,它会自动收集系统数据以分析使用模式,并根据系统负载状况将工作状态置于Performance mode或 Power-save mode。处于Performance mode时,irqbalance会将中断尽可能均匀地发给各个CPU以充分利用CPU多核,提高性能。Power-save mode时,irqbalance会将中断集中分配给第一个CPU,以保证其他空闲CPU的睡眠时间,降低能耗。
     在非常繁重的系统中,并没有节能的需求,而是充分利用各个cpu的性能,而事实上在一个大量小包的系统上,irqbalance优化并没有达到效果,而是使得cpu消耗非常不均衡,导致机器性能得到不到充分的利用。

多队列网卡技术

     多队列网卡是一种技术,最初用于解决网络IO Qos问题的,随着网络IO带宽的不断提升,单核CPU不能完全满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上。其实用bonding网卡绑定在一定程度上可以做中断负载均衡,不同的网卡中断号绑定在不同的cpu核上。

操作过程


cat  /proc/interrupts可以查看中断情况,同时可以看到网卡是否支持多队列方式。

在上面的命令中可以看到是否为多队列方式。如果是对队列方式,那么左边的数字即为当前网卡中断对应的终端号,这里以94为例,可以通过设置94中断号(即为eth1-TxRx-2队列中断)。
在/proc/irq/$num下面可以配置当前中断绑定设置。
修改当前中断对应的cpu核,有两种方式,一种是smp_affinity,一个是smp_affinity_list,其中smp_affinity_list用十进制表示,这里设置的为当前终端绑定到cpu2



参考文章:
http://blog.netzhou.net/?p=181
http://rfyiamcool.blog.51cto.com/1030776/1335700




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值