有没有简单的方法可以确定中断是否是性能问题?我从 cat /proc/interrupts 中得到以下内容,但实际上没有此服务器的历史记录,所以我不知道这是否会导致任何问题。我在以下位置找到了每列的定义http://www.centos.org/docs/5/html/5.1/Deployment_Guide/s2-proc-interrupts.html 但似乎没有找到任何关于结果是否可以接受的指导。
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 1408788887 0 0 0 0 0 0 0 IO-APIC-edge timer
1: 3 0 0 0 0 0 0 0 IO-APIC-edge i8042
8: 1 0 0 0 0 0 0 0 IO-APIC-edge rtc
9: 0 0 0 0 0 0 0 0 IO-APIC-level acpi
12: 4 0 0 0 0 0 0 0 IO-APIC-edge i8042
14: 476 92736034 560949599 89233642 0 0 0 0 IO-APIC-edge ide0
66: 81 0 0 0 0 0 0 0 IO-APIC-level ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb4
74: 153 62468419 147960075 25257462 0 0 0 0 IO-APIC-level uhci_hcd:usb3, uhci_hcd:usb5
82: 1054378386 0 0 0 0 0 0 0 PCI-MSI eth0
169: 8343 1516025027 954152248 6501060 0 757271678 1872714173 2565826 IO-APIC-level megasas
NMI: 28336831 18526902 35866900 13915052 25165724 26928152 21827791 19303613
LOC: 1408788527 1408756844 1408788059 1408788084 1408788124 1408787843 1408787972 1408787711
ERR: 0
MIS: 0
答案1
您遇到的最高中断数平均仍为:
1872714173 interrupts / 83014987.85 seconds = 23 intr/s
这并不可怕。就目前而言,这些统计数据完全可以接受。在繁忙的系统上,7500 intr/s 的峰值也是可以接受的。
无论是什么原因导致您得出中断是相关指标的结论,我都会退一步重新考虑。这些通常是问题(完全不同的问题)的结果,而不是问题的唯一原因。唯一想到的情况是总线上的一些恶意设备。
如果您有sar
报告,请寻找在性能不佳时达到峰值的其他指标(运行队列?分页?磁盘 I/O?)并从那里重新开始分析。
答案2
中断问题是系统 CPU 使用率高的原因之一,如果您在 mpstat 输出中没有看到较高的 %irq 值,那就没问题。
如果您担心中断在 CPU 之间分布不均匀,则需要启用 irqbalance 守护进程或通过 /proc/irq/*/smp_affinity 手动调整它
更多关于: http://honglus.blogspot.com/2010/01/troubleshooting-high-system-cpu-usage.html http://honglus.blogspot.com/2011/03/tune-interrupt-and-process-cpu-affinity.html
答案3
您应该启用irqbalance
守护程序来帮助将定时器中断分配到服务器上的可用 CPU 上。/sbin/service irqbalance start
稍后运行并检查系统。