Central-Processing-Unit

導致高中斷和上下文切換

  • January 9, 2010

我有一個四核,我在 munin(監視中斷和上下文切換)上發現,我的中斷和上下文切換飆升至每秒 25k,而一段時間內的平均值為 250。

不知道發生了什麼,也不知道這意味著什麼,除了根據我的監控工具這是異常情況。

這發生在我的一個 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

這將是一個執行大量鎖定的多執行緒應用程序。每次它鎖定時,CPU 都會搶占它的量程並允許另一個執行緒執行。您可以編寫將所有時間都花線上程之間晃動的 M/T 應用程序,這些應用程序最終都沒有做任何有用的工作,並且由於它們導致所有這些上下文切換,CPU 切換執行緒所花費的時間比執行緒本身所花費的時間更多做工作。

查看在這些峰值期間應用程序的 CPU 使用率是否出現峰值。

這可能是監控系統產生的數字偽影,由非常短的時間片引起。也許這只是您在這裡看到的採樣效果。

引用自:https://serverfault.com/questions/72337