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

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

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

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

准备工作

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

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

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

限制

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

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

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

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

后续步骤