查看運算執行個體的拓撲

本文說明如何查看可用區中 Compute Engine 執行個體的實體位置,也就是拓撲。如要在 Cluster Director 中查看叢集的拓撲,請參閱「查看叢集拓撲」。

建立 A4X Max、A4X、A4、A3 Ultra、A3 Mega 和 A3 High (8 個 GPU) 執行個體,或指定密集配置政策或工作負載政策的運算執行個體後,即可查看運算執行個體彼此之間的實體位置。瞭解運算執行個體之間的距離後,您就可以調整應用程式或工作負載設計,在彼此距離最近的運算執行個體上執行延遲時間敏感型工作。如果是其他類型的運算執行個體,您可以在公開主機 ID 後,查看執行個體所用的主機 ID。

事前準備

  • 請查看運算執行個體拓撲的術語。
  • 選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。

    gcloud

    安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

    gcloud init

    REST

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

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

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

必要的角色

如要取得查看 Compute 執行個體拓撲所需的權限,請要求管理員授予您專案的Compute 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備查看運算執行個體拓撲所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

如要查看運算執行個體拓撲,必須具備下列權限:

  • 如要查看運算執行個體的詳細資料: compute.instances.get 專案
  • 如要查看運算執行個體清單,請按照下列步驟操作: compute.instances.list 專案

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

瞭解運算執行個體拓撲

如要瞭解叢集中運算執行個體的實體位置,請在 Google Cloud 控制台中查看「實體主機」欄位。如果您使用 gcloud CLI、Compute Engine API 或中繼資料金鑰查詢,請檢查 physicalHostTopology 欄位。這些欄位包含下列子欄位:

  • cluster:叢集的全域名稱。

  • block:執行個體所在的預留區塊專屬 ID。

  • sub-block:執行個體所在的子區塊專屬 ID。

  • host:執行個體執行的主機專屬 ID。

如要瞭解執行個體鄰近程度,請比較運算執行個體之間的「實體主機」或 physicalHostTopology 欄位值。運算執行個體共用的子欄位越多,彼此就越接近。

您也可以查看建立運算執行個體的預留空間拓撲。預留項目和執行個體的 physicalHostTopology 欄位會顯示相同的 block 和 cluster 欄位。舉例來說,查看特定預留區塊時,您可以查看部署在該區塊中的所有運算執行個體名稱和子區塊。如要進一步瞭解預留項目的拓撲,請參閱「查看預留項目的拓撲」。

查看運算執行個體拓撲

如要一次查看多個執行中運算執行個體的實際位置,請使用 REST API。否則,請選取下列任一選項:

控制台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 在「名稱」欄中,按一下要查看詳細資料的運算執行個體名稱。系統會顯示 Compute 執行個體詳細資料頁面,並選取「Details」(詳細資料) 分頁。

  3. 在「Basic information」(基本資訊) 區段中,查看「Physical host」(實體主機) 欄位的值。

gcloud

如要查看執行中運算執行個體的實體位置,請搭配 --flatten=resourceStatus.physicalHostTopology 旗標使用 gcloud compute instances describe 指令:

gcloud compute instances describe INSTANCE_NAME \
    --flatten=resourceStatus.physicalHostTopology \
    --zone=ZONE

更改下列內容:

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

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

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

  • 如果可以查看運算執行個體的叢集、區塊、子區塊和主機 ID,輸出內容會類似於下列內容:

    ---
    cluster: europe-west1-cluster-jfhb
    block: 3e3056e23cf91a5cb4a8621b6a52c100
    subBlock: 0fc09525cbd5abd734342893ca1c083f
    host: 1215168a4ecdfb434fd4d28056589059
    
  • 如果只能在公開主機後查看主機 ID,輸出內容會類似於下列內容:

    ---
    cluster: null
    block: null
    subBlock: null
    host: 1215168a4ecdfb434fd4d28056589059
    

REST

如要查看執行中運算執行個體的實際位置,請發出下列其中一個 GET 要求。提出要求時,您必須加入 fields 查詢參數,並指定只顯示運算執行個體的 name、machineType 和 physicalHostTopology 欄位。您也必須加入 filter 查詢參數,並指定只列出正在執行的運算執行個體。

  • 如要查看所有區域的執行個體清單,請使用 instances.aggregatedList 方法:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
    
  • 如要查看特定區域的執行個體清單,請使用 instances.list 方法:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances?fields=items.name,items.machineType,items.resourceStatus.physicalHostTopology&filter=status=RUNNING
    

