![在驾驶舱中,正确的 KVM VM vCPU 配置是什么,才能在物理 CPU 上实现适当的负载平衡](https://linux22.com/image/791899/%E5%9C%A8%E9%A9%BE%E9%A9%B6%E8%88%B1%E4%B8%AD%EF%BC%8C%E6%AD%A3%E7%A1%AE%E7%9A%84%20KVM%20VM%20vCPU%20%E9%85%8D%E7%BD%AE%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%8C%E6%89%8D%E8%83%BD%E5%9C%A8%E7%89%A9%E7%90%86%20CPU%20%E4%B8%8A%E5%AE%9E%E7%8E%B0%E9%80%82%E5%BD%93%E7%9A%84%E8%B4%9F%E8%BD%BD%E5%B9%B3%E8%A1%A1.png)
我有双 CPU 服务器。我想在其上运行一些虚拟机。通过 cockpit 配置虚拟机时(在 redhat 8.0 上)。我看到了此屏幕:
我只想分配 8 个内核,每个物理 CPU 有 4 个内核。我对侧边栏感到困惑。它显示了相同的插槽、每个插槽的内核数和每个插槽的线程数选择(1、2、4、8)
这应该如何定义?此屏幕上的套接字核心和线程的正确值是什么?查找后未找到任何文档。
谢谢。
细节:
中央处理器:
# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 56
On-line CPU(s) list: 0-55
Thread(s) per core: 2
Core(s) per socket: 14
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
Stepping: 1
CPU MHz: 1617.634
BogoMIPS: 4794.27
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 35840K
NUMA node0 CPU(s): 0-13,28-41
NUMA node1 CPU(s): 14-27,42-55
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cdp_l3 invpcid_single pti intel_ppin ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a rdseed adx smap intel_pt xsaveopt cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts flush_l1d
节点信息...
# virsh nodeinfo
CPU model: x86_64
CPU(s): 56
CPU frequency: 3070 MHz
CPU socket(s): 1
Core(s) per socket: 14
Thread(s) per core: 2
NUMA cell(s): 2
我从网上了解到上面的 56 是可以分配的 vCPU 总数。对吗?
答案1
在大多数情况下,您为虚拟机定义的每插槽核心数不应真正反映虚拟机工作负载在主机的物理 CPU 上分布的方式:它主要用于专有许可证,其中“每插槽”定价曾经很流行。建议除非必要,否则不要触碰该设置。
事实上你通常会不是不必要地强制将单个 VM 的工作负载分散到多个物理 CPU 上,因为 NUMA 传统上一直是内存和缓存的瓶颈。Red Hat 的文档给出了如何手动将 vCPU 固定到 NUMA 节点的建议,但他们的示例是一台比主机上单个 NUMA 节点所能容纳的更大的机器。
最后:不,您可用的逻辑 CPU 数量(插槽 * 核心 * 线程)不是您总体上可以分配的最大虚拟 CPU 数量。不过,最好记住每个主机的过度配置量,因为它会增加每个虚拟机在等待 CPU 时间片段时遇到的延迟。