Central-Processing-Unit
導致高中斷和上下文切換
我有一個四核,我在 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 使用率是否出現峰值。
這可能是監控系統產生的數字偽影,由非常短的時間片引起。也許這只是您在這裡看到的採樣效果。