केस स्टडी

Datadog, ProfilingManager की मदद से परफ़ॉर्मेंस से जुड़ी लाखों अहम जानकारी देता है

4 मिनट में पढ़ें

परफ़ॉर्मेंस में गिरावट को फिर से ठीक करना बहुत मुश्किल होता है. इसलिए, मोबाइल डेवलपर के लिए परफ़ॉर्मेंस में गिरावट एक बड़ी समस्या है. हालांकि, एएनआर रेट जैसे सिग्नल से यह पता चलता है कि प्रोडक्शन में कौनसी समस्याएं आती हैं. परफ़ॉर्मेंस से जुड़ी समस्या पैदा करने वाले कोड की खास लाइन का पता लगाने के लिए, पहले मैन्युअल तरीके से पूरी तरह से जांच करनी पड़ती थी या अनुमान के आधार पर बार-बार जांच करनी पड़ती थी.

Datadog ने Google के साथ मिलकर काम किया है, ताकि इस समस्या को कम किया जा सके. इसके लिए, उसने ProfilingManager API (Android 15 और इसके बाद के वर्शन वाले डिवाइसों पर उपलब्ध) को अपने Real User Monitoring (RUM) और Continuous Profiling प्लैटफ़ॉर्म में इंटिग्रेट किया है. इस इंटिग्रेशन से डीबग करने की प्रोसेस आसान हो जाती है. इससे डेवलपर, परफ़ॉर्मेंस से जुड़ी समस्या के कारण का पता लगा पाते हैं.

सिस्टम-लेवल के इस एपीआई का इस्तेमाल करके, Datadog अब हर हफ़्ते दुनिया भर में लाखों प्रोडक्शन प्रोफ़ाइल प्रोसेस करता है. यह जानकारी, जून 2026 के Datadog के इंटरनल डेटा के मुताबिक है. इससे इंजीनियरिंग टीमों को, असल दुनिया में परफ़ॉर्मेंस के बारे में ज़्यादा जानकारी मिलती है. साथ ही, प्रोडक्शन-स्केल पर परफ़ॉर्मेंस मॉनिटरिंग के लिए, रनटाइम ओवरहेड कम रहता है.

ProfilingManager का असर

ProfilingManager, Android 15 में पेश की गई एक सिस्टम सेवा है. इसकी मदद से ऐप्लिकेशन, परफ़ॉर्मेंस डेटा को प्रोग्राम के हिसाब से इकट्ठा कर सकते हैं. जैसे, कॉल स्टैक के सैंपल, फ़ील्ड ट्रेस, और मेमोरी हीप डंप. यह डेटा सीधे तौर पर प्रोडक्शन एनवायरमेंट से इकट्ठा किया जा सकता है. इस सुविधा की मदद से, इंजीनियरिंग के पैराडाइम को मैन्युअल तरीके से कॉपी करने के बजाय, फ़ील्ड के डेटा का पहले से ही विश्लेषण करने पर फ़ोकस किया जाता है.

AANDDM_DataDog_Quote_01.png

उदाहरण के लिए, Google के कम्यूनिकेशन ऐप्लिकेशन ने फ़ील्ड ट्रेस का इस्तेमाल करके यह पता लगाया कि नए और ज़्यादा बेहतर हार्डवेयर पर, कोल्ड स्टार्ट होने में ज़्यादा समय क्यों लग रहा है. फ़ील्ड में इकट्ठा किए गए ट्रेस की जांच करने और अलग-अलग डिवाइस टाइप के ट्रेस की तुलना करने पर, इंजीनियर को शेड्यूलिंग से जुड़ी एक छिपी हुई समस्या का पता चला. ऐप्लिकेशन के स्टार्टअप के दौरान, बैकग्राउंड में टेक्स्ट-टू-स्पीच सेवा को बिना किसी वजह के पहले से चालू किया जा रहा था. ट्रेस से पता चला कि बैकग्राउंड में चल रही इस प्रोसेस की वजह से, डिवाइस के सबसे ज़्यादा परफ़ॉर्म करने वाले बड़े सीपीयू कोर का इस्तेमाल हो रहा था. इससे ऐप्लिकेशन के मुख्य थ्रेड को स्लीप मोड में जाना पड़ा, जबकि प्रीवार्मिंग हो रही थी.

Android कोड-लेवल की विज़िबिलिटी से जुड़ी चुनौती को हल करना

ProfilingManager को लागू करने से पहले, Datadog की Real User Monitoring (RUM) सुविधा, ऐप्लिकेशन की परफ़ॉर्मेंस और सेशन-लेवल की टेलीमेट्री पर फ़ोकस करती थी. इससे उपयोगकर्ता के अनुभव का आकलन किया जाता था. इंजीनियरिंग टीमें, Android की परफ़ॉर्मेंस से जुड़े सिग्नल को मॉनिटर कर सकती हैं. जैसे, शुरुआती डिसप्ले में लगने वाला समय, एएनआर की दरें, सीपीयू लोड, और फ़्रीज़ किए गए फ़्रेम. यह अहम जानकारी, नेटवर्क की लेटेन्सी, टच इवेंट, और मुख्य थ्रेड के हैंग होने जैसी बारीकी से जुड़ी समस्याओं के बारे में भी बताती है. हालांकि, इस डेटा से यह पता चलता था कि फ़ील्ड में परफ़ॉर्मेंस से जुड़ी कौनसी समस्याएं आ रही हैं. लेकिन, इससे इन समस्याओं की मुख्य वजह का पता नहीं चलता था.

AANDDM_DataDog_Quote_02.png

इस समस्या को हल करने के लिए, Datadog को एक ऐसे प्रोफ़ाइलिंग इंजन की ज़रूरत थी जो परफ़ॉर्मेंस पर कम से कम असर डालते हुए, प्रोडक्शन में मौजूद डिवाइसों से सीधे तौर पर Android ट्रेस कैप्चर कर सके. टीम ने अन्य तरीकों का आकलन किया. जैसे, Android Debug API का इस्तेमाल करके अपना ट्रेस प्रोसेसर लिखना. इसके बाद, टीम ने ProfilingManager को चुना. ऐसा इसलिए, क्योंकि यह प्रोफ़ाइलिंग के विकल्पों में सबसे अच्छा परफ़ॉर्म करने वाला समाधान है. साथ ही, यह सैंपलिंग के फ़ैसलों के ओवरहेड को ओएस पर भेज देता है.

ProfilingManager, डेटा इकट्ठा करने के कई तरीकों के साथ काम करता है. इनमें सीपीयू ट्रेस, कॉल स्टैक सैंपलिंग, Java हीप डंप और नेटिव हीप प्रोफ़ाइल की मदद से मेमोरी का विश्लेषण करना शामिल है. इससे डेवलपर, प्रोडक्शन बिल्ड की प्रोफ़ाइल बना सकते हैं, ट्रेस फ़ाइलों को बाहरी स्टोरेज में अपलोड कर सकते हैं, और उन्हें Perfetto ट्रेस ऐनलाइज़र यूज़र इंटरफ़ेस (यूआई) में देख सकते हैं. सॉफ़्टवेयर ऐज़ अ सर्विस (एसएएएस) प्रोवाइडर के तौर पर Datadog, अपने एसडीके टूल के ज़रिए इकट्ठा की गई इन प्रोफ़ाइलों को अपलोड करता है, उन्हें विज़ुअलाइज़ करता है, और उनका विश्लेषण करता है. इससे ऐप्लिकेशन की परफ़ॉर्मेंस का यूनिफ़ाइड व्यू मिलता है.

ProfilingManager, एक ही जगह पर ज़्यादा सटीक टेलीमेट्री उपलब्ध कराता है. इसके लिए, यह एक ही Observability API का इस्तेमाल करता है. इससे Datadog और उसके क्लाइंट को, Android की परफ़ॉर्मेंस से जुड़ी जटिल समस्याओं को पहले से ही मॉनिटर करने, उनकी जांच करने, और उन्हें ठीक करने में मदद मिलती है. ऐसा इन मुख्य तकनीकी फ़ायदों की वजह से होता है:

  • सेशन की परफ़ॉर्मेंस से जुड़ी ज़्यादा जानकारी: ProfilingManager, ओएस-लेवल का ट्रेस डेटा सीधे तौर पर उपलब्ध कराता है. इससे डीबग करने की प्रोसेस बेहतर होती है. साथ ही, यह सिस्टम सेवाओं के साथ कस्टम लॉगिंग की वजह से होने वाली, डेटा दिखने और अलाइनमेंट से जुड़ी समस्याओं को हल करता है. ज़्यादा जानकारी के लिए, डेवलपर इन ट्रेस को Datadog से डाउनलोड कर सकते हैं. इसके बाद, वे Perfetto UI जैसे विज़ुअलाइज़ेशन टूल में इनकी जांच कर सकते हैं.
  • ऑटोमेटेड टेलीमेट्री ट्रिगर: Datadog, मुख्य ऑप्टिमाइज़ेशन पॉइंट पर ट्रेस रिकॉर्डिंग शुरू करने के लिए, नेटिव सिस्टम इवेंट का इस्तेमाल करता है. इससे, कस्टम कलेक्शन लॉजिक बनाने की ज़रूरत कम हो जाती है. शुरुआत में, APP_FULLY_DRAWN सिग्नल पर फ़ोकस किया जाएगा. हालांकि, इस सुविधा को एएनआर, OOM, और COLD_START ट्रिगर को शामिल करने के लिए पहले से ही प्लान बनाया जा चुका है.
  • पहले से तैयार किए गए ट्रेस स्नैपशॉट: सिस्टम-लेवल की Perfetto सेवा (ट्रेस की गई) के साथ सीधे तौर पर इंटरफ़ेस करके, ProfilingManager पहले से तैयार किए गए बैकग्राउंड रिकॉर्डिंग मॉडल का इस्तेमाल करता है. इसे अप्रत्याशित समस्याओं को कैप्चर करने के लिए डिज़ाइन किया गया है. इससे यह पक्का किया जाता है कि डेवलपर को परफ़ॉर्मेंस से जुड़ी अनियमितता की वजह बनने वाले इवेंट का सटीक विज़ुअलाइज़ेशन मिले. इससे उन्हें ऐसी अहम जानकारी मिलती है जो मैन्युअल इंस्ट्रुमेंटेशन से नहीं मिल सकती.
  • बड़े पैमाने पर बॉटलनेक का पता लगाना: Datadog, दुनिया भर में मौजूद अपने ग्राहकों के टेलीमेट्री डेटा को इकट्ठा करके, रिग्रेशन का पता लगा सकता है. यह रिग्रेशन, सिर्फ़ यूनीक हार्डवेयर कॉन्फ़िगरेशन और अलग-अलग नेटवर्क एनवायरमेंट में दिखती है.
  • सिस्टम की ओर से लागू की गई संसाधन की स्थिरता: एपीआई, परफ़ॉर्मेंस और उपयोगकर्ता अनुभव पर पड़ने वाले असर को कम करने के लिए, सैंपलिंग ट्रेस कलेक्शन का इस्तेमाल करता है.
  • उपयोगकर्ता के डिवाइस पर डेटा कंट्रोल: प्रोफ़ाइल को ऐप्लिकेशन तक पहुंचाने से पहले, ProfilingManager उपयोगकर्ता के डिवाइस पर मौजूद अन्य प्रोसेस से काम की जानकारी को फ़िल्टर कर देता है. इससे फ़ाइल का साइज़ कम हो जाता है. साथ ही, यह पक्का किया जाता है कि ऐप्लिकेशन की प्रोसेस के लिए सिर्फ़ काम का डेटा उपलब्ध कराया जाए.

असल दुनिया के ऐप्लिकेशन को ऑप्टिमाइज़ करने के लिए, हर हफ़्ते लाखों प्रोफ़ाइलों को प्रोसेस करना

datadog-profiling-blogpost-final.png
Datadog के शुरुआती डिसप्ले में लगने वाले समय को मेज़र करने का उदाहरण. इसमें ProfilingManager की मदद से स्टैक सैंपलिंग की जाती है

सिस्टम-लेवल के प्रोफ़ाइलिंग एपीआई को ग्लोबल मॉनिटरिंग एसडीके में इंटिग्रेट करने के लिए, इंफ़्रास्ट्रक्चर से जुड़ी समस्याओं को हल करना ज़रूरी था. ProfilingManager, परफ़ॉर्मेंस के बारे में बहुत ज़्यादा जानकारी वाले ट्रेस जनरेट करता है. इसलिए, Datadog की इंजीनियरिंग टीम को एक ऐसी पाइपलाइन बनानी पड़ी जो सर्वर साइड पर इन प्रोफ़ाइलों को बड़े पैमाने पर पार्स और उनका विश्लेषण कर सके. प्रोफ़ाइल कलेक्शन के अलावा, Datadog इस बात पर भी ज़ोर देता है कि आपके ऐप्लिकेशन के बारे में अहम जानकारी जनरेट करने के लिए, सैंपल लेने की फ़्रीक्वेंसी को इस तरह से बैलेंस किया जाए कि ज़रूरत के मुताबिक डेटा इकट्ठा किया जा सके. Datadog, ProfilingManager की बिल्ट-इन अनुरोध संख्या सीमित करना पर निर्भर करता है. यह एक अहम सुरक्षा सुविधा है. इससे, बहुत ज़्यादा टेलीमेट्री अनुरोधों की वजह से, उपयोगकर्ता के डिवाइसों पर ज़्यादा लोड नहीं पड़ता.

टीम, Datadog के नेटिव Android ऐप्लिकेशन और शुरुआती तौर पर इसे अपनाने वाले लोगों के ऐप्लिकेशन की प्रोफ़ाइलिंग कई महीनों से कर रही है. टीम ने लाखों प्रोफ़ाइलें इकट्ठा की हैं, ताकि यह पक्का किया जा सके कि ऐप्लिकेशन को तेज़ी से और बिना किसी गड़बड़ी के लॉन्च किया जा सके. साथ ही, परफ़ॉर्मेंस का पता लगाने वाले एल्गोरिदम को बेहतर बनाया जा सके. आज, प्रोडक्शन इंटिग्रेशन की सुविधा, अलग-अलग तरह के Android डिवाइसों पर आसानी से उपलब्ध है. 

नतीजा

Android के ProfilingManager API को इंटिग्रेट करके, Datadog ने अपने ग्राहकों के लिए, बैकएंड सिस्टम और मोबाइल क्लाइंट ऐप्लिकेशन के बीच डेटा दिखने से जुड़ी समस्या को हल कर दिया. Datadog, हर हफ़्ते लाखों प्रोफ़ाइलों को प्रोसेस करता है. इससे डिवाइस पर बहुत कम असर पड़ता है. साथ ही, यह Android डेवलपर को कोड-लेवल की ज़रूरी अहम जानकारी देता है. इससे डेवलपर, परफ़ॉर्मेंस से जुड़ी जटिल समस्याओं का तुरंत पता लगा पाते हैं. इससे उन्हें बेहतर ऐप्लिकेशन बनाने में मदद मिलती है. साथ ही, वे Play Store में अपने ऐप्लिकेशन की परफ़ॉर्मेंस के सिग्नल को बेहतर बना पाते हैं. ProfilingManager API को सीधे तौर पर अपने परफ़ॉर्मेंस ऑब्ज़र्वेबिलिटी फ़्रेमवर्क में शामिल करने के लिए, हमारा दस्तावेज़ देखें.

आने वाले समय में, Datadog का लक्ष्य Android प्रोफ़ाइलिंग डेटा को कोडिंग एजेंट के लिए सबसे अहम इनपुट बनाना है. इससे परफ़ॉर्मेंस से जुड़ी समस्याओं को अपने-आप हल किया जा सकेगा. साथ ही, समस्याओं का पता लगाने और उन्हें ठीक करने के बीच के फ़ीडबैक लूप को बंद किया जा सकेगा. Datadog, Android की प्रोफ़ाइलिंग की सुविधा को डेवलपर के लिए बड़े पैमाने पर उपलब्ध कराने पर काम कर रहा है.

ProfilingManager की मदद से काम करने वाली Datadog की रीयल यूज़र मॉनिटरिंग सुविधा का इस्तेमाल शुरू करने के लिए,  Datadog Mobile Real User Monitoring पर जाएं.

लेखक:
पढ़ना जारी रखें