Réduire la latence à l'aide de stratégies d'emplacement compact

Ce document explique comment réduire la latence réseau entre les VM d'une tâche en spécifiant une stratégie d'emplacement compact.

La présence d'hôtes de VM physiquement plus proches les uns des autres dans une zone peut réduire la latence du réseau entre les VM. Cet avantage en termes de performances peut être particulièrement utile pour les tâches à couplage fort, telles que les tâches qui communiquent à l'aide de bibliothèques MPI. Lorsque vous créez une tâche, vous pouvez éventuellement exiger que les VM d'une tâche soient plus proches les unes des autres en spécifiant une stratégie d'emplacement compact. Sinon, l'emplacement de VM par défaut répartit généralement les VM sur des hôtes distincts, afin de minimiser l'impact des coupures de courant.

Pour en savoir plus sur les stratégies d'emplacement compact, consultez la page À propos des stratégies d'emplacement dans la documentation Compute Engine.

Avant de commencer

Restrictions

Outre les restrictions générales relatives aux stratégies d'emplacement compact, Batch impose également les restrictions suivantes:

  • Lorsque vous spécifiez qu'une tâche doit utiliser une stratégie d'emplacement compact, Batch crée et supprime automatiquement une stratégie d'emplacement compact pour les VM de la tâche. Vous ne pouvez pas spécifier de stratégie d'emplacement compact existante pour une tâche.
  • Vous ne pouvez pas spécifier un nombre de VM pour la stratégie d'emplacement compact. La stratégie d'emplacement compact d'une tâche s'applique quel que soit le nombre de VM sur lesquelles celle-ci s'exécute.

Créer et exécuter un job qui utilise une stratégie d'emplacement

Vous pouvez indiquer à une tâche d'utiliser une stratégie d'emplacement compact en définissant le champ collocation sur COLLOCATED à l'aide de gcloud CLI ou de l'API Batch.

gcloud

  1. Créez un fichier JSON qui spécifie les détails de configuration de la tâche et définit le champ collocation sur COLLOCATED.

    Par exemple, pour créer une tâche de script de base spécifiant une stratégie d'emplacement compact, créez un fichier JSON avec le contenu suivant:

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "echo Hello world from task ${BATCH_TASK_INDEX}"
                }
              }
            ]
          },
          "taskCount": 3
        }
      ],
      "allocationPolicy": {
        "placement": {
          "collocation": "COLLOCATED"
        }
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  2. Pour créer et exécuter la tâche, utilisez la commande gcloud batch jobs submit suivante:

    gcloud batch jobs submit JOB_NAME \
      --location LOCATION \
      --config JSON_CONFIGURATION_FILE
    

    Remplacez les éléments suivants :

    • JOB_NAME: nom de la tâche.

    • LOCATION: le lieu de la tâche.

    • JSON_CONFIGURATION_FILE: chemin d'accès à un fichier JSON contenant les détails de configuration de la tâche.

API

Envoyez une requête POST à la méthode jobs.create qui définit le champ collocation sur COLLOCATED.

Par exemple, pour créer une tâche de script de base spécifiant une stratégie d'emplacement compact, exécutez la requête suivante:

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"
  }
}

Remplacez les éléments suivants :

  • PROJECT_ID: ID de projet de votre projet.

  • LOCATION: le lieu de la tâche.

  • JOB_NAME: nom de la tâche.

Étapes suivantes