मैं एक एम्बेडेड सिस्टम पर 512 एमबी रैम और एप्लिकेशन का समर्थन करने के लिए पर्याप्त स्वैप मेमोरी पर काम कर रहा हूं। कर्नेल से, मैंने राम आकार को कर्नेल cmd तर्क से 130 एमबी तक सीमित कर दिया है। और swapoff -a
का उपयोग करके स्वैप अक्षम कर दिया। मैंने कर्नल ओवरकमिट को भी अक्षम कर दिया है, ताकि एप्लिकेशन अकेले भौतिक स्मृति में चलाया जा सके। मैंने /proc/cmdline
और /proc/meminfo
से परिवर्तनों की पुष्टि की। अब जब मैं एप्लिकेशन चलाता हूं और शीर्ष मानों की जांच करता हूं, तो मेरे आवेदन के लिए वीएसजेड 177 मीटर है जो वास्तविक स्मृति से अधिक है !! यह कैसे संभव है? यह स्मृति कहां से आई थी?लिनक्स में स्मृति उपयोग भौतिक RAM से अधिक क्यों है?
उत्तर
वीएसजेड वर्चुअल मेमोरी आकार है जिसका उपयोग प्रक्रिया द्वारा किया जाता है। यह सामान्य है कि यह आपकी भौतिक स्मृति के आकार से अधिक है क्योंकि यह इस के मुख्य विचारों में से एक है। आपको निवासी आकार (आरएसएस) को देखना चाहिए जो प्रक्रिया द्वारा उपयोग की जाने वाली वास्तविक भौतिक स्मृति है। इस उदाहरण को
देखो:
ps -o rss,vsz,cmd ax | grep -i nginx | head -n1
956 31248 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
rss - 956 kB
vsz - 31248 kB
तो, इसका मतलब है कि इस प्रक्रिया के भौतिक स्मृति की 956kB उपयोग कर रहा है, और आभासी स्मृति के 31MB:
मैं एक nginx प्रक्रिया चल रहा है।
स्वैप अक्षम करना (swapoff -a), जैसा आपने किया था, वर्चुअल मेमोरी का उपयोग अक्षम नहीं करता है।
पढ़ें के बारे में आभासी यहाँ स्मृति: Virtual memory
क्या वर्चुअल मेमोरी पर सीमा निर्धारित करना संभव है ?? मैं सिर्फ उत्सुक हूं .... – Griffin
मुझे नहीं लगता कि आपने समझाया कि क्यों 'swapoff -a' का परिणाम वीएमएम उपयोग नहीं होता है। * स्वैप * केवल * पढ़ने-लिखने * स्मृति या प्रोग्राम डेटा के लिए उपयोग किया जाता है। प्रोग्राम कोड के लिए, लिनक्स * आभासी फ़ाइल सिस्टम * के पास एक पृष्ठ का पता लगाने (पुनः लोड) करने का एक तरीका है। यदि कोड किसी पते पर कूदता है, तो कोड * दोष * और डेटा डिस्क से लोड होता है। इस तरह, जब कोई प्रोग्राम शुरू होता है तो पूरी चीज स्मृति में लोड नहीं होती है; केवल * प्रारंभ * पता पृष्ठ। इसी प्रकार जब मेमोरी प्रेशर के तहत, शायद ही कभी इस्तेमाल किया गया कोड बंप हो सकता है। –
- 1. लिनक्स में mmap'ed भौतिक स्मृति
- 2. डेल्फी का उपयोग करके भौतिक RAM से अधिक एक विशाल जेपीईजी कैसे लिखना है?
- 3. लिनक्स स्मृति उपयोग इतिहास
- 4. फोर्स लिनक्स केवल 4 जी से अधिक स्मृति का उपयोग करने के लिए?
- 5. लिनक्स कर्नेल में संगत स्मृति का उपयोग कैसे करें?
- 6. स्पार्क - कंटेनर भौतिक स्मृति सीमा से परे चल रहा है
- 7. जेएसओएन पार्सिंग बार-बार क्यों अधिक से अधिक स्मृति का उपभोग करता है?
- 8. लिनक्स मेमोरी मैप की गई फाइलें आरक्षित भौतिक मेमोरी
- 9. प्रति प्रक्रिया भौतिक स्मृति सीमित करें
- 10. सी - कर्नेल मॉड्यूल से भौतिक स्मृति को लिखें
- 11. मेरा जेवीएम का कुल मेमोरी उपयोग एक्सएमएक्स मूल्य से 30 गुना अधिक क्यों है?
- 12. बनाने कार्यों अधिक स्मृति
- 13. लिनक्स
- 14. लिनक्स कुल उपलब्ध स्मृति
- 15. नेट। X64 प्रक्रिया में मुझे 11GB से अधिक आवंटित स्मृति क्यों नहीं मिल सकती है?
- 16. MAP_NORESERVE रिजर्व भौतिक स्मृति के साथ mmap करता है?
- 17. ओएस भौतिक स्मृति के वास्तविक आकार को कैसे जानता है?
- 18. लिनक्स प्रक्रिया निवासी सेट आकार की तुलना में एक JVM रिपोर्ट अधिक प्रतिबद्ध स्मृति क्यों करती है?
- 19. क्या भौतिक स्मृति में std :: vector तत्व सम्मिलित हैं?
- 20. पिल्ला स्मृति उपयोग हमेशा के लिए बढ़ता है?
- 21. इस स्थिति में v8 स्मृति से बाहर क्यों चलाता है?
- 22. लिनक्स पर एक ही भौतिक स्मृति पर दो वर्चुअल एड्रेस को कैसे मैप करें?
- 23. जावा द्वारा उपयोग किए जाने पर मूल पुस्तकालय 1.5 गुना अधिक स्मृति का उपयोग क्यों करता है जब लिनक्स के तहत सी-प्रोग्राम द्वारा उपयोग किया जाता है?
- 24. पर्ल का पुरालेख :: टैर स्मृति से बाहर क्यों चलाता है?
- 25. पायथन 3: मल्टीप्रोसेसिंग काफी अधिक RAM का उपभोग करता है और
- 26. अगर तर्क एक सेट है तो संघ अधिक स्मृति का उपभोग क्यों करता है?
- 27. भौतिक स्मृति से संबंधित ढेर, ढेर, पाठ जैसे विभिन्न सेगमेंट कैसे हैं?
- 28. विभाजन गुणा से अधिक महंगा क्यों है?
- 29. 1 से अधिक खाली शब्दकोश क्यों है?
- 30. क्यों "**" नकारात्मकता से अधिक कसकर बांधता है?
मेमोरी मैप की फ़ाइलें? वर्चुअल एड्रेस स्पेस में दो बार मैप किया गया है? प्रक्रिया मेमोरी मानचित्र की जांच करें। –
http://linuxatemyram.com/ और '/ proc/$ पीआईडी / मानचित्र' –