Multikernel, un excellent utilitaire pour exécuter plusieurs noyaux sans virtualisation.

Points clés:
  • Linux multinoyau permet d'exécuter simultanément des noyaux indépendants sur un système physique.
  • Basé sur le noyau Linux 7.0, il utilise CONFIG_MULTIKERNEL et prend actuellement en charge l'architecture x86_64.
  • Elle élimine la surcharge liée à la virtualisation (hyperviseurs KVM), permettant des changements de contexte 2,5 fois plus rapides.
  • Contrairement aux conteneurs, les instances ne partagent pas le noyau, ce qui empêche les pannes ou les vulnérabilités d'affecter l'ensemble du serveur.
  • Utilisez l'outil Kerf avec les modules Lazy CMA et DAXFS pour gérer dynamiquement les ressources et démarrer les images Docker.

Linux multinoyau

L'année dernière, nous avions évoqué sur ce blog une proposition de ByteDance (créateur de TikTok) concernant un utilitaire appelé Parker (PARTitioned KERnel), une technologie expérimentale permettant l'exécution simultanée de plusieurs noyaux Linux. Un an et demi plus tard, un nouvel utilitaire public issu de ce projet, « Multikernel Linux (mklinux-v7.0-mk2) », est désormais disponible.

Cette innovation introduit une variante spécialisée du noyau Linux permettant l' exécution simultanée de plusieurs instances de noyau indépendantes au sein d'un même serveur physique. En opérant directement sur le matériel, cette technologie élimine totalement le besoin d'hyperviseurs ou de couches de virtualisation, offrant à chaque instance un accès direct à la mémoire, au processeur et aux périphériques qui lui sont alloués.

ByteDance-Parker-multinoyau
Article connexe:
Parker : La nouvelle technologie qui permet d'exécuter plusieurs noyaux Linux sans virtualisation

Basé sur le noyau Linux 7.0 récemment publié, ce projet permet d'activer cette fonctionnalité via le paramètre de configuration CONFIG_MULTIKERNEL . Si cette option est désactivée, le noyau résultant est identique et se comporte comme un noyau Linux 7.0 standard. Actuellement, cette première version (v7.0-mk2) prend exclusivement en charge les architectures x86_64 et vise à combler l'écart de performance et de sécurité entre la virtualisation traditionnelle et l'isolation par conteneur.

Isolation sans impact sur les performances

Le principal problème de la virtualisation réside dans la surcharge de performances imposée par les hyperviseurs. À l'inverse, Linux multi-noyaux élimine les transitions de sortie de machine virtuelle , la traduction de mémoire de second niveau et la surcharge générée par les modèles de périphériques.

D'après les données de performance publiées suite aux tests effectués sur des processeurs Xeon Gold 5418Y (Sapphire Rapids), le système multi-noyaux affiche une augmentation spectaculaire de la vitesse d'exécution par rapport aux machines virtuelles KVM. Par exemple, le changement de contexte entre processus est 2,5 fois plus rapide, la latence des canaux est réduite de plus de moitié (2,18 fois) et les appels système de base, tels que les opérations de lecture et d'écriture, bénéficient d'un gain de temps de réponse supérieur à 25 %.

Comparé aux conteneurs Docker traditionnels, Multikernel offre une protection supérieure car, les conteneurs partageant le même noyau hôte, une vulnérabilité au niveau du noyau, un plantage ou une saturation des verrous internes affectent tous les locataires. Dans l'écosystème Multikernel, chaque environnement possède son propre noyau indépendant ; ainsi, si une instance subit une défaillance critique, les autres continuent de fonctionner sans interruption, garantissant un environnement isolé, idéal pour exécuter sur le même matériel des applications allant des serveurs web aux charges de travail intensives d'apprentissage automatique (entraînement de l'IA).

Affectation et orchestration dynamiques avec Kerf

Linux multikernel fonctionne grâce à un noyau hôte qui gère un vaste pool de ressources (processeurs, RAM et périphériques PCI). Exploitant la structure de l'arbre de périphériques existant (accessible via /sys/fs/multikernel/), le noyau répartit ces ressources et lance des « noyaux enfants » via le sous-système natif kexec_file_load(). Grâce à la fonctionnalité de branchement à chaud de Linux, ces ressources peuvent être déplacées dynamiquement entre les instances sans redémarrage du serveur, garantissant ainsi des performances prévisibles et ajustables en temps réel.

Pour orchestrer cet écosystème, les développeurs ont introduit l'outil en ligne de commande Kerf . Cet utilitaire gère l'intégralité du cycle de vie des instances, en s'appuyant sur des modules open source complémentaires. Parmi ceux-ci, Lazy CMA alloue de la mémoire physique contiguë à l'exécution sans nécessiter de configuration préalable au démarrage.

L'autre pilier est DAXFS, un module qui permet aux instances de partager des systèmes de fichiers directement en mémoire ; grâce à cela, Kerf peut démarrer un noyau enfant directement à l'intérieur d'une image de conteneur Docker, en tirant parti de son système de fichiers sans avoir besoin de couches d'émulation et en utilisant des descripteurs en mémoire pour l'interconnexion réseau sans copie de données.

Il convient de mentionner que cette première version a passé avec succès des tests de stabilité intensifs sous des architectures de pagination à 5 niveaux et un KASLR actif, démontrant ainsi que la récupération des ressources est totalement sûre même en cas de plantage d'un noyau enfant.

En permettant de répartir les charges de travail qui entraient en collision en raison de verrous système (comme un grand nombre de processus de suppression ou de renommage sur le même cache) sur des noyaux distincts alignés sur les sockets physiques du processeur, Multikernel Linux démontre la capacité de dépasser la limite de performance imposée par un seul noyau monolithique, ouvrant une nouvelle ère dans la consolidation des serveurs et le cloud computing haute performance.

Enfin, si vous souhaitez en savoir plus, vous trouverez les détails en suivant ce lien.


Ajouter comme source préférée dans Google