查看運算執行個體的拓撲

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

建立 A5X、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 執行個體管理員 (v1) (roles/compute.instanceAdmin.v1) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

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

所需權限

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

  • 如要查看運算執行個體的詳細資料,請在專案中執行 compute.instances.get
  • 如要查看運算執行個體清單,請在專案中執行 compute.instances.list

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

瞭解運算執行個體拓撲

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

  • cluster:叢集的全域名稱。

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

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

  • host:執行個體所在主機的組織專屬 ID。

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

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

查看運算執行個體拓撲

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

控制台

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

    前往 VM 執行個體

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

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

gcloud

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

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. 使用 curl 工具,從 Linux 執行個體建立查詢。如要在 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"
      }
      

後續步驟