Πριν από το Διαδίκτυο και την ηλεκτρική ενέργεια του Linus Torvalds νοκ άουτ από μια χιονοθύελλα και επηρεάζοντας έτσι το παράθυρο συγχώνευσης Linux 6.8, το Σαββατοκύριακο του ήταν ήδη σε δύσκολη κατάσταση λόγω αντιμετωπίζει μια παλινδρόμηση απόδοσης με νέο κώδικα Linux 6.8 Αυτό είχε ως αποτέλεσμα οι εκδόσεις του πυρήνα Linux να είναι διπλάσιες από ό,τι με τους προηγούμενους πυρήνες. Ένας μηχανικός Linux της AMD μπόρεσε να αναπαράγει την παλινδρόμηση και με προγραμματιστές upstream υπάρχει πλέον μια πιστή λύση για αυτό το ζήτημα στον πιο πρόσφατο κώδικα προγραμματιστή.
Στη συζήτηση σχετικά με τη μεγάλη παλινδρόμηση απόδοσης που αναφέρθηκε από τον Linus Torvalds, η οποία προήλθε από τις αλλαγές χρονοπρογραμματιστή στο Linux 6.8, για τη διχοτομημένη δέσμευση δεν ήταν αμέσως σαφές στον προγραμματιστή που εμπλέκεται σε τι προκαλούσε την παλινδρόμηση. Στη συζήτηση που ακολούθησε, ο Wyes Karny της AMD έχουν αναφερθεί ότι και αυτός θα μπορούσε να αναπαράγει την παλινδρόμηση. Αντί για ένα high-end AMD Ryzen Threadripper όπως το χρησιμοποιούσε ο Torvalds, ο Wyes χρησιμοποιούσε μια μέτρια επιφάνεια εργασίας AMD Ryzen 5600G. Μια σημαντική σημείωση που ανέφερε ήταν ότι αυτό αναπαράγεται μόνο εάν απενεργοποιηθεί το ACPI CPPC από το BIOS και χρησιμοποιήθηκε το ACPI CPUFreq με τον κυβερνήτη Schedutil.
Τα περισσότερα συστήματα AMD Zen 2 και νεότερα συστήματα υποστηρίζουν ACPI CPPC και επομένως με σύγχρονους πυρήνες στην πλευρά του Ryzen χρησιμοποιούν συνήθως το νέο πρόγραμμα οδήγησης AMD P-State. Αλλά για επιλεγμένα συστήματα Zen 2 / Zen 3 και παλαιότερα (ή εκείνα που απενεργοποιούν το CPPC από το BIOS), το πρόγραμμα οδήγησης CPUFreq εξακολουθεί να χρησιμοποιείται και συνήθως ο προεπιλεγμένος ρυθμιστής συχνότητας CPU είναι “Schedutil” για τη μόχλευση των δεδομένων χρήσης του προγραμματιστή.
Από αυτό το νήμα της λίστας αλληλογραφίας προτάθηκε μια ενημέρωση κώδικα και συζητήθηκαν τα συγκεκριμένα ζητήματα γύρω από αυτήν την παλινδρόμηση. Στο τέλος ο Vincent Guittot πιστεύει ότι έχει μια διόρθωση στην παλινδρόμηση και ο Wyes μπόρεσε να δοκιμάσει με επιτυχία το patch.
Ο Guittot έστειλε τώρα sched/fair: Διορθώστε την επιλογή συχνότητας για μη αμετάβλητη περίπτωση ως ενημερωμένη έκδοση κώδικα για τη διόρθωση αυτής της δυσάρεστης παλινδρόμησης στον νέο κώδικα Linux 6.8 κατά τη χρήση του ACPI CPUFreq + Schedutil. Εξηγεί με το patch:
“Όταν δεν είναι ενεργοποιημένη η αναλλοίωτη συχνότητα, το get_capacity_ref_freq(policy) επιστρέφει την τρέχουσα συχνότητα και το περιθώριο απόδοσης που εφαρμόστηκε από τη map_util_perf(), επέτρεψε στη χρήση να υπερβεί τη μέγιστη χωρητικότητα υπολογισμού και να επιλέξει υψηλότερη συχνότητα από την τρέχουσα.
Το περιθώριο απόδοσης εφαρμόζεται τώρα νωρίτερα στη διαδρομή για να ληφθούν υπόψη ορισμένες σφίξεις χρήσης και δεν μπορούμε να λάβουμε χρησιμοποίηση μεγαλύτερη από τη μέγιστη υπολογιστική ικανότητα.
Πρέπει να χρησιμοποιήσουμε μια συχνότητα πάνω από την τρέχουσα συχνότητα για να έχουμε την ευκαιρία να επιλέξουμε υψηλότερο OPP όταν η τρέχουσα χρησιμοποιείται πλήρως. Εφαρμόστε το ίδιο περιθώριο και επιστρέφει συχνότητα 25% υψηλότερη από την τρέχουσα, προκειμένου να μεταβείτε στο επόμενο OPP προτού χρησιμοποιήσουμε πλήρως την cpu στην τρέχουσα.”
Στο τέλος, ήταν μια επιδιόρθωση κώδικα μιας γραμμής για την αντιμετώπιση αυτής της παλινδρόμησης απόδοσης που έκανε τις άδειες εκδόσεις πυρήνα του Linus Torvalds να πάνε από 22 δευτερόλεπτα σε 44 δευτερόλεπτα.
Υποθέτοντας ότι όλα συνεχίζουν να δοκιμάζονται καλά με τη νέα ενημέρωση κώδικα, η επιδιόρθωση θα πρέπει να φτάσει στον κώδικα Linux 6.8 Git μόλις αποκατασταθεί το Διαδίκτυο και η ηλεκτρική ενέργεια του Linus Torvalds.