使用密集配置政策來減少延遲時間

本文說明如何指定密集配置政策,減少工作 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:作業名稱。

後續步驟