AccueilActualités informatiqueLe noyau Linux 5.16 optimise la gestion de la mémoire

Le noyau Linux 5.16 optimise la gestion de la mémoire

Mi-janvier, Linus Torvalds a publié la dernière version du noyau Linux. Linux 5.16 donne le coup d’envoi du mécanisme de verrouillage Futex2 et promet de meilleures performances, notamment lors de l’exécution de jeux Windows sous Linux.

Futex est l’abréviation de « Fast User Mutex ». Il permet d’utiliser des verrous (mutexes) pour l’accès concurrent non seulement dans l’espace du noyau, mais aussi dans l’espace utilisateur. Un appel à futex() bloque le processus ou son thread jusqu’à ce que la ressource concernée soit libérée. À terme, Futex2 devrait remplacer l’appel système historique et vieillissant futex() remplace le Futex. D’un remplacement complet de l’ancien futex() Futex2 dans Linux 5.16 est encore loin. L’approche adoptée est une variante légère qui répond à un problème spécifique.

La fonction actuelle ne peut interroger qu’un seul Futex. Si plusieurs sont à prendre en compte, cela ne peut se faire que l’un après l’autre, avec le défaut d’aboutir à plusieurs appels bloquants de futex() en série. Cela présente des inconvénients, notamment pour les jeux Windows qui sont exécutés avec une couche de compatibilité comme WINE ou Proton.

Sommaire

En effet, l’API Windows propose la fonction WaitForMultipleObjects()qui permet d’interroger plusieurs objets. Ces objets peuvent être utilisés de la même manière que les ressources et les futexes dans Linux. Windows peut cependant effectuer la requête en parallèle en un seul appel, ce qui n’est pas le cas de Linux jusqu’à présent. C’est là qu’intervient Linux 5.16 avec le premier patch Futex2. Le noyau exécute l’appel système futex_waitv() qui peut attendre plusieurs mutex ou leur libération en même temps. Ainsi, Linux 5.16 peut utiliser la fonction « Mutex » pour les couches de compatibilité. WaitForMultipleObjects() de manière plus élégante et plus efficace. Les jeux Windows sous Linux bénéficient d’un gain de vitesse.

Unter Linux ausgeführte Windows-Spiele sollen von Futex2 profitieren, das eine Thread-Funktion von Windows nachbildet.,

Les jeux Windows exécutés sous Linux devraient bénéficier de Futex2, qui reproduit une fonction de thread de Windows.

Linux 5.16 bouleverse la gestion de la mémoire en introduisant les « folio-pages ». Celles-ci rendent superflues les vérifications fastidieuses lors de l’adressage des pages mémoire, mais nécessitent également des modifications importantes dans d’innombrables fonctions mémoire.

Pour comprendre : Linux gère la mémoire virtuelle avec des pages de mémoire (Pages). La taille des pages joue un rôle dans les performances du système, mais la taille optimale dépend de l’architecture du processeur utilisé. Comme le noyau Linux fonctionne sur un grand nombre d’architectures différentes, il utilise en interne une taille de base (logique) pour les pages à des fins de gestion.

Pour représenter en interne la page impliquée dans le matériel, le noyau Linux utilise des fédérations de pages (pages composées). Dans ces fédérations, le noyau attache les unes aux autres des pages de base logiques afin d’obtenir la taille des pages physiques. Le début de la fédération est représenté par une page de tête ; toutes les pages suivantes dans la fédération sont les pages de queue.

Si une page de queue est passée en paramètre à une fonction du noyau, la page de tête doit d’abord être déterminée. La fonction compound_head() est réalisée sous forme de fonction en ligne afin d’économiser au moins quelques cycles d’horloge. Dans le noyau exécutable, il n’y a pas de véritable appel de fonction, mais le code est copié à la place. Cela finit par gonfler le noyau.

Le concept de folio élimine cette inefficacité. Une page folio n’est rien d’autre qu’une page qui est garantie être une page de tête. Contrôles et conversions avec compound_head() sont supprimés. Cela permet d’alléger le code et d’augmenter les performances, en particulier pour de nombreuses fonctions du noyau de la gestion de la mémoire, mais aussi pour les systèmes de fichiers.

L’approche a longtemps été controversée, car elle entraîne un acte de violence. D’une part, un monde parallèle est créé pour la gestion des pages. En plus des fonctions de page existantes, des fonctions de folio supplémentaires sont nécessaires. D’autre part, d’énormes quantités de fonctions du noyau doivent être adaptées à l’API. L’augmentation potentielle des performances a fini par convaincre l’équipe du noyau de Linux 5.16 de franchir le pas.

c’t édition 4/2022

Il y a des zones WLAN mortes dans votre ménage ? Alors vous devriez consulter le dernier c’t. Vous y trouverez une foule de conseils sur le réseau sans fil. En outre, nous avons examiné ce que valent les smartphones d’occasion. Nous nous penchons sur les tendances de l’année, vous montrons comment créer des feuilles de calcul en un tour de main et révélons un scandale de données. Tout cela et bien plus encore dans c’t 4/22.

  • c’t révèle la situation : Fuite de données de la ville de Lübeck

  • Le haut débit dans toute la maison

  • Smartphones d’occasion du revendeur

  • Tendances 2022 : sortir de la crise grâce à l’informatique ?

  • Créer et partager des fiches de travail

  • TikTok : Algorithmes modèle d’entreprise

  • Linux sur le PC optimal 2022

  • c’t 4/2022 à télécharger

Plus d'articles