管理 Compute Engine 執行個體中的 PMU

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

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

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

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

事前準備

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

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

    gcloud

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

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    2. Set a default region and zone.

    REST

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

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

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

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

必要的角色

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

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

所需權限

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

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

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

變更 Compute 執行個體中的 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 要求,如下所示:

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

    • 在要求主體中,使用上一個步驟的 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 要求。請在要求中執行下列操作:

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

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

    PUT 要求類似於下列內容:

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

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

後續步驟