使用密集配置政策來縮短延遲時間

本文說明如何指定密集配置政策,減少工作 VM 之間的網路延遲。

區域內,VM 主機之間的實體距離越近,VM 之間的網路延遲時間就越短。這項效能優勢特別適合用於工作緊密結合的作業,例如使用 MPI 程式庫通訊的作業。建立作業時,您可以選擇指定密集配置政策,要求作業的 VM 彼此靠近。否則,預設 VM 放置位置通常會將 VM 分散到不同主機,以盡量減少電源故障的影響。

如要進一步瞭解密集配置政策,請參閱 Compute Engine 說明文件中的「關於配置政策」一文。

事前準備

  1. 如果您從未使用過 Batch,請參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
  2. 如要取得建立作業所需的權限,請要求管理員授予您下列 IAM 角色:

    如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

    您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

限制

除了緊湊型刊登位置政策的一般限制,Batch 還有下列限制:

  • 指定工作使用密集配置政策時,Batch 會自動為工作的 VM 建立及刪除密集配置政策。您無法為工作指定現有的密集配置政策。
  • 您無法為密集配置政策指定 VM 數量。無論工作在多少個 VM 上執行,都會套用密集配置政策。

建立及執行使用配置政策的工作

如要指定工作使用緊湊放置政策,請使用 gcloud CLI 或 Batch API,將 collocation 欄位設為 COLLOCATED

gcloud

  1. 建立 JSON 檔案,指定工作的設定詳細資料,並將 collocation 欄位設為 COLLOCATED

    舉例來說,如要建立指定緊湊放置政策的基本指令碼工作,請建立含有下列內容的 JSON 檔案:

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world from task ${BATCH_TASK_INDEX}"
                }
              }
            ]
          },
          "taskCount": 3
        }
      ],
      "allocationPolicy": {
        "placement": {
          "collocation": "COLLOCATED"
        }
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  2. 如要建立及執行作業,請使用 gcloud batch jobs submit 指令

    gcloud batch jobs submit JOB_NAME \
      --location LOCATION \
      --config JSON_CONFIGURATION_FILE
    

    更改下列內容:

    • JOB_NAME:工作名稱。

    • LOCATION:工作地點

    • JSON_CONFIGURATION_FILE:JSON 檔案的路徑,內含作業的設定詳細資料。

API

jobs.create 方法發出 POST 要求,將 collocation 欄位設為 COLLOCATED

舉例來說,如要建立指定緊湊放置政策的基本指令碼工作,請提出下列要求:

POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello world from task ${BATCH_TASK_INDEX}"
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "allocationPolicy": {
    "placement": {
      "collocation": "COLLOCATED"
    }
  },
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

更改下列內容:

  • PROJECT_ID:專案的專案 ID

  • LOCATION:工作地點

  • JOB_NAME:工作名稱。

後續步驟