Ο SGE αποτελεί έναν scheduler που αναλαμβάνει τη δρομολόγηση των εργασιών που αποστέλλονται στον Πυθαγόρα από χρήστες. Οι εργασίες αυτές αποστέλλονται από τον frontend σε κάποιον (ή κάποιους) από τους υπολογιστικούς κόμβους βάσει διαθεσιμότητας πόρων, γίνεται η εκτέλεσή τους στους κόμβους που δεσμεύτηκαν και στη συνέχεια επιστρέφεται ένα output file και ένα error log.
Προβολή πληροφοριών συστήματος
Πριν την υποβολή κάποιας εργασίας προς εκτέλεση, ο χρήστης μπορεί να δει μια λίστα με τα χαρακτηριστικά όλων των κόμβων μέσω της εντολής qhost. Με την εκτέλεσή της, εμφανίζεται μια λίστα με τα εξής πεδία:
- HOSTNAME: ́Ονομα υπολογιστικού κόμβου.
- ARCH: Αρχιτεκτονική-λειτουργικό.
- NCPU: Πλήθος επεξεργαστών κόμβου.
- LOAD: Φορτίο κόμβου τη στιγμή εκτέλεσης της qhost.
- MEMTOT: Συνολική μνήμη κόμβου.
- MEMUSE: Χρησιμοποιούμενη μνήμη τη στιγμή εκτέλεσης της qhost.
- SWAPTO: Συνολική μνήμη swap.
- SWAPUS: Χρησιμοποιούμενη μνήμη swap.
Περισσότερες πληροφορίες σχετικά με τη χρήση της εντολής qhost παρέχονται μέσω της man qhost.
Προβολή κατάστασης SGE
Μέσω της εντολής qstat ο χρήστης μπορεί να δει τις εργασίες προς εκτέλεση που έχουν αποσταλλεί στον SGE από όλους τους χρήστες. Σε περίπτωση που η ουρά αναμονής είναι άδεια από εργασίες, η εκτέλεση της qstat δεν επιστρέφει κάποιο αποτέλεσμα. Σε αντίθετη περίπτωση θα εμφανιστεί μια λίστα με τα εξής πεδία:
- job-ID: Αναγνωριστικός αριθμός της υποβληθείσας εργασίας.
- prior: Προτεραιότητα εργασίας, δυναμικά μεταβαλλόμενη.
- name: ́Ονομα της υποβληθείσας εργασίας.
- user: ́Ονομα του χρήστη που υπέβαλλε την εργασία.
- state: Κατάσταση της εργασίας.
- (d)eletion
- (E)rror
- (h)old
- (r)unning
- (R)estarted
- (s)uspended
- (S)uspended
- (t)ransfering
- (T)hreshold
- (w)aiting
- submit/start at: Ημερομηνία και ώρα υποβολής της εργασίας.
- queue: Η ουρά στην οποία έχει αποσταλλεί η εργασία, ισχύει για εργασίες στην κατάσταση r ή s/S.
- slots: Το πλήθος των job slots που δεσμεύτηκαν.
- ja-task-ID: Αναγνωριστικός αριθμός του job array που έχει υποβληθεί. Το πεδίο αυτό είναι άδειο όταν έχει υποβληθεί μια μόνο εργασία.
Περισσότερες πληροφορίες σχετικά με τη χρήση της εντολής qstat παρέχονται μέσω της man qstat.
Υποβολή εργασιών στον SGE
Η εντολή qsub αποτελεί τη βασική διεπαφή για την υποβολή εργασιών και χρησιμοποιείται ως εξής:
# qsub (shell script)
Στο preamble του shell script δηλώνονται τα options που αφορούν την εκτέλεση και στη συνέχεια η πλήρης τοποθεσία του εκτελέσιμου και τα input arguments που χρειάζεται για να τρέξει. Για παράδειγμα, αν θέλουμε να τρέξουμε το εκτελέσιμο proc στην τοποθεσία /home/username/code με input arguments 3 και 5, δίνουμε την εντολή:
# qsub prog.qsub
Η απλούστερη μορφή που μπορεί να πάρει το prog.qsub είναι:
#!/bin/bash /home/username/code/proc 3 5
Μπορούν όμως να χρησιμοποιηθούν και επιπλέον επιλογές στο preamble, με τις βασικές να αφορούν τα εξής:
- -N (name) : Το όνομα με το οποίο θα υποβληθεί η εργασία.
- -i (pathname): Η πλήρης τοποθεσία του input stream που ενδέχεται να χρειάζεται το εκτελέσιμο.
- -o (pathname): Η πλήρης τοποθεσία στην οποία θα επιστραφεί το output file με το πέρας της εκτέλεσης.
- -cwd: Χρήση του current working directory. Αυτή η επιλογή επιτρέπει τη χρήση σχετικών αναφορών αντί για absolute pathnames.
- -pe (args): Χρήση παράλληλου περιβάλλοντος, όπως το PVM (parallel virtual machine) ή ORTE (open run time environment).
(Σημείωση Στην παρούσα φάση ο Πυθαγόρας υποστηρίζει μόνο το ORTE ενώ στο μέλλον θα υποστηρίζει και τα περιβάλλοντα PVM και MPICH2.)
Ένα πιο εξειδικευμένο παράδειγμα τέτοιου shell script είναι το εξής:
#!/bin/bash #!/bin/bash # Request for 6 parallel processes # under the parallel environment ORTE. #$ -pe orte 6 # Put stderr in /tmp/foo #$ -e /tmp/foo # Put stdout in /tmp/foo #$ -o /tmp/foo # Use input stream input.txt in /tmp/foo #$ -i /tmp/foo/input.txt # The job is located in the current # working directory. #$ -cwd proc 3 5
Υπόψιν ότι τα options βρίσκονται μετά από #$, ενώ τα σχόλια μετά από #. Εφόσον η εργασία υποβληθεί και εκτελεστεί, το output file και το error log θα αποσταλλούν στις επιλεγμένες τοποθεσίες ή την τοποθεσία από όπου έγινε η υποβολή της εργασίας (αν δεν έχει επιλεχθεί τοποθεσία).
Αν η υποβολή είναι επιτυχής, θα εμφανιστεί το μήνυμα:
Your job xx (”prog.qsub”) has been submitted.
Περισσότερες πληροφορίες σχετικά με τη χρήση της εντολής qsub παρέχονται μέσω της man qsub.
Διαγραφή εργασιών στον SGE
Σε περίπτωση που ο χρήστης επιθυμεί την διαγραφή κάποιας εργασίας που υπέβαλλε, γίνεται χρήση της εντολής:
qdel (job-ID)
Η επιλογή -f για την qdel οδηγεί σε forced deletion της εργασίας και χρησιμοποιείται στην περίπτωση που η απλή qdel δεν λειτούργησε. Σε περίπτωση που ο SGE δεν ανταποκρίνεται, είναι αναγκαία η επικοινωνία με τον διαχειριστή.