VCPU 是核心数还是线程数?

VCPU(虚拟 CPU)既不是单纯的核心数,也不是单纯的线程数,而是一个“逻辑处理器”的概念。

在虚拟化环境中,VCPU 代表的是虚拟机(Guest OS)所感知到的计算单元。它的具体对应关系取决于宿主机的物理硬件配置以及虚拟化软件的调度策略:

  1. 基本定义
    VCPU 是操作系统看到的“核心”。对于运行在虚拟机里的操作系统来说,它认为自己在与一个或多个物理核心打交道。如果虚拟机配置了 4 个 vCPU,操作系统就会显示有 4 个可用的逻辑处理器。

  2. 与物理硬件的映射关系

    • 一对一映射(无超线程):如果宿主机没有开启超线程技术(Hyper-Threading),那么 1 个 vCPU ≈ 1 个物理核心
    • 多对一映射(开启超线程):现代服务器通常开启超线程,即 1 个物理核心可以模拟出 2 个逻辑线程。此时,1 个 vCPU 通常对应 1 个物理线程(也就是物理核心的一半)。例如,一个拥有 8 核 16 线程的物理 CPU,理论上最多可以分配 16 个 vCPU。
  3. 关键区别:核心 vs 线程 vs vCPU
    为了更清晰地理解,我们可以对比一下三者的关系:

    • 物理核心 (Core):CPU 内部实际独立的计算单元。
    • 物理线程 (Thread):通过超线程技术,单个物理核心能同时处理的两个指令流(逻辑核心)。
    • vCPU:虚拟化层抽象出来的逻辑单元,它是分配给虚拟机的资源配额。

    结论公式

    vCPU 的数量 = 虚拟机看到的逻辑处理器数量
    它在底层通常被调度到宿主机的 物理线程 上运行。

总结

  • 从操作系统视角看:VCPU 等同于逻辑核心数(Logical Cores)。你在虚拟机里查看 nproc 或任务管理器时看到的数字就是 vCPU 的数量。
  • 从物理资源视角看:VCPU 最终会映射到宿主机的物理线程上。

因此,最准确的理解是:VCPU 是虚拟化后的逻辑计算单元,其数量通常等于分配的物理线程数。