在虚拟机中启用 PMU


本文档介绍了如何在新的或现有的虚拟机 (VM) 实例中启用性能监控单元 (PMU)。

在 C4 虚拟机中启用 PMU连接到虚拟机后,您可以在虚拟机上运行和安装性能监控软件,以分析和优化虚拟机上运行的软件的性能。在运行对性能敏感的工作负载(例如高性能计算 [HPC] 或机器学习 [ML] 工作负载)时,PMU 非常有用。

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

所需的角色

如需获得在新的或现有的虚拟机中启用 PMU 所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色可提供在新的或现有的虚拟机中启用 PMU 所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

在新的或现有的虚拟机中启用 PMU 需要以下权限:

  • 创建虚拟机:
    • 针对项目的 compute.instances.create 权限
    • 使用自定义映像创建虚拟机:针对映像的 compute.images.useReadOnly 权限
    • 使用快照创建虚拟机:针对快照的 compute.snapshots.useReadOnly 权限
    • 使用实例模板创建虚拟机:针对实例模板的 compute.instanceTemplates.useReadOnly 权限
    • 为虚拟机分配旧版网络:针对项目的 compute.networks.use 权限
    • 为虚拟机指定静态 IP 地址:针对项目的 compute.addresses.use 权限
    • 使用旧版网络时为虚拟机分配外部 IP 地址:针对项目的 compute.networks.useExternalIp 权限
    • 为虚拟机指定子网:针对项目或所选子网的 compute.subnetworks.use 权限
    • 在使用 VPC 网络时为虚拟机分配外部 IP 地址:针对项目或所选子网的 compute.subnetworks.useExternalIp 权限
    • 为虚拟机设置虚拟机实例元数据:针对项目的 compute.instances.setMetadata 权限
    • 为虚拟机设置标记:针对虚拟机的 compute.instances.setTags 权限
    • 为虚拟机设置标签:针对虚拟机的 compute.instances.setLabels 权限
    • 为虚拟机设置要使用的服务账号:针对虚拟机的 compute.instances.setServiceAccount 权限
    • 为虚拟机创建新磁盘:针对项目的 compute.disks.create 权限
    • 以只读或读写模式挂接现有磁盘:针对磁盘的 compute.disks.use 权限
    • 以只读模式挂接现有磁盘:针对磁盘的 compute.disks.useReadOnly 权限
  • 如需创建实例模板:针对项目的 compute.instanceTemplates.create 权限
  • 更新虚拟机:针对虚拟机的 compute.instances.update 权限

您也可以使用自定义角色或其他预定义角色来获取这些权限。

在虚拟机中启用 PMU

如需在一个或多个 C4 虚拟机中启用 PMU,请选择以下方法之一:

在一个或多个虚拟机中启用 PMU 后,您可以在虚拟机上安装和使用性能监控软件。

在现有虚拟机中启用 PMU

在现有虚拟机中启用 PMU 之前,请执行以下操作,确保虚拟机使用受支持的机器类型和 CPU 平台

  1. 如需验证虚拟机的机器类型和 CPU 平台,请查看虚拟机的详细信息

  2. 如果您需要更改虚拟机的机器类型,请执行以下操作:

    1. 如需验证受支持的 CPU 平台在虚拟机所在的可用区中是否可用,请参阅可用区域和可用区

    2. 按如下所述更改机器类型

      • 如需启用增强型 PMU 类型,您必须指定具有 96 个或 192 个 vCPU 的 C4 机器类型

      • 否则,如需启用架构或标准 PMU 类型,请指定任意 C4 机器类型。

您无需停止虚拟机即可启用 PMU。不过,如需使更改生效,您必须按照本部分中所述重启虚拟机。

如需在现有虚拟机中启用 PMU,请选择以下选项之一:

gcloud

  1. 创建一个空的 YAML 文件。

  2. 如需将虚拟机的属性导出到您刚刚创建的 YAML 文件中,请使用 gcloud compute instances export 命令

    gcloud compute instances export VM_NAME \
        --destination=YAML_FILE \
        --zone=ZONE
    

    替换以下内容:

    • VM_NAME:虚拟机的名称。

    • YAML_FILE:您在上一步中创建的 YAML 文件的路径。

    • ZONE:该虚拟机所在的可用区。

  3. 在 YAML 配置文件中,添加 performanceMonitoringUnit 字段。

    advancedMachineFeatures:
      performanceMonitoringUnit: PMU_TYPE
    

    PMU_TYPE 替换为以下某个值:

    • 架构 PMU 类型:ARCHITECTURAL

    • 标准 PMU 类型:STANDARD

    • 增强型 PMU 类型:ENHANCED

  4. 如需更新虚拟机并重启它,请使用 gcloud compute instances update-from-file 命令,并将 --most-disruptive-allowed-action 标志设置为 RESTART

    gcloud compute instances update-from-file VM_NAME \
        --most-disruptive-allowed-action=RESTART \
        --source=YAML_FILE \
        --zone=ZONE
    

    替换以下内容:

    • VM_NAME:虚拟机的名称。

    • YAML_FILE:包含您在上一步中修改的配置数据的 YAML 文件的路径。

    • ZONE:该虚拟机所在的可用区。

REST

  1. 创建一个空的 JSON 文件。

  2. 如需查看现有虚拟机的属性,请向 instances.get 方法发出 GET 请求。

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    

    替换以下内容:

    • PROJECT_ID:虚拟机所在项目的 ID。

    • ZONE:该虚拟机所在的可用区。

    • VM_NAME:现有虚拟机的名称。

  3. 在您在上一步中创建的空 JSON 文件中,执行以下操作:

    1. 输入 GET 请求输出中的虚拟机属性。

    2. 添加 performanceMonitoringUnit 字段。

      {
        "advancedMachineFeatures": {
          "performanceMonitoringUnit": "PMU_TYPE"
        },
        ...
      }
      

      PMU_TYPE 替换为以下某个值:

      • 架构 PMU 类型:ARCHITECTURAL

      • 标准 PMU 类型:STANDARD

      • 增强型 PMU 类型:ENHANCED

  4. 如需更新虚拟机并重启它,请向 instances.update 方法发出 PUT 请求。在请求中,执行以下操作:

    • 在请求网址中添加 most_disruptive_allowed_action 查询参数并设置为 RESTART

    • 对于请求正文,请使用您在上一步中创建和更新的 JSON 文件中的虚拟机属性。

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?most_disruptive_allowed_action=RESTART
    
    {
      "advancedMachineFeatures": {
        "performanceMonitoringUnit": "PMU_TYPE"
      },
      ...
    }
    

如需详细了解如何更新虚拟机的属性,请参阅更新虚拟机属性

在创建虚拟机时启用 PMU

您只能在包含受支持的 CPU 平台的可用区中创建启用了 PMU 的虚拟机。如需查看按可用区划分的可用 CPU 列表,请参阅可用区域和可用区

如需创建启用了 PMU 的虚拟机,请选择以下选项之一:

gcloud

如需创建启用了 PMU 的虚拟机,请将 gcloud compute instances create 命令--performance-monitoring-unit 标志结合使用。

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --performance-monitoring-unit=PMU_TYPE \
    --zone=ZONE

替换以下内容:

  • VM_NAME:虚拟机的名称。

  • MACHINE_TYPEC4 机器类型。如果您要启用增强型 PMU 类型,则必须指定具有 96 个或 192 个 vCPU 的 C4 机器类型。否则,创建虚拟机会失败。

  • PMU_TYPE:要在虚拟机中启用的 PMU 类型。请指定以下某个值:

    • 架构 PMU 类型:architectural

    • 标准 PMU 类型:standard

    • 增强型 PMU 类型:enhanced

  • ZONE:要在其中创建虚拟机的可用区。

REST

如需创建启用了 PMU 的虚拟机,请向 instances.insert 方法发出 POST 请求。在请求正文中,包含 performanceMonitoringUnit 字段。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "disks": [
    {
      "boot": true,
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      }
    }
  ],
  "networkInterfaces": [
    {
      "network": "global/networks/default"
    }
  ],
  "advancedMachineFeatures": {
    "performanceMonitoringUnit": "PMU_TYPE"
  }
}

替换以下内容:

  • PROJECT_ID:要在其中创建虚拟机的项目的 ID。

  • ZONE:要在其中创建虚拟机的可用区。

  • VM_NAME:虚拟机的名称。

  • MACHINE_TYPEC4 机器类型。如果您要启用增强型 PMU 类型,则必须指定具有 96 个或 192 个 vCPU 的 C4 机器类型。否则,创建虚拟机会失败。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE:指定以下其中一项:

    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20240617

    • 映像系列,其格式必须为 family/IMAGE_FAMILY。此项指定最新的未弃用操作系统映像。例如,如果您指定 family/debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

  • PMU_TYPE:要在虚拟机中启用的 PMU 类型。请指定以下某个值:

    • 架构 PMU 类型:ARCHITECTURAL

    • 标准 PMU 类型:STANDARD

    • 增强型 PMU 类型:ENHANCED

如需详细了解如何创建虚拟机,请参阅创建和启动 Compute Engine 实例

在批量创建虚拟机时启用 PMU

您只能在包含受支持的 CPU 平台的可用区中批量创建启用了 PMU 的虚拟机。如需查看按可用区划分的可用 CPU 列表,请参阅可用区域和可用区

如需批量创建启用了 PMU 的虚拟机,请选择以下选项之一:

gcloud

如需批量创建启用了 PMU 的虚拟机,请将 gcloud compute instances bulk create 命令--performance-monitoring-unit 标志结合使用。

例如,如需在单个可用区中批量创建虚拟机并指定名称模式,请运行以下命令:

gcloud compute instances bulk create \
    --count=COUNT \
    --machine-type=MACHINE_TYPE \
    --name-pattern="NAME_PATTERN" \
    --performance-monitoring-unit=PMU_TYPE \
    --zone=ZONE

