11 points par GN⁺ 2024-09-16 | 3 commentaires | Partager sur WhatsApp
  • Linus Torvalds a publié le noyau 6.11
    • Son message : « Une fois de plus, je suis en voyage et pas dans mon fuseau horaire habituel, mais ici à Vienne, c’est dimanche après-midi, et la 6.11 est sortie. »
  • Parmi les principaux changements de cette version figurent les nouvelles opérations bind() et listen() de io_uring, le patch de verrouillage bottom-half imbriqué, la possibilité d’écrire dans des exécutables occupés, la prise en charge de l’écriture de pilotes de bloc en Rust, la prise en charge des écritures atomiques dans la couche bloc, un allocateur slab à buckets dédiés, ainsi qu’une implémentation vDSO de getrandom()

Changements par architecture

  • L’architecture Arm 64 bits prend désormais en charge le CPU hotplug sur les systèmes ACPI. Voir ce commit de documentation pour plus de détails
  • Le noyau x86 peut maintenant s’exécuter en tant qu’invité en utilisant la fonctionnalité de virtualisation chiffrée sécurisée SEV-SNP d’AMD, via le module de service de VM sécurisée
  • La fonctionnalité de « fake EFI memory map » de x86 a été supprimée. Elle permettait de créer au démarrage des entrées fictives dans la carte mémoire, mais elle n’était pas compatible avec les configurations de confidential computing
  • Nouvelle implémentation du chiffrement AES-GCM pour les systèmes x86-64. Les gains de performance sont toujours bienvenus, mais cette contribution se distingue aussi par sa documentation très complète sur le code et son fonctionnement. Voir ce commit pour plus de détails
  • La prise en charge de la plateforme PowerPC 40x a été supprimée
  • La prise en charge du memory hotplug a été ajoutée aux systèmes RISC-V

Noyau principal

  • Le sous-système io_uring fournit désormais des opérations implémentant bind() et listen()
  • Un nouvel ensemble d’opérations ioctl() pour le système de fichiers nsfs (namespaces) permet de convertir les identifiants de processus et de groupes de threads entre espaces de noms PID
  • Le système de fichiers pidfd prend en charge un nouvel appel ioctl() permettant d’obtenir les descripteurs de fichiers des espaces de noms du processus représenté par un pidfd
  • Le patch de verrouillage bottom-half imbriqué a été fusionné. Il vise principalement à améliorer la latence du noyau temps réel, mais devrait aussi bénéficier à d’autres utilisateurs
  • Un nouvel appel système, uretprobe(), pour l’instant implémenté uniquement sur les systèmes x86-64, est disponible. Son rôle est d’optimiser le traitement des uretprobes (points de trace sur retour de fonction) insérés dynamiquement dans les processus en espace utilisateur
  • La restriction à un seul utilisateur pour le function-graph tracer a été supprimée
  • Le nouveau paramètre de ligne de commande reserve_mem= permet de réserver des zones mémoire nommées. Il est prévu pour être utilisé avec le sous-système pstore en combinaison avec le nouveau paramètre ramoops.mem_name=

Systèmes de fichiers et E/S bloc

  • L’appel système statx() autorise désormais un argument de chemin nul lorsque le drapeau AT_EMPTY_PATH est défini
  • Avec open_by_handle_at(), le contrôle des permissions est quelque peu assoupli dans la 6.11 lorsque le noyau peut vérifier que l’appelant dispose des droits d’accès appropriés au fichier
  • Le noyau Linux bloquait traditionnellement l’écriture sur les exécutables utilisés par un processus quelque part dans le système, afin d’éviter de mauvaises surprises avec les programmes en cours d’exécution. Les développeurs du noyau suppriment progressivement cette restriction depuis des années. À partir de la 6.11, le noyau n’empêche plus l’écriture sur les exécutables en cours d’utilisation
  • Le système de fichiers Btrfs reconnaît plusieurs nouvelles valeurs pour l’option de montage rescue= (ignoremetacsums et ignoresuperflags). Elles servent à prendre en charge la récupération de systèmes de fichiers partiellement convertis par des outils en espace utilisateur, notamment ceux ayant subi une conversion de checksum
  • La manière dont Btrfs effectue la récupération des groupes de blocs a été améliorée. L’objectif est d’éviter les situations où l’espace libre devient inutilisable alors que le système de fichiers n’est pas plein. Voir ce commit pour une explication du fonctionnement du nouveau seuil de récupération dynamique

Prise en charge matérielle

  • Contrôleur d’horloge caméra Qualcomm SM8650
  • Monitoring matériel, notamment les capteurs de température compatibles SPD5118 et le contrôleur numérique multiphase à double boucle Monolithic Power Systems MP2993
  • Divers éléments, dont les capteurs du contrôleur embarqué ChromeOS et les contrôleurs de charge basés sur ChromeOS EC
  • Réseau : adaptateur réseau sans fil USB Realtek RTL8192DU, interface Renesas Ethernet-TSN, interface CAN Vining 800, etc.
  • Horloges : contrôleur PLL Amlogic C3, contrôleurs d’horloge d’affichage/caméra/vidéo Qualcomm SM7150, etc.
  • GPIO et contrôle de broches : unité de contrôle de broches NXP IMX91, contrôleur de broches et GPIO Nuvoton MA35, etc.
  • Graphisme : panneau Lincoln Technologies lcd197, panneaux basés sur Ilitek ILI9806E, etc.
  • Ajout de nouvelles prises en charge matérielles dans de nombreux domaines, dont l’I/O industriel, les périphériques d’entrée, les médias, divers autres, PHY, le son et l’USB

