管理虚拟机中的 PMU


本文档介绍了如何更改在虚拟机 (VM) 实例中启用的性能监控单元 (PMU) 类型,或在虚拟机中停用 PMU。

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

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

  • 在虚拟机中停用 PMU。如果您不再需要访问 PMU 的性能计数器,则停用虚拟机中的 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.update

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

更改虚拟机中的 PMU 类型

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

  1. 如需验证在虚拟机中启用的 PMU 类型,请检查 performanceMonitoringUnit 字段的值。

  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 请求。在请求中,执行以下操作:

    • 在请求网址中添加 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

您无需停止虚拟机即可停用 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 请求。在请求中,执行以下操作:

    • 在请求网址中添加 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"
      },
      ...
    }
    

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

后续步骤