本文說明如何指定密集配置政策,減少工作 VM 之間的網路延遲。
在可用區內,讓 VM 主機彼此之間的實體距離更近,可減少 VM 之間的網路延遲。這項效能優勢特別適合用於工作緊密結合的作業,例如使用 MPI 程式庫通訊的作業。建立作業時,您可以選擇指定密集配置政策,要求作業的 VM 彼此靠近。否則,預設 VM 放置位置通常會將 VM 分散到不同主機,以盡量減少電源故障的影響。
如要進一步瞭解密集配置政策,請參閱 Compute Engine 說明文件中的「關於配置政策」一文。
事前準備
- 如果您從未使用過 Batch,請參閱「開始使用 Batch」,並完成專案和使用者的必要條件,啟用 Batch。
- 
  
  
  
  
  
  
  
    
    
    
    
    
    
      
      
        
        
        
        
        
      
    
      
      
        
        
        
        
        
      
    
    
    
    
    
  
  如要取得建立作業所需的權限,請要求管理員授予下列 IAM 角色: - 
  
  
    
      批次工作編輯者  (roles/batch.jobsEditor) 專案
- 
  
  
    
      服務帳戶使用者  (roles/iam.serviceAccountUser) 在作業的服務帳戶上,預設為預設 Compute Engine 服務帳戶
 如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。 
- 
  
  
    
      批次工作編輯者  (
限制
除了緊湊型刊登位置政策的一般限制,Batch 還有下列限制:
- 如果您指定工作使用密集配置政策,Batch 會自動為工作 VM 建立及刪除密集配置政策。您無法為工作指定現有的密集配置政策。
- 您無法為密集配置政策指定 VM 數量。無論工作在多少部 VM 上執行,都會套用工作的密集配置政策。
建立及執行使用配置政策的工作
如要指定作業使用緊湊型放置政策,請使用 gcloud CLI 或 Batch API,將 collocation 欄位設為 COLLOCATED。
gcloud
- 建立 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" } }
- 如要建立及執行作業,請使用 - 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"
  }
}
更改下列內容: