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数量:
- 安装依赖
执行命令安装GCP Compute客户端库:
pip install google-cloud-compute
- 身份认证
本地开发环境可通过以下命令完成应用默认账号认证:
gcloud auth application-default login
GCP内部服务(如Cloud Functions)可直接使用默认服务账号权限,无需额外认证。
- 代码实现
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
相关产品推荐
相关产品推荐

