कर्नेल मेमोरी का आकार बढ़ाना


14

मेरे पास 512MB RAM वाला लिनक्स 2.6.29 और UBoot बूटलोडर वाला एक एम्बेडेड बोर्ड है। लेकिन कर्नेल केवल 128MB RAM का उपयोग करने में सक्षम है।

मैंने मान बदलने की कोशिश की XCODE_MEMSIZE, जो मुझे लगता है कि यह निर्धारित करता है कि कर्नेल कितना रैम का उपयोग करता है।

जब मैंने इसे 512 पर सेट किया, कर्नेल बूट होने के दौरान क्रैश हो गया। क्या कोई अन्य कॉन्फ़िगरेशन पैरामीटर है जिसे बदलने की आवश्यकता है?


क्या आप उल्लेखित दुर्घटना के संबंध में अधिक विशिष्ट हो सकते हैं? आप स्क्रीन पर क्या देखते हैं? कोई त्रुटि?
स्ट्रैप्का

और क्या बोर्ड है?
गिल्स एसओ- बुराई को रोकें '

वास्तव में 'केवल 128 एमबी का उपयोग करने में सक्षम' के बारे में अधिक विवरण प्रदान करने की आवश्यकता है। ऐसा लगता है कि कुछ सीमित हो गया है (प्रति उपयोगकर्ता ढेर आकार, आदि)।
बहुपत्नी

यू-बूट का पता लगाने में कितनी मेमोरी है? क्या यह संपूर्ण 512MB का पता लगाता है?
फ्रीथिंकर

cat /proc/cmdlineआपको अपने बोर्ड पर क्या बताता है?
अंकुर अग्रवाल

जवाबों:


3

आपके एम्बेडेड बोर्ड के अधिक विशिष्ट ज्ञान के बिना दो बातें दिमाग में आती हैं।

  1. कर्नेल mem=बूट पैरामीटर आज़माएं । (मुझे लगता है कि कभी-कभी मेमोरी गैर-निरंतर पते से उपलब्ध हो सकती है, इसलिए आपको इस तरह से कुछ का उपयोग करना पड़ सकता है, लेकिन पते की जांच आपको मोबो के अनुसार करनी होगी।

    मेम = 512M @ 0 मेम = 256M @ 0x80000000 मेम = 256M = 0xc0000000

  2. क्या आपके पास एम्बेडेड ग्राफिक्स कार्ड है? यह आपके उपलब्ध राम का एक हिस्सा निकाल सकता है। यदि आप बायोस या समकक्ष के लिए प्राप्त कर सकते हैं, तो जाँच करें।

@ जानकारी पर अधिक जानकारी के लिए कर्नेल पैरामीटर्सmem=


आपको 512M से कम मान निर्दिष्ट करने की आवश्यकता हो सकती है - शायद बोर्ड के मेमोरी मैप में भौतिक पते 0x20000000 (512M) पर या उसके आस-पास कोई उपकरण या कुछ है, जिसे, आपको यह जानने के लिए एक प्रति प्राप्त करनी चाहिए कि रैम आपके बोर्ड में कहाँ रहता है।
LawrenceC

1

मुझे लगता है कि आपको RAM Diskअपने कर्नेल में आकार बढ़ाना चाहिए ।


-1

अन्य पोस्टों के अलावा और अधिक विशिष्ट होने के बारे में, मैं यह भी सुझाव देता हूं कि /dev/shmयदि यह आरोहित है तो यह बिना सोचे समझे होगा । यह एक रैमडिस्क फाइल सिस्टम है और आपके रैम में खाता है।

sysctlLinux में कमांड को भी देख लें । sysctl -w kernel.shmmax="<some number>"दौड़ने के दौरान कर्नेल को बदलने जैसा कुछ करना ।


4
/ dev / shm यदि खाली है तो मुश्किल से किसी मेमोरी का उपयोग करता है। एक बार फ़ाइलों में लोड होने के बाद यह केवल RAM का उपयोग करना शुरू कर देगा।
पैट्रिक

/ dev / shm पारंपरिक साझा स्मृति अवधारणा के कार्यान्वयन के अलावा और कुछ नहीं है। यह कार्यक्रमों के बीच डेटा पास करने का एक कुशल साधन है। एक कार्यक्रम एक मेमोरी भाग बनाएगा, जिसे अन्य प्रक्रियाएं (यदि अनुमति दी गई हैं) तक पहुंच सकती है। यह लिनक्स पर चीजों को गति देने का परिणाम देगा।
सतीश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.