Μετάβαση στο περιεχόμενο

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 πέτυχε πολύ καλό CPU efficiency και χαμηλό Memory efficiency άρα είναι κατάλληλο για περαιτέρω παραλληλοποίηση (αξιοποίηση δηλαδή περισσότερων CPU Cores).

Εκτίμηση 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 των παράλληλων εργασιών, μπορείτε να βρείτε παρακάτω: