高LOC中断的原因是什么?

Pau*_*xon 21 ubuntu interrupts irq

我看到 LOC 中断出现了巨大的峰值——大约每秒 400 万次,LOC 中断究竟是什么,什么会导致这些峰值,我该怎么办?

这是说明这些尖峰的穆宁图:

                    中断图

这是同一时期的 CPU 图表,显示了它是如何完全接管的。我喜欢这种颜色让服务器看起来在这些时期着火了......

                    CPU图

这是一个运行 Ubuntu 8.04 的双四核 Xeon 服务器。报告的内核版本uname是 2.6.24-24-server。

这是 /proc/interrupts 的内容

           CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
  0: 6930 6762 6633 6841 6760 6863 6692 6809 IO-APIC-edge timer
  1: 0 0 0 0 0 1 1 0 IO-APIC-edge i8042
  8: 3 2 4 3 7 5 6 3 IO-APIC-edge rtc
  9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
 12: 1 0 0 1 0 0 1 1 IO-APIC-edge i8042
 14: 22 20 22 24 27 24 25 15 IO-APIC-edge libata
 15: 0 0 0 0 0 0 0 0 IO-APIC-edge libata
 16:50766012 50843554 50824664 50759980 50720894 50854422 50808772 50787944 IO-APIC-fasteoi ioc0
 17: 2551207 2584434 2572429 2564703 2546844 2593218 2574248 2563553 IO-APIC-fasteoi uhci_hcd:usb1, uhci3:cdehus5
 18: 24 21 28 26 32 30 32 27 IO-APIC-fasteoi uhci_hcd:usb2, uhci_hcd:usb4
214:978184354 978071466 978101515 978177161 978237290 978053391 978115491 978147157 PCI-MSI-edge eth0
NMI:0 0 0 0 0 0 0 0 不可屏蔽中断
LOC:260770889 233105051 191904989 121472332 107472778 118895615 157741363 115713984 本地定时器中断
RES:767265318 1003071645 432052982 199027537 114757970 128486722 221935258 141439861 重新调度中断
CAL:32376 26205 32414 26355 32453 26425 32399 26335 函数调用中断
TLB:5325301 5240763 5025455 4999356 4944090 5044423 5050813 5004620 TLB 击落
TRM:0 0 0 0 0 0 0 0 热事件中断
SPU:0 0 0 0 0 0 0 0 虚假中断
错误:0
管理信息:0

参考

原始图像

Ste*_*son 18

它是管理多 CPU 线程的过程。有关如何降低它的答案,请参阅Linux中的SMP Affinity 和正确的中断处理,但基本上它是系统处理屏蔽中断的方式,这些中断是由 CPU 需要提供更多线程流或内存引起的,并且仅CPU0 能够接受中断。

值越高,系统的线程处理越好,这是一件好事。