更改下列內容:

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

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

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

  • 如果可以查看運算執行個體的叢集、區塊、子區塊和主機 ID,輸出內容會類似於下列內容:

    {
      "items": [
        {
          "name": "vm-01",
          "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
          "resourceStatus": {
            "physicalHostTopology": {
              "cluster": "europe-west1-cluster-jfhb",
              "block": "3e3056e23cf91a5cb4a8621b6a52c100",
              "subBlock": "0fc09525cbd5abd734342893ca1c083f",
              "host": "1215168a4ecdfb434fd4d28056589059"
            }
          }
        },
        {
          "name": "vm-02",
          "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
          "resourceStatus": {
            "physicalHostTopology": {
              "cluster": "europe-west1-cluster-jfhb",
              "block": "3e3056e23cf91a5cb4a8621b6a52c100",
              "subBlock": "1fc18636cbd4abd623553784ca2c174e",
              "host": "2326279b5ecdfc545fd5e39167698168"
            }
          }
        },
        ...
      ]
    }
    
  • 如果您只能在公開主機後查看主機的運算執行個體 ID,輸出內容會類似下列內容:

    {
      "items": [
        {
          "name": "vm-01",
          "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
          "resourceStatus": {
            "physicalHostTopology": {
              "cluster": null,
              "block": null,
              "subBlock": null,
              "host": "1215168a4ecdfb434fd4d28056589059"
            }
          }
        },
        {
          "name": "vm-02",
          "machineType": "https://www.googleapis.com/compute/v1/projects/example-project/zones/europe-west1-b/machineTypes/a3-ultragpu-8g",
          "resourceStatus": {
            "physicalHostTopology": {
              "cluster": null,
              "block": null,
              "subBlock": null,
              "host": "2326279b5ecdfc545fd5e39167698168"
            }
          }
        },
        ...
      ]
    }
    

如要縮小運算執行個體清單範圍,請編輯 filter 查詢參數中的篩選運算式。

使用中繼資料鍵查詢查看運算執行個體拓撲

如要透過查詢 physical_host_topology 中繼資料鍵,查看執行中運算執行個體的實際位置,請選取下列其中一個選項:

Linux 執行個體

  1. 連線至 Linux 運算執行個體。

  2. 在 Linux 執行個體中,使用 curl 工具建立查詢。如要在 Linux 執行個體上查詢 physical_host_topology 中繼資料金鑰,請執行下列指令:

    user@myinst:~$ curl -s -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology
    

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

    • 如果可以查看運算執行個體的叢集、區塊、子區塊和主機 ID,輸出內容會類似下列內容:

      {
        "cluster": "europe-west1-cluster-jfhb",
        "block": "3e3056e23cf91a5cb4a8621b6a52c100",
        "subBlock": "0fc09525cbd5abd734342893ca1c083f",
        "host": "1215168a4ecdfb434fd4d28056589059"
      }
      
    • 如果只能在公開主機後查看主機 ID,輸出內容會類似下列範例:

      {
        "cluster": null,
        "block": null,
        "subBlock": null,
        "host": "1215168a4ecdfb434fd4d28056589059"
      }
      

Windows 執行個體

  1. 連線至 Windows Compute 執行個體。

  2. 在 Windows 執行個體中,使用 Invoke-RestMethod 指令建立查詢。如要在 Windows 執行個體上查詢 physical_host_topology 中繼資料鍵,請執行下列指令:

    PS C:\> 
    $value = (Invoke-RestMethod `
            -Headers @{'Metadata-Flavor' = 'Google'} `
            -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/physical_host_topology")
    $value
    

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

    • 如果可以查看運算執行個體的叢集、區塊、子區塊和主機 ID,輸出內容會類似下列內容:

      {
        "cluster": "europe-west1-cluster-jfhb",
        "block": "3e3056e23cf91a5cb4a8621b6a52c100",
        "subBlock": "0fc09525cbd5abd734342893ca1c083f",
        "host": "1215168a4ecdfb434fd4d28056589059"
      }
      
    • 如果只能在公開主機後查看主機 ID,輸出內容會類似下列範例:

      {
        "cluster": null,
        "block": null,
        "subBlock": null,
        "host": "1215168a4ecdfb434fd4d28056589059"
      }
      

後續步驟