केस स्टडी

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

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

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

Datadog ने Google के साथ मिलकर काम किया, ताकि इस समस्या को हल किया जा सके. इसके लिए, उसने अपने Real User Monitoring (RUM) और Continuous Profiling प्लैटफ़ॉर्म में, ProfilingManager API को इंटिग्रेट किया. यह 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 पर जाएं.

इसे लिखा है:
पढ़ना जारी रखें