Usare macchine virtuali spot con carichi di lavoro batch

Azure Batch offre macchine virtuali spot per ridurre il costo dei carichi di lavoro batch. Le macchine virtuali spot rendono possibili nuovi tipi di carichi di lavoro Batch consentendo l'uso di una grande quantità di potenza di calcolo per un costo basso.

Le macchine virtuali spot sfruttano la capacità in eccedenza in Azure. Quando si specificano macchine virtuali spot nei pool, Azure Batch può usare questo surplus, se disponibile.

Il compromesso per l'uso di macchine virtuali spot è che queste macchine virtuali potrebbero non essere sempre disponibili o potrebbero essere annullate in qualsiasi momento, a seconda della capacità disponibile. Per questo motivo, le macchine virtuali spot sono più adatte per carichi di lavoro di elaborazione batch e asincrona in cui il tempo di completamento del processo è flessibile e il lavoro viene distribuito tra molte macchine virtuali.

Le macchine virtuali spot sono offerte a un prezzo ridotto rispetto alle macchine virtuali dedicate. Per altre informazioni sui prezzi, vedere Prezzi di Batch.

Differenze tra macchine virtuali spot e con priorità bassa

Batch offre due tipi di macchine virtuali preemptible a basso costo:

  • Macchine virtuali spot, una moderna offerta a livello di Azure, disponibile anche come macchine virtuali a istanza singola o set di scalabilità di macchine virtuali.
  • Macchine virtuali con priorità bassa, un'offerta legacy disponibile solo tramite Azure Batch.

Il tipo di nodo che si ottiene dipende dalla modalità di allocazione del pool dell'account Batch, che può essere impostata durante la creazione dell'account. Gli account Batch che usano la modalità di allocazione del pool di sottoscrizioni utente ottengono sempre macchine virtuali spot. Gli account Batch che usano la modalità di allocazione del pool gestito di Batch ottengono sempre macchine virtuali con priorità bassa.

Avviso

Le macchine virtuali con priorità bassa verranno ritirati dopo il 30 settembre 2025. Eseguire la migrazione alle macchine virtuali spot in Batch prima di allora.

Le macchine virtuali spot di Azure e le macchine virtuali batch con priorità bassa sono simili, ma presentano alcune differenze nel comportamento.

VM Spot Macchine virtuali con priorità bassa
Account Batch supportati Account Batch di sottoscrizione utente Account Batch gestiti da Batch
Configurazioni del pool di Batch supportate Configurazione macchina virtuale Configurazione della macchina virtuale e configurazione del servizio cloud (deprecata)
Aree disponibili Tutte le aree che supportano macchine virtuali spot Tutte le aree ad eccezione di Microsoft Azure gestito da 21Vianet
Idoneità dei clienti Non disponibile per alcuni tipi di offerta di sottoscrizione. Altre informazioni sulle limitazioni spot. Disponibile per tutti i clienti di Batch
Possibili motivi di rimozione Capacità Capacità
Modello tariffario Sconti variabili relativi ai prezzi standard delle macchine virtuali Sconti fissi relativi ai prezzi standard delle macchine virtuali
Modello quota Soggetto alle quote di core nella sottoscrizione Soggetto alle quote di core nell'account Batch
Contratto di servizio per la disponibilità Nessuno Nessuno

Supporto batch per macchine virtuali spot

Azure Batch offre diverse funzionalità che semplificano l'utilizzo e il vantaggio delle macchine virtuali spot:

  • I pool di batch possono contenere macchine virtuali dedicate e macchine virtuali spot. Il numero di ogni tipo di macchina virtuale può essere specificato quando viene creato un pool o modificato in qualsiasi momento per un pool esistente, usando l'operazione di ridimensionamento esplicito o la scalabilità automatica. L'invio di attività e processi può rimanere invariato indipendentemente dai tipi di macchine virtuali nel pool. È anche possibile configurare un pool per usare completamente le macchine virtuali spot per eseguire i processi il più a basso costo possibile, ma attivare macchine virtuali dedicate se la capacità scende al di sotto di una soglia minima, per mantenere i processi in esecuzione.
  • I pool di Batch cercano automaticamente il numero di macchine virtuali spot. Se le macchine virtuali sono preempted o non disponibili, Batch tenta di sostituire la capacità persa e tornare alla destinazione.
  • Quando le attività vengono interrotte, il servizio Batch rileva e reinserisce automaticamente nella coda le attività da eseguire di nuovo.
  • Le macchine virtuali spot hanno una quota vCPU separata che differisce da quella per le macchine virtuali dedicate. La quota per le macchine virtuali spot è superiore alla quota per le macchine virtuali dedicate, perché le macchine virtuali spot costano meno. Per altre informazioni, vedere Quote e limiti del servizio Batch.

