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