En este documento, se explica cómo reducir la latencia de red entre las VM de un trabajo mediante la especificación de una política de posición compacta.
Tener hosts de VM que estén físicamente más cerca entre sí dentro de una zona puede reducir la latencia de red entre las VM. Este beneficio de rendimiento puede ser especialmente útil para trabajos con tareas estrechamente vinculadas, como las tareas que se comunican mediante bibliotecas de la MPI. Cuando creas un trabajo, puedes solicitar que las VMs de un trabajo se ubiquen más cerca unas de las otras si especificas una política de posición compacta. De lo contrario, la ubicación predeterminada de la VM suele distribuirla en hosts separados para ayudar a minimizar el impacto de los cortes de energía.
Para obtener más información sobre las políticas de posición compacta, consulta Acerca de las políticas de posición en la documentación de Compute Engine.
Antes de comenzar
- Si no usaste Batch antes, revisa Comienza a usar Batch y habilita Batch. Para ello, completa los requisitos previos para proyectos y usuarios.
-
Si deseas obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue 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
Si quieres obtener más información para otorgar roles, consulta Administra el acceso.
Es posible que también puedas obtener los permisos necesarios a través de funciones personalizadas o, también, otras funciones predefinidas.
-
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 de forma automática una política de posición compacta para las VM del trabajo. No puedes especificar una política de posición compacta existente para un trabajo.
- No puedes especificar una cantidad de VMs para la política de posición compacta. La política de posición de compactación para un trabajo se aplica sin importar en cuántas VM se ejecute el trabajo.
Crea y ejecuta un trabajo que use una política de posición
Puedes especificar que un trabajo use una política de posición compacta si configuras el campo collocation
como COLLOCATED
con gcloud CLI o la API de Batch.
gcloud
Crea un archivo JSON que especifique los detalles de configuración del trabajo y establezca el campo
collocation
enCOLLOCATED
.Por ejemplo, para crear un trabajo de secuencia de comandos básico que especifique una política 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 de un archivo JSON con los detalles de configuración del trabajo.
API
Realiza una solicitud POST
al método jobs.create
que establezca el campo collocation
en COLLOCATED
.
Por ejemplo, para crear un trabajo de secuencia de comandos básico que especifique una 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
: Es el ID del proyecto.LOCATION
: Es la ubicación del trabajo.JOB_NAME
: Es el nombre del trabajo.
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Visualiza trabajos y tareas.
- Obtén más información sobre las opciones de creación de trabajos.