3 पॉइंट द्वारा GN⁺ 2023-12-08 | 1 टिप्पणियां | WhatsApp पर शेयर करें

ट्रेसिंग टूल्स का परिचय

  • ट्रेसिंग के प्रति उत्साह और अनुभव के आधार पर विभिन्न ट्रेसिंग तरीकों का परिचय
  • 2 नए और रोचक ट्रेसिंग टूल्स शामिल
  • ट्रेसिंग का मूल: सिस्टम में उत्पन्न timestamp डेटा एकत्र करना और उसे timeline UI में विज़ुअलाइज़ करना

डेटा को timeline UI में आसानी से विज़ुअलाइज़ करना

  • Chromium Event JSON Format का उपयोग करके सरल JSON फ़ॉर्मैट में event डेटा का विज़ुअलाइज़ेशन
  • Google के Perfetto या Catapult viewer के माध्यम से tracing files देखना
  • Python utility का उपयोग करके trace files को clickable links में बदलना और साझा करना

उन्नत फ़ॉर्मैट: Fuchsia Trace Format और Perfetto Protobuf

  • Fuchsia Trace Format (FTF): बड़े trace files के लिए सरल और compact binary format
  • Perfetto Protobuf: अधिक फीचर्स को सपोर्ट करने वाला compact format, जिसे Protobuf library के माध्यम से बनाया जा सकता है

विभिन्न ट्रेसिंग टूल्स

  • Speedscope, pprof, Rerun आदि जैसे विभिन्न trace visualization tools का परिचय
  • Trace Compass, Firefox Profiler जैसे profiler viewers का उल्लेख

ट्रेसिंग के तरीके

  • hardware breakpoints, perf, GDB scripting जैसे low-level tracing methods का परिचय
  • Intel Processor Trace का उपयोग करके program execution trace करना
  • magic-trace: function calls को विज़ुअलाइज़ करने वाली trace files बनाने का टूल

instrumentation-आधारित tracing profilers

  • Tracy, Optick, Perfetto जैसे instrumentation-आधारित tracing profilers की तुलना
  • अतिरिक्त जानकारी शामिल करने वाले event डेटा के महत्व पर ज़ोर

eBPF

  • Linux kernel का उपयोग करके tracing के लिए eBPF subsystem का परिचय
  • BCC, bpftrace, ply जैसे eBPF tracing tools का परिचय

eBPF उदाहरण: Anthropic का Perfetto-आधारित packet और user event tracing

  • networking code में tail latency का विश्लेषण करने के लिए BCC और Perfetto visualization का संयोजन
  • eBPF का उपयोग करके user-space event tracing और C helper के माध्यम से event processing optimization

binary instrumentation

  • source code तक पहुंच संभव न होने पर उपयोग किए जाने वाले binary instrumentation methods का परिचय
  • bpftime, E9Patch, Frida जैसे tools का विवरण

distributed tracing

  • services के बीच tracing के लिए OpenTelemetry, Zipkin, Odigos जैसे solutions का उल्लेख

sampling profilers

  • समय-समय पर program के पूरे call stack का sampling करने वाले profilers का परिचय
  • Speedscope, Samply जैसे time axis शामिल करने वाले UI का उपयोग

QEMU instrumentation

  • जब सभी tracing tools विफल हो जाएँ, तब उपयोग होने वाले QEMU के full emulation और hooking
  • Cannoli, QEMU TCG Plugins, usercorn जैसे tools का परिचय

GN⁺ की राय

इस लेख की सबसे महत्वपूर्ण बात यह है कि यह विभिन्न प्रकार की समस्याओं को हल करने के लिए इस्तेमाल किए जा सकने वाले tracing methods का एक व्यापक कैटलॉग प्रदान करता है। यह विभिन्न tracing tools और तरीकों का परिचय ऐसे स्तर पर कराता है जिसे शुरुआती software engineers भी आसानी से समझ सकें, इसलिए tracing में रुचि रखने वालों के लिए यह बहुत उपयोगी और रोचक है। खास तौर पर, वास्तविक उदाहरणों के माध्यम से eBPF tracing और Perfetto visualization को जोड़ने वाला हिस्सा यह दिखाता है कि इन्हें व्यावहारिक काम में कैसे लागू किया जा सकता है, और यह पाठकों को नए insights दे सकता है।

