wiki:TorqueRun

Version 2 (modified by ypap, 2 years ago) ( diff )

--

Εκτέλεση εφαρμογών και χρονοδρομολόγηση στα clusters του CSLab

Οι εφαρμογές που εκτελούνται στα clusters του CSLab χρονοδρομολογούνται με χρήση του TORQUE/PBS. Ο TORQUE χειρίζεται τους μηχανισμούς χαμηλού επιπέδου που αναφέρονται στην αίτηση για εκτέλεση (submission), στην παρακολούθηση του φόρτου των κόμβων και στην εκτέλεση και καταστροφή των εφαρμογών. Ο MAUI scheduler καθορίζει πού και πότε θα εκτελεστούν οι εφαρμογές βάσει των πληροφοριών που λαμβάνει από τον TORQUE και της πολιτικής που ορίζεται στο configuration. Με τις βασικές εντολές του MAUI μπορεί κανείς να παρακολουθεί την κατάσταση των εφαρμογών που εκτελούνται, ή να τερματίζει την εκτέλεσή τους. Μερικές φορές, όταν δεν είναι εφικτή η επικοινωνία του MAUI με τον TORQUE, μπορεί να χρειάζεται να χρησιμοποιούνται εντολές του TORQUE. Στις σελίδες του TORQUE και του MAUI υπάρχει αναλυτική τεκμηρίωση για τις διαθέσιμες εντολές.

Η αίτηση εκτέλεσης μιας εφαρμογής γίνεται με την εντολή του TORQUE qsub . Η εφαρμογή πρέπει να βρίσκεται μέσα σε αρχείο δέσμης ενεργειών (script) -- o TORQUE δε δέχεται εντολές ως απευθείας ορίσματα.

Εκτέλεση σειριακών εφαρμογών

Η αίτηση για εκτέλεση μιας σειριακής εφαρμογής γίνεται με την εντολή:

qsub αρχείο_εφαρμογής

Αυτή η εντολή καταθέτει τις εντολές που βρίσκονται μέσα στο αρχείο_εφαρμογής σε έναν κόμβο. Το αρχείο αρχείο_εφαρμογής μπορεί να είναι απλά:

#!/bin/bash

efarmogi < arxeio_eisodou > arxeio_eksodou

Η παραπάνω εντολή θεωρεί πως η το εκτελέσιμο efarmogi βρίσκεται στο φάκελο $HOME του χρήστη που την εκτελεί. Αν δεν ισχύει η παραπάνω υπόθεση, θα πρέπει πριν την εκτέλεση να προσθέσουμε cd path/to/efarmogi. Πχ:

#!/bin/bash

cd $HOME/src/efarmogi/
efarmogi < arxeio_eisodou > arxeio_eksodou

Ο κάθε κόμβος, που περιέχει συγκεκριμένο αριθμό επεξεργαστών, μπορεί να εκτελέσει ισάριθμες σειριακές εφαρμογές, δεδομένης της διαθεσιμότητας μνήμης. Για να αποφευχθούν σφάλματα λόγω έλλειψης μνήμης, είναι επιθυμητό να καθορίζουμε εκ των προτέρων την ανάγκη της εφαρμογής για μνήμη. Π.χ. η παρακάτω εντολή:

qsub -l vmem=3gb αρχείο_εφαρμογής

ζητά 3GB μνήμη για τις εντολές του αρχείο_εφαρμογής και ο MAUI θα επιτρέψει την εκτέλεση 2 εφαρμογών σε έναν κόμβο που έχει 8GB μνήμης.

Εκτέλεση παράλληλων εφαρμογών

Για την εκτέλεση εφαρμογών σε πολλαπλούς κόμβους, χρειάζεται η εκτέλεση της εντολής qsub με τις ακόλουθες παραμέτρους:

qsub -l nodes=XX:ppn=YY αρχείο_εφαρμογής

Με το nodes=XX αιτούμαστε XX κόμβους ενώ με το ppn=ΥΥ αιτούμαστε ο κάθε κόμβος να έχει ΥΥ πυρήνες.

Καθορισμός των πόρων της εφαρμογής

