Reducir la latencia usando políticas de emplazamiento compactas

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

  1. 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.
  2. 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:

    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.

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

  1. Crea un archivo JSON que especifique los detalles de configuración del trabajo y defina el campo collocation como COLLOCATED.

    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"
      }
    }
    
  2. 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:

Siguientes pasos