En este documento se explica cómo reducir la latencia de red entre las VMs de un trabajo especificando una política de emplazamiento compacta.
Si los hosts de las máquinas virtuales están más cerca entre sí en una zona, se puede reducir la latencia de la red entre las máquinas virtuales. Esta mejora del rendimiento puede ser especialmente útil para tareas con acoplamiento estrecho, como las tareas que se comunican mediante bibliotecas MPI. Cuando creas un trabajo, puedes especificar una política de emplazamiento compacta para que las VMs del trabajo estén más cerca entre sí. De lo contrario, la colocación predeterminada de las VMs suele distribuir las VMs en hosts independientes para minimizar el impacto de los fallos de alimentación.
Para obtener más información sobre las políticas de colocación compactas, consulta el artículo Acerca de las políticas de colocación de la documentación de Compute Engine.
Antes de empezar
- Si no has usado Batch antes, consulta el artículo Empezar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que de forma predeterminada es la cuenta de servicio predeterminada de Compute Engine
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
-
Editor de trabajos por lotes (
Restricciones
Además de las restricciones generales de las políticas de emplazamiento compacto, Batch también tiene las siguientes restricciones:
- Cuando especificas que una tarea use una política de emplazamiento compacta, Batch crea y elimina automáticamente una política de emplazamiento compacta para las VMs de la tarea. No puedes especificar una política de emplazamiento compacta para una tarea.
- No puedes especificar un número de máquinas virtuales para la política de colocación compacta. La política de emplazamiento compacta de un trabajo se aplica independientemente del número de VMs en las que se ejecute el trabajo.
Crear y ejecutar una tarea que use una política de emplazamiento
Puedes especificar que un trabajo use una política de colocación compacta configurando el campo collocation
en COLLOCATED
mediante la CLI de gcloud o la API Batch.
gcloud
Crea un archivo JSON que especifique los detalles de configuración del trabajo y defina el campo
collocation
comoCOLLOCATED
.Por ejemplo, para crear un trabajo de script básico que especifique una política de colocación compacta, crea un archivo JSON con el siguiente contenido:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}" } } ] }, "taskCount": 3 } ], "allocationPolicy": { "placement": { "collocation": "COLLOCATED" } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Para crear y ejecutar el trabajo, usa el comando
gcloud batch jobs submit
:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Haz los cambios siguientes:
JOB_NAME
: el nombre del puesto.LOCATION
: la ubicación del puesto.JSON_CONFIGURATION_FILE
: la ruta de un archivo JSON con los detalles de configuración del trabajo.
API
Haz una solicitud POST
al
método jobs.create
que asigne el valor COLLOCATED
al campo collocation
.
Por ejemplo, para crear un trabajo de script básico que especifique una política de colocación compacta, haz la siguiente solicitud:
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"
}
}
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de tu proyecto.LOCATION
: la ubicación del puesto.JOB_NAME
: el nombre del puesto.
Siguientes pasos
- Si tienes problemas para crear o ejecutar un trabajo, consulta la sección Solución de problemas.
- Ver trabajos y tareas.
- Consulta más información sobre las opciones de creación de trabajos.