Considerazioni e casi d'uso

Molti carichi di lavoro batch sono adatti alle macchine virtuali spot. È consigliabile usare macchine virtuali spot quando i processi vengono suddivisi in molte attività parallele o quando sono presenti molti processi con scalabilità orizzontale e distribuiti tra molte macchine virtuali.

Di seguito sono riportati alcuni esempi di casi d'uso di elaborazione batch adatti alle macchine virtuali spot:

  • Sviluppo e test: in particolare, se sono in fase di sviluppo soluzioni su larga scala, è possibile realizzare risparmi significativi. Tutti i tipi di test possono trarre vantaggio, ma i test di carico su larga scala e i test di regressione ne traggono il miglio uso.
  • Integrazione della capacità su richiesta: le macchine virtuali spot possono essere usate per integrare le normali macchine virtuali dedicate. Quando disponibili, i processi possono essere ridimensionati e quindi completare più rapidamente per un costo inferiore; quando non è disponibile, la baseline delle macchine virtuali dedicate rimane disponibile.
  • Tempo di esecuzione flessibile dei processi: se è necessaria flessibilità nel tempo necessario per il completamento dei processi, è possibile tollerare potenziali cali di capacità. Tuttavia, con l'aggiunta di macchine virtuali spot, i processi vengono eseguiti più rapidamente e per un costo inferiore.

I pool di Batch possono essere configurati per l'uso di macchine virtuali spot in diversi modi:

  • Un pool può usare solo macchine virtuali spot. In questo caso, il servizio Batch recupera qualsiasi capacità superata, se disponibile. Questa configurazione è il modo più economico per eseguire i processi.
  • Le macchine virtuali spot possono essere usate con una baseline fissa di macchine virtuali dedicate. Il numero fisso di macchine virtuali dedicate garantisce che sia sempre disponibile una certa capacità per mantenere l'avanzamento di un processo.
  • Un pool può usare una combinazione dinamica di macchine virtuali dedicate e spot, in modo che le macchine virtuali Spot più economiche vengano usate esclusivamente quando disponibili, ma le macchine virtuali dedicate a prezzo intero aumentano quando necessario. Questa configurazione mantiene disponibile una quantità minima di capacità per mantenere i processi in corso.

Quando si pianifica l'uso di macchine virtuali spot, tenere presente le procedure seguenti:

  • Per ottimizzare l'uso della capacità in eccedenza in Azure, i processi adatti possono aumentare il numero di istanze.
  • In alcuni casi, le macchine virtuali potrebbero non essere disponibili o vengono annullate, il che comporta una riduzione della capacità per i processi e potrebbe causare interruzioni e riesecuzioni delle attività.
  • Le attività con tempi di esecuzione più brevi tendono a funzionare meglio con le macchine virtuali spot. I processi con attività più lunghe potrebbero avere un impatto maggiore se vengono interrotti. Se le attività a esecuzione prolungata implementano il checkpoint per salvare lo stato di avanzamento durante l'esecuzione, questo impatto potrebbe essere ridotto.
  • I processi MPI a esecuzione prolungata che usano più macchine virtuali non sono adatti per le macchine virtuali spot, perché una macchina virtuale annullata può causare la necessità di eseguire nuovamente l'intero processo.
  • I nodi spot possono essere contrassegnati come inutilizzabili se le regole del gruppo di sicurezza di rete (NSG) sono configurate in modo non corretto.

Creare e gestire pool con macchine virtuali spot

Un pool di Batch può contenere macchine virtuali dedicate e spot (dette anche nodi di calcolo). È possibile impostare il numero di nodi di calcolo di destinazione per macchine virtuali dedicate e spot. Il numero di nodi di destinazione specifica il numero di macchine virtuali che si desidera avere nel pool.

L'esempio seguente crea un pool usando macchine virtuali di Azure, in questo caso macchine virtuali Linux, con una destinazione di 5 macchine virtuali dedicate e 20 macchine virtuali spot:

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);

