2012-05-25 23 views
6

मैं एक एम्बेडेड वातावरण में काम कर रहा हूं, जहां संसाधन काफी सीमित हैं। हम node.js का उपयोग करने की कोशिश कर रहे हैं, जो अच्छी तरह से काम करता है, लेकिन आम तौर पर लगभग 60 मेगाबाइट वर्चुअल मेमोरी का उपभोग करता है (वास्तविक स्मृति का उपयोग लगभग 5 मेगाबाइट होता है।) हमारी बाधाओं को देखते हुए, यह बहुत अधिक वर्चुअल मेमोरी है; हम केवल node.js को लगभग 30 मेगाबाइट्स वीएम का उपयोग करने की अनुमति दे सकते हैं।वर्चुअल मेमोरी के उपयोग को node.js द्वारा सीमित कैसे करें?

इस तरह के "--max_old_space_size", "--max_executable_size", और "--max_new_space_size", लेकिन प्रयोग के बाद, मुझे लगता है कि इन सभी को नियंत्रित वास्तविक स्मृति के रूप में Node.js के लिए कई कमांड लाइन विकल्प, कर रहे हैं उपयोग, अधिकतम वर्चुअल मेमोरी आकार नहीं।

यदि यह महत्वपूर्ण है, तो मैं एआरएम आर्किटेक्चर पर उबंटू लिनक्स संस्करण में काम कर रहा हूं।

क्या कोई विकल्प या सेटिंग है जो किसी को वर्चुअल मेमोरी की अधिकतम मात्रा निर्धारित करने की अनुमति देगी जो node.js प्रक्रिया का उपयोग करने की अनुमति है?

+0

यह समस्या क्यों होनी चाहिए? लिनक्स ओवर-आवंटन का उपयोग करता है: यह वर्चुअल मेमोरी केवल प्रक्रिया पृष्ठ तालिका के अंदर प्रविष्टियों के रूप में मौजूद होगी जब तक यह * acutually * उपयोग नहीं किया जाता है। –

+0

एचएम। मुझे यकीन नहीं है। यह एक एम्बेडेड वातावरण है (अर्थ: कोई डिस्क स्थान नहीं) तो क्या सभी आभासी आवंटन कुछ वास्तविक स्मृति का उपयोग नहीं करेंगे? मैं अपने मालिक को यह विचार बताऊंगा, लेकिन मुझे लगता है कि इससे कोई फर्क नहीं पड़ता; मुझे पदचिह्न को कम करने और बहस करने का आदेश दिया गया है कि मुझे ज्यादा वजन नहीं लेना चाहिए। चीज की तरह 'ग्राहक हमेशा सही है'। इसके अलावा, मैं एक और मुद्दा में चला गया है; मैंने वर्चुअल मेमोरी उपयोग को 55 मेगाहर्ट्ज से कम करने के लिए setrlimit() का उपयोग करके एक फ़ंक्शन लिखा है, और अब modeoc त्रुटि के साथ node.js निकलता है। कोई सुझाव? – Mike

+0

हाय माइक। आपने इसे कैसे हल किया? – Industrial

उत्तर

1

आप सीमित आकार के साथ नोड निष्पादित करने के लिए softlimit का उपयोग कर सकते हैं। या आप सीधे लिनक्स के setrlimit का उपयोग कर सकते हैं, लेकिन वास्तव में यह सुनिश्चित नहीं करते कि इसे नोडजेएस से कैसे कॉल करें, this SO question

+0

धन्यवाद। मुझे setrlimit() मिला, इसे node.js के लिए प्लगइन लिखने के लिए इस्तेमाल किया गया, और यह काम करता है - लेकिन अब मुझे node.js से एक त्रुटि संदेश मिलता है कि malloc() विफल हो रहा है क्योंकि यह उतनी मेमोरी आवंटित नहीं कर सकता है (55 मेग्स) जैसा कि यह चाहता है। स्मृति की कमी को संभालने का एक बहुत ही अपमानजनक तरीका, ऐसा प्रतीत होता है। तो अब मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या मैं node.js का पुनर्निर्माण कर सकता हूं और मेमोरी पदचिह्न को कम करने के लिए कुछ छोड़ सकता हूं। कोई विचार? – Mike