Compute Engine 会在您创建虚拟机 (VM) 或裸金属实例时为其分配 vCPU。本文档介绍了 vCPU 如何映射到物理硬件,以帮助您优化性能、管理费用并遵守软件许可要求。
了解 vCPU
虚拟 CPU (vCPU) 表示分配给计算实例的中央处理器 (CPU) 算力单位。根据底层处理器架构,vCPU 会被安排在单个硬件执行线程或整个专用物理 CPU 核心上运行。
vCPU 是 CPU 平台的一部分。CPU 平台是基于 CPU 的配置,包括以下内容:
- CPU 处理器类型
- 指令集(例如 AVX2 和 AVX-512)
- 缓存大小
- 时钟速度
- NUMA 拆分
- 内存访问寻道时间
- 片上加速器
为计算实例分配 vCPU
如需创建虚拟机或裸金属实例(统称为计算实例),您需要使用机器类型。机器类型决定了 Compute Engine 分配给实例的资源。例如,c4-standard-4 机器类型会创建具有 4 个 vCPU 和 16 GB 内存的虚拟机。
为了帮助您为工作负载选择合适的机器类型,Compute Engine 将机器类型分为机器家族和机器系列。
- 机器家族:针对特定工作负载优化的一组精选处理器和硬件配置,例如通用、加速器优化或内存优化。
机器系列:机器家族中 CPU 处理器、硬件和网络功能的特定组合。每个系列都侧重于计算能力或性能的不同方面。例如,E 系列以低成本提供高效的虚拟机,而 C 系列则提供比 E 系列更出色、更一致的性能。
- 一个机器系列可以有多个代,例如 C3 和 C4。代数或系列编号越高,表示底层 CPU 处理器或技术越新。例如,在第 5 代 Intel Xeon 处理器(也称为 Emerald Rapids)上运行的 M4 系列比在第 3 代 Intel Xeon 处理器(也称为 Ice Lake)上运行的 M3 机器系列更新。
- 机器系列和机器类型的底层架构由机器系列名称中的尾随字母表示。例如,第 4 代 C 机器系列有 C4 (Intel)、C4D (AMD)、C4A (Arm) 或 C4N(网络优化型)可供选择。
物理核心映射和并发多线程
在大多数 x86 处理器上,每个物理 CPU 核心支持两个硬件执行线程。Intel Xeon 处理器使用 Intel 超线程技术,AMD EPYC 处理器使用并发多线程 (SMT) 技术。对于这些处理器,Compute Engine 将每个 vCPU 实现为在物理核心上运行的单个硬件线程。因此,两个 vCPU 共用一个物理 CPU 核心(vCPU 与物理核心的比率为 2:1)。例如,具有 4 个 vCPU 的虚拟机使用 2 个具有 SMT 的物理 CPU 核心。
在某些机器系列和处理器架构上,Compute Engine 不使用 SMT。而是每个 vCPU 直接映射到一个专用物理 CPU 核心(vCPU 与物理核心的比率为 1:1):
- Arm 处理器:在基于 Arm64 的机器系列(例如 N4A、C4A 或 A4X)上,硬件架构使用单线程核心。每个 vCPU 代表一个完整的物理核心。
- 计算优化机器系列:H4D 和 H3 机器系列都不支持 SMT。每个 vCPU 代表一个完整的物理 CPU 核心,可提供较高的单线程性能,并消除线程之间的资源争用。
- Tau 机器系列:对于 Tau T2A(由 Ampere Altra 处理器提供支持)和 Tau T2D 机器系列(由第三代 AMD EPYC Milan 处理器提供支持),Compute Engine 默认停用 SMT。这些计算实例类型始终每个核心有一个 vCPU。
- 裸金属实例:对于裸金属实例,一个 vCPU 相当于一个 CPU。实例可用的 vCPU 数量相当于主机服务器上的硬件线程数量。您无法手动调整或设置每个核心的线程数。
为了满足特定的工作负载或软件许可要求,您可以自定义 vCPU 在客机操作系统中的显示方式。如需了解详情,请参阅自定义可见 CPU 核心数。 如需查看不使用 SMT 的机器系列和架构的列表,请参阅设置每个核心的线程数。
专用 vCPU 与共享核心 vCPU
选择机器类型后,您的 vCPU 会映射到 CPU 硬件线程或使用共享核心资源模型:
- 完整 vCPU:标准、高内存、高 CPU 和自定义机器类型会为每个 vCPU 分配一个硬件执行线程或物理核心。
- 对于通用机器系列中的 N4、N4A、N4D 和 E2 机器系列,动态资源管理 (DRM) 系统可确保每个活跃 vCPU 都有一个可用的硬件执行线程为其提供支持。借助 DRM,Compute Engine 可以通过以下方式更好地利用可用的物理 CPU:根据资源需求将计算实例调度到服务器,并将 vCPU 线程调度到物理 CPU,从而最大限度地缩短等待时间。通用机器家族中的 N1、N2 和 N2D 机器系列使用标准主机调度。
- 对于 C、M、G、Z 和 A 机器系列,vCPU 资源会专门分配给您的实例,绝不会与其他计算实例共享执行周期。
共享核心 vCPU:共享核心机器类型包括
e2-micro、e2-small、e2-medium、f1-micro和g1-small。这些机器类型使用上下文切换功能分时共享物理 CPU 核心。这些共享核心虚拟机不使用专用硬件线程,而是使用一定比例的物理核心时间:e2-micro维持 2 个 vCPU,每个 vCPU 占 CPU 时间的 12.5%(总计 25%)。e2-small维持 2 个 vCPU,每个 vCPU 占 CPU 时间的 25%(总计 50%)。e2-medium维持 2 个 vCPU,每个 vCPU 占 CPU 时间的 50%(总计 100%)。f1-micro在高达 20% 的 CPU 时间内维持 1 个 vCPU。g1-small在高达 50% 的 CPU 时间内维持 1 个 vCPU。
与具有完整 vCPU 的虚拟机相比,具有共享核心 vCPU 的虚拟机提供了一种经济实惠的选择,可用于运行小型、非资源密集型应用、微服务或不需要持续峰值 CPU 吞吐量的开发或测试工作负载。
vCPU 性能特征
vCPU 的处理性能取决于其 CPU 平台、时钟速度、缓存层次结构、多线程动态和资源调度。
CPU 平台和指令集
Compute Engine 提供在多代 Intel、AMD、Arm 和自定义 Google 处理器上运行的计算实例。每个 CPU 平台都引入了微架构增强功能和专用指令集:
- 高级矢量扩展 (AVX-512):AVX-512 适用于 Intel 平台(例如 Ice Lake、Emerald Rapids 和 Sapphire Rapids)以及 AMD EPYC 平台(Genoa 和 Turin),可加速矢量数学、科学计算和数据压缩。
- AMX 和 VNNI:这些扩展程序可直接在 vCPU 上加速深度学习推理和矩阵运算。
- Intel 处理器(Intel Xeon 第 4 代 Sapphire Rapids 及更高版本)支持高级矩阵扩展 (AMX)。
- Intel 和 AMD EPYC 处理器(Genoa 第 4 代及更高版本)均支持矢量神经网络指令 (VNNI)。
- Arm NEON 和 SVE:Arm NEON(在 Ampere Altra CPU 平台上提供)和可伸缩矢量扩展 (SVE)(在 Google Axion 和 NVIDIA Grace CPU 平台上提供)可为云原生 Web 工作负载提供可伸缩矢量执行。
时钟速度和 Turbo 频率
vCPU 会以其底层物理处理器的基本时钟频率执行指令。当工作负载需要额外的处理能力且散热余量允许时,处理器会自动将频率提高到全核睿频频率或单核睿频频率。
某些机器系列在 Compute Engine 中以最高持续时钟速度运行。例如,在 Granite Rapids 上运行的 C4 的全核 Turbo 频率最高可达 3.9 GHz,而 A3 Mega 或 A3 High 的全核 Turbo 频率最高可达 3.8 GHz。为单线程应用、电子设计自动化 (EDA) 和游戏服务器选择高频 vCPU。
如需查看 Compute Engine 使用的每个 CPU 平台的频率,请参阅 CPU 平台。
多线程资源共享
在启用了 SMT 的机器类型(每个核心 2 个 vCPU)上,两个硬件执行线程共享物理核心的 1 级 (L1) 指令和数据缓存、2 级 (L2) 缓存、执行单元和转换旁视缓冲器 (TLB)。
- I/O 密集型和并发工作负载:对于 Web 服务器、API Gateway 和具有频繁内存访问的数据库操作,SMT 通过在一个线程上运行指令,同时让另一个线程等待内存检索,从而提高整体核心吞吐量。
- 受计算限制的工作负载:对于持续使浮点单元或 L1/L2 缓存饱和的应用,在两个 vCPU 之间共享执行单元可能会导致资源争用。如果您的工作负载在启用了 SMT 的计算实例上遇到争用,请考虑通过将每个核心的线程数设置为 1 来停用 SMT,或迁移到具有专用物理核心的机器系列(例如 C4A 或 H4D)。
动态资源管理和性能监控
Compute Engine 使用专门的硬件和软件优化来保持可预测的 vCPU 延迟时间:
- Google Titanium 架构:新一代机器系列(包括 N4、N4D、N4A、C3、C3D 和 C4)使用 Google Titanium 分流卡、自定义 CPU 调度器和性能感知型实时迁移。动态资源管理可保留 NUMA(非统一内存访问)亲和性,并最大限度地减少干扰。
- E2 的动态资源管理:对于 E2 虚拟机,Hypervisor 会按需将虚拟 CPU 和内存动态映射到物理资源。这种动态映射通过优化物理资源的使用来提高成本效益。
- 性能监控单元 (PMU):您可以在受支持的机器系列(例如 C4、M4 和 A4X)上启用 PMU,以访问低级硬件计数器。性能分析工具使用 PMU 计数器来跟踪分支预测错误、缓存未命中和每周期指令数 (IPC)。
- Ops Agent:您可以在计算实例上安装 Ops Agent,以监控 CPU 利用率并收集系统级遥测数据。Ops Agent 会将这些数据发送到 Google Cloud Observability,以帮助您分析和优化 vCPU 性能。
价格注意事项
在为工作负载制定预算和规划容量时,请考虑 Compute Engine 如何对 vCPU 计费以及可用的折扣模式。
资源结算粒度
对于大多数机器系列,Compute Engine 会将 vCPU 和系统内存作为单独的专用资源进行计费。您需要按秒为实例付费,每个启动的计算实例的最短结算时长为 1 分钟。在第一分钟之后,您只需按实例保持运行的实际秒数付费。
对于共享核心机器类型(例如 E2 共享核心和 N1 共享核心),Compute Engine 会将 vCPU 和内存捆绑在一起,按统一的小时费率计费,而不是作为单独的资源计费。
您可以在虚拟机实例价格页面上查看 vCPU 结算费率。
费用优化和折扣
您可以使用以下价格选项来降低 vCPU 结算费用:
- 承诺使用折扣 (CUD):如果您的工作负载具有可预测的稳定状态 vCPU 要求,则您可以购买 1 年期或 3 年期承诺,以获得按需价格最高 55% 到 70% 的折扣。Compute Engine 为区域中的特定机器系列提供基于资源的 CUD,并提供适用于多个机器系列和区域的基于支出的灵活 CUD。您可以在 Cloud Billing 账号中的项目之间共享 CUD。
- 持续使用折扣 (SUD):对于符合条件的机器系列(例如 N1、N2、N2D、C2、M1 和 M2),当您的 vCPU 运行时间超过结算月份的 25% 时,Compute Engine 会自动应用 SUD。如果虚拟机实例连续运行一整月,则可享受最高 20% 或 30% 的折扣,具体取决于机器系列。按需价格较低的机器系列(包括 E2、N4、C3、C4、Tau T2A 和 A3)不提供 SUD。
- Spot 虚拟机:对于容错、无状态或批量工作负载,Spot 虚拟机可提供标准按需 vCPU 价格 60% 到 91% 的折扣。Compute Engine 可随时停止或回收 Spot 虚拟机来回收容量。
- 单租户节点和 vCPU 超额使用:在单租户节点上运行虚拟机实例时,您需要为专用物理宿主机服务器付费,而不是为单个 vCPU 付费。在单租户节点上,您可以配置 CPU 过度使用(最高 2:1 的比率),以便在虚拟机实例中调度比物理主机核心更多的 vCPU,从而降低开发者或测试环境的计算费用。
- 动态工作负载调度器 (DWS):对于 AI 或机器学习工作负载,您可以使用 DWS 优化 vCPU 费用并提高资源可用性。
- 灵活启动型虚拟机:用于经济实惠且灵活地调度运行时间不超过 7 天的工作负载。
- 日历模式下的未来预留请求:用于在未来的特定日期和时间预留资源,最长可预留 90 天。
- 容量调整建议:Compute Engine 会分析历史 vCPU 利用率指标,并提供自动机器类型建议和空闲计算实例建议。采纳这些建议有助于您调整预配过多的 vCPU 的大小或停止空闲实例。
机器系列可用性
下表列出了 Compute Engine 机器系列的 vCPU 架构模型、多线程比率和最大 vCPU 数量。vCPU 数量上限反映了每个系列中最大的机器类型,包括裸金属实例。
| 机器家族 | 机器系列 | 处理器架构 | vCPU 与核心比率 | vCPU 数量上限 | 共享核心选项 |
|---|---|---|---|---|---|
| 通用 | E2 |
Intel Xeon / AMD EPYC | 2 个 vCPU:1 个核心 (SMT) | 32 个 vCPU | 是(e2-micro、e2-small、e2-medium) |
| 通用 | N1 |
多代 Intel Xeon 处理器 | 2 个 vCPU:1 个核心 (SMT) | 96 个 vCPU | 是(f1-micro、g1-small) |
| 通用 | N2 |
Intel Xeon(Cascade Lake/Ice Lake) | 2 个 vCPU:1 个核心 (SMT) | 128 个 vCPU | 否 |
| 通用 | N2D |
AMD EPYC(Rome/Milan) | 2 个 vCPU:1 个核心 (SMT) | 224 个 vCPU | 否 |
| 通用 | N4 |
第 5 代 Intel Xeon (Emerald Rapids) | 2 个 vCPU:1 个核心 (SMT) | 80 个 vCPU | 否 |
| 通用 | N4D |
第 5 代 AMD EPYC (Turin) | 2 个 vCPU:1 个核心 (SMT) | 96 个 vCPU | 否 |
| 通用 | N4A |
Google Axion (Arm64) | 1 个 vCPU:1 个核心(无 SMT) | 64 个 vCPU | 否 |
| 通用 | C3 |
第 4 代 Intel Xeon (Sapphire Rapids) | 2 个 vCPU:1 个核心 (SMT) | 176 个 vCPU | 否 |
| 通用 | C3D |
第 4 代 AMD EPYC (Genoa) | 2 个 vCPU:1 个核心 (SMT) | 360 个 vCPU | 否 |
| 通用 | C4 |
第 5 代 Intel Xeon (Emerald Rapids) 和第 6 代 Intel Xeon (Granite Rapids) | 2 个 vCPU:1 个核心 (SMT) | 288 个 vCPU | 否 |
| 通用 | C4A |
Google Axion (Arm64) | 1 个 vCPU:1 个核心(无 SMT) | 96 个 vCPU | 否 |
| 通用 | C4D |
第 5 代 AMD EPYC (Turin) | 2 个 vCPU:1 个核心 (SMT) | 384 个 vCPU | 否 |
| 通用 | Tau T2A |
Ampere Altra (Arm64) | 1 个 vCPU:1 个核心(无 SMT) | 48 个 vCPU | 否 |
| 通用 | Tau T2D |
第 3 代 AMD EPYC (Milan) | 1 个 vCPU:1 个核心(停用 SMT) | 60 个 vCPU | 否 |
| 计算优化 | C2 |
Intel Xeon (Cascade Lake) | 2 个 vCPU:1 个核心 (SMT) | 60 个 vCPU | 否 |
| 计算优化 | C2D |
AMD EPYC (Milan) | 2 个 vCPU:1 个核心 (SMT) | 112 个 vCPU | 否 |
| 计算优化 | H3 |
第 4 代 Intel Xeon (Sapphire Rapids) | 1 个 vCPU:1 个核心(无 SMT) | 88 个 vCPU | 否 |
| 计算优化 | H4D |
第 5 代 AMD EPYC (Turin) | 1 个 vCPU:1 个核心(无 SMT) | 192 个 vCPU | 否 |
| 网络优化 | C4N |
第 5 代 Intel Xeon (Emerald Rapids) | 2 个 vCPU:1 个核心 (SMT) | 192 个 vCPU | 否 |
| 内存优化 | X4 |
第 4 代 Intel Xeon (Sapphire Rapids) | 2 个 vCPU:1 个核心 (SMT) | 1,920 个 vCPU | 否 |
| 内存优化 | M1 |
Intel Xeon(Skylake 和 Broadwell) | 2 个 vCPU:1 个核心 (SMT) | 160 个 vCPU | 否 |
| 内存优化 | M2 |
第 2 代 Intel Xeon (Cascade Lake) | 2 个 vCPU:1 个核心 (SMT) | 416 个 vCPU | 否 |
| 内存优化 | M3 |
第 3 代 Intel Xeon (Ice Lake) | 2 个 vCPU:1 个核心 (SMT) | 128 个 vCPU | 否 |
| 内存优化 | M4/M4N |
第 5 代 Intel Xeon (Emerald Rapids) | 2 个 vCPU:1 个核心 (SMT) | 224 个 vCPU | 否 |
| 存储优化 | Z3 |
第 4 代 Intel Xeon (Sapphire Rapids) | 2 个 vCPU:1 个核心 (SMT) | 192 个 vCPU | 否 |
| 存储优化 | Z4D |
第 5 代 AMD EPYC (Turin) | 2 个 vCPU:1 个核心 (SMT) | 288 个 vCPU | 否 |
| 存储优化 | Z4M |
第 5 代 Intel Xeon (Emerald Rapids) | 1 个 vCPU:1 个核心(无 SMT) | 192 个 vCPU | 否 |
| 加速器优化 | A4X Max |
NVIDIA Grace | 1 个 vCPU:1 个核心(无 SMT) | 144 个 vCPU | 否 |
| 加速器优化 | A4X |
NVIDIA Grace | 1 个 vCPU:1 个核心(无 SMT) | 140 个 vCPU | 否 |
| 加速器优化 | A4 |
第 5 代 Intel Xeon (Emerald Rapids) 搭配 NVIDIA GPU | 2 个 vCPU:1 个核心 (SMT) | 224 个 vCPU | 否 |
| 加速器优化 | A3 |
Intel Xeon(Emerald Rapids 和 Sapphire Rapids)搭配 NVIDIA GPU | 2 个 vCPU:1 个核心 (SMT) | 224 个 vCPU | 否 |
| 加速器优化 | A2 |
第 2 代 Intel Xeon (Cascade Lake) 搭配 NVIDIA GPU | 2 个 vCPU:1 个核心 (SMT) | 96 个 vCPU | 否 |
| 加速器优化 | G4 |
第 5 代 AMD EPYC (Turin) 搭配 NVIDIA GPU | 2 个 vCPU:1 个核心 (SMT) | 384 个 vCPU | 否 |
| 加速器优化 | G2 |
第 2 代 Intel Xeon (Cascade Lake) 搭配 NVIDIA GPU | 2 个 vCPU:1 个核心 (SMT) | 96 个 vCPU | 否 |
如需详细了解所有系列的每个 vCPU 的内存、网络带宽和本地磁盘支持,请参阅机器资源指南。
后续步骤
- 在机器家族资源和比较指南中比较 vCPU 和内存规格。
- 了解 Compute Engine 上的可用 CPU 平台。
- 如需了解共享核心实例,请参阅共享核心虚拟机。
- 了解如何应用机器类型建议和空闲虚拟机建议,以优化 vCPU 利用率。