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

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

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

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

准备工作

  1. 如果您之前未使用过 Batch,请查看开始使用 Batch 并完成项目和用户的前提条件,以启用 Batch。
  2. 如需获得创建作业所需的权限,请让您的管理员为您授予以下 IAM 角色:

    如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

    您也可以通过自定义角色或其他预定义角色来获取所需的权限。

限制

除了紧凑布置政策的一般限制之外,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:作业的名称。

后续步骤