在Linux系统中,中断(IRQ)用于处理硬件设备的事件通知。了解系统的中断分布可以帮助我们优化系统性能和排查硬件问题。本文将详细介绍如何查看Linux系统的中断分布,并扩展相关知识。
/proc/interrupts
文件Linux内核提供了/proc/interrupts
文件来显示当前系统的中断分布情况。这个文件包含了每个CPU上发生的中断次数以及相关的设备信息。
步骤:
cat /proc/interrupts
示例输出:
CPU0 CPU1 CPU2 CPU3
0: 58 0 0 0 IO-APIC-edge timer
1: 187 0 0 0 IO-APIC-edge i8042
8: 1 0 0 0 IO-APIC-edge rtc0
9: 0 0 0 0 IO-APIC-fasteoi acpi
12: 3623 0 0 0 IO-APIC-edge i8042
16: 2180 0 0 0 PCI-MSI-edge ahci
44: 12345 0 0 0 PCI-MSI-edge xhci_hcd
NMI: 0 0 0 0
LOC: 123456 123456 123456 123456
SPU: 0 0 0 0
...
在这个例子中,每一行代表一个中断号,列出了每个CPU上的中断计数,以及中断类型和关联的设备。
sar
命令sar
命令可以用来监控系统的各种活动,包括中断。
步骤:
sysstat
包(如果未安装):
sudo apt-get install sysstat
sudo yum install sysstat
sar
命令查看中断统计信息:
sar -I ALL 1 5
这个命令会每秒刷新一次,共显示5次所有中断的信息。
示例输出:
Linux 4.15.0-46-generic (your-hostname) 03/10/2023 _x86_64_ (4 CPU)
09:10:17 PM CPU intr/s
09:10:18 PM all 1234.56
09:10:19 PM all 1235.67
09:10:20 PM all 1236.78
09:10:21 PM all 1237.89
09:10:22 PM all 1238.90
为了优化多核系统的性能,可以设置中断的CPU亲和性,即将特定的中断绑定到特定的CPU上。这可以通过/proc/irq/<irq_number>/smp_affinity
文件来实现。
步骤:
cat /proc/irq/16/smp_affinity
echo 1 | sudo tee /proc/irq/16/smp_affinity
通过/proc/interrupts
文件或sar
命令,我们可以方便地查看Linux系统的中断分布情况。此外,了解中断的类型和如何设置中断亲和性对于优化系统性能非常重要。