शायद हर Basel उपयोगकर्ता ने ऐसे बिल्ड का अनुभव किया है जो इससे धीमे या धीमे थे उम्मीद के मुताबिक. किसी बिल्ड की परफ़ॉर्मेंस को बेहतर बनाना अहम है ख़ास तौर पर असर डालने वाले टारगेट के लिए, जैसे:
डेवलपर के लिए मुख्य टारगेट, जिन्हें बार-बार दोहराया जाता है और जिन्हें फिर से बनाया जाता है.
सामान्य लाइब्रेरी, जो अन्य टारगेट पर निर्भर करती हैं.
टारगेट की कैटगरी का प्रतिनिधि टारगेट (उदाहरण के लिए, कस्टम नियम), एक बिल्ड में समस्याओं का पता लगाकर उन्हें ठीक करने से, बड़े स्केल पर इस्तेमाल किए जा सकते हैं.
बिल्ड की परफ़ॉर्मेंस को बेहतर बनाने का अहम तरीका यह जानना है कि किस उनके संसाधनों का इस्तेमाल नहीं किया जा सकता. इस पेज पर उन अलग-अलग मेट्रिक की सूची दी गई है जिन्हें इकट्ठा किया जा सकता है. बिल्ड की परफ़ॉर्मेंस का विश्लेषण बिल्ड की परफ़ॉर्मेंस से जुड़ी समस्याओं का पता लगाने और उन्हें ठीक करने के लिए, इन मेट्रिक का इस्तेमाल कैसे किया जा सकता है.
आपके Basel बिल्ड से मेट्रिक निकालने के कुछ मुख्य तरीके यहां दिए गए हैं, जैसे:
बिल्ड इवेंट प्रोटोकॉल (बीईपी)
Baज़ल, कई तरह के प्रोटोकॉल बफ़र जनरेट करता है
build_event_stream.proto
इसके लिए, उन्हें बिल्ड इवेंट प्रोटोकॉल (BEP) के ज़रिए अपनी ऑडियंस की
को आपके तय किए गए बैकएंड से इकट्ठा किया जा सकता है. आपके इस्तेमाल के उदाहरणों के आधार पर,
कई तरह से मेट्रिक इकट्ठा करने का फ़ैसला लिया जा सकता है, लेकिन यहां हम
जो सामान्य तौर पर विचार करने में उपयोगी होंगे.
बेज़ेल की क्वेरी / cquery / aquery आदेश
Baज़ेल की सेवा में तीन अलग-अलग क्वेरी मोड उपलब्ध हैं (query, cquery और aquery), जो उपयोगकर्ताओं को टारगेट ग्राफ़, कॉन्फ़िगर किए गए टारगेट ग्राफ़, और ऐक्शन ग्राफ़ की क्वेरी करने के लिए क्रम से. क्वेरी भाषा एक फ़ंक्शन सुइट की मदद से अलग-अलग क्वेरी मोड की मदद से, क्वेरी मोड में अपनी ज़रूरत के हिसाब से बदलाव किए जा सकते हैं.
JSON ट्रेस करने वाली प्रोफ़ाइलें
बिल्ड से मिलते-जुलते Basel के अनुरोध के लिए, Basel, JSON में एक ट्रेस प्रोफ़ाइल लिखता है फ़ॉर्मैट. JSON ट्रेस प्रोफ़ाइल ये काम कर सकती है इससे यह तुरंत समझने में मदद मिलेगी कि बेज़ल ने YouTube पर शुरू करना.
एक्ज़ीक्यूशन लॉग
लागू करने की जानकारी के लॉग से, आपको समस्याओं को हल करने और समस्या को हल करने में मदद मिल सकती है
मशीन और एनवायरमेंट में अंतर की वजह से रिमोट कैश हिट मौजूद नहीं हैं या
कर सकते हैं. अगर आपने कॉपीराइट उल्लंघन की वजह से,
--experimental_execution_log_spawn_metrics
(Bazu 5.2 से उपलब्ध) इसमें विस्तृत स्पॉन्स मेट्रिक भी शामिल होंगी, दोनों
स्थानीय तौर पर और रिमोट तरीके से की जाने वाली कार्रवाइयों को पूरा किया जा सकता है. उदाहरण के लिए, आप इन मेट्रिक का इस्तेमाल
लोकल और रिमोट मशीन की परफ़ॉर्मेंस के बीच तुलना करना या मशीन की परफ़ॉर्मेंस का पता लगाना
ऐसा कौनसा हिस्सा है जो
स्पॉन्स को एक्ज़ीक्यूट करने की प्रोसेस में लगातार उम्मीद से ज़्यादा समय ले रहा है (
उदाहरण के लिए, लाइन में लगने की वजह से).
एक्ज़ीक्यूशन ग्राफ़ लॉग
हालांकि, JSON ट्रेस प्रोफ़ाइल में पाथ की अहम जानकारी होती है, लेकिन कभी-कभी
की गई कार्रवाइयों के डिपेंडेंसी ग्राफ़ के लिए, आपको ज़्यादा जानकारी चाहिए.
Basel 6.0 के साथ शुरू करते हुए, आप फ़्लैग पास कर सकते हैं
--experimental_execution_graph_log
और
--experimental_execution_graph_log_dep_type=all
की मदद से बनाई गई कार्रवाइयों और उनकी अन्य निर्भरता का इस्तेमाल किया जाता है.
इस जानकारी का इस्तेमाल उस ड्रैग को समझने के लिए किया जा सकता है जिसे नोड से जोड़ा जाता है का सबसे ज़रूरी पाथ. ड्रैग वह समय है जितना हो सकता है एक्ज़ीक्यूशन ग्राफ़ से किसी खास नोड को हटाकर.
इस डेटा से, आपको बिल्ड और ऐक्शन ग्राफ़ में हुए बदलावों के असर का अनुमान लगाने में मदद मिलती है करने से पहले उन्हें ध्यान में रखना ज़रूरी है.
बेज़ल-बेंच के साथ बेंचमार्किंग
बेज़ल बेंच Git प्रोजेक्ट के लिए मानदंड टूल की मदद से ये मामले:
प्रोजेक्ट बेंचमार्क: बेंचमार्किंग के लिए इस्तेमाल किए गए दो गिट एक-दूसरे के मुकाबले का इस्तेमाल करके रिलीज़ किया गया था. इसका इस्तेमाल बिल्ड में रिग्रेशन का पता लगाने के लिए किया जाता है (अक्सर डिपेंडेंसी जोड़ना).
बेज़ल मानदंड: बेज़ल के दो वर्शन का एक-दूसरे के मुकाबले मानदंड सिंगल git कमिटी का इस्तेमाल करें. बेज़ल में ही रिग्रेशन का पता लगाने के लिए इस्तेमाल किया जाता है (अगर बेज़ल को मैनेज / फ़ोर्क करने के लिए हुआ).
मानदंड, दीवार समय, सीपीयू समय, और सिस्टम समय को मॉनिटर करते हैं. साथ ही, बेज़ल की मदद से सेव रखा जाता है हीप साइज़.
यह सुझाव दिया जाता है कि बेज़ल बेंच को सिर्फ़ ऐसी फ़िज़िकल मशीनों पर चलाया जाए जिन्हें परिवर्तनशीलता के स्रोतों को कम करने के लिए अन्य प्रोसेस नहीं चला रहे हैं.