Descrivere i concetti dell'utilità di pianificazione del cluster

Completato

Al termine di questa unità, è necessario essere in grado di descrivere le funzioni di base di utilità di pianificazione dei processi, i gestori di risorse, il calcolo ad alte prestazioni e l'elaborazione a velocità effettiva elevata.

Pianificatori di processi

Un'utilità di pianificazione dei processi di elaborazione del cluster è un componente software che gestisce e assegna risorse di calcolo (ad esempio CPU, memoria e dischi) ai processi inviati al cluster. I pianificatori di processi stabiliscono i nodi del cluster più appropriati per l'esecuzione di un determinato processo in base alla disponibilità di risorse, alla priorità del processo e ad altri fattori. I pianificatori di processi assicurano che più processi in esecuzione in parallelo non interferiscano tra loro. I pianificatori di processi includono code in cui contenere i processi in sospeso e un criterio per pianificarli.

Gli obiettivi principali di un pianificatore di processi sono:

  • Ridurre al minimo il tempo tra il completamento del processo di invio del processo.
  • Ottimizzare l'utilizzo della CPU.
  • Ottimizzare la velocità effettiva del processo.

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.

Lo script di processo inviato tramite l'utilità di pianificazione aggiunge il processo a una coda di processi. A seconda delle risorse disponibili necessarie, l'utilità di pianificazione decide quando il processo esce dalla coda e su quale dei nodi back-end viene eseguito.

Esistono diverse strategie di base seguite dai pianificatori per determinare il processo successivo da eseguire:

  • First Come, First Serve: i processi vengono eseguiti nello stesso ordine in cui immettono prima la coda. Il vantaggio è che ogni processo verrà sicuramente eseguito; Tuttavia, un piccolo set di processi potrebbe attendere un tempo insufficiente rispetto al tempo di esecuzione effettivo.

  • Primo processo più breve: in base al tempo di esecuzione dichiarato nello script del processo, l'utilità di pianificazione stima il tempo di esecuzione del processo. I processi vengono 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.

  • Backfilling: l'utilità di pianificazione mantiene il concetto di First Come, First Serve senza impedire l'esecuzione di processi a esecuzione prolungata. Il pianificatore esegue il processo solo quando è possibile eseguire il primo processo nella coda. In caso contrario, l'utilità di pianificazione esegue il resto della coda per verificare se è possibile eseguire un altro processo senza estendere il primo processo nel tempo di attesa della coda. Se lo trova un processo che risponde a queste caratteristiche, l'utilità di pianificazione lo esegue. I processi di piccole dimensioni hanno in genere tempi di attesa in coda brevi.

Resource Manager

Un cluster-computing resource manager alloca le risorse all'interno di un cluster di elaborazione. Gli strumenti di gestione risorse sono responsabili dell'allocazione di memoria, CPU, archiviazione e larghezza di banda ai processi in esecuzione nel cluster. Questo componente monitora l'utilizzo delle risorse all'interno del cluster, rileva le risorse inattive o sottoutilizzate e le rialloca ad altri processi o attività che le richiedono.

Panoramica di Slurm

Slurm è un pianificatore di processi open source e uno strumento di gestione risorse per l'esecuzione di carichi di lavoro nei cluster Linux. Slurm offre un framework estendibile per la gestione delle risorse e la pianificazione dei processi in un ambiente cluster Linux. Supporta un'ampia gamma di tipi di processi, inclusi processi in parallelo, batch e interattivi. Slurm consente agli utenti di inviare processi tramite un'ampia varietà di interfacce, tra cui un'interfaccia da riga di comando, un'interfaccia basata sul Web e un'API. Slurm è una soluzione popolare che molti dei supercomputer e dei cluster di calcolo più potenti usano ed è disponibile come opzione quando si usa HPC (High Performance Computing) in Microsoft Azure.

Slurm consente di abbinare le risorse di calcolo più appropriate in base a criteri come CPU, GPU e memoria.

Il pianificatore di processi di Slurm esegue le funzioni importanti seguenti:

  • Alloca l'accesso ai nodi di calcolo nei cluster HPC agli utenti in modo che le attività possano essere eseguite
  • Fornisce un framework per l'avvio, l'esecuzione e il monitoraggio del lavoro su un set di nodi allocati
  • Arbitrates contesa per le risorse gestendo una coda di processi in sospeso

