Linus Torvalds sabote-t-il délibérément Linux embarqué avec l’option FORCE_NR_CPUS pour éviter la confusion ?
Linus Torvalds, le célèbre créateur du noyau Linux, est-il intentionnellement à l’origine de la désactivation de l’option FORCE_NR_CPUS dans Linux embarqué afin d’éviter toute confusion ?
La Fonctionnalité FORCE_NR_CPUS et Ses Origines
Depuis quelques années, l’option de configuration FORCE_NR_CPUS dans le noyau Linux a permis de forcer le nombre de cœurs CPU que le noyau attend, afin de permettre de meilleures optimisations du compilateur. Lors de la construction d’un noyau ciblé pour un appareil/plateforme spécifique avec un certain nombre de cœurs CPU, le compilateur peut alors optimiser les routines de masques de CPU et réduire la taille du noyau résultant au lieu d’avoir à accueillir un nombre dynamique de cœurs CPU au moment du démarrage.
Optimisation vs. Complexité
La véritable utilité de FORCE_NR_CPUS réside dans les scénarios embarqués extrêmes où les ressources sont limitées. Par exemple, en 2022, l’utilisation de FORCE_NR_CPUS=y avec une valeur par défaut de NR_CPUS=4 pour cibler une plateforme à 4 cœurs a permis d’économiser 46KB. Bien que cette économie puisse sembler minime, elle peut être cruciale dans des contextes embarqués très contraints.
Risques et Inconvénients
Cependant, lorsque le nombre de CPUs du système ne correspond pas au nombre de CPUs forcé pour de telles constructions de noyau, des problèmes peuvent survenir. Un rapport récent a mentionné un crash du noyau lorsque le nombre de CPUs forcé ne correspondait pas au nombre de CPUs au démarrage. Linus Torvalds lui-même a reconnu que cela signifiait que la configuration utilisée n’était pas valide.
La Réflexion de Linus Torvalds
Linus a exprimé des doutes sur l’utilité de FORCE_NR_CPUS, la qualifiant d’erreur. Selon lui, bien que cela améliore légèrement la génération de code bitmask, c’est surtout une option de cas spécial destinée aux environnements embarqués ou aux machines spécifiques. Il a évoqué la perte de sens de cette option, car de nombreuses distributions activent l’option EXPERT par défaut, permettant ainsi l’activation de FORCE_NR_CPUS même lorsqu’elle n’est pas nécessaire.
Décision de Restriction
Pour éviter la confusion, Linus a poussé un commit visant à restreindre encore davantage FORCE_NR_CPUS. La hardcodage du nombre de CPUs améliore la génération du code, mais si c’est mal configuré, le résultat peut être déroutant. Malgré les limitations précédentes réservant cette option aux experts, cela ne semblait pas suffire, car les configurations des noyaux de distributions incluaient souvent EXPERT.
État Actuel et Perspectives
La modification est maintenant intégrée dans le Git de Linux 6.10 en prévision de la sortie de Linux 6.10-rc5. Si aucune objection n’est soulevée, cette option pourrait être totalement supprimée du noyau principal de Linux ou une approche mieux adaptée aux options de construction du noyau embarqué pourrait être envisagée.
Implications pour les Développeurs et Utilisateurs Embarqués
Pour les développeurs et les utilisateurs de systèmes embarqués, cette décision signifie que les options de configuration pour la taille et les performances du noyau pourraient devenir plus simples mais potentiellement moins flexibles. La communauté Linux devra peut-être trouver des alternatives ou des ajustements pour maintenir l’efficacité des configurations noyaux dans des environnements à ressources limitées.
Commentaires
Laisser un commentaire