虚拟化

什么是vCPU?

又称: virtual CPU
定义

A vCPU is a virtual processor presented to a guest, backed by scheduling time on a physical core or thread. The decisive question is whether the backing thread is shared with other tenants or reserved. A dedicated vCPU has no other tenant scheduled against it; a shared one competes, producing steal time.

为什么vCPU很重要

决定性的问题是底层线程是与其他租户共享还是预留的。专用vCPU没有其他租户调度到其上;共享的则产生竞争,导致stolen time。

vCPU的实际应用

运行服务器时,vCPU是您工作负载实际消耗的资源。首先查看偷取时间:如果持续高于几个百分点,您的vCPU是共享的,其他租户消耗您的周期。您可能增加vCPU数量修复延迟,但注意问题在于争用还是核心数。弄错意味着为不属于您的调度时间付费,您的应用遭受无法解释的停顿。

人们对vCPU常见的误解

常见错误是将vCPU视为具有保证速度的物理核心。在KVM环境中,每个vCPU由主机线程支持,在共享主机上,该线程竞争。人们假设更多vCPU总是有帮助,但如果支持线程争用,您会得到偷取时间。纠正:在扩展vCPU数量前检查偷取时间。

vCPU —— 常见问题

我需要多少vCPU?

取决于您的工作负载。对于繁忙的Web服务器,从两个开始并观察CPU偷取时间。如果偷取保持低且仍受限制,添加vCPU。在我们的KVM计划中,您可以通过短重启增加CPU和内存,无需重建即可调整。

我以后能更改vCPU数量吗?

可以,在现有服务器上,您可以通过短时重启增加 CPU,磁盘可在线扩容。降级则需要重建而非在线迁移,因此建议从小配置开始,再逐步升级。

vCPU在哪些地方出现

更多来自虚拟化

KVM
KVM 是内置于 Linux 内核的完全硬件虚拟化技术,每个客户机都有自己的内核,并通过硬件强制与其他租户隔离。
OpenVZ
OpenVZ 是基于容器的虚拟化技术,每个实例共享主机内核,因此客户机无法加载内核模块或运行不同的操作系统。
LXC
LXC 是 Linux 原生的容器化技术,通过命名空间和 cgroups 隔离进程,同时共享主机内核。
虚拟机监控程序
虚拟机监控程序是创建和运行虚拟机的软件层,在它们之间分配物理 CPU、内存和 I/O。
嵌套虚拟化
嵌套虚拟化允许虚拟机自身运行虚拟机,通过将处理器虚拟化扩展暴露给客户机来实现。
cloud-init
cloud-init是使用平台提供的元数据在首次启动时配置虚拟机的标准机制。