Le site de Brendan : pour commencer
- La page d’accueil du blog de Brendan Gregg couvre divers sujets comme les performances système, les outils BPF et les performances Linux.
- Parmi les billets récents figurent le retour des frame pointers, un documentaire sur eBPF, ou encore l’idée que les outils d’observabilité eBPF ne sont pas des outils de sécurité.
- Le blog partage aussi, en plus de contenus techniques, plusieurs conférences et présentations auxquelles Brendan a participé.
Le retour des frame pointers
- Sur les systèmes sans frame pointers, le traçage de pile s’arrête à la couche libc, ce qui fait disparaître les frames de l’application.
- Fedora et Ubuntu ont résolu ce problème en publiant des versions où
libc est compilée avec les frame pointers activés par défaut.
- Les frame pointers sont utilisés par des profileurs et débogueurs externes, et visualisés via des flame graphs.
Qu’est-ce qu’un frame pointer ?
- Selon le document ABI x86-64, le registre CPU
%rbp peut être utilisé comme « base pointer » de la stack frame.
- Cette technique est largement utilisée pour le traçage de pile, notamment par Linux perf et eBPF.
2004 : suppression des frame pointers
- En 2004, le développeur gcc Roger Sayle a mené un changement visant à arrêter la génération des frame pointers.
- Ce changement a apporté un gain de performance, mais avec l’arrivée d’eBPF, certains débogueurs/profileurs rencontrent aujourd’hui des problèmes à cause de cela.
2005-2023 : l’hiver des profileurs cassés
- La suppression des frame pointers a aussi été appliquée à x86-64, mais cette architecture disposant de davantage de registres, le bénéfice y était limité.
- En conséquence, de nombreux débogueurs/profileurs ont cessé de fonctionner correctement.
2014 : Java in Flames
- En rejoignant Netflix, il a constaté que l’absence de support des frame pointers dans Java cassait toutes les stacks applicatives.
- Pour résoudre ce problème, il a développé un correctif pour le compilateur JVM c2.
2015-2020 : surcharge
- Le surcoût de performance lié à l’ajout des frame pointers partout est généralement inférieur à 1 %.
- Sur certains microbenchmarks, ce surcoût peut atteindre 10 %.
2022 : tentative upstream
- Cela suggère que de grandes entreprises comme Google, Meta et Netflix avaient déjà activé les frame pointers partout.
- Plusieurs difficultés subsistent toutefois pour faire de ce changement une valeur par défaut profitable à tous.
2023, 2024 : les frame pointers dans Fedora et Ubuntu
- Fedora a accepté une proposition visant à réactiver les frame pointers.
- Ubuntu a également activé les frame pointers par défaut dans la version 24.04 LTS.
Après 2034 : au-delà des frame pointers
- Il existe de nombreuses façons de tracer la stack : LBR, BTS, AET, DWARF, eBPF stack walking, ORC, SFrames, shadow stacks, etc.
- À l’avenir, SFrames ou les shadow stacks pourraient être utilisées pour tous les traçages de pile.
Conclusion
- Le retour des frame pointers rend les flame graphs CPU plus pertinents, fait fonctionner pour la première fois les flame graphs Off-CPU et ouvre d’autres nouvelles possibilités.
- C’est aussi une victoire pour les profileurs continus, qui n’auront plus à convaincre leurs clients de modifier l’OS pour fonctionner pleinement.
L’avis de GN⁺
- Le retour des frame pointers semble devoir apporter une aide majeure à l’analyse des performances système et au débogage. C’est un outil essentiel pour diagnostiquer les problèmes et optimiser les performances, en particulier dans les systèmes logiciels complexes.
- Ce changement montre l’importance de la collaboration et des contributions dans la communauté open source. Les décisions de Fedora et d’Ubuntu pourraient influencer d’autres distributions, entraînant une évolution positive de tout l’écosystème Linux.
- Réintroduire les frame pointers revient à trouver un équilibre entre baisse de performance et facilité de débogage. Cette décision peut être mieux comprise grâce à des tests et analyses de performance en conditions réelles d’exploitation.
- Pour les utilisateurs ayant un bagage technique, cette évolution peut être intéressante et fournit des informations utiles aux développeurs ou administrateurs système soucieux des performances.
- S’il existe d’autres technologies ou outils offrant des fonctions similaires aux frame pointers, on peut par exemple utiliser des profileurs matériels comme Intel VTune Profiler ou AMD uProf. Ces outils permettent l’analyse de performance même sans frame pointers.
1 commentaires
Commentaires Hacker News
-fomit-frame-pointera permis d’améliorer les performances