我不知道是什么或谁使用这个数量的CPU,这台机器是一个双十六核心16 GB RAM。 运行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'键,你可以看到完整的命令,并了解哪个虚拟机(但是ps aux | grep 7873也会这样做)。
当你发现哪个虚拟机正在产生这些CPU负载时,你应该检查一下,比如它是否有卡住进程或挂起(通常,100%kvm进程是引导加载程序阶段的VM卡)。
一种可能的解释是:有一个指定的CPU负责处理networking接口的中断。 这个指定的CPU负责所有虚拟机入站的所有数据包。 然后该指定的CPU中断分配给该数据包目的地的VM的CPU。
英特尔对此的回答是SR-IOV 。 如果networking接口非常快并且接收到大量数据包,这可能解释了为什么您会遇到这种情况。
你也可以看看在Linux中调整你的networking中断设置。
祝你好运。 我想听回来,如果这是有帮助的:)