Χρονοπρογραµµατισµός ιεργασιών (Process Scheduling) Περίληψη Χρονοπρογραµµατισµός διεργασιών και κριτήρια Κατηγορίες χρονοπρογραµµατιστών λγόριθµοι χρονοπρογραµµατισµού
Χρονοπρογραµµατισµός Η πολιτική µε την οποία το ΛΣ αποφασίζει ποια διεργασία θα εκτελεστείς την επόµενη χρονική στιγµή Οι απαιτήσεις από τον χρονοπρογραµµατιστή διαφέρουν σύµφωνα µε την εφαρµογή Σε παλαιότερα συστήµατα τύπου batch η δουλεία του χρονοπρογραµµατιστή ήταν σχετικά απλή Σε συστήµατα µε πολλαπλούς χρήστες (time sharing or multi-user) η δουλεία του χρονοπρογραµµατιστή είναι πιο δύσκολη Ποια η δουλεία του χρονοπρογραµµατιστή σε έναν προσωπικό υπολογιστή; Στην περίπτωση των δικτυωµένων εξυπηρετητών ο χρονοπρογραµµατιστής παίζει µεγάλο ρόλο στην απόδοση του συστήµατος Interactive and background processes. Χρονοπρογραµµατισµός Κόστος αλλαγής διεργασίας ποθήκευσης της κατάστασης µιας διεργασίας πιλογή της επόµενης, Φόρτωση της κατάστασης της επόµενης και παναδραστηριοποίηση Πότε θα πάρει απόφαση ο χρονοπρογραµµατιστής; Όταν µια διεργασία δηµιουργήσει ένα παιδί (child process). Όταν µια διεργασία τελειώσει τότε ο χρονοπρογραµµατιστής θα επιλέξει την επόµενη διεργασία Όταν µια διεργασία µπλοκάρει (/ ή σηµατοφόρος) Όταν συµβεί κάποιο σήµα διακοπής (interrupt) Σήµα διακοπής από / Σήµα διακοπής από χρονοµέτρη (timer)
Χρονοπρογραµµατισµός Preemptive vs. non-preemptive Preemptive: µια διεργασία µπορεί να διακοπεί και ο επεξεργαστής να δοθεί σε µια νέα διεργασία. Non-preemptive: µια διεργασία δεν διακόπτεται. άν δεν υπάρχει ρολόι τότε non-preemptive είναι η µόνη επιλογή εκτός εάν υπάρχουν διεργασίες µε διαφορετικές προτεραιότητες. Στόχοι Χρονοπρογραµµατιστή υτοί εξαρτώνται από το περιβάλλον της εφαρµογής Σε όλα τα συστήµατα ικαιοσύνη Όλες οι διεργασίες παίρνουν ένα «δίκαιο» µερίδιο από την υπολογιστική δυνατότητα του επεξεργαστή φαρµογή της πολιτικής Ισοζυγισµός Όλα τα µέρη του υπολογιστή πρέπει να χρησιµοποιούνται
Στόχοι Χρονοπρογραµµατιστή Συστήµατα τύπου batch ιεκπεραιωτική ικανότητα (throughput) Πόσες διεργασίες τελειώνουν σε κάθε χρονική περίοδο (π.χ., κάθε ώρα). Χρόνος ολοκλήρωσης ή χρόνος στο σύστηµα (turnaround time) Ο χρόνος από τη στιγµή που κατατίθεται η διεργασία µέχρι τη στιγµή διεκπεραίωσης. Συµπεριλαµβάνει το χρόνο αναµονής και επεξεργασίας. Χρήση του επεξεργαστή (CPU utilization) Ποσοστό του χρόνου κατά το οποίο ο επεξεργαστής είναι απασχοληµένος. Στόχοι Χρονοπρογραµµατιστή ιαδραστικά Συστήµατα (Interactive) Χρόνος απόκρισης Χρόνος από τη στιγµή που θα υπάρξει κάποια εντολή µέχρις ότου εκτελεστεί ναλογικότητα (proportionality) πόκριση του συστήµατος είναι σύµφωνα µε την αντίληψη του χρήστη. Μας ενδιαφέρει το ποσοστό χρήσης του επεξεργαστή; Συστήµατα Πραγµατικού Χρόνου (real-time) Οι διεργασίες πρέπει να τελειώνουν µέσα στα δεδοµένα χρονικά πλαίσια (deadlines) Η απόκριση του συστήµατος πρέπει να είναι προβλέψιµη (predictable)
Στόχοι Χρονοπρογραµµατιστή Οι απαιτήσεις πολλές φορές είναι αντιφατικές λαχιστοποίηση του χρόνου ολοκλήρωσης (turnaround) δεν σηµαίνει και µεγιστοποίηση της διεκπεραιωτικής ικανότητας του συστήµατος Υποθέστε ένα σύστηµα µε πολλές σύντοµες και µεγάλες διεργασίες Μεγιστοποίηση ιεκπεραιωτικής ικανότητας συνεπάγεται εκτέλεση όλων των σύντοµων διεργασιών πρώτα που κατά συνέπεια µεγαλώνει το χρόνο ολοκλήρωσης των µεγάλων διεργασιών. Τύποι Χρονοπρογραµµατιστών Μακροπρόθεσµος (admission scheduler) Πόσες και ποιες διεργασίες θα εκτελεσθούν πηρεάζει το επίπεδο του πολυπρογραµµατισµού Μεσοπρόθεσµος (memory scheduler) Πόσες και ποιες διεργασίες θα φορτωθούν στη κύρια µνήµη πηρεάζει το επίπεδο του πολυπρογραµµατισµού ραχυπρόθεσµος (dispatcher or CPU scheduler) Πια διεργασία θα εκτελεστεί αµέσως µετά. Χρονοπρογραµµατισµός συσκευών / 5
Τύποι Χρονοπρογραµµατιστών Κριτήρια Πόσο χρόνος πέρασε από την στιγµή που µια διεργασία µπήκε ή βγήκε από την επεξεργαστή Πόσος χρόνος του επεξεργαστή κατανεµήθηκε πρόσφατα στη κάθε διεργασία Πόσο µεγάλη είναι η διεργασία Πόσο σηµαντική είναι η διεργασία (priority).
Πολιτική FIFO First-In-First-Out ή First Come First Serve Ο χρονοπρογραµµατιστής επιλέγει την διεργασία που ήταν στην ουρά τον περισσότερο χρόνο και την τρέχει µέχρι να τελειώσει. Πλεονεκτήµατα ίναι απλή Καµιά διεργασία δεν υποφέρει από παρατεταµένη στέρηση Μειονεκτήµατα Ο εξυπηρετητής µπορεί να µείνει αχρησιµοποίητος ενώ εκτελούνται εντολές / εν παρουσιάζει καλή απόκριση Μια «µικρή» διεργασία µπορεί να περιµένει πολλή ώρα εάν φτάσει ακριβώς µετά από µια µεγάλη διεργασία Όταν ο χρόνος εκτέλεσης των διεργασιών παρουσιάζει µεγάλη διασπορά (variance) τότε ο χρόνος απόκρισης µπορεί να είναι µεγάλος Παράδειγµα Πολιτικής FIFO ιερ. Άφ. 0 Eπ. 5 ιερ. ΧΟ 7 9 ΧΟ/π. 7/ 9/ /5 Μέσος χρόνος στο σύστηµα =8. Μέσος ΧΟ/π. =.5 8 A 5 0 5 0 7
Πολιτική Round-Robin Ο χρονοπρογραµµατιστής επιλέγει ένα διάστηµα q και εκτελεί κάθε διεργασία για q χρονικές µονάδες και στη συνέχεια εναλλάσσει διεργασία. Πλεονεκτήµατα ίναι απλή ίναι δίκαιη Καµιά διεργασία δεν υποφέρει από παρατεταµένη στέρηση Παρουσιάζει καλή απόκριση για µικρές διεργασίες (µικρές διεργασίες δεν περιµένουν πολύ πίσω από µεγάλες διεργασίες) Μειονεκτήµατα Πιθανόν να έχει µειωµένη διεκπεραιωτική ικανότητα εάν το q είναι πολύ µικρό. ίνει προτεραιότητα στις διεργασίας µε περισσότερους υπολογισµούς παρά σε διεργασίες µε / ιεργασίες µε πολλές λειτουργίες / µπορεί να µην εκµεταλλεύονται ολόκληρο το q και µετά θα «χάνουν» τη σειρά τους Παράδειγµα Πολιτικής Round-Robin (q=) ιερ. Άφ. 0 Eπ. 5 ιερ. ΧΟ ΧΟ/π. / / / /5 Μέσος χρόνος στο σύστηµα =0.8 Μέσος ΧΟ/π. =.7 8 7 7/ A A 5 0 5 0 8
Παράδειγµα Πολιτικής Round-Robin (q=) ιερ. Άφ. 0 Eπ. 5 ιερ. ΧΟ 5 7 ΧΟ/π. 5/ 7/ /5 Μέσος χρόνος στο σύστηµα =0.0 Μέσος ΧΟ/π. =.7 8 / A 5 0 5 0 Πολιτική Shortest Process Next (SPN) Ο χρονοπρογραµµατιστής επιλέγει την πιο µικρή διεργασία που περιµένει στην ουρά την οποία εκτελεί µέχρι το τέλος. Πλεονεκτήµατα Έχει αυξηµένη διεκπεραιωτική ικανότητα Πολύ καλή απόδοση (απόκριση) για µικρές διεργασίες Μειονεκτήµατα Μεγάλες διεργασίες µπορούν να υποφέρουν από παρατεταµένη στέρηση ίναι γενικά δύσκολο να υπολογίσουµε το χρόνο που χρειάζεται η κάθε διεργασία 9
Παράδειγµα Πολιτικής Shortest Process Next ιερ. Άφ. 0 8 Eπ. 5 ιερ. ΧΟ 7 ΧΟ/π. 7/ / /5 / Μέσος χρόνος στο σύστηµα =7. Μέσος ΧΟ/π. =.8 A 5 0 5 0 Υπολογισµός του Χρόνου κτέλεσης µιας ιεργασίας Υπολογίζουµε το χρόνο εκτέλεσης σύµφωνα µε το χρόνο εκτέλεσης της διεργασίας στο παρελθόν. T i : ο χρόνος εκτέλεσης της διεργασίας την φορά i (µέτρηση). S i : ο υπολογισµένος (προβλεπόµενος) χρόνος για την εκτέλεση i. Μέσος όρος S n+ κθετικός µέσος όρος n n = Ti Sn+ = T n n + Sn i= n n S = αt + + ( α ) S n n n 0
Πολιτική Shortest Remaining Time (SRT) Ο χρονοπρογραµµατιστής επιλέγει την διεργασία που της έχει µείνει ο λιγότερος χρόνος µέχρι να τελειώσει. Σε περίπτωση που φτάσει µικρότερη διεργασία, τότε την εναλλάσσει µε αυτήν που τρέχει. Πλεονεκτήµατα Έχει αυξηµένη διεκπεραιωτική ικανότητα Πολύ καλή απόδοση (απόκριση) για µικρές διεργασίες Σε σύγκριση µε την SPN, δίνει αµέσως προτεραιότητα στις µικρές διεργασίες Μειονεκτήµατα Μεγάλες διεργασίες µπορούν να υποφέρουν από παρατεταµένη στέρηση ίναι γενικά δύσκολο να υπολογίσουµε το χρόνο που χρειάζεται η κάθε διεργασία. πίσης πρέπει να κρατούµε στοιχεία για το χρόνο που υπολείπεται η κάθε διεργασία. Παράδειγµα Πολιτικής Shortest Remaining Time (SRT) ιερ. Άφ. 0 Eπ. 5 ιερ. ΧΟ ΧΟ/π. / /5 Μέσος χρόνος στο σύστηµα =7. Μέσος ΧΟ/π. =.59 8 AA 5 0 5 0
Πολιτική Highest Response Ration Next (HRRN) Ορίζουµε W i : ο χρόνος που πέρασε στην ουρά η διεργασία i. S i : ο υπολογισµένος χρόνος για την εκτέλεση της διεργασίας i. Wi + Si Ri = S i Ο χρονοπρογραµµατιστής επιλέγει την διεργασία µε το µεγαλύτερο R i και την τρέχει µέχρι το τέλος. Πλεονεκτήµατα Έχει αυξηµένη διεκπεραιωτική ικανότητα Πολύ καλή απόδοση (απόκριση) Μεγάλες διεργασίες δεν µπορούν να υποφέρουν από παρατεταµένη στέρηση Μειονεκτήµατα ίναι γενικά δύσκολο να υπολογίσουµε το χρόνο που χρειάζεται η κάθε διεργασία. Σε κάθε βήµα πρέπει να υπολογίζουµε τα R i για όλες τις διεργασίες Παράδειγµα Πολιτικής Highest Response Ratio Next ιερ. Άφ. 0 8 Eπ. 5 ιερ. ΧΟ 7 9 7 ΧΟ/π. 7/ 9/ /5 7/ Μέσος χρόνος στο σύστηµα =8.0 Μέσος ΧΟ/π. =. A 5 0 5 0
Πολιτικές µε Κάποιας Μορφής νάδραση Σκεπτικό: Πολλές φορές είναι δύσκολο να υπολογιστεί ο χρόνος επεξεργασίας που χρειάζεται µια διεργασία. Οπόταν ορίζουµε µια διαδικασία κατά την οποία µεγάλες διεργασίες θα καθυστερούν περισσότερο απ ότι οι µικρές. Ο χρονοπρογραµµατιστής επιλέγει ένα διάστηµα q και εκτελεί κάθε διεργασία για q χρονικές µονάδες και στη συνέχεια εναλλάσσει διεργασία. Σε αντίθεση µε τη πολιτική Round-Robin επιλέγει την διεργασία που µέχρι τώρα είχε τη λιγότερη ώρα στον επεξεργαστή. Πλεονεκτήµατα ίνει προτεραιότητα σε διεργασίες µε / εν χρειάζεται εκτίµηση του χρόνου εκτέλεσης κάθε διεργασίας Μειονεκτήµατα Πιθανόν να έχει µειωµένη διεκπεραιωτική ικανότητα εάν το q είναι πολύ µικρό. Μεγάλες διεργασίες κινδυνεύουν µε παρατεταµένη στέρηση. Παράδειγµα Πολιτικής Με νάδραση (q=) ιερ. Άφ. 0 Eπ. 5 ιερ. ΧΟ 8 ΧΟ/π. / /5 Μέσος χρόνος στο σύστηµα =. Μέσος ΧΟ/π. =.5 8 AA A 5 0 5 0
Άλλες Μετρικές πόδοσης Χρήση (utilization) του επεξεργαστή Σε όλα τα παραδείγµατα η χρήση του επεξεργαστή είναι 00% Σε γενικές γραµµές είναι επιθυµητό ένα υψηλό ποσοστό χρήσης αλλά το 00% είναι «επικίνδυνο». ιεκπεραιωτική ικανότητα (throughput) Σε όλα τα παραδείγµατα η διεκπεραιωτική ικανότητα ήταν 5 διεργασίες στις 0 χρονικές µονάδες Όλα τα παραδείγµατα αγνοούσαν δύο πτυχές του προβλήµατος του χρονοπρογραµµατισµού Το κόστος εναλλαγής διεργασιών ιεργασίες µε εντολές / Χρονοπρογραµµατισµός µε Προτεραιότητες Οι διεργασίες µπορεί να κατανεµηθούν σε διάφορες ουρές οι οποίες έχουν διαφορετικές προτεραιότητες. k k+ CPU Παραδείγµατα Ο επεξεργαστής δεν παίρνει ποτέ διεργασίες από την ουρά k+ εάν υπάρχουν διεργασίες στη k. Preemptive or non-preemptive Generalized Processor Sharing Οι προτεραιότητα κάθε διεργασίας µπορεί να υπολογίζεται δυναµικά ανάλογα µε τους στόχους του συστήµατος Π.χ., µια διεργασία που επιστρέφει από / εντολές µπορεί να πάρει ψηλότερη προτεραιότητα
Χρονοπρογραµµατισµός µε Λαχνούς Ο χρονοπρογραµµατιστής επιλέγει τυχαία την επόµενη διεργασία. άν όλες οι διεργασίες έχουν την ίδια προτεραιότητα, τότε µακροπρόθεσµα θα πάρουν κατά µέσο όρο /n του χρόνου του επεξεργαστή. ναλλακτικά, στην κάθε διεργασία µπορούµε να δώσουµε ένα αριθµό από «λαχνούς» οι οποίοι θα καθορίζουν την πιθανότητα να επιλεχθεί η συγκεκριµένη διεργασία ιεργασίες µε περισσότερους λαχνούς έχουν µεγαλύτερη πιθανότητα επιλογής και εποµένως ψηλότερη προτεραιότητα υτός ο αλγόριθµος επιλύει το δύσκολο πρόβληµα του καθορισµού της προτεραιότητας της κάθε διεργασίας µε ένα σχετικά απλό τρόπο. Χρονοπρογραµµατισµός για ίκαιο Μερίδιο (Fair Share) Υποθέστε ένα υπολογιστή µε δύο χρήστες. Ο χρήστης (Χ) τρέχει τη διεργασία Ο χρήστης (Χ) τρέχει τις διεργασίες,,,. άν χρησιµοποιήσουµε Round-Robin µε ίσα διαστήµατα q, τότε πιθανόν οι διεργασίες να εκτελεσθούν,,,,,,,,,, Σαν αποτέλεσµα ο Χ παίρνει µόνο 0% του επεξεργαστή ενώ ο Χ τα υπόλοιπα 80%! ναλλακτικά εάν υποχρεώσουµε το σύστηµα να δίνει ίσο χρόνο στους δύο χρήστες, τότε οι διεργασίες θα εκτελεσθούν,,,,,,,,,,,,,, άν δώσουµε διπλάσιο χρόνο στον Χ από αυτόν του Χ,,,,,,,,,,,, 5
Χρονοπρογραµµατισµός στο Linux Το Linux υποστηρίζει τρεις κλάσεις διεργασιών SCHED_FIFO για υποδιεργασίες πραγµατικού χρόνου (real-time threads). SCHED_RR (round-robin) επίσης για υποδιεργασίες πραγµατικού χρόνου. SCHED_OTHER για υποδιεργασίες µη πραγµατικού χρόνου (non-real-time threads) Κάθε κατηγορία πραγµατικού χρόνου έχει προτεραιότητα που κυµαίνεται µεταξύ 0-99 και κάθε SCHED_OTHER µεταξύ 00-9 Μικρότερος αριθµός σηµαίνει µεγαλύτερη προτεραιότητα. Χρονοπρογραµµατισµός στο Linux: SCHED_FIFO Το ΛΣ δεν διακόπτει (non-preemptive) διεργασία αυτής της κατηγορίας εκτός από τις ακόλουθες περιπτώσεις ιεργασία SCHED_FIFO µε ψηλότερη προτεραιότητα µπήκε στην κατάσταση «έτοιµη». Η διεργασία η οποία εκτελείται µπήκε στη κατάσταση «blocked». Η διεργασία η οποία εκτελείται εθελοντικά σταµατά (sched_yield) Όταν η διεργασία η οποία εκτελείται διακόπτεται µπαίνει σε ουρά αντίστοιχη µε την προτεραιότητα της. Όταν η διεργασία επανέρχεται στην κατάσταση «έτοιµη» τότε άν η διεργασία η οποία εκτελείται είναι χαµηλότερης προτεραιότητας τότε τη διακόπτει και παίρνει τον επεξεργαστή. άν περιµένουν περισσότερες από µια διεργασίες µε την ίδια προτεραιότητα, τότε εκτελείται αυτή η οποία περίµενε περισσότερο.
Χρονοπρογραµµατισµός στο Linux: SCHED_RR Παρόµοια µε την SCHED_FIFO µε µόνη διαφορά την ύπαρξη των χρονικών διαστηµάτων q. Μόλις µια διεργασία συµπληρώσει το διάστηµα της, διακόπτεται και επιλέγεται να εκτελεστεί µια διεργασία µε προτεραιότητα µεγαλύτερη ή ίση µε αυτή της διεργασίας που µόλις διακόπηκε. ιεργασίες µε µεγαλύτερη προτεραιότητα µπορεί να έχουν µεγαλύτερο διάστηµα απ ότι διεργασίες µε µικρότερη προτεραιότητα. Παράδειγµα Χρονοπρογραµµατισµού στο Linux ιεργασία Κλάση SCHED_FIFO SCHED_RR SCHED_RR SCHED_OTHER SCHED_OTHER πεξεργασία 5 A 5 0 5 0 7
Χρονοπρογραµµατισµός στο Linux Το Linux χρησιµοποιεί δύο δοµές (active and expired) για κάθε επεξεργαστή όπως πιο κάτω Struct prio_array { int nr_active; /*number of active processes*/ unsigned long bitmap[itmap_size]; struct list_head queue[max_prio]; /*priority queues*/ } Υπάρχει µια ουρά για κάθε προτεραιότητα (MAX_PRIO=0) Το bitmap δείχνει ποίες ουρές είναι άδειες Το nr_active δείχνει το συνολικό αριθµό από ενεργοποιηµένες διεργασίες Χρονοπρογραµµατισµός στο Linux κτελούνται πάντα οι διεργασίες στη δοµή active. Όταν µια διεργασία συµπληρώσει το διάστηµα της τότε µεταφέρεται στη δοµή expired στην αντίστοιχη προτεραιότητα. άν η διεργασία διακοπεί πριν τον προβλεπόµενο χρόνο, τότε επιστρέφει πίσω στη δοµή active. Μόλις αδειάσει η δοµή active, τότε απλά η expired γίνεται η νέα active και η expired αρχικοποιείται σε άδεια και ο κύκλος επαναλαµβάνεται. ιεργασίες πραγµατικού χρόνου επιστρέφουν πάντα στην δοµή active. To Linux δίνει περισσότερη προτεραιότητα σε διεργασίες µε εντολές / υξάνει την προτεραιότητα διεργασιών που περνούν πολλή ώρα µπλοκαρισµένες. Το διάστηµα επεξεργασίας κάθε διεργασίας κυµαίνεται από 0 έως 00 ms. 8