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.
Le fait de disposer d'hôtes de VM plus proches les uns des autres dans une zone peut réduire la latence réseau entre les VM. Cet avantage en termes de performances peut être particulièrement utile pour les tâches avec des tâches fortement couplées, 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 ses VM soient plus proches les unes 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 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 section À propos des stratégies d'emplacement dans la documentation Compute Engine.
Avant de commencer
- Si vous n'avez jamais utilisé Batch auparavant, consultez la page Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires à la création d'une tâche, demandez à votre administrateur de vous attribuer les rôles IAM suivants:
-
Éditeur de jobs par lot (
roles/batch.jobsEditor
) sur le projet -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service du job, qui est par défaut le compte de service Compute Engine par défaut
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Éditeur de jobs par lot (
Restrictions
Outre les restrictions générales pour les stratégies d'emplacement compact, Batch présente également les restrictions suivantes:
- Lorsque vous spécifiez qu'une tâche utilise 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 une 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 de VM sur lesquelles la tâche 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 le champ collocation
sur COLLOCATED
à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Créez un fichier JSON qui spécifie les détails de configuration de la tâche et définit le champ
collocation
surCOLLOCATED
.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" } }
Pour créer et exécuter la tâche, 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 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 qui spécifie 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 votre projet.LOCATION
: emplacement de la tâche.JOB_NAME
: nom de la tâche.
Étapes suivantes
- Si vous rencontrez des problèmes lors de la création ou de l'exécution d'un job, consultez la section Dépannage.
- Afficher les missions et les tâches
- En savoir plus sur les options de création de tâches