लोकल प्रोग्राम चलाने के लिए रिमोट कैश हिट को डीबग करना

इस पेज पर, लोकल एक्ज़ीक्यूशन के संदर्भ में कैश मेमोरी में मौजूद डेटा न मिलने की समस्या की जांच करने का तरीका बताया गया है.

इस पेज पर यह माना गया है कि आपके पास ऐसा बिल्ड और/या टेस्ट है जो स्थानीय तौर पर सही तरीके से बिल्ड होता है और रिमोट कैशिंग का इस्तेमाल करने के लिए सेट अप किया गया है. साथ ही, आपको यह पक्का करना है कि रिमोट कैश का सही तरीके से इस्तेमाल किया जा रहा है.

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

कैश हिट रेट देखना

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

Bazel रन के स्टैंडर्ड आउटपुट में, आपको कुछ ऐसा दिखेगा:

   INFO: 7 processes: 3 remote cache hit, 4 linux-sandbox.

इसका मतलब है कि सात में से तीन कार्रवाइयों के लिए रिमोट कैश हिट मिला और चार कार्रवाइयों के लिए कैश हिट नहीं मिला. इसलिए, उन्हें linux-sandbox रणनीति का इस्तेमाल करके स्थानीय तौर पर लागू किया गया. इस खास जानकारी में, लोकल कैश हिट शामिल नहीं हैं. अगर आपको 0 प्रोसेस (या उम्मीद से कम संख्या) मिल रही हैं, तो bazel clean चलाएं. इसके बाद, अपनी बिल्ड/टेस्ट कमांड चलाएं.

कैश हिट से जुड़ी समस्याओं को हल करना

अगर आपको उम्मीद के मुताबिक कैश हिट रेट नहीं मिल रहा है, तो यह तरीका अपनाएं:

पक्का करें कि रिमोट एंडपॉइंट से कम्यूनिकेशन हो रहा हो

यह पक्का करने के लिए कि आपका बिल्ड, रिमोट कैश के साथ सही तरीके से कम्यूनिकेट कर रहा है, इस सेक्शन में दिया गया तरीका अपनाएं.

  1. चेतावनी देखने के लिए, अपने आउटपुट की जांच करना

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

       WARNING: Error reading from the remote cache:
    

    या

       WARNING: Error writing to the remote cache:
    

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

  2. रिमोट एक्ज़ीक्यूशन के लिए कैश मेमोरी हिट की समस्या हल करना में दिया गया तरीका अपनाएं. इससे यह पक्का किया जा सकेगा कि कैश मेमोरी में लिखने के लिए Bazel के इनवोकेशन, एक ही मशीन और अलग-अलग मशीनों पर कैश मेमोरी हिट कर पा रहे हैं.

  3. पक्का करें कि कैश मेमोरी से डेटा पढ़ने के लिए Bazel के अनुरोधों को कैश मेमोरी से डेटा मिल सके.

    a. कैश मेमोरी से डेटा पढ़ने वाले Bazel इनवोकेशन के लिए, कमांड-लाइन का अलग सेट अप होगा. इसलिए, यह पक्का करें कि उन्हें रिमोट कैश मेमोरी के साथ कम्यूनिकेट करने के लिए सही तरीके से सेट अप किया गया हो. पक्का करें कि --remote_cache फ़्लैग सेट हो और आउटपुट में कोई चेतावनी न हो.

    b. पक्का करें कि कैश मेमोरी से डेटा पढ़ने वाले Bazel इनवोकेशन, कैश मेमोरी में डेटा लिखने वाले Bazel इनवोकेशन की तरह ही टारगेट बनाते हों.

    c. सभी मशीनों पर कैश मेमोरी की सुविधा चालू करने के लिए, यहाँ दिया गया तरीका अपनाएँ. इससे यह पक्का किया जा सकेगा कि Bazel के कैश मेमोरी में लिखने वाले इनवॉकेशन से लेकर, Bazel के कैश मेमोरी से पढ़ने वाले इनवॉकेशन तक कैश मेमोरी की सुविधा चालू रहे.