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.

BASH

[yourUsername@login1 ~] sacct -u yourUsername

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.

BASH

[yourUsername@login1 ~] sacct -u yourUsername -l -j 347087

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).

BASH

[yourUsername@login1 ~] sacct -u yourUsername -l -j 347087 | less -S

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.

La riga seguente dice a Slurm che il nostro lavoro deve finire entro 2 minuti:

BASH

#SBATCH -t 00:02:00

Punti Chiave

  • Job script accurati aiutano il sistema di accodamento ad allocare in modo efficiente le risorse condivise.