使用 IRDMA Cloud RDMA 驅動程式

Cloud RDMA 使用 IRDMA RDMA 驅動程式,提供低延遲的可靠訊息傳遞功能。這個驅動程式支援 Compute Engine 執行個體之間的遠端直接記憶體存取 (RDMA)。RDMA 會透過網路介面,在遠端機器和本機記憶體之間傳輸資料,不使用主機 CPU 或中繼主機緩衝區。

支援 Cloud RDMA 的執行個體至少需要兩個虛擬網路介面 (vNIC):

  • Cloud RDMA 通訊的 vNIC,使用 IDPF 網路和 IRDMA RDMA 驅動程式。這個 vNIC 無法連上網際網路。執行個體只能有一個使用 Cloud RDMA 的 vNIC。
  • 用於一般網路流量的 vNIC。這個虛擬 NIC 已完全連線至「Google Cloud 」網路,可以連上網際網路。這個 vNIC 使用 gVNIC 網路驅動程式。最多可新增八個 gVNIC 網路介面,每個執行個體總共可有 10 個 vNIC。

H4D 執行個體支援 IRDMA 驅動程式。

設定使用 IRDMA 驅動程式的 vNIC 時,必須指定使用 Falcon RDMA 網路設定檔建立的虛擬私有雲網路。

事前準備

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

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

    控制台

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

    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 進行驗證」。

作業系統支援

Google 建議使用HPC VM 映像檔,其中已預先安裝 Cloud RDMA 驅動程式。

在為 Google Cloud提供的公開 OS 映像檔中,IRDMA RDMA 驅動程式支援下列項目:

  • Container-Optimized OS 117 LTS 或更新版本
  • Rocky Linux 8 專為 Google Cloud 和 Google Cloud以上版本最佳化

搭配 Compute Engine 執行個體使用 Cloud RDMA 的總覽

如要建立使用 Cloud RDMA 的運算執行個體,您必須至少有一個一般虛擬私有雲網路和一個 Falcon 虛擬私有雲網路。Falcon VPC 網路會使用 Falcon RDMA 網路設定檔,在 H4D 執行個體之間啟用 Cloud RDMA 流量。這個網路與一般虛擬私有雲網路不同,一般虛擬私有雲網路會將非 RDMA 流量傳輸至其他Google Cloud 服務或網際網路。

如要建立使用 Cloud RDMA 的運算執行個體,請完成下列工作:

  1. 選擇支援 Cloud RDMA 的公開 OS 映像檔,或建立標記為使用 IRDMA 的自訂 OS 映像檔。
  2. 找出或建立至少兩個虛擬私有雲網路:

    • 用於透過 gVNIC 網路介面傳輸流量的一般虛擬私有雲網路
    • Cloud RDMA 流量的 Falcon 虛擬私有雲網路
  3. 使用公開或自訂 OS 映像檔建立運算執行個體。建立執行個體時,請至少設定兩個網路介面:一個使用 gVNIC 網路驅動程式,另一個使用 IRDMA RDMA 驅動程式。

  4. 確認已啟用 Cloud RDMA。

建立支援 Cloud RDMA 的自訂 OS 映像檔

您可以使用 Google Cloud CLI 或 REST 建立 OS 映像檔。如需建立自訂 OS 映像檔的詳細資訊和最佳做法,請參閱「建立自訂 OS 映像檔」。

gcloud

  1. 選取支援 IRDMA 驅動程式和介面的 OS 映像檔或映像檔系列。詳情請參閱「作業系統詳細資料」,然後選取「介面」分頁標籤。

  2. 使用上一個步驟中選取的 OS 映像檔或映像檔系列,建立自訂 OS 映像檔。如要建立自訂 OS 映像檔,請使用 gcloud compute images create 指令。舉例來說,下列指令會建立自訂 OS 映像檔,支援 IRDMA 驅動程式,並以特定 OS 映像檔為基礎。

    gcloud compute images create IMAGE_NAME \
        --source-image=SOURCE_IMAGE \
        --source-image-project=SOURCE_IMAGE_PROJECT
    

    更改下列內容:

    • IMAGE_NAME:要建立的映像檔名稱
    • SOURCE_IMAGE:支援 IRDMA 驅動程式的特定 OS 映像檔,例如:hpc-rocky-linux-8-v20250721

      如要使用映像檔系列中的最新 OS 映像檔,請將 --source-image 旗標替換為 --source-image-family 旗標,並將其值設為支援 IRDMA 驅動程式的映像檔系列。例如:--source-image-family=hpc-rocky-linux-8。

    • SOURCE_IMAGE_PROJECT:包含來源 OS 映像檔或映像檔系列的專案名稱

    如要進一步瞭解何時該使用映像檔系列,請參閱「映像檔系列最佳做法」。

REST

  1. 選取支援 IRDMA 網路介面的 OS 映像檔或映像檔系列。詳情請參閱「作業系統詳細資料」。

  2. 使用上一個步驟中選取的作業系統映像檔或映像檔系列,透過 images.insert 方法建立作業系統映像檔。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
    {
      "name":"IMAGE_NAME",
      "sourceImage":"SOURCE_IMAGE_URI"
    }
    

    更改下列內容:

    • PROJECT_ID:要建立新映像檔的專案 ID
    • IMAGE_NAME:自訂圖片的名稱
    • SOURCE_IMAGE_URI:您要使用的特定 OS 映像檔或映像檔系列的 URI

      例如:

      • 特定 OS 映像檔:"sourceImage": "projects/rocky-linux-cloud/global/images/hpc-rocky-linux-8-v20250721"
      • 映像檔系列:"sourceImage": "projects/rocky-linux-cloud/global/images/family/hpc-rocky-linux-8"

      指定映像檔系列後,Compute Engine 會從該系列中未淘汰的最新 OS 映像檔建立 VM。如要進一步瞭解何時該使用映像檔系列,請參閱「映像檔系列最佳做法」。

建立支援 IRDMA 驅動程式的 VM

您可以使用支援的公開 OS 映像檔建立 VM,也可以按照「建立支援 IRDMA 的自訂 OS 映像檔」中的步驟,使用您建立的自訂 OS 映像檔。

如要搭配執行個體使用 Cloud RDMA,您必須為執行個體設定多個網路介面 (NIC)。一個 NIC 必須使用 GVNIC 驅動程式 (指定 nic-type=GVNIC),另一個 NIC 則必須使用 IRDMA 驅動程式 (指定 nic-type=IRDMA)。

使用公開 OS 映像檔建立 VM

如要使用 HPC VM 映像檔或支援 Cloud RDMA 的公開 OS 映像檔建立 VM,請按照下列頁面的操作說明操作:

使用自訂 OS 映像檔建立 VM

如果您建立支援 Cloud RDMA 的自訂 OS 映像檔,可以使用該自訂 OS 映像檔,透過 Google Cloud 控制台、Google Cloud CLI 或 REST 建立 VM。

如要瞭解如何使用自訂映像檔建立執行個體,請參閱「從自訂映像檔建立執行個體」。

確認已啟用 Cloud RDMA

部署 VM 後,請執行下列效能頻寬測試,確保您是在啟用 Cloud RDMA 的正常 VM 執行個體上執行。

ib_send_bw -aF & # start the server
ib_send_bw -aF $(hostname) # start the client (can be done on the same machine)

對於大於 4096 B 的資料列,回報的單一連線頻寬 BW average [MB/s] 應至少達到 11,000 MBps。訊息越小,預期值就越小。

後續步驟