使用 PMU 分析 CPU 效能


本頁面說明如何使用效能監控單元 (PMU) 事件,分析 Google Kubernetes Engine (GKE) 叢集節點的 CPU 效能。

本頁內容適用於叢集管理員,他們有對效能要求嚴苛的工作負載,且想在開發、偵錯、基準化及持續監控期間,檢查 GKE 節點上工作負載的 CPU 執行情況。

事前準備

開始之前,請確認你已完成下列工作:

  • 啟用 Google Kubernetes Engine API。
  • 啟用 Google Kubernetes Engine API
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update,取得最新版本。

需求條件和限制

啟用 PMU 事件時,請注意下列規定和限制:

  • 叢集必須處於標準模式。
  • 如果叢集已啟用節點自動佈建功能,透過自動佈建建立的任何節點集區都無法啟用 PMU 事件。如果您在啟用 PMU 事件後啟用節點自動佈建功能,現有節點集區不會受到影響。
  • 叢集節點集區必須執行 C4 或 C4A機型

建立 GKE 叢集

建立叢集,並為預設節點集區啟用 PMU 事件:

gcloud container clusters create CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --performance-monitoring-unit=PMU_LEVEL \
    --machine-type=MACHINE_TYPE

更改下列內容:

  • CLUSTER_NAME:新叢集的名稱。
  • COMPUTE_LOCATION:新叢集的 Compute Engine 位置
  • PMU_LEVEL:要收集的 PMU 事件類型。詳情請參閱 Compute Engine 說明文件中的「PMU 的運作方式」。支援的值如下:
    • architectural:啟用與非最後一層快取 (LLC) 事件相關的架構 PMU 事件。
    • standard:包含架構事件,並啟用核心 PMU 事件,包括 L2 快取事件。
    • enhanced:包含標準事件,並啟用 CPU 核心和 LLC PMU 事件以外的任何本機事件。只有具備特定數量 vCPU 的 VM 才能使用這項功能。詳情請參閱 Compute Engine 說明文件中的限制
  • MACHINE_TYPE:節點的 Compute Engine 機器類型。如需支援的機器類型清單,請參閱 Compute Engine 說明文件中的限制

您也可以使用 gcloud container node-pools create 指令,為現有叢集建立新的節點集區。

連線至叢集

設定 kubectl 與叢集通訊:

gcloud container clusters get-credentials CLUSTER_NAME \
    --location=COMPUTE_LOCATION

確認 PMU 已啟用

檢查核心訊息,確認叢集節點已啟用 PMU。

  1. 取得叢集中的節點清單:

    kubectl get nodes
    

    輸出結果會與下列內容相似:

    NAME                                  STATUS   ROLES    AGE     VERSION
    gke-c1-default-pool-44be3e13-prr1     Ready    <none>   5d23h   v1.27.13-gke.1070000
    gke-c1-default-pool-7abc4a17-9dlg     Ready    <none>   2d21h   v1.27.13-gke.1070000
    gke-c1-default-pool-ed969ef6-4gzp     Ready    <none>   5d      v1.27.13-gke.1070000
    

    記下其中一個節點的名稱。

  2. 取得節點的 Compute Engine 位置:

    gcloud compute instances list --filter=NODE_NAME
    

    NODE_NAME 替換為上一步中的節點名稱。

    輸出結果會與下列內容相似:

    NAME                               ZONE           MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    gke-c1-default-pool-44be3e13-prr1  us-central1-c  c4-standard-4     true         10.128.0.67  34.170.44.164  RUNNING
    

    記下 Compute Engine ZONE 的名稱。在本例中為 us-central1-c

  3. 使用 SSH 連線至叢集節點:

    gcloud compute ssh NODE_NAME \
        --zone=COMPUTE_ZONE
    

    COMPUTE_ZONE 替換為上一步中的 Compute Engine 可用區名稱。

  4. 檢查核心訊息:

    sudo dmesg |grep -A10 -i "Performance"
    

    輸出結果會與下列內容相似:

    [    0.307634] Performance Events: generic architected perfmon, full-
    width counters, Intel PMU driver.
    # Several lines omitted
    

    這項輸出內容表示 PMU 驅動程式已初始化。

後續步驟