Changes between Version 1 and Version 2 of TorqueRun


Ignore:
Timestamp:
10/05/22 16:08:05 (2 years ago)
Author:
ypap
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TorqueRun

    v1 v2  
    1 Just A place holder here
     1= Εκτέλεση εφαρμογών και χρονοδρομολόγηση στα clusters του CSLab =
     2
     3Οι εφαρμογές που εκτελούνται στα clusters του CSLab χρονοδρομολογούνται με χρήση του TORQUE/PBS. Ο TORQUE χειρίζεται τους μηχανισμούς χαμηλού επιπέδου που αναφέρονται στην αίτηση για εκτέλεση (submission), στην παρακολούθηση του φόρτου των κόμβων και στην εκτέλεση και καταστροφή των εφαρμογών. Ο MAUI scheduler καθορίζει **πού** και **πότε** θα εκτελεστούν οι εφαρμογές βάσει των πληροφοριών που λαμβάνει από τον TORQUE και της πολιτικής που ορίζεται στο configuration. Με τις βασικές εντολές του MAUI μπορεί κανείς να παρακολουθεί την κατάσταση των εφαρμογών που εκτελούνται, ή να τερματίζει την εκτέλεσή τους. Μερικές φορές, όταν δεν είναι εφικτή η επικοινωνία του MAUI με τον TORQUE, μπορεί να χρειάζεται να χρησιμοποιούνται εντολές του TORQUE. Στις σελίδες του TORQUE και του MAUI υπάρχει αναλυτική τεκμηρίωση για τις διαθέσιμες εντολές.
     4
     5Η αίτηση εκτέλεσης μιας εφαρμογής γίνεται με την εντολή του TORQUE qsub . Η εφαρμογή πρέπει να βρίσκεται μέσα σε αρχείο δέσμης ενεργειών (script) -- o TORQUE δε δέχεται εντολές ως απευθείας ορίσματα.
     6
     7=== Εκτέλεση σειριακών εφαρμογών ===
     8
     9Η αίτηση για εκτέλεση μιας σειριακής εφαρμογής γίνεται με την εντολή:
     10
     11`qsub αρχείο_εφαρμογής`
     12
     13Αυτή η εντολή καταθέτει τις εντολές που βρίσκονται μέσα στο `αρχείο_εφαρμογής` σε έναν κόμβο. Το αρχείο `αρχείο_εφαρμογής` μπορεί να είναι απλά:
     14{{{
     15#!/bin/bash
     16
     17efarmogi < arxeio_eisodou > arxeio_eksodou
     18}}}
     19Η παραπάνω εντολή θεωρεί πως η το εκτελέσιμο efarmogi βρίσκεται στο φάκελο `$HOME` του χρήστη που την εκτελεί. Αν δεν ισχύει η παραπάνω υπόθεση, θα πρέπει πριν την εκτέλεση να προσθέσουμε `cd path/to/efarmogi`. Πχ:
     20{{{
     21#!/bin/bash
     22
     23cd $HOME/src/efarmogi/
     24efarmogi < arxeio_eisodou > arxeio_eksodou
     25}}}
     26Ο κάθε κόμβος, που περιέχει συγκεκριμένο αριθμό επεξεργαστών, μπορεί να εκτελέσει ισάριθμες σειριακές εφαρμογές, δεδομένης της διαθεσιμότητας μνήμης. Για να αποφευχθούν σφάλματα λόγω έλλειψης μνήμης, είναι επιθυμητό να καθορίζουμε εκ των προτέρων την ανάγκη της εφαρμογής για μνήμη. Π.χ. η παρακάτω εντολή:
     27
     28`qsub -l vmem=3gb αρχείο_εφαρμογής`
     29
     30ζητά 3GB μνήμη για τις εντολές του `αρχείο_εφαρμογής` και ο MAUI θα επιτρέψει την εκτέλεση 2 εφαρμογών σε έναν κόμβο που έχει 8GB μνήμης.
     31
     32=== Εκτέλεση παράλληλων εφαρμογών ===
     33
     34Για την εκτέλεση εφαρμογών σε πολλαπλούς κόμβους, χρειάζεται η εκτέλεση της εντολής qsub με τις ακόλουθες παραμέτρους:
     35
     36`qsub -l nodes=XX:ppn=YY αρχείο_εφαρμογής`
     37
     38Με το `nodes=XX` αιτούμαστε `XX` κόμβους ενώ με το `ppn=ΥΥ` αιτούμαστε ο κάθε κόμβος να έχει `ΥΥ` πυρήνες.
     39
     40=== Καθορισμός των πόρων της εφαρμογής ===
     41
     42Με την αίτηση για εκτέλεση της εφαρμογής, μπορούμε να καθορίσουμε το συνολικό χρόνο εκτέλεσης, τον αριθμό των κόμβων, τον όγκο της μνήμης που θα πρέπει να εχει κάθε κόμβος, ή οποιαδήποτε παράμετρο αναφέρεται στο man page του `pbs_resources`. Αν δεν τα καθορίσουμε, τα προεπιλεγμένα είναι 1 κόμβος για 5 ώρες. Οι μη προεπιλεγμένες παράμετροι καθορίζονται χρησιμοποιώντας την επιλογή `-l` της εντολής `qsub` ή με το `#PBS directive` στο `αρχείο_εφαρμογής`. Για παράδειγμα:
     43
     44Η εντολή
     45
     46`qsub -l walltime=10:00:00,vmem=8gb αρχείο_εφαρμογής`
     47
     48θα αιτηθεί έναν επεξεργαστή σε έναν κόμβο με 8GB ελεύθερης μνήμης για εκτέλεση του `αρχείο_εφαρμογής` για 10 ώρες.
     49
     50Η εντολή αυτή ισοδυναμεί με την
     51
     52`qsub αρχείο_εφαρμογής`
     53
     54αν το `αρχείο_εφαρμογής` περιείχε το κατάλληλο `PBS directive` όπως παρακάτω:
     55{{{
     56#!/bin/bash
     57
     58#PBS -l walltime=10:00:00,vmem=8gb
     59
     60cd $HOME/src/efarmogi/
     61efarmogi < arxeio_eisodou > arxeio_eksodou
     62}}}
     63**ΠΡΟΣΟΧΗ** τα directives που δίνουμε στη γραμμή εντολών (με την qsub -l υπερισχύουν αυτών στο `αρχείο_εφαρμογής`
     64
     65== Παρακολούθηση της εκτέλεσης ==
     66
     67Η παρακολούθηση των εργασιών που βρίσκονται στην ουρά γίνεται είτε με τον TORQUE είτε με τον MAUI. Η κατάσταση μιας συγκεκριμένης εργασίας εμφανίζεται είτε με την εντολή qstat είτε με την checkjob και το jobid (που το επιστρέφει η `qsub`) . Πχ:
     68
     69`qstat 4278`
     70
     71Για την εκτίμηση του χρόνου εκκίνησης της εκτέλεσης μιας εργασίας που έχουμε καταθέσει για εκτέλεση χρησιμοποιούμε την εντολή `showstart` με παράμετρο το `jobid`.
     72
     73== Διαγραφή εργασιών ==
     74
     75Για να διαγράψουμε εργασίες από την ουρά του χρονοδρομολογητή χρησιμοποιούμε την `qdel` ή την `canceljob`.
     76
     77== Διαδραστικές εργασίες ==
     78
     79Για να εκτελέσουμε "με το χέρι" εντολές σε έναν κόμβο εκτελούμε την εντολή `qsub` με την παράμετρο `-I` . Πχ:
     80{{{
     81user@scirouter:~$ qsub -I
     82qsub: waiting for job 5001.localhost to start
     83qsub: job 5001.localhost ready
     84
     85user@broady3:~$ uname -a
     86Linux broady3 2.6.38 #4 SMP Tue Mar 15 13:37:18 EET 2011 x86\_64 GNU/Linux
     87user@broady3:~$ logout
     88
     89qsub: job 5001.localhost completed
     90user@scirouter:~$
     91}}}
     92=== Παράδειγμα αίτησης για εκτέλεση εργασίας ===
     93
     94login στο entry point ( scirouter )
     95
     96για να δούμε ποια nodes είναι online για να εκτελέσουν εφαρμογές από την ουρά:
     97`user@scirouter:~$ queue -a` ή `user@scirouter queue -d <ουρά εκτέλεσης>`
     98όπου `<ουρά εκτέλεσης>` μία από τις ουρές `clones, termis, serial`
     99(η ίδια πληροφορία παρέχεται και με την εντολή `pbsnodelist`, πιο αργά και με χειρότερο format)
     100
     101{{{
     102user@scirouter:~$ cat << EOF > some\_script.sh
     103#!/bin/bash -l
     104
     105#πόσα nodes να κρατήσει με πόσα cores / node
     106#PBS -l nodes=1:ppn=1
     107
     108#πού να βάλει το output;
     109#PBS -N test_exception
     110
     111#ας δημιουργήσει ένα αρχείο για error/output
     112#PBS -j oe
     113
     114#η εφαρμογή μας
     115uname -a
     116uptime
     117
     118user@scirouter:~$ qsub some_script.sh
     119}}}
     120στο `test_exception.TorquePID` θα έχουμε την έξοδο της εφαρμογής μας.