Orchestrare i sistemi HPC
- 10 minuti
Uno dei concetti chiave del cloud computing è Orchestration. Si riferisce alla supervisione della distribuzione, dell'esecuzione e del monitoraggio di tutti i componenti di un'applicazione nel cluster.
Inoltre, un agente di orchestrazione può eseguire altre attività, ad esempio la correzione (gestione degli errori), il ridimensionamento e la registrazione. Gli agenti di orchestrazione come Kubernetes o Mesos noti possono accedere direttamente alle risorse del cluster cloud tramite la virtualizzazione.
Distribuzione di sistemi HPC
Le distribuzioni HPC in Azure possono variare in base alle esigenze e al budget specifici del carico di lavoro. Esistono alcuni componenti standard in qualsiasi distribuzione, tra cui:
- Azure Resource Manager: Consente la distribuzione di applicazioni in cluster usando file di script o modelli.
- HPC Head Node: Abilita la pianificazione di processi e carichi di lavoro nei nodi di lavoro. Si tratta di una macchina virtuale usata per gestire i cluster HPC.
- Rete virtuale: Consente di creare una rete isolata di cluster e archiviazione tramite connessioni sicure con ExpressRoute o VPN IPsec. È possibile integrare i server DNS e gli indirizzi IP stabiliti nella rete e controllare in modo granulare il traffico tra subnet.
- Set di scalabilità di macchine virtuali: Consente il provisioning di macchine virtuali di cluster e include funzionalità per la scalabilità automatica, le distribuzioni in più zone e il bilanciamento del carico. È possibile usare i set di scalabilità per eseguire diversi database, tra cui MongoDB, Cassandra e Hadoop.
- Immagazzinamento: Abilita il montaggio di cluster di archiviazione permanenti sotto forma di BLOB, disco, file, ibrido o data lake storage.
Gestione delle distribuzioni HPC di Azure
Azure offre un paio di servizi nativi che consentono di gestire le distribuzioni HPC. Questi strumenti offrono flessibilità per la gestione e consentono di pianificare i carichi di lavoro in Azure e nelle risorse ibride.
- Azure CycleCloud: Interfaccia per l'utilità di pianificazione preferita. È possibile usare Azure CycleCloud con una gamma di opzioni native e di terze parti, tra cui Motore griglia, Slurm e Symphony. CycleCloud consente di gestire e orchestrare i carichi di lavoro, definire i controlli di accesso con Active Directory e personalizzare i criteri del cluster.
- Azure Batch: Strumento gestito che è possibile usare per ridimensionare automaticamente le distribuzioni e impostare criteri per la pianificazione dei processi. Il servizio Azure Batch gestisce il provisioning, l'assegnazione, i runtime e il monitoraggio dei carichi di lavoro. Per usarlo, è sufficiente caricare i carichi di lavoro e configurare il pool di macchine virtuali.
I carichi di lavoro HPC di Azure offrono machine learning, visualizzazione e rendering, che rafforzano tutte le applicazioni nel settore dei semiconduttori. Consente un'integrazione cloud uniforme e resiliente dei carichi di lavoro del petrolio e del gas, nonché la sequenziazione genomica basata sul cloud e la progettazione di semiconduttori.
Procedure consigliate per le distribuzioni hpc di Azure
Le procedure consigliate seguenti consentono di ottenere le prestazioni e il valore previsti.
Distribuire distribuzioni tra servizi cloud: La distribuzione di distribuzioni di grandi dimensioni tra servizi cloud consente di evitare limitazioni create tramite overload o affidandosi a un singolo servizio. Suddividendo la distribuzione in segmenti più piccoli, è possibile:
- Arrestare le istanze inattive dopo il completamento del processo senza interrompere altri processi.
- Avviare e arrestare in modo flessibile i cluster di nodi.
- Trovare più facilmente i nodi disponibili nei cluster.
- Usare più data center per garantire il ripristino di emergenza.
Usare più account di archiviazione di Azure per le distribuzioni di nodi: Analogamente alla distribuzione delle distribuzioni tra i servizi, è consigliabile collegare più account di archiviazione a ogni distribuzione. Può offrire prestazioni migliori per distribuzioni di grandi dimensioni, applicazioni limitate da operazioni di input/output e applicazioni personalizzate. Quando si configurano gli account di archiviazione, è necessario avere un account per il provisioning dei nodi e un altro per lo spostamento di dati di processi o attività per garantire coerenza e bassa latenza.
Aumentare le istanze del nodo proxy in modo che corrispondano alle dimensioni della distribuzione: I nodi proxy consentono la comunicazione tra i nodi head che si stanno operando in locale e nodi di lavoro di Azure. Questi nodi vengono collegati automaticamente quando si distribuiscono i ruoli di lavoro in Azure. Se si eseguono processi di grandi dimensioni che soddisfano o superano le risorse fornite dai nodi proxy, è consigliabile aumentare il numero in esecuzione. L'aumento è particolarmente importante man mano che la distribuzione cresce.
Connettersi al nodo head con le utilità client HPC: È possibile installare utilità nelle workstation degli utenti e accedere in remoto al nodo head in base alle esigenze anziché usare Servizi Desktop remoto. Queste utilità sono particolarmente utili se molti utenti si connettono contemporaneamente.
Pianificazione delle attività
Un altro servizio HPC offerto è la pianificazione delle attività. È possibile usare l'utilità di pianificazione nell'applicazione per inviare il lavoro, consentendo l'esecuzione di processi batch in modo efficiente. Gli obiettivi principali del pianificatore possono essere classificati in modo ampio come:
- Ridurre al minimo il tempo tra l'invio di un processo e il completamento. Nessun lavoro deve rimanere in coda per un lungo periodo.
- Ottimizzare l'utilizzo della CPU, in particolare ridurre i tempi di inattività della CPU.
- Massimizzare il throughput dei processi, la scalabilità dei processi per unità di tempo.
Informazioni sulla pianificazione delle attività
Gli utenti inviano i processi batch non interattivi al pianificatore. L'utilità di pianificazione archivia i processi batch, valuta le priorità e i requisiti in termini di risorse, quindi distribuisce i processi ai nodi di calcolo appropriati. Costituiscono la maggior parte dei cluster HPC (circa 98%) in quanto sono i più energivori.
A differenza dei nodi di accesso e del relativo utilizzo interattivo, i nodi di calcolo non sono direttamente accessibili tramite SSH. L'utilità di pianificazione nel nodo di accesso funge da interfaccia tra il nodo di calcolo e l'utente. L'utente deve specificare l'applicazione all'interno di uno script di processo in base alle risorse di tempo e memoria.
Lo script di processo inviato tramite l'utilità di pianificazione aggiunge il processo a una coda di processi. In base alle risorse disponibili tra quelle necessarie per il processo, l'utilità di pianificazione stabilisce quando il processo deve lasciare la coda e in quali nodi di back-end (o parte di essi) sarà eseguito.
L'utente deve assicurarsi che le risorse richieste siano entro i limiti del sistema. Per esempio:
- L'utilità di pianificazione termina il processo una volta esaurito il tempo allocato, anche se il processo richiederebbe più tempo.
- Se il processo richiede una quantità di memoria maggiore rispetto a quella disponibile nel sistema, resterà bloccato nella coda.
Illustrazione
Supponendo che il sistema batch in uso sia costituito da sei nodi, l'utilità di pianificazione lo usa per inserire i nove processi nella coda nei nodi disponibili. L'obiettivo è eliminare le risorse sprecate, descritte nel diagramma seguente come aree libere che mostrano i nodi senza alcuna esecuzione del processo.
Pertanto, i processi potrebbero non essere distribuiti tra i nodi nello stesso ordine in cui sono stati inseriti nella coda. Il tempo e il numero di nodi necessari per l'esecuzione di un'attività determinano lo spazio occupato da un processo. Lo schedulatore svolge un ruolo multidimensionale di rotazione per riempire uniformemente i nodi del cluster, bilanciando i requisiti di risorse di tutti i processi con le risorse disponibili nel cluster.
Algoritmi di pianificazione
Esistono due strategie di base che i programmatori possono usare per determinare quale compito eseguire successivamente. Le utilità di pianificazione moderne non si limitano esclusivamente a uno di questi algoritmi, ma usano piuttosto una combinazione dei due. Inoltre, ci sono molti altri aspetti che un pianificatore deve prendere in considerazione, ad esempio il carico di sistema attuale.
Primo venire, Primo Servire: I processi vengono eseguiti nello stesso ordine in cui vengono prima immessi nella coda. Il vantaggio è che ogni processo viene sicuramente eseguito. Un piccolo set di processi, tuttavia, potrebbe attendere un tempo eccessivamente lungo rispetto al tempo di esecuzione effettivo.
Shortest Job First: In base al tempo di esecuzione dichiarato nello script di lavoro, il schedulatore stima il tempo di esecuzione del lavoro. I lavori sono classificati in ordine crescente in base al tempo di esecuzione. Anche se i processi brevi verranno avviati dopo un breve periodo di attesa, i processi a esecuzione prolungata, o dichiarati come tali, potrebbero non essere mai avviati.
Inoltre, c'è la pratica di backfilling. L'utilità di pianificazione mantiene il concetto di First Come, First Serve senza impedire l'esecuzione dei processi a esecuzione prolungata. Il pianificatore esegue il processo solo quando è possibile eseguire il primo processo nella coda. In caso contrario, esamina il resto della coda per verificare se è possibile eseguire un altro processo senza estendere il tempo di attesa del primo processo in coda. Se trova un processo che risponde a queste caratteristiche, il pianificatore lo esegue. I piccoli lavori di solito hanno tempi brevi di attesa in coda.
Gestione del flusso di lavoro
Pipelining delle attività: Le operazioni ripetute, come l'utilizzo di strumenti e le esecuzioni di sequenze di attività nei processi software, possono essere strutturate in una pipeline. L'automazione può rendere più efficiente l'utilizzo complessivo del software e degli strumenti. Crea efficienza rendendo più veloce l'attività stessa e riducendo il carico di lavoro sul lavoratore della conoscenza per la gestione dell'attività.
Automazione delle attività: L'automazione può ridurre la frequenza di errore di un processo eliminando la varianza nel modo in cui viene eseguita. La pipelining e l'automazione di un'attività possono aprire la porta per ulteriori innovazioni del processo, come la parallelizzazione e la distribuzione cloud.
Strumenti per la gestione del flusso di lavoro
Azure Batch: Usare Azure Batch per eseguire processi batch su larga scala, paralleli e hpc (High Performance Computing) in modo efficiente in Azure. Azure Batch crea e gestisce un pool di nodi di calcolo (macchine virtuali), installa le applicazioni da eseguire e pianifica l'esecuzione dei processi nei nodi. Non c'è alcun software per la schedulazione di cluster o job da installare, gestire o ridimensionare. Si usano invece API e strumenti Batch, script da riga di comando o il portale di Azure per configurare, gestire e monitorare i processi.
Per informazioni dettagliate su Azure Batch, incluse altre funzionalità e il relativo funzionamento, vedere Azure Batch.
Azure CycleCloud: Azure CycleCloud è uno strumento aziendale per orchestrare e gestire ambienti HPC (High Performance Computing) in Azure. Con CycleCloud, gli utenti possono pianificare l'infrastruttura per i sistemi HPC, distribuire utilità di pianificazione HPC familiari e ridimensionare automaticamente l'infrastruttura per eseguire i processi in modo efficiente su qualsiasi scala. Tramite CycleCloud, gli utenti possono creare diversi tipi di file system e montarli nei nodi del cluster di calcolo per supportare i carichi di lavoro HPC.
Per altre informazioni su Azure CycleCloud, vedere Azure CycleCloud.