我有一个四核心,我已经发现在munin(监控中断和上下文切换),我的中断和上下文切换尖峰到25k每秒,而平均为250一段时间。
不知道发生了什么,也不知道这是什么意思,除了根据我的监测工具,这是一个exception。
这发生在我的一个openVZ虚拟容器中。
注意:与此同时,加载到2.5,CPU使用率在同一点110%的系统,15%的用户和100%的IOwait。
我在主机上附加了/ 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
这将是一个multithreading应用程序做了大量的locking。 每次locking时,CPU都会预占其量程,并允许另一个线程运行。 你可以编写花费所有时间在线程间晃动的M / T应用程序,这些应用程序都不会做任何有用的工作,而且由于它们正在导致所有这些上下文切换,所以CPU花费的时间比线程本身得到的时间多做工作。
查看在这些峰值期间应用程序的CPU使用率是否有任何高峰。
这可能是监测系统产生的数字伪影,是由很短的时间片造成的。 也许这只是你在这里看到的抽样效果。
可能是因为linux内核定时器( CONFIG_HZ )被设置为定期触发,在250Hz? 检查内核configuration文件。 还有其他频率可供select。