在虚拟机中启用 PMU


本文档介绍了如何在新的或现有的虚拟机 (VM) 实例中启用性能监控单元 (PMU)。如需详细了解 PMU,请参阅 PMU 概览

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

准备工作

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

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

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      如需了解详情,请参阅 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

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

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

在现有虚拟机中启用 PMU

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

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

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

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

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

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

      • 否则,如需启用架构或标准 PMU 类型,请指定任意 C4A 或 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 字段不存在,则也添加该字段:

    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. advancedMachineFeatures 字段中,添加 performanceMonitoringUnit 字段。如果 advancedMachineFeatures 字段不存在,则也添加该字段:

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

      PMU_TYPE 替换为以下某个值:

      • 架构 PMU 类型:ARCHITECTURAL

      • 标准 PMU 类型:STANDARD

      • 增强型 PMU 类型:ENHANCED

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

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

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

    请求类似于以下内容:

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?mostDisruptiveAllowedAction=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_TYPEC4AC4 机器类型。 如果您要启用增强型 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_TYPEC4AC4 机器类型。 如果您要启用增强型 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_TYPEC4AC4 机器类型。 如果您要启用增强型 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://compute.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_TYPEC4AC4 机器类型。 如果您要启用增强型 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

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

在创建实例模板时启用 PMU

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

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

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

gcloud

如需创建启用了 PMU 的实例模板,请将 gcloud compute instance-templates create 命令--performance-monitoring-unit 标志搭配使用。如需创建区域级实例模板,您还必须添加 --instance-template-region 标志。

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

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

替换以下内容:

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

  • REGION:要在其中创建实例模板的区域。

  • MACHINE_TYPEC4AC4 机器类型。 如果您要启用增强型 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/regions/REGION/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。

  • REGION:要创建实例模板的区域。

  • INSTANCE_TEMPLATE_NAME:实例模板的名称。

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

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

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

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

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

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

    • 架构 PMU 类型:ARCHITECTURAL

    • 标准 PMU 类型:STANDARD

    • 增强型 PMU 类型:ENHANCED

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

后续步骤