此文仅为个人理解。
文章前提:
1、系统支持多CPU(SMP);
2、Linux 版本2.4及以上。
linux系统有一套中断系统以防接口流量过多来不及处理。但是,如果多接口都在一个CPU,流量过多时,CPU可能一直处于中断之中来不及处理保存的流量数据。因此,linux之中另有一套CPU中断平衡机制,将接口中断绑定到不同的CPU上。
cat /proc/interrupts 查询中断号信息,
cat /proc/interrupts
CPU0 CPU1
0: 49 0 IO-APIC-edge timer
1: 2 2 IO-APIC-edge i8042
4: 184 176 IO-APIC-edge serial
9: 0 0 IO-APIC-fasteoi acpi
12: 2 3 IO-APIC-edge i8042
14: 2012 2000 IO-APIC-edge ata_piix
15: 0 0 IO-APIC-edge ata_piix
16: 0 0 IO-APIC-fasteoi uhci_hcd:usb5
18: 0 0 IO-APIC-fasteoi uhci_hcd:usb4
19: 0 0 IO-APIC-fasteoi ata_piix, uhci_hcd:usb3
23: 0 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb2
47: 0 0 PCI-MSI-edge eth11
48: 3864 2 PCI-MSI-edge eth11-TxRx-0
49: 2 3864 PCI-MSI-edge eth11-TxRx-1
53: 0 0 PCI-MSI-edge eth10
54: 3864 2 PCI-MSI-edge eth10-TxRx-0
55: 2 3864 PCI-MSI-edge eth10-TxRx-1
71: 3 3864 PCI-MSI-edge eth3
74: 3865 2 PCI-MSI-edge eth0
APIC表示高级可编程中断控制器(Advanced Programmable Interrupt Controlle),APIC是SMP体系的核心,通过APIC可将中断分发到不同的CPU处理。
APIC相较于PIC来说,最大的有点是能适用于MP平台,当然,管脚多是它另一个优点。APIC由两部分组成,一个称为LAPIC(Local APIC,本地高级中断控制器),一个称为IOAPIC(I/O APIC,IP高级中断控制器)。前者位于CPU中,在MP平台,每个CPU都有一个自己的LAPIC。后者通常位于南桥上,像PIC一样,连接各个产生中断的设备。
查看具体中断-接口绑定到哪个CPU可用 cat /proc/irq/#IRQ/smp_affinity 查看,其中保存CPU掩码(bitmask),修改中断CPU时可改中断相应文件。
例如绑定到CPU0,保存为2的
0次方(1);
绑定到CPU1,保存为2的1次方(2)。默认为f。
接口绑定处理和网卡驱动有关,正常接口在系统启动时已经分配好CPU,但工作中发现,利用系统命令ifconfig将某个接口DOWN,之后再UP后,分配的CPU绑定失效,究其原因,UP时内核UP事件将接口中断恢复。
参考:
http://blog.csdn.net/ustc_dylan/article/details/4132046
http://blog.sina.com.cn/s/blog_4770ef020101p8vq.html
netif_affinity.txt
阅读(4343) | 评论(0) | 转发(0) |