इस प्रोजेक्ट के बारे में

Parca Agent eBPF पर बना एक हमेशा चालू रहने वाला सैंपलिंग प्रोफाइलर है। यह कम ओवरहेड के साथ रॉ प्रोफाइलिंग डेटा कैप्चर करता है, यूजर-स्पेस और कर्नेल-स्पेस स्टैक ट्रेस को लगभग 19 बार प्रति सेकंड ऑब्जर्व करता है, और निकाले गए डेटा से pprof-फॉर्मेटेड प्रोफाइल बनाता है। एकत्रित डेटा को लोकल HTTP एंडपॉइंट्स के माध्यम से देखा जा सकता है या क्वेरी और दीर्घकालिक विश्लेषण के लिए Parca सर्वर पर भेजा जा सकता है। आवश्यकताएँ: BTF के साथ Linux कर्नेल 5.3+। एजेंट को root के रूप में या CAP_SYS_ADMIN के साथ चलना चाहिए; प्रोजेक्ट सुरक्षा विचारों और भेद्यता रिपोर्टिंग प्रक्रिया का दस्तावेजीकरण करता है। भाषा समर्थन व्यापक और विकसित हो रहा है, जिसमें C, C++, Go (विस्तारित समर्थन के साथ), Rust, .NET, Deno, Erlang, Java, Julia, Node.js, Wasmtime, PHP 8+, Ruby और Python शामिल हैं। On-CPU प्रोफाइल उपलब्ध हैं, नेटवर्क उपयोग और एलोकेशन को नियोजित बताया गया है। गोरूटीन जैसी रनटाइम-विशिष्ट जानकारी के लिए स्पष्ट इंस्ट्रूमेंटेशन की आवश्यकता होती है। कॉन्फ़िगरेशन कमांड-लाइन फ्लैग या --config-path के माध्यम से YAML फ़ाइल के जरिए दिया जा सकता है; फ्लैग फ़ाइल मानों पर प्राथमिकता लेते हैं। दस्तावेजित विकल्पों में लॉगिंग, HTTP पता, प्रोफाइलिंग आवृत्ति और अवधि, प्रोबेबिलिस्टिक प्रोफाइलिंग, मेटाडेटा लेबल, लोकल और रिमोट स्टोरेज, डीबगइन्फो हैंडलिंग, OTLP एक्सपोर्ट, eBPF बफर और मैप ट्यूनिंग, ऑफलाइन मोड और CUDA लॉन्च इंस्ट्रूमेंटेशन शामिल हैं। प्रोफाइल में हमेशा node, comm, cpu, thread_id और thread_name जैसे लेबल होते हैं, वैकल्पिक बाहरी लेबल के साथ। Prometheus-शैली रीलेबलिंग डिस्कवरी मेटाडेटा का एक बड़ा सेट जोड़ सकती है, जिसमें प्रोसेस विवरण, सिस्टम कर्नेल जानकारी, और Kubernetes, Docker, containerd और LXC कंटेनर एट्रिब्यूट शामिल हैं। दो उदाहरण कॉन्फ़िगरेशन दिए गए हैं: एक एजेंट के अपने लेबल नामों के तहत Kubernetes मेटाडेटा को प्रमोट करता है, और एक OTLP एक्सपोर्ट के लिए OpenTelemetry सिमेंटिक कन्वेंशन नामों का उपयोग करता है। यूजर-स्पेस कोड Apache 2 लाइसेंस प्राप्त है; कर्नेल-स्पेस eBPF प्रोफाइलर GPLv2 हैं। प्रोजेक्ट Inspektor Gadget को प्रेरणा के रूप में श्रेय देता है।