Le Multikernel - La prochaine révolution Linux
Et si votre serveur Linux était comme un appart en coloc où tout le monde partage la même cuisine, le même salon, les mêmes chiottes ?? Forcément, ça finit toujours mal avec quelqu’un qui monopolise les toilettes de bain pendant que vous avez une urgence en spray, un autre fait crasher la machine à laver avec ses expérimentations douteuses de voyage dans le temps, et au final personne n’est content.
Hé bien figurez-vous qu’un développeur nommé Cong Wang de Multikernel Technologies vient de proposer une solution radicale qui consiste à donner à chaque processus son propre kernel Linux, avec ses propres core CPU, comme des colocataires qui auraient enfin chacun leur studio…
Selon le patch soumis sur la Linux Kernel Mailing List (LKML), cette architecture “multikernel” permettrait de faire tourner plusieurs noyaux Linux indépendants sur la même machine physique. C’est pas vraiment de la virtualisation classique façon VMware ou KVM, mais c’est plutôt comme si vous découpiez votre ordinateur en tranches et que chaque tranche vivait sa vie. Le truc marrant, c’est que Cong Wang n’est pas un petit nouveau qui débarque avec ses idées folles. Le bonhomme a déjà contribué à plus de 1000 patches au noyau Linux et il maintient le sous-système de traffic control . Autant dire qu’il sait de quoi il parle quand il touche au code du noyau.
D’ailleurs cette idée de séparer les kernels rappelle furieusement le projet Barrelfish que Microsoft Research et l’ETH Zurich avaient lancé il y a quinze ans. À l’époque, ils voulaient traiter l’OS comme un système distribué où chaque core CPU aurait son propre kernel qui communique avec les autres par messages. Sauf que voilà, c’était trop tôt. Les processeurs n’avaient pas assez de cores pour qu’on puisse se permettre ce genre de luxe, et puis franchement, qui avait besoin de ça en 2009 ?
Aujourd’hui avec nos CPU à 128 cores et nos problèmes de sécurité qui explosent, l’idée prend soudainement tout son sens.
Selon Phoronix et les patches sur la LKML, l’implémentation de Wang utilise kexec, ce mécanisme qui permet normalement de redémarrer directement dans un nouveau noyau sans repasser par un reboot. Sauf qu’ici, au lieu de remplacer le noyau existant, on en charge plusieurs qui vont cohabiter. Chaque kernel se voit attribuer ses propres cores CPU et ils communiquent entre eux via un système d’interruptions inter-processeurs (IPI) spécialement conçu pour l’occasion. Et dans les 7 patches proposés en RFC, Wang prévoit des mécanismes de surveillance pour gérer tous ces petits mondes parallèles.

Et pendant que Cong Wang bricolait son multikernel dans son coin, les géants du cloud comme Amazon, Microsoft et Google ont développé en parallèle une technologie appelée KHO ( Kexec HandOver ) qui permet de préserver l’état système lors du changement de kernel. En gros, ils veulent pouvoir mettre à jour le noyau Linux de leurs serveurs sans perdre les VMs qui tournent dessus. Sauf que si le multikernel de Wang fonctionne vraiment, ça pourrait rendre leur stack de virtualisation complètement obsolète.
Car pourquoi s’embêter avec des hyperviseurs complexes quand on peut juste donner à chaque workload son propre kernel ?
Le plus drôle dans tout ça, c’est que Wang admet candidement dans son RFC que pour l’instant, ça marche “que sur sa machine de dev avec des paramètres hardcodés”.
Maintenant si cette techno décolle, on pourrait voir des trucs assez dingues. Genre un kernel temps réel qui gère les processus critiques pendant qu’un kernel classique s’occupe du reste. Ou alors des kernels spécialisés pour différents types de workloads : un pour le machine learning, un pour les bases de données, un pour le réseau. Vous pourriez même imaginer des kernels avec différents niveaux de sécurité du genre un kernel ultra-paranoia pour vos données sensibles et un kernel plus relax pour Netflix. Et le plus beau c’est que si un kernel plante, les autres continuent de tourner tranquillement.
C’est comme avoir plusieurs systèmes de secours intégrés directement dans la machine.
Mais attention, on parle quand même d’une RFC, et pas encore d’un truc prêt pour la prod. La communauté des barbus du noyau va probablement passer des mois à débattre de chaque ligne de code, et c’est tant mieux parce que toucher à l’architecture fondamentale de Linux, c’est pas comme patcher un bug dans Firefox. Si ça merde, c’est potentiellement des millions de serveurs qui partent en vrille.
Au final, que ce patch soit accepté ou pas, ça montre surtout que Linux continue d’évoluer de manière radicale pour toujours aller plus loin ! Et si vous l’évolution de ce projet, tout se passe sur la LKML .