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

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

让虚拟机主机在地区内物理上彼此更靠近可以减少虚拟机之间的网络延迟时间。这种性能优势对于具有紧密耦合任务的作业特别有用,例如使用 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

向将 collocation 字段设置为 COLLOCATEDjobs.create 方法发出 POST 请求。

例如,如需创建指定紧凑布置政策的基本脚本作业,请发出以下请求:

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:作业的名称。

后续步骤