管理虚拟机中的 PMU


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

在虚拟机中启用 PMU 并在虚拟机上运行性能监控软件后,您可以执行以下操作:

  • 更改在虚拟机中启用的 PMU 类型。如果您想跟踪不同类型的低级别 CPU 事件,则此更改非常有用。

  • 在虚拟机中停用 PMU。如果您不再需要访问 PMU 中的性能计数器,则此操作非常有用。

准备工作

  • 如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 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 类型或停用 PMU 类型所需的权限,请让您的管理员为您授予项目的 Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

此预定义角色可提供更改虚拟机中启用的 PMU 类型或停用 PMU 类型所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

更改虚拟机中启用的 PMU 类型或停用 PMU 类型需要以下权限:

  • 更新虚拟机:针对虚拟机的 compute.instances.update 权限

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

更改虚拟机中的 PMU 类型

在更改现有 C4A 或 C4 虚拟机中启用的 PMU 类型之前,请使用 Google Cloud CLI 或 REST API 查看虚拟机的详细信息。在命令或 API 请求的输出中,验证以下各项:

  1. 如需验证虚拟机中启用的 PMU 类型,请检查 performanceMonitoringUnit 字段的值。如果缺少该字段,则表示 PMU 处于停用状态。

  2. 如果您要启用增强型 PMU 类型,请通过检查 machineType 字段的值,确保虚拟机使用的是具有 96 个或 192 个 vCPU 的 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 字段,然后更改其值以指定其他 PMU 类型:

    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 字段,然后更改其值以指定其他 PMU 类型:

      "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

您无需停止虚拟机即可停用 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 字段并将其值设置为 NONE

    advancedMachineFeatures:
      performanceMonitoringUnit: NONE
    
  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 字段,然后将其值更改为 NONE

      "advancedMachineFeatures": {
        "performanceMonitoringUnit": "NONE"
      }
      
  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": "NONE"
      },
      ...
    }
    

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

后续步骤