La semaine dernière, une proposition de modification de Fedora 37 a été proposée pour améliorer le profilage et le débogage des packages Fedora, mais avec des coûts de performances possibles. Cette modification suggérée consiste à ajouter”-fno-omit-frame-pointer”au CFLAGS/CXXFLAGS par défaut lors de la création de packages afin que le pointeur de cadre soit toujours disponible pour améliorer le débogage/profilage des packages Fedora d’origine. Malheureusement, cela peut entraîner des coûts de performances importants, comme le montrent ces benchmarks.
Le changement F37 proposé à l’échelle du système consiste à inclure”-fno-omit-frame-pointer”dans le cadre des drapeaux de compilation par défaut lors de la construction de packages Fedora. Le pointeur de cadre serait toujours disponible pour être utile lors du profilage des performances et du débogage. En l’omettant comme c’est actuellement le cas avec les niveaux d’optimisation standard du compilateur, il peut enregistrer trois instructions par fonction et traiter le registre de pointeur de trame/base RBP comme un registre à usage général pour une autre utilisation.
Cette proposition de changement Fedora 37 a été soumise par les ingénieurs de Meta/Facebook à qui ils ont dit que cette option n’avait pas d’impact sur deux de leurs applications les plus sensibles. Il y a quelques années, SUSE a cependant constaté que cette option nuisait à ses performances de 5 à 10 % dans certains benchmarks. La proposition de modification suggère de remplacer l’indicateur du compilateur pour certains packages dont les performances pourraient être trop importantes. La curiosité a eu raison de moi, j’ai donc effectué des tests de performance sur le coût des performances pour avoir défini”-fno-omit-frame-pointer”.
J’ai utilisé le TUXEDO Aura 15 Gen2 avec un AMD Ryzen 5 5500U comme un ordinateur portable de milieu de gamme comme base pour cette série de tests. Fedora 36 fonctionnait sur l’appareil avec toutes les mises à jour système disponibles. Aux fins de ces tests et de cette simplicité, j’ai examiné les performances de la création de divers benchmarks d’espace utilisateur C/C++ open source avec”-O2″(étant donné que-O2 est courant parmi les packages de distribution), puis à nouveau avec”-O2-fno-omit-frame-pointer”, donc la seule différence dans cette comparaison est l’ajout du-fno-omit-frame-pointer au CFLAGS/CXXFLAGS utilisé pour construire le logiciel testé. Bien sûr, la proposition de modification de Fedora 37 concerne la création de l’ensemble des packages du système d’exploitation avec cet indicateur.
J’ai chargé des dizaines de benchmarks/charges de travail open source différents pour tester l’impact du”-fno-omit-frame-pointer”des jeux open source aux charges de travail informatiques plus techniques. Il n’a pas fallu longtemps pour trouver que cette option avait un impact sur les performances globales du logiciel en cours de construction avec cet indicateur-uniquement le logiciel testé et non la reconstruction complète du système d’exploitation, car la proposition de modification F37 est encourageante.
Dans certaines des charges de travail testées, l’ajout de”-fno-omit-frame-pointer”a eu très peu d’impact sur les performances.
Pendant ce temps, dans la bibliothèque de chiffrement Botan, cet indicateur de compilateur a conduit à les régressions de performance les plus significatives. Dans divers algorithmes de chiffrement testés, les performances de Botan ont été détruites par cet indicateur de compilateur.
Heureusement, dans la plupart des charges de travail testées, le coût de performance de-fno-omit-frame-pointer n’était pas aussi grave que ce a été vu avec la référence de chiffrement Botan.
Mais il y a eu des succès considérables dans diverses autres charges de travail du monde réel…
De la station de travail audio numérique à la bibliothèque de communication PJSIP, il y a eu un une variété de charges de travail voient leurs performances baisser en gardant le pointeur de cadre autour.
En termes simples, il y a des coûts de performance mesurables introduits en construisant le logiciel avec”-fno-omit-frame-pointer”. Je suis plutôt surpris que cela soit considéré comme un changement par défaut pour Fedora, car bien qu’ils reconnaissent la possibilité de modifier le comportement des packages concernés, il semble que cela nécessitera de nombreuses solutions de contournement par liste noire/par package.
Redis est une autre charge de travail réelle qui a été particulièrement touchée par cet indicateur de compilateur.
Au total, j’ai effectué 100 tests différents sur cet ordinateur portable TUXEDO de milieu de gamme avec un ordinateur portable AMD Ryzen 5 5500U pour voir l’impact de créer un logiciel avec”-fno-omit-frame-pointer”sur Fedora 36 avec GCC 12. Bien que dans certains cas, il y ait eu un impact minimal voire aucune différence mesurable, dans de nombreuses charges de travail, cela a entraîné une régression significative des performances. Vous trouverez ci-dessous un aperçu du sous-ensemble des tests avec une amélioration mesurable des performances lors de la reconstruction du logiciel avec”-O2″plutôt que”-O2-fno-omit-frame-pointer” :
La bibliothèque de chiffrement Botan a été le plus durement touché avec Redis, la bibliothèque de traitement du signal numérique Liquid-DSP, les communications VoIP PJSIP, l’encodage audio FLAC, la compression de texture ASTC, la bibliothèque de réseau neuronal profond Intel oneDNN et divers autres progiciels étaient jusqu’à quelques pour cent plus lents.
Sur les 100 tests effectués pour cet article, en prenant la moyenne géométrique de tous ces benchmarks, cela équivaut à une pénalité de performance d’environ 14 % du logiciel avec-O2 par rapport à l’ajout de-fno-omit-frame-aiguille. Ceux qui souhaitent parcourir l’intégralité des 100 résultats de référence peuvent le faire via cette page de résultats.
Il sera très intéressant de voir ce qu’il adviendra de cette proposition de modification de Fedora 37. Bien que ce changement puisse améliorer le profilage des performances et le débogage de Fedora Linux prêt à l’emploi, il s’accompagne de coûts de performances non nuls… Je me demande quel est le ratio de ceux qui utilisent”perf”au quotidien et d’autres outils de profilage/débogage sur Fedora par rapport à ceux d’un système d’exploitation à usage général ? Dans tous les cas, consultez cette page Wiki Fedora pour ceux qui souhaitent en savoir plus sur ce changement de fonctionnalité proposé.