En este documento, se explica cómo reducir la latencia de red entre las VMs de un trabajo especifica una política de posición compacta.
Tener hosts de VM que estén físicamente más cerca entre sí dentro de zone puede reducir la latencia de red entre las VMs. Este beneficio de rendimiento puede ser muy útil para trabajos con tareas con acoplamiento alto, como que se comunican con bibliotecas de la MPI. Cuando creas un trabajo, puedes especificar una política de posición compacta para requerir que las VMs de un trabajo se ubiquen más cerca unas de las otras de forma opcional. De lo contrario, la ubicación predeterminada de las VMs suele distribuirlas en hostings separados para ayudar a minimizar el impacto de las fallas de energía.
Para obtener más información sobre las políticas de ubicación compacta, consulta Acerca de las políticas de ubicación en la documentación de Compute Engine.
Antes de comenzar
- Si nunca usaste Batch, revisa Comienza a usar Batch y habilitar Batch completando el requisitos previos para los proyectos y usuarios.
-
A fin de obtener los permisos que necesitas para crear un trabajo, solicita a tu administrador que te otorgue el los siguientes roles de IAM:
-
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 otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
-
Editor de trabajos por lotes (
Restricciones
Además de las restricciones generales para las políticas de posición compacta, Batch también tiene las siguientes restricciones:
- Cuando especificas que un trabajo usa una política de posición compacta Batch crea y borra automáticamente un política de posición compacta para las VMs del trabajo. No puedes especificar política de posición compacta existente para un trabajo.
- No puedes especificar una cantidad de VMs para la política de posición de compactación. La política de posición compacta de un trabajo se aplica independientemente de la cantidad de VMs en las que se ejecuta.
Crea y ejecuta un trabajo que use una política de posición
Para especificar que una tarea use una política de posición de compactación, configura el
campo collocation
en COLLOCATED
con la CLI de gcloud o la API de Batch.
gcloud
Crea un archivo JSON que especifique los detalles de configuración de la tarea y establezca el campo
collocation
enCOLLOCATED
.Por ejemplo, para crear un trabajo de secuencia de comandos básico que especifique un de posició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
Reemplaza lo siguiente:
JOB_NAME
: Es el nombre del trabajo.LOCATION
: Es la ubicación. del trabajo.JSON_CONFIGURATION_FILE
: Es la ruta de acceso para un JSON. con los detalles de configuración del trabajo.
API
Realiza una solicitud POST
al
Método jobs.create
que establece el campo collocation
en COLLOCATED
.
Por ejemplo, para crear un trabajo de secuencia de comandos básico que especifique un política de posición compacta, realiza 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"
}
}
Reemplaza lo siguiente:
PROJECT_ID
: el ID del proyecto de tu proyecto.LOCATION
: Es la ubicación del trabajo.JOB_NAME
: Es el nombre del trabajo.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar una tarea, consulta Solución de problemas.
- Visualiza trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.