È possibile ottenere il numero corrente di nodi per macchine virtuali dedicate e spot:

int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;

I nodi del pool hanno una proprietà per indicare se il nodo è una macchina virtuale dedicata o spot:

bool? isNodeDedicated = poolNode.IsDedicated;

Le macchine virtuali spot potrebbero occasionalmente essere annullate. Quando si verifica la precedenza, le attività in esecuzione nelle macchine virtuali del nodo preempted vengono riqueuate ed eseguite di nuovo quando viene restituita la capacità.

Per i pool di configurazione delle macchine virtuali, Batch esegue anche i comportamenti seguenti:

  • Le macchine virtuali interrotte hanno lo stato aggiornato ad Annullato.
  • La macchina virtuale viene eliminata in modo efficace e tutti i dati memorizzati in locale nella macchina virtuale andranno persi.
  • Un'operazione di elenco dei nodi nel pool restituisce comunque i nodi preceduti.
  • Il pool tenta continuamente di raggiungere il numero di nodi spot disponibili. Quando viene trovata la capacità di sostituzione, i nodi mantengono gli ID, ma vengono reinizializzati, passando attraverso gli stati Creazione e avvio prima che siano disponibili per la pianificazione delle attività.
  • Il numero delle priorità è disponibile come metrica nel portale di Azure.

Pool di scalabilità contenenti macchine virtuali spot

Come per i pool costituiti esclusivamente da macchine virtuali dedicate, è possibile ridimensionare un pool contenente macchine virtuali spot chiamando il metodo o usando la Resize scalabilità automatica.

L'operazione di ridimensionamento del pool accetta un secondo parametro facoltativo che aggiorna il valore di targetLowPriorityNodes:

pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);

La formula di scalabilità automatica del pool supporta le macchine virtuali spot come indicato di seguito:

  • È possibile ottenere o impostare il valore della variabile $TargetLowPriorityNodesdefinita dal servizio .
  • È possibile ottenere il valore della variabile $CurrentLowPriorityNodesdefinita dal servizio.
  • È possibile ottenere il valore della variabile $PreemptedNodeCountdefinita dal servizio. Questa variabile restituisce il numero di nodi con lo stato Annullato e consente di aumentare o ridurre il numero di nodi dedicati, a seconda del numero di nodi di annullati che non sono disponibili.

Configurare processi e attività

I processi e le attività possono richiedere una configurazione aggiuntiva per i nodi Spot:

  • La JobManagerTask proprietà di un processo ha una AllowLowPriorityNode proprietà . Quando questa proprietà è true, l'attività di gestione processi può essere pianificata in un nodo dedicato o spot. Se è false, l'attività di gestione processi viene pianificata solo in un nodo dedicato.
  • La AZ_BATCH_NODE_IS_DEDICATEDvariabile di ambiente è disponibile per un'applicazione di attività in modo che possa determinare se è in esecuzione in un nodo Spot o in un nodo dedicato.

Visualizzare le metriche per le macchine virtuali spot

Le nuove metriche sono disponibili nella portale di Azure per i nodi Spot. Le metriche sono:

  • Numero di nodi a bassa priorità
  • Numero di core a bassa priorità
  • Numero di nodi annullati

Per visualizzare queste metriche nel portale di Azure:

  1. Passare all'account Batch nel portale di Azure.
  2. Selezionare Metrica dalla sezione Monitoraggio.
  3. Selezionare le metriche desiderate dall'elenco Metrica .

Limitazioni

  • Le macchine virtuali spot in Batch non supportano l'impostazione di un prezzo massimo e non supportano le eliminazioni basate sui prezzi. Possono essere rimossi solo per motivi di capacità.
  • Le macchine virtuali spot sono disponibili solo per i pool di configurazione delle macchine virtuali e non per i pool di configurazione del servizio cloud, deprecati.
  • Le macchine virtuali spot non sono disponibili per alcuni cloud, dimensioni delle macchine virtuali e tipi di offerta di sottoscrizione. Vedere altre informazioni sulle limitazioni delle macchine virtuali spot.
  • Attualmente, i dischi temporanei del sistema operativo non sono supportati con le macchine virtuali spot a causa del criterio di rimozione gestito dal servizio di Stop-Deallocate.

Passaggi successivi