Ubuntu-10.04
KVM 1 cpu 核心處於 100%,而其他核心處於 10%-20% 負載
我不知道是什麼或誰在使用這麼多 CPU,這台機器是雙四核,具有 16 GB 記憶體。執行 Ubuntu 10.04
每個核心似乎都在使用 10-20%,除了一個似乎一直在使用 100% 的核心。
目前我有大約 14 台虛擬機在上面執行,有些有 4 個核心可用,但大多數只有 1 個。
在頂部我注意到:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7873 root 20 0 530m 14m 3220 S 103 0.1 5597:41 kvm
我嘗試使用 kvm_stat :
kvm statistics efer_reload 2400 0 exits 2199561167 6100 fpu_reload 1244255128 136 halt_exits 4368568581 1189 halt_wakeup 1714293806 103 host_state_reload 7549984578 1572 hypercalls 0 0 insn_emulation 1398403526 3069 insn_emulation_fail 3 0 invlpg 767635659 37 io_exits 2822598937 395 irq_exits 1449081931 283 irq_injections 4773146061 1220 irq_window 125330658 8 largepages 0 0 mmio_exits 326399432 0 mmu_cache_miss 192709243 7 mmu_flooded 69103717 4 mmu_pde_zapped 259908526 15 mmu_pte_updated 156 0 mmu_pte_write 329155981 19 mmu_recycled 856835 0 mmu_shadow_zapped 192679259 5 mmu_unsync 19380 -6 nmi_injections 0 0 nmi_window 0 0 pf_fixed 6517240715 389 pf_guest 4434843050 217 remote_tlb_flush 582797544 34 request_irq 0 0 signal_exits 5 0 tlb_flush 1708903974 201
但老實說,我不明白如何閱讀這篇文章以及如何知道某處是否存在瓶頸。一個程序如何進入 103% 負載?這個執行緒有關係嗎?我應該擔心還是這是正常行為?
如果您在頂部按“c”鍵,您可以看到完整的命令並了解哪個 VM 是(但 ps aux|grep 7873 也會這樣做)。
在您發現哪個 VM 正在產生這些 CPU 負載後,您應該檢查它,例如它是否有一些卡住的程序或掛起(通常,100% kvm 程序是 VM 在引導載入程序階段卡住了)。
一種可能的解釋:有一個指定的 CPU 負責為網路介面提供中斷服務。這個指定的 CPU 負責所有虛擬機的所有入站數據包。然後,該指定的 CPU 會中斷為數據包的目的地分配給 VM 的 CPU。
英特爾對此的回答是 SR-IOV。如果您有非常快的網路介面並且正在接收大量數據包,那麼這可以解釋為什麼您會遇到這種影響。
祝你好運。我想听聽這是否有幫助:)