KVM 1 CPU 核心负载为 100%,其他核心负载为 10%-20%

KVM 1 CPU 核心负载为 100%,其他核心负载为 10%-20%

我不知道是什么或谁在使用这么多的 CPU,这台机器是双四核处理器,有 16 GB 的内存。运行 Ubuntu 10.04

除了一个核心似乎一直使用 100% 以外,每个核心似乎都使用了 10-20%。

目前,我有大约 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% 的负载?这个线程相关吗?我应该担心吗?还是这是正常现象?

答案1

如果您在 top 中按下“c”键,您可以看到完整的命令并了解哪个是虚拟机(但 ps aux|grep 7873 也可以这样做)。

在您发现哪个 VM 正在生成这些 CPU 负载后,您应该检查它,例如它是否有一些卡住的进程或者它被挂起(通常,100%的 kvm 进程是 VM 在引导加载程序阶段卡住)。

答案2

一种可能的解释是:有一个指定的 CPU 负责处理网络接口的中断。这个指定的 CPU 负责全部入站数据包全部虚拟机。该指定 CPU 随后会中断分配给数据包目的地 VM 的 CPU。

英特尔对此的回答是 SR-IOV。如果您的网络接口非常快并且正在接收大量数据包,这也许可以解释为什么您会遇到这种情况。

您还可以研究调整 Linux 中的网络中断设置。

祝你好运。如果这有帮助的话,我希望得到回复 :)

相关内容