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

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

इस पेज पर बताया गया है कि लोकल प्रोग्राम चलाने के मामले में, कैश मेमोरी में सेव होने वाली गलतियों की जांच कैसे करें.

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

कैश की हिट रेट जांचने और 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 के शुरू होने तक कैश मेमोरी में सेव किया गया हो.