Usare le risorse in modo efficace
Ultimo aggiornamento il 2025-08-04 | Modifica questa pagina
Panoramica
Domande
- Come posso rivedere i lavori passati?
- Come posso utilizzare queste conoscenze per creare uno script di invio più accurato?
Obiettivi
- Consultare le statistiche dei lavori.
- Fare richieste di risorse più accurate negli script di lavoro in base ai dati che descrivono le prestazioni passate.
Abbiamo toccato tutte le competenze necessarie per interagire con un cluster HPC: accesso tramite SSH, caricamento di moduli software, invio di lavori paralleli e ricerca dell’output. Ora impariamo a stimare l’utilizzo delle risorse e perché potrebbe essere importante.
Stima delle risorse necessarie con lo scheduler
Anche se prima abbiamo affrontato la richiesta di risorse allo scheduler con il codice π, come facciamo a sapere di che tipo di risorse avrà bisogno il software e la sua richiesta per ciascuna di esse? In generale, a meno che la documentazione del software o le testimonianze degli utenti non forniscano qualche idea, non sapremo di quanta memoria o tempo di calcolo avrà bisogno un programma.
Leggi la documentazione
La maggior parte delle strutture HPC conserva la documentazione in forma di wiki, sito web o documento inviato al momento della registrazione di un account. Date un’occhiata a queste risorse e cercate il software che intendete usare: qualcuno potrebbe aver scritto una guida per ottenere il massimo da esso.
Un modo comodo per capire quali risorse sono necessarie perché un
lavoro venga eseguito con successo è quello di inviare un lavoro di
prova e poi chiedere allo scheduler il suo impatto usando
sacct -u yourUsername
. Si può usare questa conoscenza per
impostare il lavoro successivo con una stima più precisa del suo carico
sul sistema. Una buona regola generale è quella di chiedere allo
schedulatore dal 20% al 30% di tempo e memoria in più rispetto a quanto
si prevede che il lavoro richieda. In questo modo si garantisce che
piccole fluttuazioni nel tempo di esecuzione o nell’uso della memoria
non comportino l’annullamento del lavoro da parte dello schedulatore.
Tenete presente che se chiedete troppo, il vostro lavoro potrebbe non
essere eseguito anche se le risorse disponibili sono sufficienti, perché
lo schedulatore aspetterà che i lavori degli altri finiscano e liberino
le risorse necessarie per soddisfare la vostra richiesta.
Statistiche
Poiché abbiamo già inviato amdahl
per l’esecuzione sul
cluster, possiamo interrogare lo scheduler per vedere quanto tempo ha
impiegato il nostro lavoro e quali risorse sono state utilizzate.
Useremo sacct -u yourUsername
per ottenere le statistiche
su parallel-job.sh
.
OUTPUT
JobID JobName Partition Account AllocCPUS State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
7 file.sh cpubase_b+ def-spons+ 1 COMPLETED 0:0
7.batch batch def-spons+ 1 COMPLETED 0:0
7.extern extern def-spons+ 1 COMPLETED 0:0
8 file.sh cpubase_b+ def-spons+ 1 COMPLETED 0:0
8.batch batch def-spons+ 1 COMPLETED 0:0
8.extern extern def-spons+ 1 COMPLETED 0:0
9 example-j+ cpubase_b+ def-spons+ 1 COMPLETED 0:0
9.batch batch def-spons+ 1 COMPLETED 0:0
9.extern extern def-spons+ 1 COMPLETED 0:0
Questo mostra tutti i lavori eseguiti oggi (si noti che ci sono più voci per ogni lavoro). Per ottenere informazioni su un lavoro specifico (ad esempio, 347087), si cambia leggermente il comando.
mostrerà molte informazioni; in effetti, ogni singola informazione
raccolta sul lavoro dallo schedulatore apparirà qui. Può essere utile
reindirizzare queste informazioni a less
per facilitarne la
visualizzazione (usare i tasti freccia sinistra e destra per scorrere i
campi).
Discussione
Questa vista può aiutare a confrontare la quantità di tempo richiesta ed effettivamente utilizzata, la durata della permanenza nella coda prima del lancio e l’impronta di memoria sui nodi di calcolo.
Quanto sono state accurate le nostre stime?
Miglioramento delle richieste di risorse
Dalla cronologia dei lavori, vediamo che i lavori amdahl
hanno terminato l’esecuzione in pochi minuti, una volta spediti. La
stima del tempo fornita nello script del lavoro era troppo lunga! Questo
rende più difficile per il sistema di accodamento stimare con precisione
quando le risorse si libereranno per altri lavori. In pratica, questo
significa che il sistema di accodamento aspetta a inviare il nostro
lavoro amdahl
fino a quando non si apre l’intera fascia
oraria richiesta, invece di “intrufolarsi” in una finestra molto più
breve in cui il lavoro potrebbe effettivamente terminare. Specificando
con maggiore precisione il tempo di esecuzione previsto nello script di
invio, si può contribuire ad alleviare la congestione del cluster e a
far sì che il lavoro venga inviato prima.
Restringere la stima del tempo
Modificare parallel_job.sh
per impostare una stima
migliore del tempo. Quanto ci si può avvicinare?
Suggerimento: usare -t
.
Punti Chiave
- Job script accurati aiutano il sistema di accodamento ad allocare in modo efficiente le risorse condivise.