本文档介绍了如何缩短作业的虚拟机之间的网络延迟时间,具体方法为: 指定紧凑布置政策。
在单个可用区内多个虚拟机主机之间 zone 虚拟机之间的网络延迟时间这种性能优势 具有紧密耦合的任务,例如 使用 MPI 库进行通信的任务。 创建作业时,您可以选择要求系统定位作业的虚拟机 来让它们彼此靠近。 否则,默认虚拟机位置通常会将虚拟机分布到 单独的主机,有助于最大限度地降低电源故障造成的影响。
如需详细了解紧凑布置政策,请参阅 布置政策简介 。
准备工作
- 如果您以前没有使用过 Batch,请参阅 Batch 使用入门 并通过填写 针对项目和用户的前提条件。
-
如需获取创建作业所需的权限, 请让管理员授予您 以下 IAM 角色:
-
Batch Job Editor (
roles/batch.jobsEditor
) 针对项目 -
Service Account User (
roles/iam.serviceAccountUser
) 服务账号用户 针对作业的服务账号,该账号默认为默认 Compute Engine 服务账号
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
-
Batch Job Editor (
限制
除了紧凑布置政策的一般限制之外,批处理还具有以下限制:
- 为作业指定使用紧凑布置政策时, Batch 会自动创建和删除 紧凑布置政策。您无法为作业指定现有的紧凑布置政策。
- 您无法为紧凑布置政策指定虚拟机数量。 无论有多少项作业,作业的紧凑布置政策都适用 运行作业的虚拟机。
创建和运行使用布置政策的作业
您可以为作业指定使用紧凑布置政策,方法是将
collocation
字段
COLLOCATED
(通过 gcloud CLI 或 Batch API 执行此操作)。
gcloud
创建一个 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" } }
如需创建和运行作业,请使用
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"
}
}
替换以下内容: