2011-02-03 29 views
5

मेरे पास एक पर्ल स्क्रिप्ट है जो बाइनरी प्रोग्राम में इनपुट के लिए फाइलें तैयार करती है और बाइनरी प्रोग्राम के निष्पादन को एसजीई क्यूइंग सिस्टम संस्करण 6.2u2 में प्रस्तुत करती है।एसजीई - QSUB -sync मोड में नौकरियां जमा करने में विफल रहता है

नौकरियां -sync y विकल्प के साथ प्रस्तुत की जाती हैं ताकि माता-पिता पर्ल स्क्रिप्ट को प्रतीक्षा कार्य के साथ सबमिट की गई नौकरियों की स्थिति की निगरानी करने की क्षमता प्रदान की जा सके।

यह भी बहुत उपयोगी है क्योंकि अभिभावक पर्ल स्क्रिप्ट में एक सिगरेट भेजना इस सिग्नल को प्रत्येक बच्चे को प्रचारित करता है, जो इस सिग्नल को qsub पर अग्रेषित करता है, इस प्रकार सभी संबंधित सबमिट की गई नौकरियों को गहन रूप से समाप्त कर देता है।

इस प्रकार, यह काफी महत्वपूर्ण है कि मैं इस -sync y विकल्प के साथ नौकरियां जमा करने में सक्षम हूं।

दुर्भाग्य से, मैं निम्नलिखित त्रुटि प्राप्त हो रही:

Unable to initialize environment because of error: range_list containes no elements

सूचना 'containes' के अनुचित वर्तनी। यह एक टाइपो नहीं है। यह आपको दिखाता है कि कोड/त्रुटि संदेश के इस क्षेत्र को कितना खराब बनाए रखा जाना चाहिए।

इस त्रुटि उत्पन्न करने वाले प्रयास किए गए सबमिशन STDOUT और STDERR फ़ाइलों को उत्पन्न करने में विफल रहे *.e{JOBID} और *.o{JOBID}। सबमिशन बस पूरी तरह से विफल रहता है।

इस त्रुटि संदेश के लिए Google खोजना केवल अस्पष्ट संदेश बोर्ड पर अनसुलझे पोस्ट में परिणाम देता है।

यह त्रुटि विश्वसनीय रूप से भी नहीं होती है। मैं अपनी स्क्रिप्ट को दोबारा शुरू कर सकता हूं और वही नौकरियां जरूरी नहीं कि त्रुटि भी उत्पन्न हो। यह भी कोई फर्क नहीं पड़ता कि मैं किस नोड से नौकरी जमा करने का प्रयास करता हूं।

मेरी आशा यह है कि यहां कोई व्यक्ति इसे समझ सकता है।

  1. इस त्रुटि SGE के नवीनतम संस्करण में जारी रहती है:

    इन सवालों में से किसी को जवाब इस प्रकार मेरी समस्या का समाधान होगा?

  2. क्या मैं इससे बचने के लिए qsub के लिए अपने कमांड लाइन विकल्प बदल सकता हूं?
  3. यह त्रुटि संदेश किस बारे में बात कर रहा है?

उत्तर

9

हमारी साइट ने एसजीई 6.2u5 में इस मुद्दे को मारा। मैंने मेलिंग सूची पर कुछ प्रश्न पोस्ट किए हैं, लेकिन कोई समाधान नहीं था। अब तक।

यह पता चला है कि त्रुटि संदेश फर्जी है। मैंने यूनिव जिथब "ओपन-कोर" रेपो पर परिवर्तन लॉग के माध्यम से इसे पढ़कर खोज लिया। बाद में मैंने ग्रिडेंगिन v8.0.0c रिलीज नोट्स के बेटे में उल्लिखित मुद्दा देखा।

यहाँ GitHub रेपो में संबंधित प्रतिबद्ध हैं:

क्या त्रुटि संदेश कहना चाहिए कि आप अधिकतम संख्या तक पहुंच गया है सिस्टम में qsub sync -y नौकरियां। यह पैरामीटर MAX_DYN_EC के रूप में जाना जाता है। हमारे संस्करण में डिफ़ॉल्ट 99 था, और वृद्धि से ऊपर परिवर्तन है कि डिफ़ॉल्ट करने के लिए 1000 के

MAX_DYN_EC की परिभाषा (sge_conf (5) आदमी पृष्ठ से) है:

Sets the max number of dynamic event clients (as used by qsub -sync y and by Grid Engine DRMAA API library sessions). The default is set to 99. The number of dynamic event clients should not be bigger than half of the number of file descriptors the system has. The number of file descriptors are shared among the connections to all exec hosts, all event clients, and file handles that the qmaster needs.

आप देख सकते हैं कि कितने

$ qconf -secl | grep qsub | wc -l 

हम qconf -mconf के माध्यम से qmaster_params करने के लिए MAX_DYN_EC=1000 जोड़ लिया है: गतिशील घटना ग्राहकों आप निम्न आदेश का उपयोग कर। मैंने सैकड़ों qsub -sync y नौकरियों को सबमिट करने का परीक्षण किया है और अब हम श्रेणी_सूची त्रुटि को हिट नहीं करते हैं। MAX_DYN_EC परिवर्तन से पहले, ऐसा करने से त्रुटि को विश्वसनीय रूप से ट्रिगर किया जाएगा।

0

मुझे इस समस्या का समाधान मिला - या कम से कम एक कामकाज।

मेरा लक्ष्य अग्रभूमि में रहने के लिए qsub के व्यक्तिगत उदाहरण प्राप्त करना था क्योंकि यह सबमिट की गई नौकरी अभी भी कतार में या चल रही थी। यह -sync विकल्प के साथ हासिल किया गया था, लेकिन इसके परिणामस्वरूप मैंने अपने प्रश्न में वर्णित बेहद अप्रत्याशित बग का परिणाम दिया।

इस समस्या का समाधान कमांड now -n विकल्प के साथ उपयोग करना था। यह नौकरी qsub -sync के समान व्यवहार करने का कारण बनता है जिसमें मेरी स्क्रिप्ट स्पष्ट रूप से निगरानी कर सकती है कि सबमिट की गई नौकरी qrsh उदाहरण पर waitpid का उपयोग कर चल रही है या नहीं।

इस समाधान के लिए एक ही चेतावनी है कि कतार आप पर काम कर रहे हैं इंटरैक्टिव नोड्स (qrsh द्वारा की पेशकश) और गैर-सहभागी नोड्स (qsub द्वारा पहुँचा जा सकता) के बीच कोई भेद नहीं होना चाहिए है। एक भेद मौजूद होना चाहिए (संभवतः गैर-इंटरैक्टिव की तुलना में कम इंटरैक्टिव नोड्स हैं) तो यह कामकाज मदद नहीं कर सकता है।

लेकिन, जैसा कि मैं भी qsub -sync समस्या कहीं भी इस रूप में कार्यात्मक रूप में है कि के लिए एक समाधान के करीब कुछ भी नहीं पाया है, इस पोस्ट मेरी ऐसी ही स्थिति में फंस गए किसी भी स्वच्छंद आत्मा के लिए interwebs भर में बाहर चलते हैं।

+0

qsub और qrsh के बीच क्या अंतर है –