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

किसी समस्या की शिकायत करें सोर्स देखें Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

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

कैश मेमोरी में डेटा के ऐक्सेस होने की दर देखना

रिमोट कैश मेमोरी में हिट होने की जानकारी, स्टेटस लाइन में दिखेगी. यह जानकारी, रिमोट से कैश मेमोरी में डेटा अपडेट करने की सुविधा के साथ कैश मेमोरी में हिट होने की दर की तरह ही दिखेगी.

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 कोड के बीच कैश मेमोरी का इस्तेमाल करने की सुविधा चालू हो जाएगी.