In diesem Dokument wird erläutert, wie Sie die Netzwerklatenz zwischen den VMs eines Jobs reduzieren, indem Sie eine Richtlinie für kompakte Platzierung angeben.
Wenn sich VM-Hosts innerhalb einer Zone physisch näher beieinander befinden, kann die Netzwerklatenz zwischen VMs reduziert werden. Dieser Leistungsvorteil kann besonders nützlich sein für Jobs mit eng gekoppelten Aufgaben, z. B. für Aufgaben, die mit MPI-Bibliotheken kommunizieren. Wenn Sie einen Job erstellen, können Sie optional festlegen, dass sich die VMs eines Jobs näher beieinander befinden müssen, indem Sie eine Richtlinie für kompakte Platzierung angeben. Andernfalls werden VMs standardmäßig auf separaten Hosts verteilt, um die Auswirkungen von Stromausfällen zu minimieren.
Weitere Informationen zu Richtlinien für kompakte Platzierung finden Sie in der Compute Engine-Dokumentation unter Platzierungsrichtlinien.
Hinweis
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie den Artikel Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzererfüllen.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen:
- Batch Job Editor (
roles/batch.jobsEditor) für das Projekt - Dienstkonto-Nutzer (
roles/iam.serviceAccountUser) für das Dienstkonto des Jobs. Standardmäßig ist dies das Standarddienstkonto für Compute Engine.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
- Batch Job Editor (
Beschränkungen
Zusätzlich zu den allgemeinen Beschränkungen für Richtlinien für kompakte Platzierung, gelten für Batch auch die folgenden Einschränkungen:
- Wenn Sie angeben, dass ein Job eine Richtlinie für kompakte Platzierung verwenden soll, erstellt und löscht Batch automatisch eine Richtlinie für kompakte Platzierung für die VMs des Jobs. Sie können keine vorhandene Richtlinie für kompakte Platzierung für einen Job angeben.
- Sie können keine Anzahl von VMs für die Richtlinie für kompakte Platzierung angeben. Die Richtlinie für kompakte Platzierung für einen Job gilt unabhängig davon, auf wie vielen VMs der Job ausgeführt wird.
Job erstellen und ausführen, der eine Platzierungsrichtlinie verwendet
Sie können angeben, dass ein Job eine Richtlinie für kompakte Platzierung verwenden soll, indem Sie das
collocation Feld
auf COLLOCATED mit der gcloud CLI oder der Batch API setzen.
gcloud
Erstellen Sie eine JSON-Datei, in der die Konfigurationsdetails des Jobs angegeben sind und das Feld
collocationaufCOLLOCATEDgesetzt ist.Wenn Sie beispielsweise einen einfachen Skriptjob erstellen möchten, der eine Richtlinie für kompakte Platzierung angibt, erstellen Sie eine JSON-Datei mit folgendem Inhalt:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}" } } ] }, "taskCount": 3 } ], "allocationPolicy": { "placement": { "collocation": "COLLOCATED" } }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }Verwenden Sie den
gcloud batch jobs submitBefehl, um den Job zu erstellen und auszuführen:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILEErsetzen Sie Folgendes:
JOB_NAME: der Name des Jobs.LOCATION: der Standort des Jobs.JSON_CONFIGURATION_FILE: der Pfad zu einer JSON-Datei mit den Konfigurationsdetails des Jobs.
API
Senden Sie eine POST-Anfrage an die
jobs.create Methode
und setzen Sie das collocation Feld auf COLLOCATED.
Wenn Sie beispielsweise einen einfachen Skriptjob erstellen möchten, der eine Richtlinie für kompakte Platzierung angibt, stellen Sie die folgende Anfrage:
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"
}
}
Ersetzen Sie Folgendes:
PROJECT_ID: die Projekt-ID Ihres Projekts.LOCATION: der Standort des Jobs.JOB_NAME: der Name des Jobs.
Nächste Schritte
- Wenn Sie Probleme beim Erstellen oder Ausführen eines Jobs haben, lesen Sie den Abschnitt zu Fehlerbehebung.
- Jobs und Aufgaben ansehen.
- Weitere Optionen zum Erstellen von Jobs