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

本文档介绍了如何缩短作业的虚拟机之间的网络延迟时间,具体方法为: 指定紧凑布置政策。

在单个可用区内多个虚拟机主机之间 zone 虚拟机之间的网络延迟时间这种性能优势 具有紧密耦合的任务,例如 使用 MPI 库进行通信的任务。 创建作业时,您可以选择要求系统定位作业的虚拟机 来让它们彼此靠近。 否则,默认虚拟机位置通常会将虚拟机分布到 单独的主机,有助于最大限度地降低电源故障造成的影响。

如需详细了解紧凑布置政策,请参阅 布置政策简介

准备工作

  1. 如果您以前没有使用过 Batch,请参阅 Batch 使用入门 并通过填写 针对项目和用户的前提条件
  2. 如需获取创建作业所需的权限, 请让管理员授予您 以下 IAM 角色:

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

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

限制

除了紧凑布置政策的一般限制之外,批处理还具有以下限制:

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

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

您可以为作业指定使用紧凑布置政策,方法是将 collocation 字段 COLLOCATED(通过 gcloud CLI 或 Batch API 执行此操作)。

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

请发送 POST 请求至 jobs.create 方法 用于将 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:作业的名称。

后续步骤