Ce document explique comment réduire la latence 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 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 jobs avec des tâches à couplage fort, telles que les 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 plus près les unes des autres en spécifiant une stratégie d'emplacement compact. Sinon, l'emplacement par défaut des VM les répartit généralement sur des hôtes distincts pour minimiser l'impact des pannes 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
- Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les prérequis pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour créer un job, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Éditeur de tâches Batch (
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 Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
- Éditeur de tâches Batch (
Restrictions
Outre les restrictions générales concernant les stratégies d'emplacement compact, Batch est également soumis aux restrictions suivantes :
- Lorsque vous spécifiez qu'un job doit utiliser 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 de stratégie d'emplacement compact existante pour un job.
- Vous ne pouvez pas spécifier de nombre de VM pour la stratégie d'emplacement compact. La stratégie d'emplacement compact d'un job s'applique quel que soit le nombre de 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'un job doit utiliser une stratégie d'emplacement compact en définissant le
collocation champ
sur COLLOCATED à l'aide de la gcloud CLI ou de l'API Batch.
gcloud
Créez un fichier JSON qui spécifie les détails de configuration du job et définit le champ
collocationsurCOLLOCATED.Par exemple, pour créer un job de script de base qui spécifie une stratégie d'emplacement compact, créez un fichier JSON contenant les éléments suivants :
{ "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 le job, utilisez la
gcloud batch jobs submitcommande :gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILERemplacez les éléments suivants :
JOB_NAME: nom du job.LOCATION: l'emplacement du job.JSON_CONFIGURATION_FILE: chemin d'accès à un fichier JSON contenant les détails de configuration du job.
API
Envoyez une POST requête à la
jobs.create méthode
qui définit le champ collocation sur COLLOCATED.
Par exemple, pour créer un job de script de base qui spécifie une stratégie d'emplacement compact, envoyez 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: l'ID du projet de votre projet.LOCATION: l'emplacement du job.JOB_NAME: nom du job.
Étape suivante
- 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 jobs et les tâches.
- En savoir plus sur les options de création de jobs.