/proc/interrupts

Linuxにおける割り込み処理について調べている
/proc/interruptを表示していみて気づいたことを書いてみる

           CPU0       CPU1       
  0:         51         13   IO-APIC-edge      timer
  1:       1671       1363   IO-APIC-edge      i8042
  8:          1          0   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 12:          3          1   IO-APIC-edge      i8042
 16:        526        122   IO-APIC-fasteoi   uhci_hcd:usb3, firewire_ohci
 18:          3          1   IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb8
 19:          0          0   IO-APIC-fasteoi   uhci_hcd:usb5, uhci_hcd:usb7
 21:      57342        452   IO-APIC-fasteoi   uhci_hcd:usb4
 23:      75914      32736   IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb6
 42:     304046         33   PCI-MSI-edge      eth0
 43:      48398      50436   PCI-MSI-edge      ahci
 44:      91449     133703   PCI-MSI-edge      i915
 45:        674        723   PCI-MSI-edge      hda_intel
NMI:          0          0   Non-maskable interrupts
LOC:    1706540    1740356   Local timer interrupts
SPU:          0          0   Spurious interrupts
PMI:          0          0   Performance monitoring interrupts
IWI:          0          0   IRQ work interrupts
RES:     156071     177507   Rescheduling interrupts
CAL:       1145       1086   Function call interrupts
TLB:      29280      47256   TLB shootdowns
TRM:          0          0   Thermal event interrupts
THR:          0          0   Threshold APIC interrupts
MCE:          0          0   Machine check exceptions
MCP:         23         23   Machine check polls
ERR:          1
MIS:          0


まず割り込みはtimer、マウスとキーボード(i8042)、イーサネット(eth0)などのハードウェアから生じる割り込みと
TLBフラッシュのためのカーネルからくる割り込みがある
ハードウェアの割り込みがどのCoreに入るかはラウンドロビンで決まるとか書いてあったが、どうも偏りがあるように思える(eth0とか)
関係ないが、現在の割り込みコントローラはAPIC(Advanced PIC)というもので、APICはIOAPICとLocalAPICで構成される。
IOAPICがデバイスからの割り込みを受け、Coreごとに存在するLocalAPICに割り込みをルーティングする
ルーティングの方式としてLinuxはLowest priorityモードを使用していて、すべてのCoreが同じ優先度なので結果的に割り込み先がラウンドロビンで選択されるらしい
それを考えて、割り込みの回数がCore1とCore2で違わないか?と思ったわけである

ちなみにCore毎に存在する割り込みもある。Local timerはその一例である

もう少しAPICについて調べてみようと思う