8 puan yazan GN⁺ 2025-03-11 | 1 yorum | WhatsApp'ta paylaş
  • Strobelight, Meta'nın profilleme orkestratörü olup birden fazla açık kaynak teknolojiyi bir araya getirerek mühendislerin performansı ve kaynak kullanımını iyileştirmesine yardımcı olur
    • Kullanıma alındıktan sonra yılda yaklaşık 15.000 sunucuya karşılık gelen kapasite tasarrufu sağlandı

Strobelight nasıl çalışır

  • Strobelight tek bir profiler değil, birden fazla profiler'ı koordine eden bir orkestratördür
  • Meta'nın tüm üretim host'larında çalışır ve şu performans göstergelerini toplar
    • CPU kullanımı
    • Bellek tahsisi
    • Diğer performans metrikleri
  • Mühendisler bunun sayesinde performans darboğazlarını ve kaynak israfı sorunlarını tespit edip kodu optimize edebilir

Profiler'ların rolü ve neden gerekli oldukları

  • Profiler'lar, örnekleme tabanlı istatistiksel analiz araçlarıdır
  • Örnek: CPU cycle olaylarında fonksiyon çağrı yığını ile fonksiyonların CPU üzerinde ne kadar süre çalıştığı analiz edilebilir
  • Kodun çalışma durumunu ayrıntılı biçimde anlamayı sağlayarak performans iyileştirmesine katkı sağlar

Strobelight'ın çeşitli profiler'ları

  • Strobelight toplam 42 profiler içerir
    • jemalloc tabanlı bellek profiler'ı
    • Fonksiyon çağrı sayısı profiler'ı
    • Python, Java, Erlang gibi dillere özel olay tabanlı profiler'lar
    • AI/GPU profiler'ları
    • Off-CPU süre takibi profiler'ı
    • Servis istek gecikmesi takibi profiler'ı
  • Profilleme araçları komut satırı aracı veya web UI üzerinden çalıştırılabilir
  • Sürekli profilleme ve belirli koşullar oluştuğunda tetiklenen profilleme yapılandırılabilir

Ad-hoc profiler desteği

  • Mühendislerin yeni bir profiler eklemesi için birden fazla kod değişikliği ve dağıtım gerekir
  • bpftrace betikleri yazarak hızlıca profiler eklemek mümkündür
  • Mühendisler belirli bir fonksiyonun performans sorunlarını hızla izleyip analiz edebilir

Profiler'lar arası çakışmayı önleme

  • Strobelight, profiler'lar arasında kaynak çakışmasını önleyen yerleşik bir sisteme sahiptir
  • CPU cycle takibi sırasında başka PMU sayaçlarının kullanılmaması gibi kurallar uygular
  • Eşzamanlı çalışma ve kuyruk yönetimi sistemiyle kaynak çakışmalarını en aza indirir

Otomatik profilleme ve dinamik örnekleme

  • Strobelight, Meta'daki tüm servislerde profillemeyi otomatik olarak yürütür
  • Her servisin iş yüküne göre örnekleme sıklığını ve süresini otomatik olarak ayarlar
  • Örnekleme olasılığı ve toplama sıklığını otomatik dengeleyerek tutarlı veri sağlar

Performans optimizasyonu ve kapasite tasarrufu örnekleri

LBR profiler'ı

  • Intel'in donanım özelliği olan Last Branch Record (LBR) örneklemesini destekler
  • FDO (Feedback Directed Optimization) içinde kullanılarak ikili dosya performansını artırır
  • Meta'nın en büyük 200 servisinde CPU cycle kullanımını en fazla %20 azaltma etkisi sağladı

Olay profiler'ı

  • Linux'un perf aracına benzer işlevler sunar
  • Performans olaylarını (CPU cycle, L3 cache miss vb.) örnekler ve görselleştirir
  • Kod yollarında ortaya çıkan sorunları önceden tespit edip düzeltmeyi sağlar

Stack Schemas ve Strobemeta

Stack Schemas

  • Fonksiyon çağrı yığınına etiket ekleyerek görünürlüğü artırır
  • Filtreleme ve görselleştirmede gereksiz fonksiyonların kaldırılmasını sağlar

Strobemeta

  • Çalışma zamanında çağrı yığınına dinamik metadata ekler
  • Servis endpoint'leri, gecikme süresi gibi unsurlarla ilgili ayrıntılar sağlar

Sembolleştirme işlemi (Symbolization)

  • Bir binary'nin sanal adreslerini fonksiyon adlarına ve kaynak kod bilgilerine dönüştürür
  • DWARF, ELF, gsym, blazesym gibi açık kaynak teknolojilerine dayanır
  • Sembolleştirme işlemi, performans düşüşünü önlemek için profillemeden sonra yapılır

Strobelight veri görselleştirme araçları

Scuba

  • SQL tabanlı sorgu ve görselleştirme aracı
  • Profilleme verileri için zaman serisi, dağılım, flame graph gibi görünümler sunar

Tracery

  • Zaman tabanlı birleşik profilleme verisi görselleştirme aracı
  • Servis istek span'leri, CPU cycle'ları ve off-CPU verilerini entegre biçimde görselleştirebilir

"Biggest Ampersand" vakası

  • Mühendisler, Strobelight verileri sayesinde std::vector kopyalama sorununu keşfetti
  • auto anahtar sözcüğünden sonra & ekleme → gereksiz kopyalamayı önleme
  • Sonuç olarak yılda yaklaşık 15.000 sunucu tasarrufu sağlandı

Açık kaynak

1 yorum

 
GN⁺ 2025-03-11
Hacker News yorumu
  • Sürekli profiling için Grafana'nın Pyroscope'u öneriliyor; Go'da kullanılıyor ve iyi çalışıyor
    • Birden çok dili destekliyor ve eBPF tabanlı
  • Meta/FB'nin C++ kodu, diğer eski büyük teknoloji şirketlerinin kodlarına kıyasla daha okunabilir
  • Strobelight, özellikle qps'i yüksek servislerde optimize etmeye değer noktaları kolayca görmeyi sağlayan bir can simidi
  • Meta'nın user-space ikililerinde frame pointer'lar bulunuyor, bu da stack üzerinde yürümeyi mümkün kılıyor
    • Aksi halde karmaşık ve verimsiz yöntemler kullanmak gerekirdi
  • Yerel olmayan diller için event profiler olduğu iddia ediliyor (ör. Python)
    • Python durumunun nasıl okunduğu net değil
  • Strobelight'ın GitHub deposu henüz oldukça temel seviyede; ne zaman güncelleneceği merak ediliyor
  • İsmin, yüksek hızlı periyodik hareketi incelemek için kullanılan strobe'a bir gönderme olduğu düşünülüyor
  • Keşke açık kaynak proje de bu şekilde entegre olsaydı
    • Facebook'un dahili arayüzü fena görünmüyor
  • Hesaplama maliyeti modellemek zor
    • Akışkanlar dinamiğini hesaplama gereksinimlerine uygulamak ilginç olurdu
  • AWS/Azure/GCP'nin başlıca rakiplerinin, bu tür araçların eksikliği nedeniyle zorlandığı düşünülüyor
    • Microsoft'ta ağ trafiğini izleyen bir araç yapılmıştı ve debugging için çok faydalıydı
    • Meta'nın yaptığı her şeye şüpheyle yaklaşılıyor
  • Bu, performans profiling'i
    • Başlığa ve domaine bakınca kullanıcı profiling'i sanılmış
  • Strobelight'ı Parca ve Polar Signals aracılığıyla herkes için erişilebilir kılmaya çalışılıyor
    • Bunların bir kısmı zaten mevcut, yıl içinde daha fazlasının gelmesi bekleniyor