Efficiency εργασιών
Μέτρηση job efficiency με την εντολή seff
¶
Για παράλληλες (π.χ. MPI) εργασίες προτείνεται πάντα κατόπιν ολοκλήρωσής τους να γίνεται
ελέχγος του CPU (ή/και Memory) efficiency που επιτυγχάνουν. Για το σκοπό αυτό μπορεί
να χρησιμοποιηθεί το seff
utility, δίνοντας ως όρισμα το ID του ολοκληρωμένου job
# seff jobid
Για να δείτε τις εργασίες που έχουν ολοκληρωθεί, για παράδειγμα τις δύο τελευταίες ημέρες, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή:
# sacct -S now-2days
Παράδειγμα χρήσης seff
και επεξήγηση
Στο παρακάτω παράδειγμα βλέπουμε το seff
output για μία εργασία που εκτελέστηκε στο batch
partition
σε 6 CPU Cores (σε ένα node):
# seff 1584940
Job ID: 1584940
Cluster: aristotle
User/Group: pkoro/pkoro
State: COMPLETED (exit code 0)
Nodes: 1
Cores per node: 6
CPU Utilized: 00:35:42
CPU Efficiency: 97.01% of 00:36:48 core-walltime
Job Wall-clock time: 00:06:08
Memory Utilized: 2.12 GB (estimated maximum)
Memory Efficiency: 5.63% of 37.69 GB (6.28 GB/core)
Εκτίμηση job efficiency με την εντολή sinfo
¶
Για να έχετε μία εικόνα για τις εργασίες σας την ίδια στιγμή που εκτελούνται,
μπορείτε να χρησιμοποιήσετε την εντολή sinfo
με την παρακάτω σύνταξη:
# sinfo -N -o "%4N %8O %t" -n <compute node>
Παράδειγμα χρήσης sinfo
και επεξήγηση
Στο παρακάτω παράδειγμα βλέπουμε το sinfo
output για μία εργασία που εκτελέστηκε
στο compute node cn33
δεσμεύοντας 128 CPU cores:
$ sinfo -N -o "%4N %8O %t" -n cn33
NODE CPU_LOAD STATE
cn33 22.85 alloc
CPU_LOAD
να πλησιάζει
τουλάχιστον τον αριθμό των tasks που έχουν δεσμευθεί. Επομένως, η συγκεκριμένη εργασία,
εφόσον το CPU_LOAD
της δεν πλησιάζει στον αριθμό 128, φαίνεται ότι δεν χρησιμοποιεί αποδοτικά τους πόρους της υποδομής.
Πιθανώς, θα πρέπει να ακυρωθεί και να υποβληθεί εκ νέου, μετά την τροποποίηση των παραμέτρων υποβολής της εργασίας ή του κώδικά μας.
Παρακαλούμε σημειώστε ότι το CPU_LOAD
αφορά το σύνολο των εργασιών που εκτελούνται στο ίδιο μηχάνημα.
Επομένως, σε περίπτωση που εκτελούνται και άλλες εργασίες στο ίδιο node, ίσως δεν είναι εύκολο
να εξάγουμε συμπεράσματα με τον αυτόν τον τρόπο. Σε τέτοιες περιπτώσεις, μπορούμε να χρησιμοποιήσουμε
την εντολή seff
αφού ολοκληρωθεί η εργασία, όπως περιγράφεται παραπάνω, ώστε να έχουμε καλύτερη εικόνα
της απόδοσης της εργασίας μας.
Job Scalability¶
Σε κάθε περίπτωση και ειδικότερα σε εργασίες που δεν παρουσιάζουν καλή απόδοση στην χρήση των υπολογιστικών πόρων, θα πρέπει να γίνεται έλεγχος του scaling της εργασίας. Δηλαδή, θα ήταν χρήσιμο να γίνονται δοκιμές 8, 16, 32 κτλ tasks ώστε να επιβεβαιώσουμε ότι ο χρόνος μειώνεται αναλογικά με τον αριθμό των tasks που χρησιμοποιεί η εργασία. Στα production runs, o αριθμός των tasks δεν θα πρέπει να υπερβαίνει τον αριθμό πέρα από τον οποίο δεν υπάρχει αναλογική μείωση του χρόνου εκτέλεσης.
Χρήσιμες πληροφορίες για τις έννοιες του scaling
και του efficiency
των παράλληλων εργασιών,
μπορείτε να βρείτε παρακάτω: