8 puntos por GN⁺ 2025-03-11 | 1 comentarios | Compartir por WhatsApp
  • Strobelight es el orquestador de profiling de Meta, que combina varias tecnologías de código abierto para ayudar a los ingenieros a mejorar el rendimiento y el uso de recursos
    • Tras su adopción, logró un efecto de ahorro anual de capacidad equivalente a 15,000 servidores

Cómo funciona Strobelight

  • Strobelight no es un profiler único, sino un orquestador que coordina varios profilers
  • Se ejecuta en todos los hosts de producción de Meta y recopila las siguientes métricas de rendimiento
    • Uso de CPU
    • Asignación de memoria
    • Otras métricas de rendimiento
  • Con esto, los ingenieros pueden identificar cuellos de botella de rendimiento y desperdicio de recursos, y optimizar el código

Rol y necesidad de los profilers

  • Un profiler es una herramienta de análisis estadístico basada en muestreo
  • Ejemplo: en eventos de ciclos de CPU, puede analizar la pila de llamadas de funciones y el tiempo que una función se ejecuta en la CPU
  • Ayuda a mejorar el rendimiento al permitir entender en detalle el estado de ejecución del código

Los distintos profilers de Strobelight

  • Strobelight incluye un total de 42 profilers
    • Profiler de memoria basado en jemalloc
    • Profiler de número de llamadas a funciones
    • Profilers basados en eventos por lenguaje, como Python, Java y Erlang
    • Profilers de AI/GPU
    • Profiler de seguimiento de tiempo off-CPU
    • Profiler de seguimiento de latencia de solicitudes de servicio
  • Las herramientas de profiling pueden ejecutarse desde la línea de comandos o desde una web UI
  • Es posible configurar profiling continuo y profiling activado por disparadores cuando ocurren condiciones específicas

Soporte para profilers ad hoc

  • Para que un ingeniero agregue un nuevo profiler, normalmente se requieren varias modificaciones de código y despliegues
  • Se puede agregar rápidamente un profiler escribiendo un script de bpftrace
  • Esto permite a los ingenieros rastrear y analizar rápidamente problemas de rendimiento en funciones específicas

Prevención de conflictos entre profilers

  • Strobelight incorpora un sistema para evitar conflictos de recursos entre profilers
  • Aplica reglas como prohibir el uso de otros contadores PMU mientras se rastrean ciclos de CPU
  • Minimiza los conflictos de recursos mediante un sistema de ejecución concurrente y administración de colas de espera

Profiling automático y muestreo dinámico

  • Strobelight ejecuta profiling automáticamente en todos los servicios de Meta
  • Ajusta automáticamente la frecuencia y la duración del muestreo según la carga de trabajo de cada servicio
  • Corrige automáticamente la probabilidad de muestreo y la frecuencia de recolección para ofrecer datos consistentes

Casos de optimización de rendimiento y ahorro de capacidad

Profiler LBR

  • Soporta muestreo de Last Branch Record (LBR), una función de hardware de Intel
  • Se usa en FDO (Feedback Directed Optimization) para mejorar el rendimiento de los binarios
  • En los 200 principales servicios de Meta, logró una reducción de hasta 20% en el uso de ciclos de CPU

Profiler de eventos

  • Ofrece funciones similares a la herramienta perf de Linux
  • Realiza muestreo y visualización de eventos de rendimiento (ciclos de CPU, fallos de caché L3, etc.)
  • Permite detectar y corregir de antemano problemas que ocurren en rutas de código

Stack Schemas y Strobemeta

Stack Schemas

  • Mejora la visibilidad añadiendo etiquetas a la pila de llamadas de funciones
  • Permite eliminar funciones innecesarias en el filtrado y la visualización

Strobemeta

  • Agrega metadatos dinámicos a la pila de llamadas en tiempo de ejecución
  • Proporciona detalles relacionados con endpoints de servicio, latencia y más

Procesamiento de simbolización (Symbolization)

  • Convierte las direcciones virtuales de un binario en nombres de funciones e información del código fuente
  • Está basado en tecnologías de código abierto como DWARF, ELF, gsym y blazesym
  • La simbolización se realiza después del profiling para evitar degradación del rendimiento

Herramientas de visualización de datos de Strobelight

Scuba

  • Herramienta de consultas y visualización basada en SQL
  • Ofrece series temporales, distribuciones, flame graphs y más sobre los datos de profiling

Tracery

  • Herramienta de visualización de datos de profiling compuestos basados en tiempo
  • Permite visualizar de forma integrada spans de solicitudes de servicio, ciclos de CPU y datos off-CPU

Caso de "Biggest Ampersand"

  • Un ingeniero descubrió, mediante datos de Strobelight, un problema de copia en std::vector
  • Agregar & después de la palabra clave auto → evita copias innecesarias
  • Como resultado, se logró un ahorro equivalente a aproximadamente 15,000 servidores al año

Código abierto

1 comentarios

 
GN⁺ 2025-03-11
Opiniones de Hacker News
  • Recomiendan Pyroscope de Grafana para perfilado continuo; lo usan en Go y funciona bien
    • Soporta varios lenguajes y está basado en eBPF
  • El código C++ de Meta/FB es más fácil de leer que el de otras grandes empresas tecnológicas antiguas
  • Strobelight es un salvavidas, especialmente en servicios de alto qps, porque permite ver fácilmente qué partes vale la pena optimizar
  • Los binarios en espacio de usuario de Meta incluyen frame pointers, lo que hace posible recorrer la pila
    • De lo contrario, habrían tenido que usar métodos complejos e ineficientes
  • Afirman que hay un perfilador basado en eventos para lenguajes no nativos, por ejemplo Python
    • No está claro cómo leen el estado de Python
  • El repositorio de GitHub de Strobelight sigue estando en un nivel básico; se preguntan cuándo lo actualizarán
  • Parece que el nombre hace referencia al uso de una luz estroboscópica para inspeccionar movimiento periódico de alta velocidad
  • Ojalá el proyecto de código abierto estuviera así de integrado
    • La UI interna de Facebook se ve decente
  • Modelar el costo computacional es difícil
    • Sería divertido aplicar dinámica de fluidos a los requerimientos de cómputo
  • Creen que los principales competidores de AWS/Azure/GCP están teniendo dificultades por la falta de herramientas como esta
    • En Microsoft hicieron una herramienta para rastrear tráfico de red y fue muy útil para depuración
    • Abordan todo lo de Meta con escepticismo
  • Es perfilado de rendimiento
    • Por el título y el dominio, pensé que era perfilado de usuarios
  • Están intentando poner Strobelight a disposición de todos a través de Parca y Polar Signals
    • Algunas partes ya existen y este año saldrá más