बिल्ड परफ़ॉर्मेंस मेट्रिक निकालना

समस्या की शिकायत करें सोर्स देखें

शायद हर Basel उपयोगकर्ता ने बिल्ड का अनुभव किया है, जो उनके अनुमान से धीमे या धीमे थे. अलग-अलग बिल्ड की परफ़ॉर्मेंस को बेहतर बनाना उन टारगेट के लिए अहम है जिन पर काफ़ी असर पड़ता है. जैसे:

  1. डेवलपर के लिए मुख्य टारगेट, जिन्हें बार-बार दोहराया जाता है और जिन्हें फिर से बनाया जाता है.

  2. सामान्य लाइब्रेरी, जो अन्य टारगेट पर निर्भर करती हैं.

  3. टारगेट की कैटगरी (उदाहरण के लिए, पसंद के मुताबिक बनाए गए नियम) का प्रतिनिधि टारगेट. किसी एक बिल्ड में समस्याओं का पता लगाने और उन्हें ठीक करने से बड़े पैमाने पर समस्याओं को हल करने में मदद मिल सकती है.

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

आपके Basel बिल्ड से मेट्रिक निकालने के कुछ मुख्य तरीके यहां दिए गए हैं, जैसे:

बिल्ड इवेंट प्रोटोकॉल (बीईपी)

Basel ने बिल्ड इवेंट प्रोटोकॉल (BEP) के ज़रिए, कई तरह के प्रोटोकॉल बफ़र build_event_stream.proto जनरेट किए. इन प्रोटोकॉल को आपके तय किए गए बैकएंड की मदद से, इकट्ठा किया जा सकता है. आपके इस्तेमाल के उदाहरणों के आधार पर, मेट्रिक को अलग-अलग तरीकों से इकट्ठा करने का फ़ैसला लिया जा सकता है. हालांकि, यहां हम कुछ ऐसे कॉन्सेप्ट और प्रोटो फ़ील्ड के बारे में बात करेंगे जो आम तौर पर काम के होते हैं.

बेज़ल की क्वेरी / cquery / aquery कमांड

Baज़ेल की मदद से तीन अलग-अलग क्वेरी मोड (query, cquery, और aquery) थे. इनकी मदद से उपयोगकर्ता, टारगेट ग्राफ़, कॉन्फ़िगर किए गए टारगेट ग्राफ़, और ऐक्शन ग्राफ़ की क्वेरी कर सकते थे. क्वेरी लैंग्वेज की मदद से, ऐसे फ़ंक्शन सुइट उपलब्ध कराए जाते हैं जिनका इस्तेमाल अलग-अलग क्वेरी मोड में किया जा सकता है. इनसे क्वेरी को अपनी ज़रूरत के हिसाब से बदला जा सकता है.

JSON ट्रेस करने वाली प्रोफ़ाइलें

सभी बिल्ड-जैसे Basel के शुरू करने के अनुरोध के लिए, Basel, JSON फ़ॉर्मैट में एक ट्रेस प्रोफ़ाइल लिखता है. JSON ट्रेस प्रोफ़ाइल की मदद से यह तुरंत समझा जा सकता है कि शुरू करने के दौरान बेज़ल ने क्या समय बिताया.

एक्ज़ीक्यूशन लॉग

एक्ज़िक्यूशन लॉग की मदद से, मशीन और एनवायरमेंट के बीच के अंतर या नॉन-डिटरमिनिस्टिक ऐक्शन की वजह से रिमोट कैश मेमोरी से मिलने वाले हिट से जुड़ी समस्या को हल करने और उसे ठीक करने में मदद ली जा सकती है. अगर आपने फ़्लैग को पास किया --experimental_execution_log_spawn_metrics (Baz उदाहरण के लिए, इन मेट्रिक का इस्तेमाल लोकल और रिमोट मशीन की परफ़ॉर्मेंस के बीच तुलना करने के लिए किया जा सकता है. इसके अलावा, यह पता लगाने के लिए भी किया जा सकता है कि स्पान को एक्ज़ीक्यूट करने का कौनसा हिस्सा उम्मीद से लगातार धीमा है (उदाहरण के लिए, कतार में होने की वजह से).

एक्ज़ीक्यूशन ग्राफ़ लॉग

हालांकि, JSON ट्रेस प्रोफ़ाइल में पाथ की अहम जानकारी होती है, लेकिन कभी-कभी आपको लागू की गई कार्रवाइयों के डिपेंडेंसी ग्राफ़ पर अतिरिक्त जानकारी की ज़रूरत होती है. Basel 6.0 से शुरू करते हुए, आपके पास --experimental_execution_graph_log और --experimental_execution_graph_log_dep_type=all फ़्लैग पास करने का विकल्प है, ताकि लागू की गई कार्रवाइयों और उनसे जुड़ी डिपेंडेंसी के बारे में एक लॉग लिखा जा सके.

इस जानकारी का इस्तेमाल उस ड्रैग को समझने के लिए किया जा सकता है जिसे ज़रूरी पाथ पर नोड से जोड़ा गया है. ड्रैग वह समय है जो एक्ज़ीक्यूशन ग्राफ़ से किसी खास नोड को हटाकर संभावित रूप से बचाया जा सकता है.

इस डेटा से, आपको बिल्ड और ऐक्शन ग्राफ़ में किए गए बदलावों के असर का अनुमान लगाने में मदद मिलती है.

बेज़ल-बेंच के साथ बेंचमार्किंग

Bazi bench, Git प्रोजेक्ट के लिए एक बेंचमार्क टूल है, जिससे नीचे दिए गए मामलों में परफ़ॉर्मेंस को बेंचमार्क किया जा सकता है:

  • प्रोजेक्ट मानदंड: बेंचमार्क में, एक बेज़ेल वर्शन में दो git एक-दूसरे से तुलना करते हैं. इसका इस्तेमाल आपके बिल्ड में रिग्रेशन का पता लगाने के लिए किया जाता है. अक्सर डिपेंडेंसी जोड़ने के बाद इसका इस्तेमाल किया जाता है.

  • बेज़ेल मानदंड: सिंगल गिट कमिट पर बेज़ल के दो वर्शन एक-दूसरे के मुकाबले मानना. इसका इस्तेमाल खुद-बज़ेल के अंदर ही रिग्रेशन का पता लगाने के लिए किया जाता है (अगर आपको बेज़ल को जारी रखना है / फ़ोर्क करना है).

मानदंड, दीवार समय, सीपीयू समय, और सिस्टम समय को मॉनिटर करते हैं. साथ ही, बेज़ल के बनाए रखे गए हीप साइज़ को भी मॉनिटर करते हैं.

यह भी सुझाव दिया जाता है कि Basel बेंच को खास तौर पर ऐसी फ़िज़िकल मशीनों पर चलाएं जो कोई दूसरी प्रोसेस नहीं चला रही हैं, ताकि बदलावों के सोर्स को कम किया जा सके.