You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Cloud平台VCPU与CPU的区别及实例数量查询方法

Google Cloud中vCPU与物理CPU的区别
  • 定义差异:物理CPU是服务器硬件上的实际处理器核心,vCPU是GCP对物理CPU资源的虚拟化切片。多数通用实例类型中,1个vCPU对应物理CPU的1个超线程;部分独占核心实例(如C2D、N2D HighCPU系列)中,1个vCPU直接对应1个物理核心。
  • 资源分配逻辑:物理CPU是硬件级别的实体资源,vCPU是云平台分配的虚拟计算单元,不同实例类型的vCPU会获得不同的资源优先级或独占性——独占核心实例的vCPU会占用完整的物理核心资源,无超线程共享。
  • 计费与使用维度:GCP的计算资源计费以vCPU为单位,用户根据所选实例的vCPU规格付费;物理CPU数量仅作为底层资源参考,不会直接作为计费或配置选项。
使用GCP客户端库获取实例的CPU与vCPU数量

以下以Python客户端库为例,实现批量获取指定区域内计算实例的vCPU及物理CPU数量:

  1. 安装依赖
    执行命令安装GCP Compute客户端库:
pip install google-cloud-compute
  1. 身份认证
    本地开发环境可通过以下命令完成应用默认账号认证:
gcloud auth application-default login

GCP内部服务(如Cloud Functions)可直接使用默认服务账号权限,无需额外认证。

  1. 代码实现
from google.cloud import compute_v1

def fetch_instance_cpu_details(project_id, zone):
    # 初始化实例与机器类型客户端
    instance_client = compute_v1.InstancesClient()
    machine_type_client = compute_v1.MachineTypesClient()

    # 列出指定区域的所有计算实例
    list_instances_req = compute_v1.ListInstancesRequest(
        project=project_id,
        zone=zone
    )
    instances = instance_client.list(request=list_instances_req)

    for instance in instances:
        # 从实例的machine_type URL中提取机器类型名称
        machine_type_name = instance.machine_type.split("/")[-1]
        
        # 获取机器类型的详细配置(包含vCPU数量)
        get_mt_req = compute_v1.GetMachineTypeRequest(
            project=project_id,
            zone=zone,
            machine_type=machine_type_name
        )
        machine_type = machine_type_client.get(request=get_mt_req)
        vcpu_count = machine_type.guest_cpus

        # 判断实例是否为独占核心类型,计算物理CPU数量
        exclusive_core_types = ["c2d", "n2d-highcpu", "m2d"]
        is_exclusive = any(typ in machine_type_name for typ in exclusive_core_types)
        physical_cpu_count = vcpu_count if is_exclusive else vcpu_count // 2

        # 输出实例CPU信息
        print(f"实例名称: {instance.name}")
        print(f"vCPU数量: {vcpu_count}")
        print(f"物理CPU数量: {physical_cpu_count}")
        print("-" * 30)

# 替换为你的项目ID与区域
if __name__ == "__main__":
    PROJECT_ID = "your-gcp-project-id"
    ZONE = "us-central1-a"
    fetch_instance_cpu_details(PROJECT_ID, ZONE)

代码说明

  • 通过InstancesClient列出目标区域的所有计算实例;
  • 每个实例的machine_type字段指向对应机器类型的API URL,解析后通过MachineTypesClient获取机器类型的详细配置,其中guest_cpus即为vCPU数量;
  • 物理CPU数量需根据实例类型判断:独占核心类型实例的vCPU与物理核心1:1对应,普通实例则是2个vCPU对应1个物理核心(超线程)。

内容的提问来源于stack exchange,提问作者Daniel Vanum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:23:19