在 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_us和cpu.cfs_period_us来限制 CPU 时间配额
✅ 总结:
| 概念 | 是否等同于 vCPU |
|---|---|
| 物理核心 | ❌ 不等同 |
| 逻辑核心 / 线程 | ✅ 等同 |
所以,在 Docker 中所说的 vCPU,指的是逻辑 CPU(线程)的数量,而非物理核心数。
如需查看系统中有多少逻辑 CPU(线程):
nproc
或者更详细的信息:
lscpu
ECLOUD博客