docker vcpu 指的是核心还是线程数目?

在 Docker 或更广泛的 Linux 容器环境中,vCPU(Virtual CPU) 通常指的是 逻辑 CPU 的数量,也就是操作系统层面可以调度的 线程数量,而不是物理核心的数量。


🧠 简单解释:

  • vCPU = 虚拟 CPU
  • 在容器中限制 vCPU 数量时,实际上是在限制该容器能使用的 CPU资源总量,这个单位是基于系统的 逻辑 CPU(即线程数) 来计算的。

💡 示例说明:

假设你的主机有:

  • 1 个物理 CPU
  • 4 个物理核心
  • 每个核心支持超线程(Hyper-Threading),共 8 个逻辑 CPU(线程)

那么:

docker run --cpus="2" my_container

表示你允许这个容器最多使用 2 个逻辑 CPU(线程) 的 CPU 时间。


🔍 更深入一点:--cpus 参数

Docker 的 --cpus 参数用于设置容器可以使用的最大 CPU 数量,它接受浮点数,例如:

--cpus="1.5"   # 表示最多使用一个半逻辑 CPU 的时间

这背后是通过 Linux 的 CFS(Completely Fair Scheduler)调度机制 实现的:

  • 使用 /sys/fs/cgroup/cpu/cpu.shares 控制 CPU 权重
  • 使用 /sys/fs/cgroup/cpu/cpu.cfs_quota_uscpu.cfs_period_us 来限制 CPU 时间配额

✅ 总结:

概念 是否等同于 vCPU
物理核心 ❌ 不等同
逻辑核心 / 线程 ✅ 等同

所以,在 Docker 中所说的 vCPU,指的是逻辑 CPU(线程)的数量,而非物理核心数。


如需查看系统中有多少逻辑 CPU(线程):

nproc

或者更详细的信息:

lscpu
未经允许不得转载:ECLOUD博客 » docker vcpu 指的是核心还是线程数目?