Processi di Slurm

Quando si usa Slurm per eseguire un processo in un cluster HPC Linux, vengono eseguiti i passaggi generali seguenti:

  1. Invio di processi: il primo passaggio consiste nel fatto che un utente invia un processo all'utilità di pianificazione Slurm creando uno script di processo che include i requisiti delle risorse e il set di comandi richiesti dal processo.
  2. Allocazione dei processi: la fase successiva prevede l'utilità di pianificazione Slurm che esamina i requisiti delle risorse del processo, ad esempio il numero di nodi, CPU e memoria necessari, nonché qualsiasi altro vincolo, ad esempio partizioni e limiti di tempo. In base a questi requisiti, il pianificatore determina le risorse migliori disponibili da allocare per il processo, considerando l'utilizzo corrente del cluster e gli altri processi in sospeso.
  3. Accodamento processi: l'utilità di pianificazione determina se le risorse richieste sono disponibili. Se le risorse sono immediatamente disponibili, il processo viene eseguito. Se le risorse richieste non sono immediatamente disponibili, il processo viene inserito in una coda. Il pianificatore valuta continuamente i processi in coda e le relative priorità per allocare le risorse non appena diventano disponibili.
  4. Esecuzione del processo: dopo aver allocato le risorse necessarie al processo, il processo Slurm inizia l'esecuzione nei nodi assegnati. Le attività specificate nello script vengono eseguite nei nodi.
  5. Completamento processo: il passaggio finale è il completamento del processo, in cui le risorse di calcolo vengono rilasciate nuovamente al cluster e l'utilità di pianificazione aggiorna lo stato del processo al completamento. L'output del processo e i messaggi di errore che potrebbero essere stati generati durante l'esecuzione del processo vengono salvati in file di output designati.
  6. Contabilità e creazione di report dei processi: Slurm genera dati contabili sui processi completati, inclusi l'utilizzo delle risorse e il tempo di esecuzione.

Comandi Slurm

Si usa un set di utilità della riga di comando per eseguire azioni in un cluster di calcolo gestito tramite Slurm. Ecco alcuni comandi comuni dell'utente Slurm:

Comando Funzione
sacct Questo comando segnala informazioni contabili sui processi e sui passaggi del processo attivi o completati.
salloc Usare questo comando per allocare risorse per un processo in tempo reale. Consente di generare una shell e applicare srun comandi come modo per avviare attività parallele.
sattach Questo comando collega funzionalità standard di input, output e segnale di errore a un passaggio di processo o processo attualmente in esecuzione.
sbatch Usare questo comando per inviare uno script di processo per un'esecuzione successiva. Questi script includono in genere uno o più srun comandi per avviare attività parallele.
scancel Usare questo comando per trasferire un file nei nodi necessari.
scontrol Si tratta di uno strumento amministrativo Slurm che consente di visualizzare e modificare lo stato Slurm. La maggior parte dei scontrol comandi richiede privilegi radice.
sinfo Questo comando visualizza informazioni sulle partizioni e sui nodi gestiti da Slurm.
sprio Usare questo comando per visualizzare informazioni sui componenti che influisce sulla priorità di un processo.
squeue Usare questo comando per visualizzare lo stato dei processi o dei passaggi del processo.
srun Usare questo comando per inviare un processo per l'esecuzione o per attivare i passaggi del processo in tempo reale. È possibile usare srun per specificare i requisiti delle risorse, ad esempio il numero minimo e massimo di nodi, il numero di processori e le caratteristiche del nodo.
sstat Usare questo comando per visualizzare informazioni sulle risorse utilizzate eseguendo processi o passaggi di processo.
strigger Usare questo comando per configurare o visualizzare trigger di eventi, ad esempio cosa fare quando un nodo non riesce o un processo si avvicina a un limite di tempo.
sview Usare questo comando per visualizzare informazioni sullo stato su processi, partizioni e nodi gestiti da Slurm.

Per altre informazioni sui comandi Slurm, vedere la Guida dell'utente di Slurm Quick Start.