导致高中断和上下文切换

导致高中断和上下文切换

我有一个四核,并且我在 munin(监控中断和上下文切换)上发现,我的中断和上下文切换峰值达到每秒 25k 次,而平均值在一段时间内为 250。

不知道发生了什么,也不知道这意味着什么,除了根据我的监控工具这是一个异常现象。

这发生在我的一个 openVZ 虚拟容器中。

注意:同时,负载飙升至 2.5,并且 CPU 使用率也处于同一水平:系统 110%、用户 15% 和 IOwait 100%。

我已附加主机上 /proc/interrupts 的输出。

           CPU0       CPU1       CPU2       CPU3       
  0:   48039108   56660082   56431151   51696624    IO-APIC-edge  timer
  1:          0          3          0          0    IO-APIC-edge  i8042
  4:          4          4          1          3    IO-APIC-edge  serial
  8:          1          0          0          0    IO-APIC-edge  rtc
  9:          0          0          0          0   IO-APIC-level  acpi
 12:          4          0          0          0    IO-APIC-edge  i8042
 50:         15         16         16         16   IO-APIC-level  ata_piix
 66:      11113          0          0   56276172         PCI-MSI  eth0
169:   12839820    4849263       1080       1167   IO-APIC-level  ioc0
225:          6          7          5          5   IO-APIC-level  ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb4
233:          0          0          0          0   IO-APIC-level  uhci_hcd:usb3
NMI:      17173      16340      16694      17306 
LOC:  214221117  214220936  214196385  214196306 
ERR:          0
MIS:          0

答案1

这将是执行大量锁定的多线程应用程序。每次锁定时,CPU 都会抢占其时间并允许另一个线程运行。您可以编写 M/T 应用程序,将其所有时间都花在线程之间,最终这些线程都没有做任何有用的工作,而且由于它们导致所有这些上下文切换,CPU 在切换线程上花费的时间比线程本身完成工作的时间还要多。

查看在这些峰值期间应用程序的 CPU 使用率是否出现峰值。

答案2

这可能是监控系统产生的数字伪影,由非常短的时间片段引起。也许这只是您在这里看到的采样效应。

答案3

可能是 Linux 内核定时器(CONFIG_HZ) 是否设置为定期触发,频率为 250Hz?检查内核配置文件。还有其他频率可供选择。

相关内容