Έκδοση πυρήνα Linux 5.14

Μετά από δύο μήνες ανάπτυξης, ο Linus Torvalds παρουσίασε την κυκλοφορία του πυρήνα Linux 5.14. Μεταξύ των πιο αξιοσημείωτων αλλαγών: νέες κλήσεις συστήματος quotactl_fd() και memfd_secret(), αφαίρεση προγραμμάτων οδήγησης ide και raw, νέος ελεγκτής προτεραιότητας I/O για cgroup, λειτουργία προγραμματισμού εργασιών SCHED_CORE, υποδομή για τη δημιουργία επαληθευμένων φορτωτών προγραμμάτων BPF.

Η νέα έκδοση περιλαμβάνει 15883 διορθώσεις από 2002 προγραμματιστές, το μέγεθος της ενημέρωσης κώδικα είναι 69 MB (οι αλλαγές επηρέασαν 12580 αρχεία, προστέθηκαν 861501 γραμμές κώδικα, διαγράφηκαν 321654 γραμμές). Περίπου το 47% όλων των αλλαγών που εισάγονται στο 5.14 σχετίζονται με προγράμματα οδήγησης συσκευών, περίπου το 14% των αλλαγών σχετίζονται με την ενημέρωση κώδικα ειδικού για αρχιτεκτονικές υλικού, το 13% σχετίζονται με τη στοίβα δικτύου, το 3% σχετίζονται με συστήματα αρχείων και το 3% σχετίζονται με εσωτερικά υποσυστήματα πυρήνα.

Βασικές καινοτομίες:

  • Υποσύστημα δίσκου, I/O και συστήματα αρχείων
    • Ένας νέος ελεγκτής προτεραιότητας I/O έχει εφαρμοστεί για cgroups, rq-qos, ο οποίος μπορεί να ελέγχει την προτεραιότητα επεξεργασίας των αιτημάτων για αποκλεισμό συσκευών που δημιουργούνται από μέλη κάθε cgroup. Νέα υποστήριξη ελεγκτή προτεραιότητας έχει προστεθεί στον προγραμματιστή εισόδου/εξόδου mq-deadline.
    • Το σύστημα αρχείων ext4 εφαρμόζει μια νέα εντολή ioctl, EXT4_IOC_CHECKPOINT, η οποία αναγκάζει όλες τις εκκρεμείς συναλλαγές από το ημερολόγιο και τα σχετιζόμενα buffer τους να ξεπλυθούν στο δίσκο, και επίσης αντικαθιστά την περιοχή που χρησιμοποιείται από το περιοδικό στην αποθήκευση. Η αλλαγή προετοιμάστηκε ως μέρος μιας πρωτοβουλίας για την αποτροπή διαρροών πληροφοριών από συστήματα αρχείων.
    • Έχουν γίνει βελτιστοποιήσεις απόδοσης στο Btrfs: με την εξάλειψη της περιττής καταγραφής εκτεταμένων χαρακτηριστικών κατά την εκτέλεση του fsync, η απόδοση των εντατικών λειτουργιών με εκτεταμένα χαρακτηριστικά έχει αυξηθεί έως και 17%. Επιπλέον, όταν εκτελείτε λειτουργίες περικοπής που δεν επηρεάζουν τις εκτάσεις, ο πλήρης συγχρονισμός απενεργοποιείται, γεγονός που μείωσε τον χρόνο λειτουργίας κατά 12%. Έχει προστεθεί μια ρύθμιση στο sysfs για περιορισμό του εύρους ζώνης I/O κατά τον έλεγχο του FS. Προστέθηκαν κλήσεις ioctl για ακύρωση της αλλαγής μεγέθους και της διαγραφής λειτουργιών της συσκευής.
    • Στο XFS, η υλοποίηση της προσωρινής μνήμης προσωρινής αποθήκευσης έχει επανασχεδιαστεί, η οποία έχει μετατραπεί σε εκχώρηση σελίδων μνήμης σε λειτουργία δέσμης. Βελτιωμένη απόδοση της κρυφής μνήμης.
    • Το F2FS προσθέτει μια επιλογή λειτουργίας σε λειτουργία μόνο για ανάγνωση και εφαρμόζει μια λειτουργία συμπιεσμένης προσωρινής μνήμης μπλοκ (compress_cache) για τη βελτίωση της απόδοσης τυχαίας ανάγνωσης. Έχει υλοποιηθεί υποστήριξη για τη συμπίεση αρχείων που έχουν αντιστοιχιστεί στη μνήμη χρησιμοποιώντας τη λειτουργία mmap(). Για να απενεργοποιήσετε επιλεκτικά τη συμπίεση αρχείων με βάση μια μάσκα, έχει προταθεί μια νέα επιλογή προσάρτησης χωρίς συμπίεση.
    • Έγινε δουλειά στο πρόγραμμα οδήγησης exFAT για τη βελτίωση της συμβατότητας με κάποιο χώρο αποθήκευσης ψηφιακής φωτογραφικής μηχανής.
    • Προστέθηκε η κλήση συστήματος quotactl_fd(), η οποία σας επιτρέπει να διαχειρίζεστε ποσοστώσεις όχι μέσω ενός ειδικού αρχείου συσκευής, αλλά καθορίζοντας έναν περιγραφέα αρχείου που σχετίζεται με το σύστημα αρχείων για το οποίο εφαρμόζεται το όριο.
    • Τα παλιά προγράμματα οδήγησης για συσκευές μπλοκ με διεπαφή IDE έχουν αφαιρεθεί από τον πυρήνα· έχουν αντικατασταθεί εδώ και καιρό από το υποσύστημα libata.
    • Το "ακατέργαστο" πρόγραμμα οδήγησης έχει αφαιρεθεί από τον πυρήνα, παρέχοντας πρόσβαση χωρίς προσωρινή αποθήκευση σε συσκευές αποκλεισμού μέσω της διεπαφής /dev/raw. Αυτή η λειτουργία έχει εφαρμοστεί εδώ και καιρό σε εφαρμογές που χρησιμοποιούν τη σημαία O_DIRECT.
  • Υπηρεσίες μνήμης και συστήματος
    • Ο προγραμματιστής εργασιών εφαρμόζει μια νέα λειτουργία προγραμματισμού, SCHED_CORE, η οποία σας επιτρέπει να ελέγχετε ποιες διεργασίες μπορούν να εκτελεστούν μαζί στον ίδιο πυρήνα CPU. Σε κάθε διεργασία μπορεί να εκχωρηθεί ένα αναγνωριστικό cookie που καθορίζει το εύρος της εμπιστοσύνης μεταξύ των διεργασιών (για παράδειγμα, που ανήκουν στον ίδιο χρήστη ή κοντέινερ). Κατά την οργάνωση της εκτέλεσης κώδικα, ο προγραμματιστής μπορεί να διασφαλίσει ότι ένας πυρήνας CPU είναι κοινός μόνο μεταξύ διεργασιών που σχετίζονται με τον ίδιο κάτοχο, ο οποίος μπορεί να χρησιμοποιηθεί για τον αποκλεισμό ορισμένων επιθέσεων Spectre, αποτρέποντας την εκτέλεση αξιόπιστων και μη αξιόπιστων εργασιών στο ίδιο νήμα SMT (Hyper Threading). .
    • Για το cgroup, έχει υλοποιηθεί υποστήριξη για τη λειτουργία kill, η οποία σας επιτρέπει να σκοτώσετε όλες τις διεργασίες που σχετίζονται με την ομάδα ταυτόχρονα (στείλτε SIGKILL) γράφοντας "1" στο εικονικό αρχείο cgroup.kill.
    • Διευρυμένες δυνατότητες που σχετίζονται με την απόκριση στην ανίχνευση διαχωρισμένων κλειδωμάτων ("κλειδώματα διαχωρισμού") που εμφανίζονται κατά την πρόσβαση σε μη ευθυγραμμισμένα δεδομένα στη μνήμη, λόγω του γεγονότος ότι κατά την εκτέλεση μιας ατομικής εντολής, τα δεδομένα διασχίζουν δύο γραμμές κρυφής μνήμης CPU. Αυτός ο αποκλεισμός οδηγεί σε σημαντική πτώση της απόδοσης, επομένως προηγουμένως ήταν δυνατός ο αναγκαστικός τερματισμός της εφαρμογής που προκάλεσε τον αποκλεισμό. Η νέα έκδοση προσθέτει μια παράμετρο γραμμής εντολών πυρήνα "split_lock_detect=ratelimit:N", η οποία σας επιτρέπει να ορίσετε ένα όριο σε όλο το σύστημα στον ρυθμό των λειτουργιών κλειδώματος ανά δευτερόλεπτο, μετά την υπέρβαση του οποίου οποιαδήποτε διεργασία που έγινε η πηγή ενός διαχωρισμού κλειδώματος θα αναγκαστείτε να σταματήσετε για 20 ms αντί να τερματίσετε.
    • Ο ελεγκτής εύρους ζώνης cgroup CFS (CFS bandwidth controller), ο οποίος καθορίζει πόσος χρόνος επεξεργαστή μπορεί να εκχωρηθεί σε κάθε cgroup, εφαρμόζει τη δυνατότητα καθορισμού χρονικά περιορισμένων ορίων, γεγονός που επιτρέπει την καλύτερη ρύθμιση των φόρτων εργασίας ευαίσθητων σε καθυστέρηση. Για παράδειγμα, η ρύθμιση του cpu.cfs_quota_us σε 50000 και του cpu.cfs_period_us σε 100000 θα επιτρέψει σε μια ομάδα διεργασιών να σπαταλούν 100ms χρόνου CPU κάθε 50ms.
    • Προστέθηκε αρχική υποδομή για τη δημιουργία φορτωτών προγραμμάτων BPF, η οποία θα επιτρέψει περαιτέρω τη φόρτωση μόνο προγραμμάτων BPF υπογεγραμμένων με αξιόπιστο ψηφιακό κλειδί.
    • Προστέθηκε μια νέα λειτουργία futex FUTEX_LOCK_PI2, η οποία χρησιμοποιεί ένα μονοτονικό χρονόμετρο για τον υπολογισμό ενός χρονικού ορίου που λαμβάνει υπόψη τον χρόνο που αφιερώνει το σύστημα σε κατάσταση αναστολής λειτουργίας.
    • Για την αρχιτεκτονική RISC-V, υλοποιείται η υποστήριξη για μεγάλες σελίδες μνήμης (Transparent Huge-Pages) και η δυνατότητα χρήσης του μηχανισμού KFENCE για τον εντοπισμό σφαλμάτων κατά την εργασία με μνήμη.
    • Η κλήση συστήματος madvise(), η οποία παρέχει ένα μέσο για τη βελτιστοποίηση της διαχείρισης μνήμης μιας διεργασίας, έχει προσθέσει τις σημαίες MADV_POPULATE_READ και MADV_POPULATE_WRITE για να δημιουργήσει ένα "σφάλμα σελίδας" σε όλες τις σελίδες μνήμης που έχουν αντιστοιχιστεί για λειτουργίες ανάγνωσης ή εγγραφής, χωρίς να εκτελείται πραγματική ανάγνωση ή εγγραφή. (προκαταρκτικός). Η χρήση σημαιών μπορεί να είναι χρήσιμη για τη μείωση των καθυστερήσεων στην εκτέλεση του προγράμματος, λόγω της προληπτικής εκτέλεσης του προγράμματος χειρισμού “page fault” για όλες τις σελίδες που δεν έχουν εκχωρηθεί ταυτόχρονα, χωρίς να περιμένουμε την πραγματική πρόσβαση σε αυτές.
    • Το σύστημα δοκιμών μονάδων kunit έχει προσθέσει υποστήριξη για την εκτέλεση δοκιμών στο περιβάλλον QEMU.
    • Προστέθηκαν νέοι ανιχνευτές: "osnoise" για την παρακολούθηση καθυστερήσεων εφαρμογών που προκαλούνται από χειρισμό διακοπών και "timerlat" για εμφάνιση λεπτομερών πληροφοριών σχετικά με καθυστερήσεις κατά την αφύπνιση από ένα σήμα χρονοδιακόπτη.
  • Εικονικοποίηση και Ασφάλεια
    • Η κλήση συστήματος memfd_secret() προστέθηκε για τη δημιουργία μιας ιδιωτικής περιοχής μνήμης σε έναν απομονωμένο χώρο διευθύνσεων, ορατή μόνο στη διεργασία ιδιοκτησίας, που δεν αντικατοπτρίζεται σε άλλες διεργασίες και δεν είναι άμεσα προσβάσιμη στον πυρήνα.
    • Στο σύστημα φιλτραρίσματος κλήσεων συστήματος seccomp, όταν μετακινούνται οι χειριστές αποκλεισμού στο χώρο χρήστη, είναι δυνατή η χρήση μίας ατομικής λειτουργίας για τη δημιουργία ενός περιγραφέα αρχείου για μια μεμονωμένη εργασία και την επιστροφή του κατά την επεξεργασία μιας κλήσης συστήματος. Η προτεινόμενη λειτουργία λύνει το πρόβλημα της διακοπής ενός χειριστή στο χώρο χρήστη όταν φθάνει ένα σήμα.
    • Προστέθηκε ένας νέος μηχανισμός για τη διαχείριση ορίων πόρων στον χώρο ονομάτων του αναγνωριστικού χρήστη, ο οποίος δεσμεύει μεμονωμένους μετρητές ορίου με έναν χρήστη στον "χώρο ονομάτων χρήστη". Η αλλαγή επιλύει το πρόβλημα με τη χρήση κοινών μετρητών πόρων όταν ένας χρήστης εκτελεί διεργασίες σε διαφορετικά κοντέινερ.
    • Ο hypervisor KVM για συστήματα ARM64 έχει προσθέσει τη δυνατότητα χρήσης της επέκτασης MTE (MemTag, Memory Tagging Extension) σε συστήματα φιλοξενούμενων, η οποία σας επιτρέπει να συνδέετε ετικέτες σε κάθε λειτουργία εκχώρησης μνήμης και να οργανώνετε τον έλεγχο της σωστής χρήσης δεικτών για να αποκλείσετε την εκμετάλλευση τρωτά σημεία που προκαλούνται από την πρόσβαση σε ήδη ελευθερωμένα μπλοκ μνήμης, την προσωρινή μνήμη υπερχείλισης, τις προσβάσεις πριν από την προετοιμασία και τη χρήση εκτός του τρέχοντος περιβάλλοντος.
    • Οι εγκαταστάσεις Pointer Authentication της πλατφόρμας ARM64 μπορούν πλέον να διαμορφωθούν ξεχωριστά για τον πυρήνα και τον χώρο χρήστη. Η τεχνολογία σάς επιτρέπει να χρησιμοποιείτε εξειδικευμένες οδηγίες ARM64 για να επαληθεύσετε τις διευθύνσεις επιστροφής χρησιμοποιώντας ψηφιακές υπογραφές που είναι αποθηκευμένες στα αχρησιμοποίητα ανώτερα bit του ίδιου του δείκτη.
    • Το Linux σε λειτουργία χρήστη έχει προσθέσει υποστήριξη για τη χρήση προγραμμάτων οδήγησης για συσκευές PCI με εικονικό δίαυλο PCI, που υλοποιείται από το πρόγραμμα οδήγησης PCI-over-virtio.
    • Για συστήματα x86, προστέθηκε υποστήριξη για την παραεικονική συσκευή virtio-iommu, επιτρέποντας αιτήματα IOMMU όπως ATTACH, DETACH, MAP και UNMAP να αποστέλλονται μέσω της μεταφοράς virtio χωρίς εξομοίωση πινάκων σελίδων μνήμης.
    • Για επεξεργαστές Intel, από την οικογένεια Skylake έως το Coffee Lake, η χρήση του Intel TSX (Transactional Synchronization Extensions), που παρέχει εργαλεία για τη βελτίωση της απόδοσης εφαρμογών πολλαπλών νημάτων εξαλείφοντας δυναμικά τις περιττές λειτουργίες συγχρονισμού, είναι απενεργοποιημένη από προεπιλογή. Οι επεκτάσεις είναι απενεργοποιημένες λόγω της πιθανότητας επιθέσεων Zombieload που χειραγωγούν τη διαρροή πληροφοριών μέσω καναλιών τρίτων που συμβαίνει κατά τη λειτουργία του μηχανισμού TAA (TSX Asynchronous Abort).
  • Υποσύστημα δικτύου
    • Ενσωμάτωση στον πυρήνα του MPTCP (MultiPath TCP), μια επέκταση του πρωτοκόλλου TCP για την οργάνωση της λειτουργίας μιας σύνδεσης TCP με την παράδοση πακέτων ταυτόχρονα σε διάφορες διαδρομές μέσω διαφορετικών διεπαφών δικτύου που σχετίζονται με διαφορετικές διευθύνσεις IP. Η νέα έκδοση προσθέτει έναν μηχανισμό για τον ορισμό των δικών σας πολιτικών κατακερματισμού κυκλοφορίας για το IPv4 και το IPv6 (Πολιτική κατακερματισμού πολλαπλών διαδρομών), καθιστώντας δυνατό να προσδιορίσετε από το χώρο χρήστη ποια πεδία σε πακέτα, συμπεριλαμβανομένων των ενθυλακωμένων, θα χρησιμοποιηθούν κατά τον υπολογισμό του κατακερματισμού που καθορίζει το επιλογή διαδρομής για το πακέτο.
    • Η υποστήριξη για υποδοχές SOCK_SEQPACKET (παραγγελθείσα και αξιόπιστη μετάδοση datagrams) έχει προστεθεί στην εικονική μεταφορά virtio.
    • Οι δυνατότητες του μηχανισμού υποδοχής SO_REUSEPORT έχουν επεκταθεί, ο οποίος επιτρέπει σε πολλές υποδοχές ακρόασης να συνδέονται σε μία θύρα ταυτόχρονα για να λαμβάνουν συνδέσεις με τη διανομή εισερχόμενων αιτημάτων ταυτόχρονα σε όλες τις υποδοχές που συνδέονται μέσω SO_REUSEPORT, γεγονός που απλοποιεί τη δημιουργία εφαρμογών διακομιστή πολλαπλών νημάτων . Η νέα έκδοση προσθέτει εργαλεία για τη μεταφορά του ελέγχου σε άλλη υποδοχή σε περίπτωση αποτυχίας κατά την επεξεργασία ενός αιτήματος από την αρχικά επιλεγμένη υποδοχή (λύνει το πρόβλημα με την απώλεια μεμονωμένων συνδέσεων κατά την επανεκκίνηση των υπηρεσιών).
  • Оборудование
    • Το πρόγραμμα οδήγησης amdgpu παρέχει υποστήριξη για τη νέα σειρά GPU της AMD Radeon RX 6000, με την κωδική ονομασία "Beige Goby" (Navi 24) και "Yellow Carp", καθώς και βελτιωμένη υποστήριξη για την GPU Aldebaran (gfx90a) και τον Van Gogh APU. Προστέθηκε η δυνατότητα ταυτόχρονης εργασίας με πολλά πάνελ eDP. Για το APU Renoir, έχει υλοποιηθεί υποστήριξη για εργασία με κρυπτογραφημένα buffer στη μνήμη βίντεο (TMZ, Trusted Memory Zone). Προστέθηκε υποστήριξη για κάρτες γραφικών hot-unplug. Για τις GPU Radeon RX 6000 (Navi 2x) και τις παλαιότερες GPU της AMD, η υποστήριξη ASPM (Active State Power Management) είναι ενεργοποιημένη από προεπιλογή, η οποία προηγουμένως ήταν ενεργοποιημένη μόνο για τις GPU Navi 1x, Vega και Polaris.
    • Για τα τσιπ AMD, έχει προστεθεί υποστήριξη για κοινόχρηστη εικονική μνήμη (SVM, κοινόχρηστη εικονική μνήμη) με βάση το υποσύστημα HMM (Heterogeneous memory management), το οποίο επιτρέπει τη χρήση συσκευών με τις δικές τους μονάδες διαχείρισης μνήμης (MMU, μονάδα διαχείρισης μνήμης). που μπορεί να έχει πρόσβαση στην κύρια μνήμη. Συγκεκριμένα, χρησιμοποιώντας το HMM, μπορείτε να οργανώσετε έναν κοινόχρηστο χώρο διευθύνσεων μεταξύ της GPU και της CPU, στον οποίο η GPU μπορεί να έχει πρόσβαση στην κύρια μνήμη της διαδικασίας.
    • Προστέθηκε αρχική υποστήριξη για την τεχνολογία AMD Smart Shift, η οποία αλλάζει δυναμικά τις ρυθμίσεις ισχύος CPU και GPU σε φορητούς υπολογιστές με chipset και κάρτα γραφικών AMD για να ενισχύσει την απόδοση για παιχνίδια, επεξεργασία βίντεο και απόδοση 3D.
    • Το πρόγραμμα οδήγησης i915 για κάρτες γραφικών Intel περιλαμβάνει υποστήριξη για τσιπ Intel Alderlake P.
    • Προστέθηκε πρόγραμμα οδήγησης drm/hyperv για τον εικονικό προσαρμογέα γραφικών Hyper-V.
    • Προστέθηκε υποστήριξη για τον υπολογιστή all-in-one Raspberry Pi 400.
    • Προστέθηκε το πρόγραμμα οδήγησης dell-wmi-privacy για την υποστήριξη των διακοπτών κάμερας υλικού και μικροφώνου που περιλαμβάνονται στους φορητούς υπολογιστές Dell.
    • Για φορητούς υπολογιστές Lenovo, έχει προστεθεί μια διεπαφή WMI για την αλλαγή των ρυθμίσεων του BIOS μέσω sysfs /sys/class/firmware-attributes/.
    • Διευρυμένη υποστήριξη για συσκευές με διασύνδεση USB4.
    • Προστέθηκε υποστήριξη για κάρτες ήχου και κωδικοποιητές AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 και Texas Instruments TAS2505. Βελτιωμένη υποστήριξη ήχου σε φορητούς υπολογιστές HP και ASUS. Προστέθηκαν ενημερώσεις κώδικα για τη μείωση των καθυστερήσεων πριν ξεκινήσει η αναπαραγωγή του ήχου σε συσκευές USB.

Πηγή: opennet.ru

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