Verwenden von Spot-VMs mit Batch-Workloads
Azure Batch bietet virtuelle Spot-Maschinen (VMs), um die Kosten für Batch-Workloads zu senken. Spot-VMs ermöglichen neue Arten von Azure Batch-Workloads, indem sie die Nutzung einer großen Menge an Rechenleistung zu niedrigen Kosten ermöglichen.
Spot-VMs nutzen die überschüssige Kapazität in Azure. Wenn Sie Spot-VMs in Ihren Pools angeben, kann Azure Batch diesen Überschuss nutzen, wenn er verfügbar ist.
Der Nachteil bei der Verwendung von Spot-VMs besteht darin, dass diese VMs eventuell nicht immer verfügbar sind oder je nach verfügbarer Kapazität jederzeit vorzeitig entfernt werden können. Aus diesem Grund eignen sich Spot-VMs am besten für Batch- und asynchrone Verarbeitungslasten, bei denen die Zeit für den Auftragsabschluss flexibel ist und die Arbeit auf viele VMs verteilt wird.
Spot-VMs werden im Vergleich zu dedizierten VMs zu einem reduzierten Preis angeboten. Weitere Informationen zu Preisen finden Sie in den Batch: Preisangaben.
Unterschiede zwischen Spot- und Low-Priority-VMs
Batch bietet zwei Arten von kostengünstigen preemptiblen VMs:
- Spot VMs, ein modernes Azure-weites Angebot, das auch als Einzelinstanz-VMs oder Virtual Machine Scale Sets verfügbar ist.
- VMs mit niedriger Priorität, ein altes Angebot, das nur über Azure Batch verfügbar ist.
Welche Art von Knoten Sie erhalten, hängt vom Pool-Zuweisungsmodus Ihres Batch-Kontos ab, der bei der Kontoerstellung eingestellt werden kann. Batch-Konten, die den Pool-Zuweisungsmodus Benutzerabonnement verwenden, erhalten immer Spot-VMs. Batch-Konten, die den Pool-Zuweisungsmodus Stapelverwaltung verwenden, erhalten immer VMs mit niedriger Priorität.
Warnung
VMs mit niedriger Priorität werden nach dem 30. September 2025 eingestellt. Migrieren Sie vor diesem Datum zur Verwendung von Spot-VMs in Batch.
Azure Spot-VMs und Batch-VMs mit niedriger Priorität sind ähnlich, weisen jedoch einige Unterschiede im Verhalten auf.
Spot-VMs | Virtuelle Computer mit niedriger Priorität | |
---|---|---|
Unterstützte Batch-Konten | Benutzer-Abonnement Sammelkonten | Batch-verwaltete Batch-Konten |
Unterstützte Batch-Pool-Konfigurationen | VM-Konfiguration | Konfiguration von virtuellen Maschinen und Cloud-Diensten (veraltet) |
Verfügbare Regionen | Alle Regionen, die Spot-VMs unterstützen | Alle Regionen außer Microsoft Azure operated by 21Vianet |
Berechtigte Kunden | Für einige Abonnementangebotsarten nicht verfügbar. Siehe mehr über Punktbegrenzungen. | Verfügbar für alle Batch-Kunden |
Mögliche Gründe für die Räumung | Capacity | Capacity |
Preismodell | Variable Rabatte im Verhältnis zu den Standard-VM-Preisen | Feste Rabatte im Vergleich zu den Standardpreisen für VM |
Quotenmodell | Vorbehaltlich der Kernquoten für Ihr Abonnement | Vorbehaltlich der Kernkontingente auf Ihrem Batch-Konto |
Verfügbarkeits-SLA | Keine | Keine |
Batch-Unterstützung für Spot-VMs
Azure Batch bietet mehrere Funktionen, die die Nutzung von Spot-VMs erleichtern:
- Batch-Pools können sowohl dedizierte VMs als auch Spot-VMs enthalten. Die Anzahl der einzelnen VM-Typen kann beim Erstellen eines Pools angegeben und für einen bestehenden Pool mithilfe der ausdrücklichen Größenänderung oder der automatischen Skalierung jederzeit geändert werden. Die Auftrags- und Aufgabenübermittlung kann unabhängig von den VM-Typen im Pool unverändert bleiben. Sie können einen Pool auch so konfigurieren, dass er vollständig auf Spot-VMs zurückgreift, um Aufträge so kostengünstig wie möglich auszuführen, aber dedizierte VMs hochfährt, wenn die Kapazität unter einen Mindestschwellenwert fällt, damit die Aufträge weiterlaufen.
- Batch-Pools suchen automatisch die gewünschte Anzahl von Spot-VMs. Wenn VMs vorzeitig entfernt werden oder nicht verfügbar sind, versucht Batch, die verlorene Kapazität auszugleichen und das Ziel wieder zu erreichen.
- Wenn Aufgaben unterbrochen werden, erkennt Batch dies und reiht die Aufgaben zur erneuten Ausführung automatisch wieder in eine Warteschlange.
- Spot-VMs haben ein separates vCPU-Kontingent, das sich von dem für dedizierte VMs unterscheidet. Die Quote für Spot-VMs ist höher als die Quote für dedizierte VMs, da Spot-VMs weniger kosten. Weitere Informationen finden Sie im Artikel Batch-Dienst – Kontingente und Limits.
Überlegungen und Anwendungsfälle
Viele Batch-Workloads eignen sich gut für Spot-VMs. Ziehen Sie die Verwendung von Spot-VMs in Betracht, wenn Aufträge in viele parallele Aufgaben aufgeteilt sind, oder wenn Sie über viele Aufträge verfügen, die aufskaliert und auf viele VMs verteilt sind.
Einige Beispiele für Batchverarbeitungs-Anwendungsfälle, die sich gut für den Einsatz von Spot-VMs eignen, sind:
- Entwicklung und Tests: Insbesondere bei der Entwicklung von umfangreichen Lösungen lassen sich beträchtliche Einsparungen realisieren. Alle Arten von Tests können profitieren, aber umfangreiche Auslastungstests und Regressionstests sind besonders gut geeignete Fälle.
- Ergänzung der On-Demand-Kapazität: Spot-VMs können zur Ergänzung regulärer dedizierter VMs verwendet werden. Wenn sie verfügbar sind, können Aufträge skaliert werden, sodass diese schneller und günstiger abgeschlossen werden. Wenn sie nicht verfügbar sind, ist weiterhin die Baseline der dedizierten VMs verfügbar.
- Flexible Auftragsausführungszeit: Bei Aufträgen mit flexibler Fertigstellungsfrist können potenzielle Kapazitätseinbußen toleriert werden. Mit dem Hinzufügen von Spot-VMs werden Aufträge jedoch häufig schneller und kostengünstiger ausgeführt.
Batch-Pools können auf verschiedene Weise für die Verwendung von Spot-VMs konfiguriert werden:
- Ein Pool kann nur Spot-VMs verwenden. In diesem Fall stellt Batch vorzeitig entfernte Kapazitäten bei Verfügbarkeit wieder her. Diese Konfiguration stellt die günstigste Möglichkeit zum Ausführen von Aufträgen dar.
- Spot-VMs können mit einer festen Basis dedizierter VMs verwendet werden. Die feste Anzahl dedizierter VMs stellt sicher, dass stets eine Kapazität zum Fortsetzen der Verarbeitung eines Auftrags verbleibt.
- Ein Pool kann eine dynamische Mischung aus dedizierten und Spot-VMs verwenden, so dass die billigeren Spot-VMs nur verwendet werden, wenn sie verfügbar sind, während die vollpreisigen dedizierten VMs bei Bedarf hochskaliert werden. Durch eine solche Konfiguration bleibt eine Mindestmenge an Kapazität für die fortlaufende Verarbeitung der Aufträge verfügbar.
Beachten Sie bei der Planung des Einsatzes von Spot-VMs die folgenden Punkte:
- Zur Maximierung der Verwendung von überschüssigen Kapazitäten in Azure können geeignete Aufträge aufskaliert werden.
- Gelegentlich sind die VMs möglicherweise nicht verfügbar oder werden vorzeitig entfernt. Dies führt zu einer verringerten Kapazität für Aufträge und damit möglicherweise zu Unterbrechungen und einem erneutem Ausführen von Aufgaben.
- Aufgaben mit kürzeren Ausführungszeiten funktionieren am besten mit Spot-VMs. Aufträge mit längeren Aufgaben werden möglicherweise durch Unterbrechungen stärker beeinträchtigt. Wenn Aufgaben mit langer Ausführungsdauer Prüfpunkte implementieren, um den Fortschritt im Laufe der Ausführung zu speichern, werden diese Auswirkungen möglicherweise reduziert.
- Zeitintensive MPI-Aufträge, die mehrere VMs nutzen, eignen sich nicht gut für Spot-VMs, da eine vorzeitig entfernte VM dazu führen kann, dass der gesamte Auftrag erneut ausgeführt werden muss.
- Spot-Knoten können als unbrauchbar markiert werden, wenn die Regeln der Netzwerksicherheitsgruppe (NSG) falsch konfiguriert sind.
Erstellen und Verwalten von Pools mit Spot-VMs
Ein Batch-Pool kann sowohl dedizierte als auch Spot-VMs (auch als Rechenknoten bezeichnet) enthalten. Sie können die Zielanzahl der Rechenknoten sowohl für dedizierte als auch für Spot-VMs festlegen. Die Zielanzahl der Knoten gibt die Anzahl von VMs an, die im Pool vorhanden sein sollen.
Im folgenden Beispiel wird ein Pool mit virtuellen Azure-Computern (in diesem Fall Linux-VMs) mit einem Ziel von 5 dedizierten VMs und 20 Spot-VMs erstellt:
ImageReference imageRef = new ImageReference(
publisher: "Canonical",
offer: "UbuntuServer",
sku: "20.04-LTS",
version: "latest");
// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
new VirtualMachineConfiguration("batch.node.ubuntu 20.04", imageRef);
pool = batchClient.PoolOperations.CreatePool(
poolId: "vmpool",
targetDedicatedComputeNodes: 5,
targetLowPriorityComputeNodes: 20,
virtualMachineSize: "Standard_D2_v2",
virtualMachineConfiguration: virtualMachineConfiguration);
Sie können die aktuelle Anzahl der Knoten sowohl für dedizierte als auch für Spot-VMs abrufen:
int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;
Pool-Knoten haben eine Eigenschaft, die angibt, ob der Knoten eine dedizierte oder eine Spot-VM ist:
bool? isNodeDedicated = poolNode.IsDedicated;
Spot-VMs können gelegentlich vorzeitig entfernt werden. Wenn es zu einer vorzeitigen Entfernung kommt, werden Aufgaben, die auf den vorzeitig entfernten Knoten-VMs ausgeführt wurden, nochmals in die Warteschlange gestellt und bei wieder vorhandener Kapazität erneut ausgeführt.
Für VM-Konfigurationspools führt Azure Batch auch folgende Aktionen aus:
- Der Status der vorzeitig entfernten VMs wird in Vorzeitig entfernt geändert.
- Die VM wird effektiv gelöscht, sodass alle auf der VM lokal gespeicherten Daten verloren gehen.
- Ein Auflistungsvorgang von Knoten im Pool gibt weiterhin die vorzeitig entfernten Knoten zurück.
- Der Pool versucht ständig, die angestrebte Anzahl der verfügbaren Spot-Knoten zu erreichen. Wenn Ersatzkapazität gefunden wird, behalten die Knoten ihre IDs bei, werden jedoch erneut initialisiert und durchlaufen wieder die Zustände Wird erstellt und Wird gestartet, bevor sie zum Planen von Aufgaben verfügbar sind.
- Die Anzahl der vorzeitigen Entfernungen ist als Metrik im Azure-Portal verfügbar.
Pools mit Spot-VMs skalieren
Wie bei Pools, die nur aus dedizierten VMs bestehen, ist es möglich, einen Pool mit Spot-VMs durch Aufrufen der Resize
-Methode oder durch Verwendung der Autoskalierung zu skalieren.
Der Vorgang zum Ändern der Poolgröße nimmt einen zweiten optionalen Parameter entgegen, der den Wert von targetLowPriorityNodes
aktualisiert:
pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);
Die Formel für die automatische Pool-Skalierung unterstützt Spot-VMs wie folgt:
- Den Wert der dienstseitig definierten Variable
$TargetLowPriorityNodes
können Sie abrufen oder festlegen. - Den Wert der vom Dienst definierten Variable
$CurrentLowPriorityNodes
können Sie abrufen. - Den Wert der vom Dienst definierten Variable
$PreemptedNodeCount
können Sie abrufen. Diese Variable gibt die Anzahl der Knoten mit dem Status „Vorzeitig entfernt“ zurück und ermöglicht Ihnen, die Anzahl der dedizierten Knoten abhängig von der Anzahl der nicht verfügbaren vorzeitig entfernten Knoten hoch- oder herunterzuskalieren.
Konfigurieren von Aufträgen und Aufgaben
Aufträge und Aufgaben erfordern möglicherweise eine zusätzliche Konfiguration für Spotknoten:
- Die
JobManagerTask
-Eigenschaft eines Auftrags besitzt eineAllowLowPriorityNode
-Eigenschaft. Wenn diese Eigenschaft wahr ist, kann die Jobmanager-Aufgabe entweder auf einem dedizierten oder einem Spot-Knoten geplant werden. Wenn diese Eigenschaft auf FALSE festgelegt ist, wird die Auftrags-Manager-Aufgabe nur auf einem dedizierten Knoten geplant. - Für eine Aufgabenanwendung steht die Umgebungsvariable
AZ_BATCH_NODE_IS_DEDICATED
zur Verfügung, sodass ermittelt werden kann, ob die Anwendung auf einem Knoten mit niedriger Priorität oder einem dedizierten Knoten ausgeführt wird.
Anzeigen von Metriken für Spot-VMs
Neue Metriken sind im Azure-Portal für Spot-Knoten verfügbar. Diese Metriken sind:
- Anzahl der Knoten mit niedriger Priorität
- Anzahl von Kernen mit niedriger Priorität
- Anzahl der vorzeitig entfernten Knoten
So zeigen Sie diese Metriken im Azure-Portal an
- Navigieren Sie im Azure-Portal zu Ihrem Batch-Konto.
- Wählen Sie Metriken im Abschnitt Überwachung aus.
- Wählen Sie die gewünschten Metriken aus der Liste Metriken aus.
Einschränkungen
- Spot-VMs in Azure Batch unterstützen nicht die Festlegung eines Höchstpreises und keine preisbasierten Entfernungen. Sie können nur aus Kapazitätsgründen geräumt werden.
- Spot-VMs sind nur für Konfigurationspools für virtuelle Maschinen verfügbar, nicht für Konfigurationspools für Cloud-Dienste, die veraltet sind.
- Spot-VMs sind für einige Clouds, VM-Größen und Abonnementangebotstypen nicht verfügbar. Weitere Informationen zu Spot-VM-Einschränkungen.
- Derzeit werden kurzlebige Betriebssystemdatenträger aufgrund der dienstseitig verwalteten Entfernungsrichtlinie Stop-Deallocate nicht mit Spot-VMs unterstützt.
Nächste Schritte
- Erfahren Sie mehr über den Workflow des Batch-Diensts und primäre Ressourcen wie Pools, Knoten, Aufträge und Aufgaben.
- Informieren Sie sich über die Batch-APIs und Tools, die für die Erstellung von Batch-Lösungen verfügbar sind.
- Beginnen Sie mit der Planung der Umstellung von VMs mit niedriger Priorität auf Spot-VMs. Wenn Sie VMs mit niedriger Priorität mit Cloud Services-Konfigurationspool verwenden, die veraltet sind, planen Sie stattdessen eine Migration zu VM-Konfigurationspools.