- 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
Hacker News yorumu