केस स्टडी

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

पढ़ने में 4 मिनट लगेंगे
तीन लेखक
Alice Yuan, Arti Arutiunov, Nikita Ogorodnikov

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

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

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 ट्रेस ऐनलाइज़र यूज़र इंटरफ़ेस (यूआई) में उनकी समीक्षा कर सकते हैं. SaaS सेवा देने वाली कंपनी के तौर पर, Datadog अपने एसडीके के ज़रिए इकट्ठा की गई इन प्रोफ़ाइलों को अपलोड करता है, उन्हें विज़ुअलाइज़ करता है, और उनका विश्लेषण करता है. इससे, ऐप्लिकेशन की हेल्थ की एक ही जगह पर जानकारी मिलती है.

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

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

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

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

ग्लोबल मॉनिटरिंग एसडीके में, सिस्टम-लेवल के प्रोफ़ाइलिंग एपीआई को इंटिग्रेट करने के लिए, इन्फ़्रास्ट्रक्चर से जुड़ी समस्याओं को हल करना ज़रूरी था. 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 पर जाएं.

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