Η Canonical έχει προτείνει ενημερώσεις κώδικα για την επιτάχυνση της ενεργοποίησης της κατάστασης ύπνου

Canonical Company προτείνεται στη λίστα αλληλογραφίας των προγραμματιστών πυρήνα Linux ένα σύνολο ενημερώσεων κώδικα με υλοποίηση ευκαιριακή εκκαθάριση μνήμης ("ευκαιριακή ανάκτηση μνήμης"), που σας επιτρέπει να μειώσετε σημαντικά τον χρόνο που χρειάζεται για να μπείτε σε κατάσταση αναστολής λειτουργίας. Η βελτιστοποίηση επιτυγχάνεται με την προληπτική κλήση της λειτουργίας απελευθέρωσης δομών δευτερεύουσας μνήμης που δεν περιέχουν μοναδικές πληροφορίες και μπορούν να αποκατασταθούν δυναμικά μετά την επιστροφή από την κατάσταση αναστολής λειτουργίας (για παράδειγμα, περιοχές ανώνυμη μνήμη και διάφορες κρυφές μνήμες σελίδων μνήμης). Η κύρια ιδέα είναι ότι μετά την αφαίρεση περιττών δεδομένων, το μέγεθος της εικόνας μνήμης που πρέπει να αποθηκευτεί πριν μεταβείτε σε κατάσταση αναστολής λειτουργίας μειώνεται και, κατά συνέπεια, απαιτείται λιγότερος χρόνος για την εγγραφή και την ανάγνωσή της από αργά μέσα.

Από προεπιλογή, κατά την αποθήκευση μιας ένδειξης αδρανοποίησης μνήμης, ο πυρήνας αποθηκεύει τη μνήμη όπως είναι με όλες τις κρυφές μνήμες, αλλά υπάρχει μια τυπική δυνατότητα απελευθέρωσης περιττών δομών προσομοιώνοντας συνθήκες έλλειψης πόρων στο αρχικό στάδιο της εισαγωγής σε αδρανοποίηση. Αυτή η δυνατότητα μπορεί να ενεργοποιηθεί χρησιμοποιώντας την παράμετρο «/sys/power/image_size» και οδηγεί σε αισθητή μείωση του χρόνου που χρειάζεται για να μπείτε σε κατάσταση αναστολής λειτουργίας. Η Canonical προτείνει την προσθήκη δύο ακόμη παραμέτρων "/sys/power/mm_reclaim/run" και
"/sys/power/mm_reclaim/release", το οποίο θα σας επιτρέψει να ενεργοποιήσετε εκ των προτέρων την απελευθέρωση περιττών δομών, έτσι ώστε η πραγματική μετάβαση στη λειτουργία αδράνειας να πραγματοποιηθεί όσο το δυνατόν γρηγορότερα και η επιστροφή από την κατάσταση αναστολής λειτουργίας διαρκεί περίπου τον ίδιο χρόνο με όταν χρησιμοποιείτε μια υπάρχουσα παράμετρο στον πυρήνα "/sys/power/image_size".

Η δοκιμή σε ένα σύστημα με 8 GB μνήμης RAM και 8 GB διαμερίσματος ανταλλαγής με 85% χρήση μνήμης έδειξε στις προεπιλεγμένες ρυθμίσεις (image_size=default) μείωση του χρόνου εισαγωγής σε κατάσταση αναστολής λειτουργίας από 51.56 σε 4.19 δευτερόλεπτα κατά την έναρξη της διαδικασίας εκκαθάριση της πλεονάζουσας μνήμης 60 δευτερόλεπτα πριν από την είσοδο στη λειτουργία ύπνου. Με τη μείωση του μεγέθους της εικόνας της αποθηκευμένης μνήμης, ο χρόνος ανάκτησης μειώθηκε από 26.34 σε 5 δευτερόλεπτα. Όταν το σύστημα ενεργοποίησε την τυπική λειτουργία για την εκκαθάριση της πλεονάζουσας μνήμης (image_size=0), ο χρόνος για την είσοδο σε κατάσταση αναστολής λειτουργίας μειώθηκε από 73.22 σε 5.36 δευτερόλεπτα και ο χρόνος επιστροφής από τη λειτουργία αδράνειας παρέμεινε σχεδόν αμετάβλητος (μειώθηκε μόνο κατά ένα κλάσμα του δευτερολέπτου, από 5.32 έως 5.26 δευτερόλεπτα).

Η προτεινόμενη μέθοδος μπορεί να είναι περιζήτητη σε καταστάσεις όπου είναι απαραίτητο να μεταβείτε πολύ γρήγορα σε κατάσταση αναστολής λειτουργίας και είναι δυνατόν να προβλεφθεί εκ των προτέρων η ανάγκη για μια τέτοια μετάβαση. Για παράδειγμα, σε συστήματα cloud, εικονικά περιβάλλοντα χαμηλής προτεραιότητας (σημειακά περιβάλλοντα στο Amazon EC2) μπορεί να αδρανοποιήσει δυναμικά και να απελευθερώσει την κατειλημμένη μνήμη καθώς αυξάνεται η κατανάλωση πόρων από πρωτεύοντα περιβάλλοντα. Όταν το φορτίο στα πρωτεύοντα περιβάλλοντα μειώνεται, τα περιβάλλοντα χαμηλής προτεραιότητας επιστρέφουν από την κατάσταση αναστολής λειτουργίας. Υπό αυτές τις συνθήκες, για να διατηρηθεί η σωστή ποιότητα των υπηρεσιών, είναι σημαντικό να ελαχιστοποιηθεί ο χρόνος που απαιτείται για την είσοδο και την έξοδο από την κατάσταση αναστολής λειτουργίας. Η φάση προληπτικού καθαρισμού μπορεί να ενεργοποιηθεί όταν επιτευχθεί ένα συγκεκριμένο επίπεδο του κύριου φορτίου, που προηγείται του επιπέδου που οδηγεί σε πάγωμα περιβαλλόντων χαμηλής προτεραιότητας.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο