Πυρήνας Linux 5.14

Πυρήνας 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% σχετίζονται με εσωτερικά υποσυστήματα πυρήνα.

Ο κύριος καινοτομίες:

  • υποσύστημα δίσκου, συστήματα εισόδου/εξόδου και αρχείων:
    • για cgroup εφαρμόστηκε νέος ελεγκτής προτεραιότητας I/O - 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(). Για να απενεργοποιήσετε επιλεκτικά τη συμπίεση αρχείων με μάσκα, έχει προταθεί μια νέα επιλογή προσάρτησης nocompress.
    • έχει γίνει δουλειά στο πρόγραμμα οδήγησης exFAT για τη βελτίωση της συμβατότητας με την αποθήκευση ορισμένων ψηφιακών φωτογραφικών μηχανών.
    • προστέθηκε κλήση συστήματος quotactl_fd(), το οποίο σας επιτρέπει να διαχειρίζεστε ποσοστώσεις όχι μέσω ενός ειδικού αρχείου συσκευής, αλλά καθορίζοντας έναν περιγραφέα αρχείου που σχετίζεται με το σύστημα αρχείων για το οποίο εφαρμόζεται η ποσόστωση.
    • Τα παλιά προγράμματα οδήγησης για συσκευές μπλοκ με διεπαφή IDE έχουν αφαιρεθεί από τον πυρήνα· έχουν αντικατασταθεί εδώ και καιρό από το υποσύστημα libata. Η υποστήριξη για παλιές συσκευές έχει διατηρηθεί πλήρως, οι αλλαγές αφορούν μόνο τη δυνατότητα χρήσης παλαιών προγραμμάτων οδήγησης, κατά τη χρήση των οποίων οι μονάδες ονομάζονταν /dev/hd* και όχι /dev/sd*.
    • Το "ακατέργαστο" πρόγραμμα οδήγησης έχει αφαιρεθεί από τον πυρήνα, παρέχοντας πρόσβαση χωρίς προσωρινή αποθήκευση σε συσκευές αποκλεισμού μέσω της διεπαφής /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) σε συστήματα φιλοξενούμενων, η οποία σας επιτρέπει να συνδέετε ετικέτες σε κάθε λειτουργία εκχώρησης μνήμης και να οργανώνετε τον έλεγχο της σωστής χρήσης δεικτών για να αποκλείσετε την εκμετάλλευση τρωτά σημεία που προκαλούνται από την πρόσβαση σε ήδη ελευθερωμένα μπλοκ μνήμης, υπερχείλιση buffer, προσβάσεις πριν από την προετοιμασία και χρήση εκτός του τρέχοντος περιβάλλοντος.
    • Ο έλεγχος ταυτότητας δείκτη που παρέχεται από την πλατφόρμα 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), που παρέχει εργαλεία για τη βελτίωση της απόδοσης εφαρμογών πολλαπλών νημάτων εξαλείφοντας δυναμικά τις περιττές λειτουργίες συγχρονισμού, είναι απενεργοποιημένη από προεπιλογή. Οι επεκτάσεις είναι απενεργοποιημένες λόγω της πιθανότητας επιθέσεων Φορτίο ζόμπι, χειρισμός της διαρροής πληροφοριών μέσω καναλιών τρίτων που συμβαίνει κατά τη λειτουργία του μηχανισμού ασύγχρονης διακοπής λειτουργιών (TAA, TSX Asynchronous Abort).
  • υποσύστημα δικτύου:
    • συνεχιζόμενη ενσωμάτωση στον πυρήνα του MPTCP (MultiPath TCP), μια επέκταση του πρωτοκόλλου TCP για την οργάνωση της λειτουργίας μιας σύνδεσης TCP με την παράδοση πακέτων ταυτόχρονα σε διάφορες διαδρομές μέσω διαφορετικών διεπαφών δικτύου που σχετίζονται με διαφορετικές διευθύνσεις IP. Στο νέο τεύχος προστέθηκε ένας μηχανισμός για τον ορισμό των δικών σας πολιτικών κατακερματισμού κυκλοφορίας για IPv4 και IPv6 (πολυδρομική πολιτική κατακερματισμού), καθιστώντας δυνατό από τον χώρο χρήστη να προσδιορίσετε ποια πεδία σε πακέτα, συμπεριλαμβανομένων των ενθυλακωμένων, θα χρησιμοποιηθούν κατά τον υπολογισμό του κατακερματισμού που καθορίζει την επιλογή της διαδρομής για το πακέτο?
    • Η υποστήριξη υποδοχής έχει προστεθεί στο virtual transport virtio SOCK_SEQPACKET (τακτική και αξιόπιστη μετάδοση datagrams).
    • Οι δυνατότητες του μηχανισμού υποδοχής 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.
    • προστέθηκε Πρόγραμμα οδήγησης γραφικών simpledrm που χρησιμοποιεί το framebuffer EFI-GOP ή VESA που παρέχεται από το υλικολογισμικό UEFI ή το BIOS για έξοδο. Ο κύριος σκοπός του προγράμματος οδήγησης είναι να παρέχει δυνατότητες εξόδου γραφικών κατά τα αρχικά στάδια της εκκίνησης, πριν χρησιμοποιηθεί ένα πλήρες πρόγραμμα οδήγησης DRM. Το πρόγραμμα οδήγησης μπορεί επίσης να χρησιμοποιηθεί ως προσωρινή λύση για εξοπλισμό που δεν διαθέτει ακόμη εγγενή προγράμματα οδήγησης DRM.
    • προστέθηκε υποστήριξη υπολογιστή 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.

Πηγή: linux.org.ru