Usare le risorse in modo efficace
Ultimo aggiornamento il 2026-01-15 | Modifica questa pagina
Panoramica
Domande
- Come posso rivedere i lavori eseguiti in passato?
- Come posso utilizzare queste conoscenze per creare uno script di invio più accurato?
Obiettivi
- Consultare le statistiche.
- 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 nella giornata (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.
Questo 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. 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.
- Dei comandi accurati aiutano il sistema di accodamento ad allocare in modo efficiente le risorse condivise.