La société chinoise ByteDance, qui développe le service TikTok, a publié sur la liste de diffusion des développeurs du noyau Linux des correctifs pour la mise en œuvre du système Parker (PARtitioned KERnel), permettant d'exécuter plusieurs noyaux Linux simultanément sur un seul ordinateur sans utiliser de virtualisation traditionnelle. En termes de problèmes résolus, Parker rappelle le projet Multikernel présenté il y a quelques jours, mais se distingue par son architecture et sa mise en œuvre.
Dans Parker, il y a une section des noyaux CPU, de la mémoire et des dispositifs existants. Chaque instance de noyau exécutée est basée sur une image de noyau commune, mais peut utiliser différentes configurations et optimisations. Le premier noyau chargé (Boot Kernel) s'occupe de la répartition et de la section des dispositifs matériels. Les autres instances de noyau Linux (Application Kernel) fonctionnent uniquement avec leurs noyaux CPU, mémoires et dispositifs d'entrée/sortie qui leur sont associés.
Dans la version initiale, pour réduire les coûts généraux et simplifier la mise en œuvre, il n'y a pas de mécanisme de gestion et tous les noyaux utilisent une seule zone d'isolation (domain), c'est-à-dire qu'une erreur dans n'importe quelle instance de noyau peut entraîner des problèmes dans l'ensemble du système. À l'avenir, il est prévu d'utiliser des fonctionnalités matérielles distinctes pour isoler les instances de noyau. Parker est mentionné comme étant applicable aux ordinateurs avec un grand nombre de noyaux CPU, où des problèmes surgissent lors de la mise à l'échelle des tâches.
Pour la gestion, Parker a mis en œuvre une interface basée sur kernfs, et pour charger des instances supplémentaires de noyau dans des zones de mémoire réservées, kexec est utilisé. Avant le lancement d'autres noyaux, le noyau principal libère les noyaux CPU, réserve la mémoire physique et détache les dispositifs PCI pour leur utilisation dans le noyau sectionné. Chaque noyau doit être associé à son propre dispositif PCIe, tel qu'un disque NVMe ou un adaptateur réseau, pour les entrées/sorties. Une fois qu'une instance de noyau est lancée, elle ne peut pas interagir avec d'autres noyaux.
Source : opennet.ru