Divers

  • Apparition d’un nouveau sous-système de power sequencing destiné à mettre en route les périphériques d’un système dans le bon ordre
  • Le module « sloppy logic analyzer » peut transformer un ensemble de lignes GPIO en analyseur logique à bas coût
  • De nombreuses nouvelles fonctionnalités ont été ajoutées à l’outil perf
  • Un petit ensemble d’abstractions Rust pour le chargement de firmware a été fusionné. Il manque encore de nombreux éléments pour écrire des pilotes importants en Rust, mais la liste diminue progressivement

Réseau

  • Le nouveau paramètre sysctl net.tcp_rto_min_us permet d’ajuster le délai minimal d’expiration de retransmission des sockets TCP
  • L’utilitaire ethtool peut désormais ajuster finement la configuration des interruptions pour les interfaces utilisant Net DIM

Sécurité

Virtualisation et conteneurs

  • KVM ajoute une prise en charge initiale du mécanisme de virtualisation chiffrée sécurisée SEV-SNP d’AMD
  • Un nouvel appel ioctl() de KVM permet de préremplir la mémoire de l’invité avant son exécution

Changements internes du noyau

  • Le tout premier changement fusionné dans la 6.11 est un nouveau mécanisme de « runtime constants » ajouté par Linus Torvalds
  • Une certaine documentation sur le sous-système iomap a enfin été ajoutée
  • La version minimale de GNU Make requise pour compiler le noyau passe à 4.0
  • Dans la 6.11, 118 symboles exportés ont été supprimés et 464 ajoutés, soit une hausse nette de 346. Il y a aussi 6 nouveaux kfunc

L’avis de GN⁺

  • Cette version 6.11 du noyau se distingue par de nombreuses améliorations spécifiques aux architectures et par l’extension de la prise en charge matérielle. En particulier, le CPU hotplug sur Arm 64 bits et la prise en charge de SEV-SNP d’AMD sur x86 sont significatifs du point de vue de la sécurité et de la virtualisation
  • Avec les nouvelles fonctionnalités ajoutées à io_uring et à BPF, la prise en charge au niveau noyau des E/S hautes performances et de la programmation eBPF se renforce. Cela devrait beaucoup aider pour l’optimisation des performances système, l’observabilité et le réseau
  • L’arrivée de nouveaux sous-systèmes et modules comme le power sequencing ou le « sloppy logic analyzer » devrait accroître l’utilité du noyau Linux dans les environnements embarqués et IoT
  • Les optimisations internes du code du noyau et les améliorations de confort pour les développeurs, comme les runtime constants ou les progrès de la documentation, se poursuivent régulièrement. Mais la documentation reste encore insuffisante sur certains points, ce qui semble appeler une coopération renforcée de la communauté
  • Dans la seconde moitié de la merge window de la 6.11, les améliorations de performance sur plusieurs architectures et la prise en charge de nouveaux matériels ont dominé. Les optimisations d’AES-GCM sur x86-64 et la prise en charge du memory hotplug sur RISC-V sont particulièrement notables
  • Des progrès ont aussi eu lieu sur le plan de la sécurité de la virtualisation, avec notamment l’ajout d’une prise en charge initiale de SEV-SNP d’AMD dans KVM. Cela suggère que le rôle du noyau Linux va encore s’étendre dans le cloud et l’edge computing
  • L’introduction d’abstractions Rust pour le chargement de firmware et pour la prévention du heap spraying montre le potentiel de Rust comme langage de programmation système. La part du code Rust dans le noyau devrait progressivement augmenter
  • Le report de la fusion de la classe de scheduler extensible est regrettable, mais semble inévitable pour permettre une revue suffisante et une meilleure stabilisation. Le scheduler ayant un impact direct sur les performances système, une approche prudente est nécessaire

3 commentaires

 
ehlegeth 2024-10-03

« Même après la mise à jour vers 6.10.10, il arrive encore par intermittence qu’il ne se réveille pas de la mise en veille »
Je ne suis donc pas le seul...

 
xcutz 2024-09-16

Il va falloir que papa Torvalds vive encore au moins 200 ans.

 
GN⁺ 2024-09-16
Avis sur Hacker News
  • La version 6.10 a eu beaucoup de problèmes en raison de plusieurs bugs majeurs
    • Trois bugs liés à amdgpu ont provoqué une corruption vidéo, des blocages du système et des crashs
    • Même après la mise à jour vers 6.10.10, le système ne sortait toujours pas de veille de manière intermittente
  • Beaucoup de progrès ont été accomplis depuis Linux 3.11
  • Impressionné que Torvalds rédige toujours les notes de publication du noyau Linux
  • Des nouvelles dont on peut se réjouir
    • Prise en charge de l’écriture de pilotes de blocs en Rust
    • Prise en charge des opérations d’écriture atomique dans la couche bloc
  • Des attentes pour la version 6.12 : sched_ext, PREEMPT_RT
  • Demande des avis sur la nouvelle prise en charge de Snapdragon X
  • Se demande comment les constantes d’exécution seront implémentées
  • Se demande quand viendra l’ère de GNU/Linux sur smartphone
    • Android ne convient pas
    • Espère pouvoir installer facilement une distribution sur un smartphone comme sur un desktop
  • Se demande s’il est désormais possible de suspendre un laptop Linux en RAM
  • Attend le jour où Ubuntu affirmera avoir activé et testé cette fonctionnalité pendant quelques jours dans la bêta Oracular