2012-08-22 21 views
65

मैं अपने कंप्यूटर में इंटेल एमपीआई बेंचमार्क स्थापित करने के लिए कोशिश करते हैं और मैं त्रुटि प्राप्त: जब मैं ls और top आदेश चलाकांटा: पुन: प्रयास: संसाधन अस्थायी रूप से अनुपलब्ध

fork: retry: Resource temporarily unavailable 

तो मैं यह त्रुटि फिर प्राप्त करते हैं।

इस त्रुटि का कारण क्या है?

विन्यास मेरी मशीन:

Dell precision T7500 
Scientific Linux release 6.2 (Carbon) 
+0

प्रक्रियाओं की संख्या को बढ़ाने के तरीके पर अपने लिनक्स दस्तावेज़ों की जांच करें। – theglauber

+1

शायद यह मदद मिलेगी: http://stackoverflow.com/questions/344203/maximum-number-of-threads-per-process-in-linux – theglauber

उत्तर

63

यह आमतौर पर फ़ाइल वर्णनकर्ता से बाहर चल रहा है के कारण होता है।

<in_use> <unused_but_allocated> <maximum> 

पता लगाने के लिए एक उपयोगकर्ता वर्णनकर्ता दायर:

sysctl fs.file-nr 

इस फ़ाइल डिस्क्रिप्टर की गिनती रिटर्न:

वहाँ

कुल सिस्टम फ़ाइल वर्णनकर्ता सीमा, क्या आप आदेश से मिलता है है सीमा कमांड चलाती है:

sudo su - <username> 
ulimit -Hn 

यह जानने के लिए कि कितने फ़ाइल डिस्क्रिप्टर

sudo lsof -u <username> 2>/dev/null | wc -l 

तो अब अगर आप एक प्रणाली फ़ाइल वर्णनकर्ता सीमा समस्या आ रही है तो आप अपने /etc/sysctl.conf फ़ाइल को संपादित और जोड़ सकते हैं या यह इसे संशोधित करने की आवश्यकता होगी: रों आदेश चला एक उपयोगकर्ता द्वारा उपयोग में हैं पहले से मौजूद है, fs.file-max वाली एक पंक्ति और इसे आवश्यक फ़ाइल डिस्क्रिप्टरों की संख्या से निपटने के लिए पर्याप्त रूप से एक मान पर सेट करें और रीबूट करें।

fs.file-max = 204708 
+9

लागू करने के लिए FYI करें, आप उपयोग कर सकते हैं "sysctl -p" /etc/sysctl.conf में वर्तमान सेटिंग्स रीबूट को सहेज रही है। – EmmEff

+2

इसके अलावा, अगर आपने केवल/etc पढ़ा है, तो आप रनटाइम पर 'sysctl -w fs.file-max = 204708' का उपयोग कर सकते हैं। –

39

एक और संभावना बहुत अधिक धागे हैं। थ्रेड पूल का उपयोग करने वाले ऐप के खिलाफ परीक्षण दोहन चलाने के दौरान हमने अभी इस त्रुटि संदेश में भाग लिया था। हम

watch -n 5 -d "ps -eL <java_pid> | wc -l"

इस्तेमाल किया लिनक्स देशी दिया जावा प्रक्रिया ID के भीतर चल धागे के चल रहे गिनती को देखने के लिए। इसके बाद 1,000 (हमारे लिए - वाईएमएमवी) हिट करने के बाद, हमने आपके द्वारा उल्लिखित त्रुटि संदेश प्राप्त करना शुरू कर दिया।

+2

जब मैंने परीक्षण किया, 'ps -eL' ने सभी प्रक्रियाओं को दिखाने के लिए काम किया और 'ps -L ' '' के संबंध में प्रक्रियाओं को दिखाने के लिए काम किया। 'ps -eL ' '' पर ध्यान दिए बिना सभी प्रक्रियाओं को दिखाता है। –

+1

@ विली व्हीलर थ्रेड सीमा को पार करने के लिए आपने क्या किया? मैं ऑनलाइन पाए गए कई समाधानों की खोज और परीक्षण कर रहा हूं, कोई फायदा नहीं हुआ, डेस के लिए। Systemd-logind के पुनरारंभ को छोड़कर, 1k धागे से अधिक की अनुमति नहीं देगी, जो त्रुटियों को फिर से शुरू होने से एक घंटे पहले तक चलती है! –

+0

मशीनों के सीमित संसाधन हैं। यदि आप सीमा को मार रहे हैं, तो कम थ्रेड का उपयोग करें (उदाहरण के लिए थ्रेड पूल के साथ नियंत्रित) या अन्य मशीनें। –

संबंधित मुद्दे