使用紧凑布置政策缩短延迟时间

本文档介绍如何通过指定紧凑布置政策来减少作业虚拟机之间的网络延迟时间。

可用区内使虚拟机主机彼此靠近,可以缩短虚拟机之间的网络延迟时间。这种性能优势对于具有紧密耦合任务的作业(例如使用 MPI 库进行通信的任务)特别有用。创建作业时,您可以通过指定紧凑布置政策,选择要求作业的虚拟机彼此靠近。否则,默认虚拟机放置位置通常会在多个单独的主机上分布虚拟机,以帮助最大限度地减少电源故障的影响。

如需详细了解紧凑布置政策,请参阅 Compute Engine 文档中的关于放置政策

准备工作

限制

除了针对紧凑布置政策的一般限制之外,Batch 还存在以下限制:

  • 当您指定作业使用紧凑布置政策时,Batch 会自动为作业的虚拟机创建和删除紧凑布置政策。您无法为作业指定现有的紧凑布置政策。
  • 您无法为紧凑布置政策指定虚拟机数量。无论作业在多少个虚拟机上运行,作业的紧凑布置政策都适用。

创建并运行使用布置政策的作业

您可以使用 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:作业的名称。

后续步骤