8 poin oleh GN⁺ 2025-03-11 | 1 komentar | Bagikan ke WhatsApp
  • Strobelight adalah orkestrator profiling milik Meta yang menggabungkan berbagai teknologi open source untuk membantu engineer meningkatkan performa dan pemanfaatan sumber daya
    • Setelah diadopsi, sistem ini mencapai penghematan kapasitas tahunan yang setara dengan sekitar 15.000 server

Cara kerja Strobelight

  • Strobelight bukan satu profiler tunggal, melainkan orkestrator yang mengatur banyak profiler
  • Berjalan di seluruh host produksi Meta dan mengumpulkan metrik performa berikut
    • Penggunaan CPU
    • Alokasi memori
    • Metrik performa lainnya
  • Melalui ini, engineer dapat mengidentifikasi bottleneck performa dan pemborosan sumber daya serta mengoptimalkan kode

Peran dan kebutuhan profiler

  • Profiler adalah alat analisis statistik berbasis sampling
  • Contoh: dari event CPU cycle, profiler dapat menganalisis call stack fungsi dan waktu eksekusi fungsi di CPU
  • Dengan memahami status eksekusi kode secara rinci, profiler berkontribusi pada peningkatan performa

Beragam profiler di Strobelight

  • Strobelight mencakup total 42 profiler
    • Profiler memori berbasis jemalloc
    • Profiler jumlah pemanggilan fungsi
    • Profiler berbasis event per bahasa seperti Python, Java, dan Erlang
    • Profiler AI/GPU
    • Profiler pelacak waktu off-CPU
    • Profiler pelacak latensi request layanan
  • Alat profiling dapat dijalankan dari command-line tool atau web UI
  • Dapat dikonfigurasi untuk continuous profiling maupun profiling berbasis trigger saat kondisi tertentu terjadi

Dukungan profiler ad-hoc

  • Untuk menambahkan profiler baru, engineer biasanya perlu melakukan berbagai perubahan kode dan deployment
  • Dengan menulis skrip bpftrace, profiler dapat ditambahkan dengan cepat
  • Engineer dapat melacak dan menganalisis masalah performa pada fungsi tertentu dengan cepat

Pencegahan konflik antarprofiler

  • Strobelight memiliki sistem bawaan untuk mencegah konflik sumber daya antarprofiler
  • Menerapkan aturan seperti melarang penggunaan PMU counter lain saat pelacakan CPU cycle berlangsung
  • Melalui sistem eksekusi simultan dan manajemen antrean, konflik sumber daya diminimalkan

Profiling otomatis dan sampling dinamis

  • Strobelight menjalankan profiling secara otomatis di semua layanan Meta
  • Frekuensi dan durasi sampling disesuaikan otomatis berdasarkan beban kerja masing-masing layanan
  • Probabilitas sampling dan frekuensi pengumpulan dikalibrasi otomatis untuk menyediakan data yang konsisten

Contoh optimasi performa dan penghematan kapasitas

Profiler LBR

  • Mendukung sampling Last Branch Record (LBR), fitur hardware dari Intel
  • Digunakan dalam FDO (Feedback Directed Optimization) untuk meningkatkan performa biner
  • Pada 200 layanan teratas Meta, penggunaan CPU cycle berkurang hingga 20%

Event profiler

  • Menjalankan fungsi yang mirip dengan tool perf di Linux
  • Melakukan sampling dan visualisasi event performa (CPU cycle, L3 cache miss, dll.)
  • Memungkinkan masalah di jalur kode terdeteksi dan diperbaiki lebih awal

Stack Schemas dan Strobemeta

Stack Schemas

  • Menambahkan tag pada call stack untuk meningkatkan visibilitas
  • Memungkinkan penghapusan fungsi yang tidak perlu dalam filtering dan visualisasi

Strobemeta

  • Menambahkan metadata dinamis ke call stack saat runtime
  • Menyediakan detail terkait endpoint layanan, latensi, dan sebagainya

Pemrosesan simbolisasi (Symbolization)

  • Mengubah alamat virtual biner menjadi nama fungsi dan informasi source code
  • Berbasis teknologi open source seperti DWARF, ELF, gsym, dan blazesym
  • Proses simbolisasi dilakukan setelah profiling untuk mencegah penurunan performa

Alat visualisasi data Strobelight

Scuba

  • Alat kueri dan visualisasi berbasis SQL
  • Menyediakan time series, distribusi, flame graph, dan lain-lain untuk data profiling

Tracery

  • Alat visualisasi data profiling kompleks berbasis waktu
  • Dapat memvisualisasikan secara terintegrasi service request span, CPU cycle, dan data off-CPU

Kasus "Biggest Ampersand"

  • Engineer menemukan masalah penyalinan std::vector melalui data Strobelight
  • Menambahkan & setelah keyword auto → mencegah penyalinan yang tidak perlu
  • Hasilnya, terjadi penghematan setara sekitar 15.000 server per tahun

Open source

1 komentar

 
GN⁺ 2025-03-11
Komentar Hacker News
  • Merekomendasikan Pyroscope dari Grafana untuk continuous profiling; digunakan di Go dan bekerja dengan baik
    • Mendukung banyak bahasa dan berbasis eBPF
  • Kode C++ Meta/FB lebih mudah dibaca dibandingkan kode di perusahaan teknologi besar lama lainnya
  • Strobelight adalah penyelamat, terutama pada layanan dengan qps tinggi, karena memudahkan melihat bagian yang layak dioptimalkan
  • Biner user-space Meta menyertakan frame pointer sehingga memungkinkan melakukan stack walking
    • Jika tidak, mereka harus memakai metode yang rumit dan tidak efisien
  • Mereka mengklaim memiliki event profiler untuk bahasa non-native (misalnya Python)
    • Tidak jelas bagaimana cara membaca state Python
  • Repositori GitHub Strobelight masih pada tingkat yang sangat dasar; ada yang penasaran kapan akan diperbarui
  • Namanya tampaknya merujuk pada penggunaan stroboskop untuk memeriksa gerakan periodik berkecepatan tinggi
  • Akan bagus jika proyek open source terintegrasi seperti ini
    • UI internal Facebook terlihat cukup bagus
  • Pemodelan biaya komputasi itu sulit
    • Menerapkan dinamika fluida pada kebutuhan komputasi akan menarik
  • Mereka merasa para pesaing utama AWS/Azure/GCP mengalami kesulitan karena kurangnya alat seperti ini
    • Di Microsoft, seseorang membuat alat untuk melacak traffic jaringan dan itu sangat berguna untuk debugging
    • Mereka mendekati semua hal dari Meta dengan sikap skeptis
  • Ini adalah performance profiling
    • Dari judul dan domainnya, saya kira ini tentang profiling pengguna
  • Mereka sedang berusaha menghadirkan Strobelight untuk semua orang melalui Parca dan Polar Signals
    • Sebagiannya sudah ada, dan lebih banyak lagi akan hadir tahun ini