KVM 核心 0 上的高 CPU 窃取

KVM 核心 0 上的高 CPU 窃取

在我的一项 KVM 设置中,我发现两个客户机的 Core 0 的 CPU 占用率很高。我已经浏览了与 cpu 窃取相关的 saveral web 结果,但没有解释 core 窃取。

如果我取平均值,看起来并没有那么糟糕。 40/8~5%。但对于单核来说它非常高。

Threads: 815 total, 4 running, 811 sleeping, 0 stopped, 0 zombie %Cpu0 : 18.4 us, 0.8 sy, 0.0 ni, 35.2 id, 0.0 wa, 0.0 hi, 6.4 si, 39.2 st %Cpu1 : 38.6 us, 6.9 sy, 0.0 ni, 48.5 id, 5.9 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu2 : 31.0 us, 20.0 sy, 0.0 ni, 47.0 id, 2.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu3 : 22.0 us, 14.0 sy, 4.0 ni, 48.0 id, 12.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu4 : 31.7 us, 18.8 sy, 0.0 ni, 48.5 id, 1.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu5 : 41.0 us, 13.0 sy, 0.0 ni, 46.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu6 : 8.1 us, 7.1 sy, 0.0 ni, 84.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu7 : 35.3 us, 24.5 sy, 0.0 ni, 39.2 id, 1.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu8 : 3.0 us, 5.1 sy, 0.0 ni, 91.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu9 : 5.9 us, 6.9 sy, 0.0 ni, 87.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu10 : 6.1 us, 2.0 sy, 0.0 ni, 91.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu11 : 10.4 us, 13.5 sy, 0.0 ni, 24.0 id, 52.1 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu12 : 50.0 us, 10.0 sy, 0.0 ni, 40.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 48966980 total, 13622884 free, 25813260 used, 9530836 buff/cache

我在主机中进行了 cpu 隔离,每个主机只有两个来宾虚拟机。猫 /proc/cmdline

BOOT_IMAGE=/vmlinuz-3.10.0-693.el7.x86_64 root=/dev/mapper/VolGrp-Vol1 ro crashkernel=auto rd.lvm.lv=VolGrp/Vol1 rd.lvm.lv=VolGrp/Vol0 console=ttyS0,115200n8 isolcpus=2-15,18-31 nohz_full=2-15,18-31 rcu_nocbs=2-15,18-31 intel_idle.max_cstate=1 intel_pstate=disable nosoftlockup=0 audit=0 mce=ignore_ce transparent_hugepage=never

此外,两个虚拟机之间不共享相同的内核来自 virsh dumpxml

虚拟机1

<vcpu placement='static' cpuset='2,4,6,8,10,12,14,18,20,22,24,26,28,30'\>13</vcpu>

虚拟机2

<vcpu placement='static' cpuset='3,5,7,9,11,13,15,19,21,23,25,27,29,31'\>13</vcpu>

主机NUMA信息:

NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31

主机操作系统:CentOS 7.4

来宾操作系统:CentOS 7.4

qemu KVM版本:1.5.3

有什么建议谁可以找到为什么我有这么高的偷窃价值吗?

答案1

您正在对虚拟化环境进行超额订阅,例如,总的来说,该主机上的虚拟机正在尝试使用比主机更多的 CPU 资源。

如果您将多个虚拟机固定到一个 CPU,那么对于调试来说会更好,您将能够快速指出罪魁祸首。留意 CPU/I/O/内存,其中一个资源缺乏通常会影响其他资源。

iostat - “窃取”字段是什么意思?

摘自该问题:

根据 man vmstat:

st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

....

这是虚拟机管理程序安排其他东西运行而不是虚拟机内的东西的时间。这可能是另一个 VM 或 Hypervisor 主机本身的时间。如果没有时间被窃取,则该时间将用于运行您的 CPU 工作负载或空闲线程。

PS 从长远来看,我建议不要将特定的虚拟机固定到特定的 CPU 作为全局策略。在分配 CPU 资源/负载时,虚拟机管理程序能够比您自己做出更好的决策。

相关内容