管理 Compute Engine 執行個體中的 PMU

在運算執行個體中啟用 PMU,並在運算執行個體上執行效能監控軟體後,您就可以執行下列操作:

  • 變更在運算執行個體中啟用的 PMU 類型。如要追蹤不同類型的低階 CPU 事件,這項變更就非常實用。

  • 在運算執行個體中停用 PMU。如果您不再需要存取 PMU 中的效能計數器,這項操作就非常實用。

本文說明如何變更 Compute Engine 執行個體中已啟用的效能監控單元 (PMU) 類型,或停用 PMU。如要進一步瞭解 PMU,請參閱 PMU 總覽。

事前準備

  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

必要的角色

如要取得變更 Compute 執行個體中已啟用 PMU 類型或停用該類型的權限,請要求管理員授予您專案的「Compute 執行個體管理員 (v1) 」(roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備變更運算執行個體中已啟用 PMU 類型或停用 PMU 類型所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要變更或停用運算執行個體中啟用的 PMU 類型,必須具備下列權限:

  • 如要更新運算執行個體: 在運算執行個體上按 compute.instances.update

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

變更運算執行個體中的 PMU 類型

變更現有 A4X、C4A、C4 或 M4 執行個體的 PMU 類型前,請先使用 Google Cloud CLI 或 REST API 查看運算執行個體的詳細資料。在指令或 API 要求的輸出內容中,確認下列事項:

  1. 如要確認運算執行個體是否已啟用 PMU 類型,請檢查 performanceMonitoringUnit 欄位的值。如果缺少這個欄位,PMU 就會停用。

  2. 如要啟用強化型 PMU 類型,請檢查 machineType 欄位的值,確認運算執行個體使用下列其中一種機型:

    • 具備 144 或 288 個 vCPU 的 C4 機型

    • 下列其中一種 M4 機型:

      • m4-megamem-112

      • m4-megamem-224

      • m4-ultramem-56

      • m4-ultramem-112

      • m4-ultramem-224

    如果運算執行個體使用其他機型,您必須變更運算執行個體使用的機型,才能監控強化型 PMU 類型。

您不必停止運算執行個體,即可變更 PMU 類型。不過,如要讓變更生效,您必須按照本節所述重新啟動運算執行個體。

如要變更現有運算執行個體中啟用的 PMU 類型,請選取下列任一選項:

gcloud

  1. 建立空白 YAML 檔案。

  2. 如要將運算執行個體的屬性匯出至您剛才建立的 YAML 檔案,請使用 gcloud compute instances export 指令:

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

    更改下列內容:

    • INSTANCE_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 INSTANCE_NAME \
        --most-disruptive-allowed-action=RESTART \
        --source=YAML_FILE \
        --zone=ZONE
    

    更改下列內容:

    • INSTANCE_NAME:運算執行個體的名稱。

    • YAML_FILE:YAML 檔案的路徑,其中包含您在上一個步驟中修改的設定資料。

    • ZONE:運算執行個體所在的可用區。

REST

  1. 如要查看現有運算執行個體的屬性,請向 instances.get 方法發出 GET 要求:

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

    更改下列內容:

    • PROJECT_ID:運算執行個體所在的專案 ID。

    • ZONE:運算執行個體所在的可用區。

    • INSTANCE_NAME:現有運算執行個體的名稱。

  2. 如要更新並重新啟動運算執行個體,請向 instances.update 方法發出 PUT 要求,如下所示:

    • 在要求網址中,加入設為 RESTART 的 mostDisruptiveAllowedAction 查詢參數。

    • 在要求主體中,使用上一個步驟的 GET 要求輸出內容。不過,在 advancedMachineFeatures 欄位中,您必須將 performanceMonitoringUnit 欄位的值變更為所選的 PMU 類型。

    PUT 要求類似於下列要求:

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

    將 PMU_TYPE 替換為下列其中一個值:

    • 架構 PMU 類型:ARCHITECTURAL

    • 標準 PMU 類型:STANDARD

    • 加強型 PMU 類型:ENHANCED

如要進一步瞭解如何更新運算執行個體的屬性,請參閱「更新執行個體屬性」。

在運算執行個體中停用 PMU

您可以在運算執行個體中停用 PMU,不必停止運算執行個體。不過,如要讓變更生效,您必須按照本節所述重新啟動運算執行個體。

如要在現有運算執行個體中停用 PMU,請選取下列任一選項:

gcloud

  1. 建立空白 YAML 檔案。

  2. 如要將運算執行個體的屬性匯出至您剛才建立的 YAML 檔案,請使用 gcloud compute instances export 指令:

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

    更改下列內容:

    • INSTANCE_NAME:運算執行個體的名稱。

    • YAML_FILE:您在上一個步驟中建立的 YAML 檔案路徑。

    • ZONE:運算執行個體所在的可用區。

  3. 在 YAML 設定檔中,移除 performanceMonitoringUnit 欄位。如果 advancedMachineFeatures 欄位為空,請一併移除。

    advancedMachineFeatures:
      performanceMonitoringUnit: PMU_TYPE
    
  4. 如要更新並重新啟動運算執行個體,請使用 gcloud compute instances update-from-file 指令,並將 --most-disruptive-allowed-action 旗標設為 RESTART:

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

    更改下列內容:

    • INSTANCE_NAME:運算執行個體的名稱。

    • YAML_FILE:YAML 檔案的路徑,其中包含您在上一個步驟中修改的設定資料。

    • ZONE:運算執行個體所在的可用區。

REST

  1. 如要查看現有運算執行個體的屬性,請向 instances.get 方法發出 GET 要求:

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

    更改下列內容:

    • PROJECT_ID:運算執行個體所在的專案 ID。

    • ZONE:運算執行個體所在的可用區。

    • INSTANCE_NAME:現有運算執行個體的名稱。

  2. 如要更新並重新啟動運算執行個體,請對 instances.update 方法提出 PUT 要求。 請在要求中執行下列操作:

    • 在要求網址中,加入設為 RESTART 的 mostDisruptiveAllowedAction 查詢參數。

    • 在要求主體中,使用上一個步驟的 GET 要求輸出內容。不過,您必須移除 performanceMonitoringUnit 欄位,如果 advancedMachineFeatures 欄位中沒有其他欄位,也必須移除 advancedMachineFeatures 欄位。

    PUT 要求類似於下列要求:

    PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=RESTART
    
    {
      ~"advancedMachineFeatures": {
        ...
      }~,
      ...
    }
    

如要進一步瞭解如何更新運算執行個體的屬性,請參閱「更新執行個體屬性」。

後續步驟