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

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

Avoir des hôtes de VM qui sont physiquement plus proches les uns des autres au sein d'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 emplois aux tâches fortement couplées, telles que tâches qui communiquent à l'aide de bibliothèques MPI. Lorsque vous créez un job, vous pouvez éventuellement exiger que les VM d'un job soient situées les uns des autres en spécifiant une stratégie d'emplacement compact. Sinon, l'emplacement par défaut des VM répartit généralement les VM des hôtes distincts pour minimiser l'impact des coupures de courant.

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

Avant de commencer

  1. Si vous n'avez jamais utilisé Batch auparavant, consultez Premiers pas avec Batch et activez Batch en suivant la les conditions préalables pour les projets et les utilisateurs.
  2. Pour obtenir les autorisations nécessaires à la création d'un job, demandez à votre administrateur de vous accorder le rôles IAM suivants:

    Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

    Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Restrictions

En plus des restrictions générales concernant les stratégies d'emplacement compact, le traitement par lot est également soumis aux restrictions suivantes :

  • Lorsque vous spécifiez qu'un job utilise une stratégie d'emplacement compact, Batch crée et supprime automatiquement une stratégie d'emplacement compact pour les VM du job. Vous ne pouvez pas spécifier 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 pour une tâche s'applique quel que soit le nombre les VM sur lesquelles le job s'exécute.

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

Vous pouvez spécifier qu'une tâche utilise une stratégie d'emplacement compact en définissant la Champ collocation à COLLOCATED à l'aide de gcloud CLI ou de l'API Batch.

gcloud

  1. Créer un fichier JSON qui spécifie les détails et les ensembles de configuration du job le champ collocation sur COLLOCATED.

    Par exemple, pour créer une tâche de script de base qui spécifie 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 le job, utilisez la Commande gcloud batch jobs submit:

    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: emplacement du travail.

    • 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 à Méthode jobs.create qui définit le champ collocation sur COLLOCATED.

Par exemple, pour créer une tâche de script de base qui spécifie 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 :

Étape suivante