Linux下中断来源可以从 /proc/interrupts 中了解到:
$ cat /proc/interrupts
CPU0 CPU1
0: 247701 250313 IO-APIC-edge timer
1: 501 567 IO-APIC-edge i8042
3: 1 1 IO-APIC-edge
8: 1 0 IO-APIC-edge rtc0
9: 256 240 IO-APIC-fasteoi acpi
12: 1134 1149 IO-APIC-edge i8042
16: 629 554 IO-APIC-fasteoi nvidia
17: 21313 20869 IO-APIC-fasteoi firewire_ohci, eth1
18: 0 0 IO-APIC-fasteoi mmc0
19: 51822 50079 IO-APIC-fasteoi ata_piix, ata_piix
20: 5605 5255 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb6
21: 0 0 IO-APIC-fasteoi uhci_hcd:usb4, uhci_hcd:usb7
22: 33 33 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8
45: 337 247 PCI-MSI-edge eth0
46: 441 447 PCI-MSI-edge hda_intel
NMI: 0 0 Non-maskable interrupts
LOC: 169176 174899 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
PND: 0 0 Performance pending work
RES: 42289 40236 Rescheduling interrupts
CAL: 154 1076 Function call interrupts
TLB: 5838 5365 TLB shootdowns
TRM: 0 0 Thermal event interrupts
THR: 0 0 Threshold APIC interrupts
MCE: 0 0 Machine check exceptions
MCP: 5 5 Machine check polls
ERR: 1
MIS: 0
软中断可以从/proc/softirqs 了解到:
$ cat /proc/softirqs
CPU0 CPU1
HI: 0 0
TIMER: 160508 1170976
NET_TX: 2 2
NET_RX: 3303 3165
BLOCK: 50964 49198
BLOCK_IOPOLL: 0 0
TASKLET: 24743 24284
SCHED: 39483 41848
HRTIMER: 34 40
RCU: 92193 92592
总的中断次数可以从vmstat或者dstat了解到:
$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
3 0 0 44160 327144 876600 0 0 894 584 458 2295 11 5 70 15
top提供了更方便的方式了解,作者Hunz在源码里面写:
It’s quite simple but it does its job.
虽然简单,但是适用:
Ubutun下可以这样安装: apt-get install itop
$ itop
INT NAME RATE MAX
0 [PIC-edge time] 628 Ints/s (max: 628)
1 [PIC-edge i804] 4 Ints/s (max: 4)
17 [PIC-fasteoi fire] 8 Ints/s (max: 22)
19 [PIC-fasteoi ata_] 1 Ints/s (max: 14)
20 [PIC-fasteoi ehci] 25 Ints/s (max: 25)
45 [MSI-edge eth0] 1 Ints/s (max: 1)
他会计算每秒每个中断源中断的次数,看起来比较方便.
本文链接:https://my.lmcjl.com/post/13504.html
4 评论