Condividi tramite


Uso di macchine virtuali spot in Azure CycleCloud

Azure CycleCloud supporta la distribuzione di macchine virtuali spot in nodearrays per ridurre notevolmente il costo operativo dei cluster.

Attenzione

Le macchine virtuali spot non sono appropriate per tutti i carichi di lavoro e i tipi di cluster. Non offrono alcun contratto di servizio per la disponibilità o la capacità. Sono istanze "preemptible" o "low-priority" e possono essere rimosse dall'infrastruttura di Azure per gestire la capacità e man mano che cambiano i prezzi spot.

Configurazione di un nodearray per Spot

Per abilitare Spot per un nodearray, è sufficiente impostare su Interruptible true nella [[nodearray]] sezione.

CycleCloud consente ai cluster di specificare un MaxPrice per le istanze Spot. Poiché il prezzo spot può modificare periodicamente e può variare in modo significativo tra aree e SKU, consente MaxPrice agli utenti di controllare il prezzo massimo (in $/ora) che sono disposti a pagare per una macchina virtuale. Per impostazione predefinita, CycleCloud imposta MaxPrice=-1 quando non specificato diversamente, ovvero "non rimuovere in base al prezzo Spot". Con questa impostazione, le istanze verranno rimosse solo a causa di modifiche alle richieste di capacità o ad altre decisioni a livello di piattaforma.

Per informazioni dettagliate sui prezzi delle variabili per le istanze spot, vedere Prezzi spot .

Per la maggior parte delle applicazioni HPC, MaxPrice=-1 è una scelta predefinita ottimale. Tuttavia, se un nodearray supporta la scalabilità automatica a selezione multipla in un intervallo di SKU di MACCHINE virtuali, MaxPrice può anche essere personalizzato per creare una preferenza per SKU a prezzo inferiore nell'elenco di selezione multipla.

[cluster demo]

  [[nodearray execute]]
  Interruptible = true
  MaxPrice = 0.2

Per informazioni dettagliate, vedere Spot Macchine virtuali nella guida al modello di cluster.

Rimozione di macchine virtuali spot

CycleCloud monitora le eliminazioni spot tramite la funzionalità Eventi pianificati . Quando viene rilevato un evento di precedenza spot, CycleCloud riceve una notifica dalla macchina virtuale e l'istanza viene spostata in uno stato di "attesa di rimozione".

Domande frequenti

L'uso di Spot con CycleCloud include alcune considerazioni specifiche per i carichi di lavoro HPC e la scalabilità automatica di CycleCloud.

Quando dovrei prendere in considerazione l'uso di Spot?

  • I lavori individuali sono relativamente brevi?
    • Una buona regola generale è che i processi eseguiti in meno di un'ora possono essere adatti alle istanze Spot, perché lo stato di avanzamento relativamente piccolo andrà perso se l'istanza viene rimossa.
  • L'utilità di pianificazione ritenta/riscriva automaticamente i processi negli host che hanno esito negativo?
  • I processi possono essere rieseguiti se l'host viene rimosso durante l'esecuzione?
    • In generale, le istanze spot sono ideali per i carichi di lavoro senza stato.
  • Ridurre al minimo il costo dell'esecuzione è più importante del tempo di completamento?
    • Spot è spesso perfetto per i carichi di lavoro che potrebbero essere pianificati in code con priorità bassa o di riempimento in locale.
    • Questo è uno dei casi in cui Spot può essere appropriato anche per brevi processi MPI.

Quando dovrei evitare di usare Spot?

  • Se i processi sono strettamente associati a processi HPC (ad esempio, processi MPI), probabilmente non sono buoni candidati per Spot.
  • Se il processo è critico e/o ha una scadenza per il completamento, le istanze di priorità regolari potrebbero essere più adatte perché le eliminazioni e i tentativi possono estendere il tempo di completamento.
    • Tuttavia, questa può essere un'ottima opportunità per configurare il cluster in modo da usare una combinazione di istanze di priorità regolare e spot per garantire che la scadenza venga soddisfatta durante il tentativo di ridurre il runtime e i costi aggiungendo istanze Spot.
  • Se i processi non sono sicuri per essere rieseguiti, è consigliabile evitare Spot.
    • Ad esempio, se il processo modifica un database durante l'esecuzione, l'esecuzione automatica del processo può causare errori o risultati non validi.
  • Se i runtime dei processi sono molto lunghi, Spot potrebbe non essere una scelta ottimale.
    • Per i processi lunghi, sia la possibilità di rimozione spot che i costi di dollaro e tempo dei tentativi aumentano.
    • Tuttavia, si tratta di un caso che può richiedere la misurazione caso per caso.

Rimozione/Preemption

Per informazioni dettagliate sull'eliminazione spot in Azure, vedere Criteri di rimozione spot.

Q. CycleCloud può tenere traccia delle eliminazioni/preemptioni dell'istanza spot?

R. Sì. Un evento spot di rimozione genererà una notifica del registro eventi nella pagina Interfaccia utente cluster.

Q. In che modo gli utenti ricevono una notifica di rimozione?

A. Dopo aver rimosso un nodo CycleCloud, gli utenti visualizzeranno un messaggio di log nel registro eventi dell'interfaccia utente di CycleCloud per il cluster. Gli utenti possono anche registrarsi per ricevere un evento da CycleCloud tramite Griglia di eventi di Azure dopo la rimozione di un'istanza spot.

  • Gli utenti possono verificare la presenza di una notifica di rimozione nel computer 30 secondi prima della rimozione. Per informazioni dettagliate su come eseguire la registrazione per l'evento, vedere Eventi pianificati .
  • In generale, la rimozione deve essere considerata simile al pull del plug in un computer locale e deve essere gestita nello stesso modo.
  • IMPORTANTE I gestori eventi non devono riconoscere l'evento spot di rimozione, perché il gestore eventi Cyclecloud potrebbe non ricevere l'evento se riconosciuto.

