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