1 टिप्पणियां

 
GN⁺ 2023-12-08
Hacker News टिप्पणी
  • Spall डेवलपर की राय:

    • Spall, लेख में उल्लेख किए गए हल्के प्रोफाइलरों में से एक है.
    • लेखक की 'implicit order tree' पर ब्लॉग पोस्ट प्रभावशाली थी, और बड़े traces के लिए tree पर किसी और का दृष्टिकोण देखना अच्छा लगा.
    • eytzinger-ordered 4-ary tree को 165fps से अधिक पर भी 3 अरब से ज़्यादा functions संभालने में कोई समस्या नहीं है.
    • अभी timestamp delta compression पर काम चल रहा है, ताकि events को और कम जगह में समेटा जा सके.
    • उम्मीद है कि Spall के native build में 128GB RAM के साथ 10 अरब events संभाले जा सकेंगे.
  • Windows application पर काम करने वालों के लिए ETW की सिफारिश:

    • Windows application पर काम करने वाले लोगों के लिए Event Tracing for Windows(ETW) की सिफारिश की गई.
    • Bruce Dawson का ब्लॉग ETW के लिए सबसे अच्छा शुरुआती बिंदु है.
  • open source solutions पर एक overview:

    • इस क्षेत्र में open source solutions का काफ़ी अच्छा overview है.
    • time-travel debugging जैसा एक महत्वपूर्ण tracing क्षेत्र इसमें छूट गया है.
    • hardware trace, instrumentation, और deterministic replay का उपयोग करने वाले दिलचस्प solutions मौजूद हैं.
    • अगर ऐसा visualization integration हो, जिससे प्रोग्राम के किसी खास समय बिंदु पर लौटकर memory को पूरी तरह reconstruct करके debugging की जा सके, तो और बेहतर होगा.
  • Anthropic में hiring का तरीका:

    • Anthropic में Tristan के साथ काम करने के अवसर के बारे में आख़िरी प्रस्ताव काफ़ी आकर्षक है.
    • Tristan ने किस तरह के काम पर काम होगा, यह अच्छी तरह समझाया है.
    • अच्छा होता अगर ब्लॉग पोस्ट में traces के और screenshots होते.
  • Python program और packet correlation तकनीक:

    • specific arguments वाले system calls को trace करके Python program के user space events और packets के बीच correlation निकालने की तकनीक पर प्रशंसा.
  • IDE plugin development team का अनुभव:

    • production में चल रहे app में traditional debugger जैसी functionality जोड़ने वाला एक IDE plugin विकसित किया जा रहा है.
    • यह users को runtime के दौरान arbitrary variables का विश्लेषण करके समझने देता है कि code के अंदर क्या हो रहा है.
    • यह plugin मुफ़्त है.
  • JavaScript execution cost profiling के लिए उद्योग की ज़रूरत:

    • JavaScript के execution cost को deterministic तरीके से profile करने का बेहतर तरीका चाहिए.
    • Chromium में Linux perf का उपयोग करके एक कोशिश हुई थी, लेकिन वह बदलाव हटा दिया गया.
    • CI में JavaScript की cost को deterministic तरीके से मापने के तरीकों पर सुझाव जानने की इच्छा है.
  • dtrace का उल्लेख और bcantrill की rant:

    • लेखक ने dtrace का संक्षेप में उल्लेख किया है.
    • bcantrill की हाल की rant देखने की सिफारिश की गई है, जिसमें बताया गया है कि bpftrace चुपचाप events क्यों खो देता है और dtrace ऐसा क्यों नहीं करता.
  • उपयोगी tools के लिए आभार:

    • लेख में उल्लेख किए गए उपयोगी tools के लिए धन्यवाद व्यक्त किया गया है.