Saturday, May 07, 2011

[Linux]IRQ

中断请求IRQ
http://www.mjmwired.net/kernel/Documentation/IRQ.txt
IRQ是来自某个设备(比如NIC,Harddisk,SSD等)的请求,请求CPU给于处理
为了识别来自不同设备的IRQ, 每个中断来源都被分配了一个数字(也就是IRQ number).
/proc/interrupts中记录了当前各种IRQ的number和它们的来源:
$cat /proc/interrupts
           CPU0       CPU1       
  0:        570          0   IO-APIC-edge      timer
  1:          2          0   IO-APIC-edge      i8042
  7:          0          0   IO-APIC-edge      parport0
  8:          1          0   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 12:          4          0   IO-APIC-edge      i8042
 16:          0          0   IO-APIC-fasteoi   uhci_hcd:usb3
 17:          0          0   IO-APIC-fasteoi   uhci_hcd:usb4, uhci_hcd:usb6
 18:          0          0   IO-APIC-fasteoi   uhci_hcd:usb7
 20:    1104815          0   IO-APIC-fasteoi   ata_piix, ata_piix
 22:     187848          0   IO-APIC-fasteoi   ehci_hcd:usb1
 23:       1110          0   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb5
 43:    4747272          0   PCI-MSI-edge      radeon
 44:      97360          0   PCI-MSI-edge      hda_intel
 45:    4284421          0   PCI-MSI-edge      eth0
NMI:          0          0   Non-maskable interrupts
LOC:   36071250   31250448   Local timer interrupts
SPU:          0          0   Spurious interrupts
PMI:          0          0   Performance monitoring interrupts
IWI:          0          0   IRQ work interrupts
RES:    1218335     677796   Rescheduling interrupts
CAL:       3889       6659   Function call interrupts
TLB:     137697     175959   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:        533        533   Machine check polls
ERR:          1
MIS:          0
比如这里可以看出,我的机器有两个CPU(其实是dual core)

IRQ SMP Affinity
http://www.cs.uwaterloo.ca/~brecht/servers/apic/SMP-affinity.txt


irqbalance
http://www.irqbalance.org/documentation.html

No comments: