8 pontos por GN⁺ 2025-03-11 | 1 comentários | Compartilhar no WhatsApp
  • Strobelight é o orquestrador de profiling da Meta, que combina várias tecnologias open source para ajudar engenheiros a melhorar desempenho e uso de recursos
    • Após a adoção, alcançou um efeito de economia anual de capacidade equivalente a cerca de 15.000 servidores

Como o Strobelight funciona

  • Strobelight não é um único profiler, mas um orquestrador que coordena vários profilers
  • Ele roda em todos os hosts de produção da Meta e coleta os seguintes indicadores de desempenho
    • uso de CPU
    • alocação de memória
    • outras métricas de desempenho
  • Com isso, os engenheiros conseguem identificar gargalos de desempenho e desperdício de recursos, além de otimizar o código

Papel e necessidade dos profilers

  • Profilers são ferramentas de análise estatística baseadas em amostragem
  • Ex.: em eventos de ciclos de CPU, é possível analisar a pilha de chamadas de funções e o tempo em que as funções executam na CPU
  • Eles ajudam a melhorar o desempenho ao permitir uma visão detalhada do estado de execução do código

Os diversos profilers do Strobelight

  • O Strobelight inclui um total de 42 profilers
    • profiler de memória baseado em jemalloc
    • profiler de contagem de chamadas de função
    • profilers baseados em eventos por linguagem, como Python, Java e Erlang
    • profiler de AI/GPU
    • profiler de rastreamento de tempo off-CPU
    • profiler de rastreamento de latência de requisições de serviço
  • As ferramentas de profiling podem ser executadas pela linha de comando ou pela interface web
  • É possível configurar profiling contínuo e profiling acionado por gatilhos quando condições específicas ocorrem

Suporte a profilers ad-hoc

  • Para adicionar um novo profiler, engenheiros precisam modificar e implantar vários trechos de código
  • É possível adicionar rapidamente um profiler escrevendo scripts bpftrace
  • Assim, engenheiros conseguem rastrear e analisar rapidamente problemas de desempenho em funções específicas

Prevenção de conflitos entre profilers

  • O Strobelight tem embutido um sistema para evitar conflitos de recursos entre profilers
  • Aplica regras como proibir o uso de outros contadores PMU durante o rastreamento de ciclos de CPU
  • Minimiza conflitos de recursos por meio de um sistema de execução simultânea e gerenciamento de filas

Profiling automático e amostragem dinâmica

  • O Strobelight executa profiling automaticamente em todos os serviços da Meta
  • Ajusta automaticamente a frequência e a duração da amostragem de acordo com a carga de trabalho de cada serviço
  • Corrige automaticamente a probabilidade de amostragem e a frequência de coleta para fornecer dados consistentes

Casos de otimização de desempenho e economia de capacidade

Profiler LBR

  • Suporta amostragem de Last Branch Record (LBR), um recurso de hardware da Intel
  • É usado em FDO (Feedback Directed Optimization) para melhorar o desempenho de binários
  • Nos 200 principais serviços da Meta, reduziu em até 20% o uso de ciclos de CPU

Profiler de eventos

  • Executa funções semelhantes à ferramenta perf do Linux
  • Faz amostragem e visualização de eventos de desempenho, como ciclos de CPU e faltas de cache L3
  • Permite detectar e corrigir antecipadamente problemas que surgem nos caminhos de código

Stack Schemas e Strobemeta

Stack Schemas

  • Adiciona tags à pilha de chamadas de funções para melhorar a visibilidade
  • Permite remover funções desnecessárias em filtros e visualizações

Strobemeta

  • Adiciona metadados dinâmicos à pilha de chamadas em tempo de execução
  • Fornece detalhes relacionados a endpoint de serviço, latência e outros dados

Processamento de symbolization

  • Converte endereços virtuais de binários em nomes de funções e informações de código-fonte
  • Baseado em tecnologias open source como DWARF, ELF, gsym e blazesym
  • O trabalho de symbolization é feito após o profiling para evitar queda de desempenho

Ferramentas de visualização de dados do Strobelight

Scuba

  • Ferramenta de consulta e visualização baseada em SQL
  • Fornece séries temporais, distribuição, flame graphs e outros recursos para dados de profiling

Tracery

  • Ferramenta de visualização temporal de dados compostos de profiling
  • Permite visualização integrada de spans de requisições de serviço, ciclos de CPU e dados off-CPU

Caso "Biggest Ampersand"

  • Um engenheiro descobriu um problema de cópia em std::vector usando dados do Strobelight
  • Adição de & após a palavra-chave auto → evita cópias desnecessárias
  • Como resultado, houve uma economia equivalente a cerca de 15.000 servidores por ano

Open source

1 comentários

 
GN⁺ 2025-03-11
Comentários no Hacker News
  • Recomenda o Pyroscope da Grafana para profiling contínuo; usa em Go e funciona bem
    • Suporta várias linguagens e é baseado em eBPF
  • O código C++ da Meta/FB é mais fácil de ler do que o de outras grandes empresas de tecnologia mais antigas
  • O Strobelight é um salva-vidas, especialmente em serviços com alto QPS, por facilitar ver o que vale a pena otimizar
  • Os binários em espaço de usuário da Meta incluem frame pointers, o que torna possível percorrer a stack
    • Caso contrário, teria sido necessário usar métodos complexos e ineficientes
  • Afirma que existe um profiler por eventos para linguagens não nativas, como Python
    • Não está claro como ele lê o estado do Python
  • O repositório do Strobelight no GitHub ainda está bem básico; há curiosidade sobre quando será atualizado
  • O nome parece fazer referência ao uso de estroboscópio para inspecionar movimentos periódicos de alta velocidade
  • Seria bom se o projeto open source fosse integrado desse jeito
    • A UI interna do Facebook parece boa
  • Modelar custo computacional é difícil
    • Seria interessante aplicar dinâmica dos fluidos aos requisitos computacionais
  • Acredita que os principais concorrentes de AWS/Azure/GCP sofrem por falta desse tipo de ferramenta
    • Na Microsoft, foi criada uma ferramenta para rastrear tráfego de rede e ela foi muito útil para debugging
    • Aborda tudo da Meta com desconfiança
  • É profiling de performance
    • Pelo título e pelo domínio, achou que fosse profiling de usuários
  • Está tentando disponibilizar o Strobelight para todos por meio de Parca e Polar Signals
    • Parte disso já existe, e mais coisas devem sair este ano