8 पॉइंट द्वारा GN⁺ 2025-03-11 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
GN⁺ 2025-03-11
Hacker News राय
  • लगातार profiling के लिए Grafana के Pyroscope की सिफारिश की गई, इसे Go में इस्तेमाल किया जा रहा है और यह अच्छी तरह काम करता है
    • यह कई भाषाओं को सपोर्ट करता है और eBPF-आधारित है
  • Meta/FB का C++ कोड दूसरी पुरानी बड़ी tech कंपनियों के कोड की तुलना में पढ़ने में आसान है
  • Strobelight खास तौर पर उच्च qps सेवाओं में यह आसानी से दिखा देने वाली जीवनरेखा है कि किन हिस्सों को optimize करना सार्थक है
  • Meta के user-space binaries में frame pointers शामिल हैं, जिससे stack walk करना संभव हो जाता है
    • वरना जटिल और अक्षम तरीकों का उपयोग करना पड़ता
  • दावा किया गया है कि non-native भाषाओं के लिए event profiler है (जैसे: Python)
    • Python state को कैसे पढ़ा जाता है, यह स्पष्ट नहीं है
  • Strobelight का GitHub repository अभी भी काफी बुनियादी स्तर का है, और लोग जानना चाहते हैं कि इसे कब update किया जाएगा
  • लगता है कि यह नाम तेज आवर्ती गति की जांच करने के लिए इस्तेमाल होने वाले strobe का संदर्भ है
  • अच्छा होता अगर open source projects इस तरह एकीकृत होते
    • Facebook का internal UI ठीक-ठाक दिखता है
  • computational cost modeling कठिन है
    • अगर fluid dynamics को compute requirements पर लागू किया जाए तो यह दिलचस्प होगा
  • कुछ लोगों का मानना है कि AWS/Azure/GCP के प्रमुख प्रतिस्पर्धी ऐसे tools की कमी के कारण संघर्ष कर रहे हैं
    • Microsoft में network traffic को trace करने के लिए एक tool बनाया गया था और वह debugging में बहुत उपयोगी था
    • Meta की हर चीज़ को लेकर संदेह के साथ आगे बढ़ते हैं
  • यह performance profiling है
    • शीर्षक और domain देखकर लगा था कि यह user profiling के बारे में है
  • Strobelight को Parca और Polar Signals के ज़रिये सभी तक पहुंचाने की कोशिश की जा रही है
    • इसका कुछ हिस्सा पहले से मौजूद है, और इस साल और भी आने की उम्मीद है