El sitio de Brendan: introducción
- La página principal del blog de Brendan Gregg cubre diversos temas sobre rendimiento de sistemas, herramientas BPF, rendimiento en Linux y más.
- Entre las publicaciones recientes se incluyen el regreso de los frame pointers, un documental sobre eBPF y por qué las herramientas de observabilidad con eBPF no son herramientas de seguridad.
- Además del contenido técnico, el blog también comparte varias conferencias y presentaciones en las que Brendan ha participado.
El regreso de los frame pointers
- En sistemas sin frame pointers, el rastreo de pila se detiene en la capa de libc, por lo que faltan los frames de la aplicación.
- Fedora y Ubuntu resolvieron este problema al lanzar versiones compiladas de libc que incluyen frame pointers por defecto.
- Los frame pointers son usados por perfiles y depuradores externos, y se visualizan mediante flame graphs.
¿Qué es un frame pointer?
- Según la documentación ABI de x86-64, el registro de CPU %rbp puede usarse como el "base pointer" de un stack frame.
- Esta técnica se usa ampliamente para el rastreo de pila, y la utilizan Linux perf y eBPF, entre otros.
2004: eliminación de los frame pointers
- En 2004, el desarrollador de gcc Roger Sayle impulsó un cambio para dejar de generar frame pointers.
- Este cambio mejoró el rendimiento, pero con la llegada de eBPF hoy algunos depuradores/profilers tienen problemas por esa razón.
2005-2023: el invierno de los profilers rotos
- El cambio para eliminar frame pointers también se aplicó a x86-64, pero esta arquitectura tiene más registros, así que el beneficio no fue grande.
- Como resultado, muchos depuradores/profilers dejaron de funcionar correctamente.
2014: Java in Flames
- Al unirse a Netflix, descubrió que la falta de soporte de frame pointers en Java rompía todas las pilas de las aplicaciones.
- Para resolverlo, desarrolló una corrección para el compilador c2 de la JVM.
2015-2020: sobrecarga
- La sobrecarga de rendimiento de agregar frame pointers a todo suele ser menor al 1%.
- En ciertos microbenchmarks, la sobrecarga puede llegar al 10%.
2022: intento upstream
- Se da a entender que grandes empresas como Google, Meta y Netflix ya habían habilitado frame pointers en todo.
- Hay varias dificultades para convertir este cambio en el valor predeterminado de forma que beneficie a todos.
2023, 2024: frame pointers en Fedora y Ubuntu
- Fedora aceptó una propuesta para volver a habilitar los frame pointers.
- Ubuntu también habilitó frame pointers por defecto en la versión 24.04 LTS.
Después de 2034: más allá de los frame pointers
- Hay varias formas de rastrear stacks, incluyendo LBR, BTS, AET, DWARF, eBPF stack walking, ORC, SFrames y shadow stacks.
- En el futuro, SFrames o shadow stacks podrían usarse para todo el rastreo de pila.
Conclusión
- El regreso de los frame pointers hace que los flame graphs de CPU sean más significativos, permite que los flame graphs Off-CPU funcionen por primera vez y abre otras posibilidades nuevas.
- También es una victoria para los profilers continuos, ya que ya no necesitan convencer a los clientes de cambiar el OS para que el profiler funcione por completo.
Opinión de GN⁺
- El regreso de los frame pointers parece que será de gran ayuda para el análisis de rendimiento del sistema y la depuración. En particular, es una herramienta esencial para diagnosticar problemas y optimizar el rendimiento en sistemas de software complejos.
- Este cambio muestra la importancia de la colaboración y las contribuciones de la comunidad de código abierto. Las decisiones de Fedora y Ubuntu podrían influir en otras distribuciones, lo que traería un cambio positivo a todo el ecosistema Linux.
- Reintroducir los frame pointers es una cuestión de equilibrar la pérdida de rendimiento con la facilidad de depuración. Esta decisión puede entenderse mejor mediante pruebas y análisis de rendimiento en entornos reales de operación.
- Para los usuarios con formación técnica, este cambio puede resultar interesante, y ofrece información útil para desarrolladores o administradores de sistemas interesados en mejorar el rendimiento del sistema.
- Si existen otras tecnologías o herramientas que ofrezcan funciones similares a los frame pointers, se pueden usar profilers basados en hardware como Intel VTune Profiler o AMD uProf, por ejemplo. Estas herramientas permiten el análisis de rendimiento incluso sin frame pointers.
1 comentarios
Comentarios de Hacker News
-fomit-frame-pointer