Με την αίτηση για εκτέλεση της εφαρμογής, μπορούμε να καθορίσουμε το συνολικό χρόνο εκτέλεσης, τον αριθμό των κόμβων, τον όγκο της μνήμης που θα πρέπει να εχει κάθε κόμβος, ή οποιαδήποτε παράμετρο αναφέρεται στο man page του pbs_resources. Αν δεν τα καθορίσουμε, τα προεπιλεγμένα είναι 1 κόμβος για 5 ώρες. Οι μη προεπιλεγμένες παράμετροι καθορίζονται χρησιμοποιώντας την επιλογή -l της εντολής qsub ή με το #PBS directive στο αρχείο_εφαρμογής. Για παράδειγμα:

Η εντολή

qsub -l walltime=10:00:00,vmem=8gb αρχείο_εφαρμογής

θα αιτηθεί έναν επεξεργαστή σε έναν κόμβο με 8GB ελεύθερης μνήμης για εκτέλεση του αρχείο_εφαρμογής για 10 ώρες.

Η εντολή αυτή ισοδυναμεί με την

qsub αρχείο_εφαρμογής

αν το αρχείο_εφαρμογής περιείχε το κατάλληλο PBS directive όπως παρακάτω:

#!/bin/bash

#PBS -l walltime=10:00:00,vmem=8gb

cd $HOME/src/efarmogi/
efarmogi < arxeio_eisodou > arxeio_eksodou

ΠΡΟΣΟΧΗ τα directives που δίνουμε στη γραμμή εντολών (με την qsub -l υπερισχύουν αυτών στο αρχείο_εφαρμογής

Παρακολούθηση της εκτέλεσης

Η παρακολούθηση των εργασιών που βρίσκονται στην ουρά γίνεται είτε με τον TORQUE είτε με τον MAUI. Η κατάσταση μιας συγκεκριμένης εργασίας εμφανίζεται είτε με την εντολή qstat είτε με την checkjob και το jobid (που το επιστρέφει η qsub) . Πχ:

qstat 4278

Για την εκτίμηση του χρόνου εκκίνησης της εκτέλεσης μιας εργασίας που έχουμε καταθέσει για εκτέλεση χρησιμοποιούμε την εντολή showstart με παράμετρο το jobid.

Διαγραφή εργασιών

Για να διαγράψουμε εργασίες από την ουρά του χρονοδρομολογητή χρησιμοποιούμε την qdel ή την canceljob.

Διαδραστικές εργασίες

Για να εκτελέσουμε "με το χέρι" εντολές σε έναν κόμβο εκτελούμε την εντολή qsub με την παράμετρο -I . Πχ:

user@scirouter:~$ qsub -I
qsub: waiting for job 5001.localhost to start
qsub: job 5001.localhost ready

user@broady3:~$ uname -a
Linux broady3 2.6.38 #4 SMP Tue Mar 15 13:37:18 EET 2011 x86\_64 GNU/Linux
user@broady3:~$ logout

qsub: job 5001.localhost completed
user@scirouter:~$ 

Παράδειγμα αίτησης για εκτέλεση εργασίας

login στο entry point ( scirouter )

για να δούμε ποια nodes είναι online για να εκτελέσουν εφαρμογές από την ουρά: user@scirouter:~$ queue -a ή user@scirouter queue -d <ουρά εκτέλεσης> όπου <ουρά εκτέλεσης> μία από τις ουρές clones, termis, serial (η ίδια πληροφορία παρέχεται και με την εντολή pbsnodelist, πιο αργά και με χειρότερο format)

user@scirouter:~$ cat << EOF > some\_script.sh
#!/bin/bash -l

#πόσα nodes να κρατήσει με πόσα cores / node
#PBS -l nodes=1:ppn=1

#πού να βάλει το output;
#PBS -N test_exception

#ας δημιουργήσει ένα αρχείο για error/output
#PBS -j oe

#η εφαρμογή μας
uname -a 
uptime

user@scirouter:~$ qsub some_script.sh

στο test_exception.TorquePID θα έχουμε την έξοδο της εφαρμογής μας.

Note: See TracWiki for help on using the wiki.