Q. Con quale frequenza si verifica l'eliminazione?

A. La velocità di rimozione è altamente variabile e dipende in gran parte dalle variazioni della domanda nell'intera area.

Q. Perché le istanze vengono rimosse?

A. Le macchine virtuali spot non garantiscono la disponibilità e possono essere rimosse in qualsiasi momento. Per informazioni dettagliate , vedere la documentazione relativa alle macchine virtuali spot . Se un nodearray ha impostato un MaxPrice oggetto , le istanze verranno rimosse se il prezzo spot aumenta al di sopra di MaxPrice. Questo tende a essere raro poiché il prezzo spot si muove molto lentamente. Ecco alcuni scenari che potrebbero attivare una rimozione:

  1. Le riduzioni della capacità spot aumentano con l'aumentare della domanda di macchine virtuali con priorità regolare.
  2. Eventi a livello di piattaforma, ad esempio la manutenzione hardware pianificata.

In che modo il flusso di lavoro è influenzato dalla rimozione?

Q. Cosa accade ai processi quando viene eliminata un'istanza Spot?

A. A meno che i processi non vengano codificati per gestire la notifica di rimozione di 30 secondi e gestirla in modo appropriato, il nodo viene semplicemente terminato e il processo non riesce (e si spera di riprovare).

Q. I nodi vengono eliminati dal cluster?

A. Sì, i nodi verranno puliti nell'interfaccia utente di CycleCloud. Nelle utilità di pianificazione supportate, anche i nodi verranno puliti nell'utilità di pianificazione.

Q. I processi devono essere rieseguiti?

A. In generale, è il processo dell'utilità di pianificazione per ripetere/ripetere l'esecuzione dei processi rimossi. Tuttavia, molte classi di processo non sono a tolleranza di ripetizione dei tentativi, ad esempio se scrivono dati parziali nell'archiviazione permanente durante l'esecuzione. Questi processi potrebbero non essere validi per l'esecuzione in istanze spot.

Q. È possibile usare una combinazione di macchine virtuali Spot e On Demand/Regular-Priority?

R. Sì. È possibile usare nodi spot (Interruptible) e non spotarray per creare una combinazione di spot e priorità regolare. L'uso di una combinazione di tipi di istanza richiede in genere di prendere alcune decisioni di configurazione a seconda dei requisiti e l'utilità di pianificazione scelta dall'utente. Ecco alcune configurazioni comuni:

  • Separare le macchine virtuali spot e Regular-Priority in code separate nell'utilità di pianificazione.
    • Questa configurazione consente al mittente di assegnare facilmente i processi al tipo di macchina virtuale appropriato
  • Creare un singolo pool di risorse di grandi dimensioni con istanze spot e Regular-Priority.
    • Questa configurazione può essere utile per carichi di lavoro altamente scalabili che usano una piccola percentuale di istanze di priorità regolari per garantire lo stato di avanzamento e una grande percentuale di Spot per ridurre i costi e il runtime.

Q. È possibile modificare i criteri di rimozione spot per cycleCloud nodearrays?

R. Sì. È possibile impostare l'attributo direttamente sul nodearray per modificare il EvictionPolicy criterio su Delete o Deallocate (impostazione predefinita: Delete). Tuttavia, questo è attualmente utile solo per i scalabilità automatica personalizzati che gestiscono le deallozioni in modo appropriato. I ridimensionatori automatici di Azure CycleCloud correnti prevedono l'eliminazione di istanze Spot dopo l'eliminazione.

Supporto dell'utilità di pianificazione per la rimozione spot in CycleCloud

Per informazioni dettagliate sull'implementazione di CycleCloud per l'utilità di pianificazione, vedere la guida specifica dell'utilità di pianificazione.

Q. In che modo il ridimensionamento automatico per l'utilità di pianificazione gestisce l'eliminazione spot?

A. Tutte le scalabilità automatica per gli utilità di pianificazione predefinite/supportate (HTCondor, GridEngine, PBS Professional, Slurm, LSF) tentano di gestire in modo normale le esviazioni spot. In generale, l'istanza rimossa verrà rimossa dall'utilità di pianificazione e se la domanda di capacità è superiore alla nuova capacità disponibile dopo la rimozione, il ridimensionatore automatico sostituirà l'istanza.

I ridimensionatori automatici personalizzati devono essere compilati per prevedere le eliminazioni spot o gli errori generali del computer e gestirli in modo normale.

Q. Cosa ci si aspetta che accada ai processi in esecuzione nell'istanza rimossa?

A. In gran parte, l'utente deve configurare quando si invia il processo. Alcuni utilità di pianificazione, ad esempio GridEngine, consentono anche la configurazione dell'azione predefinita per coda. Per impostazione predefinita, tutte le distribuzioni dell'utilità di pianificazione CycleCloud predefinite, ad eccezione di HTCondor, sono configurate per contrassegnare i processi come non riusciti quando il nodo in esecuzione viene rimosso o terminato in modo imprevisto. Questo comportamento è in base alla progettazione perché solo l'utente può sapere se i propri processi potrebbero essere riprovati in modo sicuro.