- Strobelight, Meta का profiling orchestrator है, जो कई open source technologies को जोड़कर engineers को performance और resource utilization बेहतर करने में मदद करता है
- इसे अपनाने के बाद सालाना क्षमता बचत का असर लगभग 15,000 servers के बराबर हासिल किया गया
Strobelight कैसे काम करता है
- Strobelight कोई एकल profiler नहीं, बल्कि कई profilers को समन्वित करने वाला orchestrator है
- यह Meta के सभी production hosts पर चलता है और निम्न performance metrics इकट्ठा करता है
- CPU उपयोग
- memory allocation
- अन्य performance metrics
- engineers इसकी मदद से performance bottlenecks और resource waste की समस्याएं पहचान सकते हैं और code optimization कर सकते हैं
Profilers की भूमिका और आवश्यकता
- profiler sampling-आधारित statistical analysis tool होता है
- उदाहरण: CPU cycle events से function call stack और CPU पर function के चलने के समय का विश्लेषण किया जा सकता है
- यह code execution की स्थिति को विस्तार से समझने में मदद करता है और performance सुधार में योगदान देता है
Strobelight के विभिन्न profilers
- Strobelight में कुल 42 profilers शामिल हैं
jemalloc आधारित memory profiler
- function call count profiler
- Python, Java, Erlang आदि भाषाओं के event-based profilers
- AI/GPU profiler
- off-CPU time tracking profiler
- service request latency tracking profiler
- profiling tools को command-line tool या web UI से चलाया जा सकता है
- continuous profiling और किसी खास condition पर trigger-based profiling सेट की जा सकती है
Ad-hoc profiler समर्थन
- अगर engineers नया profiler जोड़ना चाहें, तो कई code changes और deployment की जरूरत पड़ती है
bpftrace script लिखकर profiler को जल्दी जोड़ा जा सकता है
- engineers किसी खास function की performance समस्या को तेजी से trace और analyze कर सकते हैं
Profilers के बीच टकराव की रोकथाम
- Strobelight में profilers के बीच resource conflicts रोकने की built-in system है
- जैसे CPU cycle tracking के दौरान दूसरे PMU counters के उपयोग पर रोक जैसी rules लागू की जाती हैं
- simultaneous execution और queue management system के जरिए resource conflicts को न्यूनतम किया जाता है
Automatic profiling और dynamic sampling
- Strobelight, Meta की सभी services में अपने-आप profiling चलाता है
- हर service के workload के अनुसार sampling frequency और duration अपने-आप adjust होती है
- sampling probability और collection frequency को auto-calibrate करके consistent data दिया जाता है
Performance optimization और capacity savings के उदाहरण
LBR profiler
- Intel के hardware feature Last Branch Record (LBR) sampling को support करता है
- FDO (Feedback Directed Optimization) में उपयोग होकर binary performance बेहतर करता है
- Meta की top 200 services में CPU cycle usage पर अधिकतम 20% reduction का असर देखा गया
Event profiler
- Linux के
perf tool जैसी functionality देता है
- performance events (CPU cycles, L3 cache miss आदि) की sampling और visualization करता है
- code paths में आने वाली समस्याओं को पहले से detect और fix किया जा सकता है
Stack Schemas और Strobemeta
Stack Schemas
- function call stack में tags जोड़कर visibility बढ़ाता है
- filtering और visualization में अनावश्यक functions को हटाया जा सकता है
Strobemeta
- runtime पर dynamic metadata को call stack में जोड़ता है
- service endpoint, latency आदि से जुड़ी details देता है
Symbolization प्रोसेसिंग
- binary के virtual addresses को function names और source code जानकारी में बदलता है
- DWARF, ELF, gsym, blazesym जैसी open source technologies पर आधारित
- performance degradation से बचने के लिए symbolization का काम profiling के बाद किया जाता है
Strobelight data visualization tools
Scuba
- SQL आधारित query और visualization tool
- profiling data के लिए time series, distribution, flame graph आदि देता है
Tracery
- समय-आधारित complex profiling data visualization tool
- service request spans, CPU cycles, off-CPU data को एक साथ visualize कर सकता है
"Biggest Ampersand" उदाहरण
- engineers ने Strobelight data के जरिए
std::vector copy की समस्या खोजी
auto keyword के बाद & जोड़ना → अनावश्यक copies को रोका
- नतीजतन सालाना लगभग 15,000 servers की बचत का असर हुआ
ओपन सोर्स
1 टिप्पणियां
Hacker News राय