linux 软中断 网卡,关于linux系统上软中断只用到一个cpu的问题

有些网卡的中断没有用到多个cpu,只用到一个CPU,导致那个cpu的软中断是100%,系统缓慢。

[root@web ~]# cat /proc/interrupts

CPU0       CPU1

0:  939474003          0    IO-APIC-edge  timer

1:          7          2    IO-APIC-edge  i8042

6:          2          3    IO-APIC-edge  floppy

7:          0          0    IO-APIC-edge  parport0

8:          1          0    IO-APIC-edge  rtc

9:          0          0   IO-APIC-level  acpi

12:          0        116    IO-APIC-edge  i8042

15:   47539568      94428    IO-APIC-edge  ide1

51:    4557238      12181   IO-APIC-level  ioc0

59:          0          0   IO-APIC-level  vmci

75:  101314205          0         PCI-MSI  eth0

NMI:          0          0

LOC:  998113903  999592029

ERR:          0

MIS:          0

可以看到eth0只用到了cpu0,加外

mpstat -P ALL 1

top中的si

也可以查看cpu中断的使用情况。

解决这个问题,有两个办法:

1) 用irqbalance服务

irqbalance针对多核以及超线程采用共享缓存的系统只处理一次设备中断均衡,也即以静态方式分配各设备中断对应的CPU。在双核及单核系统中启动irqbalance,并不会影响系统资源,因为irqbalance在做完中断均衡相关判断、处理后即退出。

centos上自带了irqbanlance,安装上

chkconfig –level 345 irqbalance on

service irqbalance start

就行了。

当然这个办法不是最好的办法。irqbalance仅是一个通用方案,而不是最佳方案。

2) 修改内核参数/proc/irq/irq#/smp_affinity

[root@archimedes /proc]# cat /proc/irq/75/smp_affinity

00000001

表示eth0只用到了第一个cpu,可以修改这个参数,使它使用多个cpu。

参数:

Binary       Hex

CPU 0    0001         1

CPU 1    0010         2

CPU 2    0100         4

CPU 3    1000         8

参数是一个10进制的值,cpu n == 2 的 n 次方。

如果用cpu0和cpu2:

Binary       Hex

CPU 0    0001         1

+ CPU 2    0100         4

———————–

both     0101         5

全用:

Binary       Hex

CPU 0    0001         1

CPU 1    0010         2

CPU 2    0100         4

+ CPU 3    1000         8

———————–

both     1111         f

修改:

echo f > /proc/irq/75/smp_affinity

需要注意的是:

有些网卡在PCI-MSI模式下修改这个参数不起作用,需要在内核启动时加上pci=nomsi参数。网上看主要是Broadcom的网卡有这个问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值