替换以下内容:

  • COUNT:要创建的虚拟机数量。

  • MACHINE_TYPEC4 机器类型。如果您要启用增强型 PMU 类型,则必须指定具有 96 个或 192 个 vCPU 的 C4 机器类型。否则,创建虚拟机会失败。

  • NAME_PATTERN:虚拟机的名称模式。如需替换虚拟机名称中的数字序列,请使用哈希值 (#) 字符序列。例如,使用 vm-# 作为名称模式将生成名称以 vm-1vm-2 开头的虚拟机,一直到由 COUNT 指定的虚拟机数量。

  • PMU_TYPE:要在虚拟机中启用的 PMU 类型。请指定以下某个值:

    • 架构 PMU 类型:architectural

    • 标准 PMU 类型:standard

    • 增强型 PMU 类型:enhanced

  • ZONE:要在其中批量创建虚拟机的可用区。

REST

如需批量创建启用了 PMU 的虚拟机,请向 instances.bulkInsert 方法发出 POST 请求。在请求正文中,包含 performanceMonitoringUnit 字段。

例如,如需在单个可用区中批量创建虚拟机并指定名称模式,请发出 POST 请求,如下所示:

POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert

{
  "count": COUNT,
  "namePattern": "NAME_PATTERN",
  "instanceProperties": {
    "machineType": "MACHINE_TYPE",
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "advancedMachineFeatures": {
      "performanceMonitoringUnit": "PMU_TYPE"
    }
  }
}

替换以下内容:

  • PROJECT_ID:要在其中批量创建虚拟机的项目的 ID。

  • ZONE:要在其中批量创建虚拟机的可用区。

  • COUNT:要创建的虚拟机数量。

  • NAME_PATTERN:虚拟机的名称模式。如需替换虚拟机名称中的数字序列,请使用哈希值 (#) 字符序列。例如,使用 vm-# 作为名称模式将生成名称以 vm-1vm-2 开头的虚拟机,一直到由 COUNT 指定的虚拟机数量。

  • MACHINE_TYPEC4 机器类型。如果您要启用增强型 PMU 类型,则必须指定具有 96 个或 192 个 vCPU 的 C4 机器类型。否则,创建虚拟机会失败。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE:指定以下其中一项:

    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20240617

    • 映像系列,其格式必须为 family/IMAGE_FAMILY。此项指定最新的未弃用操作系统映像。例如,如果您指定 family/debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

  • PMU_TYPE:要在虚拟机中启用的 PMU 类型。请指定以下某个值:

    • 架构 PMU 类型:ARCHITECTURAL

    • 标准 PMU 类型:STANDARD

    • 增强型 PMU 类型:ENHANCED

  • ZONE:要在其中批量创建虚拟机的可用区。

如需详细了解如何批量创建虚拟机,请参阅批量创建虚拟机

在创建实例模板时启用 PMU

如果您要创建启用了 PMU 的区域级实例模板,请确保所选区域中至少有一个可用区包含受支持的 CPU 平台。如需查看按可用区划分的可用 CPU 列表,请参阅可用区域和可用区

创建启用了 PMU 的实例模板后,您可以使用该模板执行以下操作:

如需创建启用了 PMU 的实例模板,请选择以下选项之一:

gcloud

如需创建启用了 PMU 的实例模板,请将 gcloud compute instance-templates create 命令--performance-monitoring-unit 标志结合使用。

例如,如需创建启用了 PMU 的全球实例模板,请运行以下命令:

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --machine-type=MACHINE_TYPE \
    --performance-monitoring-unit=PMU_TYPE

替换以下内容:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

  • MACHINE_TYPEC4 机器类型。如果您要启用增强型 PMU 类型,则必须指定具有 96 个或 192 个 vCPU 的 C4 机器类型。否则,创建虚拟机会失败。

  • PMU_TYPE:要在实例模板中包含的 PMU 类型。请指定以下某个值:

    • 架构 PMU 类型:architectural

    • 标准 PMU 类型:standard

    • 增强型 PMU 类型:enhanced

REST

如需创建启用了 PMU 的实例模板,请向以下方法之一发出 POST 请求:

在请求正文中,添加 performanceMonitoringUnit 字段。

例如,如需创建启用了 PMU 的全球实例模板,请发出 POST 请求,如下所示:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "network": "global/networks/default"
      }
    ],
    "advancedMachineFeatures": {
      "performanceMonitoringUnit": "PMU_TYPE"
    }
  }
}

替换以下内容:

  • PROJECT_ID:要在其中创建实例模板的项目的 ID。

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

  • IMAGE_PROJECT:映像所属的映像项目;例如 debian-cloud。如需详细了解支持的映像项目,请参阅公共映像

  • IMAGE:指定以下其中一项:

    • 操作系统映像的特定版本,例如 debian-12-bookworm-v20240617

    • 映像系列,其格式必须为 family/IMAGE_FAMILY。此项指定最新的未弃用操作系统映像。例如,如果您指定 family/debian-12,则系统会使用 Debian 12 映像系列中的最新版本。如需详细了解如何使用映像系列,请参阅映像系列最佳实践

  • MACHINE_TYPEC4 机器类型。如果您要启用增强型 PMU 类型,则必须指定具有 96 个或 192 个 vCPU 的 C4 机器类型。否则,创建虚拟机会失败。

  • PMU_TYPE:要在实例模板中包含的 PMU 类型。请指定以下某个值:

    • 架构 PMU 类型:ARCHITECTURAL

    • 标准 PMU 类型:STANDARD

    • 增强型 PMU 类型:ENHANCED

如需详细了解如何创建实例模板,请参阅创建实例模板

后续步骤