मेरा सिस्टम केवल 3.2 GiB RAM को क्यों दिखाता है जब मेरे पास निश्चित रूप से 4.0 GiB है


12

मेरे पास 2x2 GiB RAM की स्टिक है। ग्रब बूट मेनू से
चल रहा memtest86है यह पुष्टि करता है .. memtest86 कोई त्रुटि नहीं रिपोर्ट करता है।

हालाँकि, हर तरीके से मैं एक उपलब्ध Ubuntu 10.04 सिस्टम में अपनी उपलब्ध मेमोरी की जाँच करता हूँ, यह केवल लगभग 3.2 GiB की रिपोर्ट करता है।

  • cat /proc/meminfo == 3320132 kB
  • System Monitor == 3.2 GiB
  • htop == 3242 एमबी
  • free -m == 3242 एमबी

मेरी गुम हो चुकी रैम किसे मिली है ?

अपडेट किया गया की जानकारी: मैं बस अब दोहरे एक ही हार्डवेयर पर उबंटू 10.04 का एक और संस्करण में -booted (मैं भूल गया था कि मैं इसे स्थापित किया था कई महीने पहले, आपात स्थिति के लिए):) .... यह 3.9 GiB रिपोर्ट के माध्यम से, System Monitor...

मैंने अपनी सबसे हाल की /var/log/messagesजानकारी http://pastebin.ubuntu.com/629246/ पर पोस्ट की है


आप किस तरह का कर्नेल इस्तेमाल कर रहे हैं? जब तक आप 'bigmem' या 'x86-64' का उपयोग नहीं करते, तब तक आपके पास सिस्टम में दिखाई देने वाली आपकी RAM नहीं हो सकती है। साथ ही, कुछ BIOS विकल्प कुल रैम की दृश्यता को प्रभावित करते हैं। मेमोरी क्षेत्र कैसे मैप किए गए थे, यह देखने के लिए अपने / var / log / संदेश लॉग (बहुत शुरुआत में) का उपयोग करें।
म्बिटॉफ

मुझे नहीं पता कि कैसे व्याख्या की जाए /var/log/messages, लेकिन मैंने अपनी सबसे हाल की जानकारी यहाँ पोस्ट की है: pastebin.ubuntu.com/629246 .. हो सकता है कि कोई व्यक्ति इसका हेड-या-टेल बना सकता है :)
पीटर।

क्या वह लॉग 3.2Gb- रिपोर्टेड सिस्टम से था, या 3.9Gb- रिपोर्टेड से?
मबैतॉफ

आपके लॉग से लाइन्स 61,62 3.2Gb उपलब्ध दिखाता है।
mbaitoff

मेरे पास 4G86- मशीन पर x86-64 (64 बिट) के साथ Ubuntu 10.04 है। यह 3964 एमबी ('फ्री-एम') की रिपोर्ट करता है, इसलिए आपका दूसरा सेटअप आपकी रैम राशि का सही पता लगाता है। कृपया जांचें कि आपके 2 सिस्टम पर किस प्रकार का कर्नेल स्थापित है।
mbaitoff

जवाबों:


19

32-बिट एड्रेस स्पेस का मतलब है कि आपके पास 4GB एड्रेस के लिए स्पेस है। आदर्श रूप से कर्नेल सभी भौतिक मेमोरी, वर्तमान कार्य की सभी मेमोरी और अपनी स्वयं की मेमोरी को मैप करने में सक्षम होना पसंद करता है। यदि भौतिक मेमोरी अकेले सभी उपलब्ध 4GB को लेती है, तो यह काम नहीं करेगा। तो भौतिक मेमोरी को कम मेमोरी में विभाजित किया जाता है, जिसे हर समय मैप किया जाता है, और उच्च मेमोरी, जिसे उपयोग में होने पर मैप किया जाना चाहिए। जब तक आप ix86 आर्किटेक्चर पर एक पैच किए गए कर्नेल नहीं चला रहे हैं, पता स्थान का 128MB कर्नेल कोड और डेटा संरचनाओं के लिए समर्पित है, और 896MB भौतिक मेमोरी (कुल 1GB के लिए) को मैप करने के लिए समर्पित है।

स्मृति प्रबंधन की जटिलताओं पर पृष्ठभूमि पठन जब आपका पता स्थान आपकी कुल मेमोरी से आराम से बड़ा नहीं होता है:

आपके कर्नेल लॉग के अंश:

BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cdce0000 (usable)
BIOS-e820: 00000000cdce0000 - 00000000cdce3000 (ACPI NVS)
BIOS-e820: 00000000cdce3000 - 00000000cdcf0000 (ACPI data)
BIOS-e820: 00000000cdcf0000 - 00000000cdd00000 (reserved)
BIOS-e820: 00000000d0000000 - 00000000e0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000130000000 (usable)
2404MB HIGHMEM available.
887MB LOWMEM available.
Zone PFN ranges:
DMA      0x00000000 -> 0x00001000
Normal   0x00001000 -> 0x000377fe
HighMem  0x000377fe -> 0x000cdce0

यहां आपके पास 887MB कम मेमोरी है: सैद्धांतिक अधिकतम 896MB माइनस कुछ MB डीएमए बफ़र्स (हार्डवेयर उपकरणों के साथ संचार करने के लिए उपयोग की जाने वाली मेमोरी के ज़ोन)।

आपकी भौतिक मेमोरी में से, 3328MB को 4GB से नीचे के पते पर मैप किया गया है और 768MB को 4GB (0x100000000-0x130000000 रेंज) से अधिक के पते पर मैप किया गया है। आप इन 768MB तक पहुँच प्राप्त नहीं कर रहे हैं, जो बताता है कि आपके पास केवल 3242MB उपलब्ध क्यों है (4096MB RAM माइनस 768MB दुर्गम माइनस 9MB DMA बफ़र्स माइनस 75MB की कर्नेल द्वारा कोड और डेटा के लिए उपयोग किया जाता है)। मुझे नहीं पता कि BIOS 4GB मार्क के ऊपर कुछ RAM को क्यों मैप करता है, लेकिन डेटा बिंदु के रूप में, मैं इसे 4GB RAM के साथ एक पीसी से पोस्ट कर रहा हूं कि इसी तरह 0x100000000-0x130000000 में RAM मैप किया गया है।

4GB से ऊपर की भौतिक मेमोरी को मैप करने के लिए PAE का उपयोग करना पड़ता है । पीएई एक छोटे प्रदर्शन ओवरहेड को सम्मिलित करता है (विशेष रूप से, यह मेमोरी मैनेजर में बड़ी डेटा संरचनाओं की आवश्यकता होती है), इसलिए यह व्यवस्थित रूप से सक्षम नहीं है। डिफ़ॉल्ट Ubuntu कर्नेल पीएई समर्थन के बिना संकलित है। -generic-paeकर्नेल लिनक्स-इमेज-जेनेरिक-पा स्थापित करें को 64GB रैम तक पहुंचने में सक्षम होने के लिए प्राप्त करें ।

TL, DR: लिनक्स अपेक्षित रूप से काम कर रहा है। फर्मवेयर इतना मददगार नहीं है। पीएई-सक्षम कर्नेल प्राप्त करें।


खैर, यह आसान था ... धन्यवाद गिल्स :) ... लॉग समझना निश्चित रूप से कठिन है! ... मैंने स्थापित किया है linux-image-2.6.32-32-generic-pae, और htopअब रिपोर्ट करता है3990 MiB
पीटर।

1
मशीन 4 जीबी मार्क के ऊपर के रेम को मैप करती है ताकि यह आपके वीडियो रैम की तरह हार्डवेयर मेमोरी को 4 जीबी मार्क के नीचे रख सके ताकि उनका उपयोग नॉन पे सक्षम 32 बिट कर्नेल द्वारा किया जा सके।
Psusi

मुझे लगता है कि आपके सभी GB को GiB होना चाहिए?
weynhamz

@TechliveZheng यह एक कंप्यूटर टेक साइट है, न कि भौतिकी साइट। मेरे सभी MB, GB, इत्यादि वास्तव में MiB, GiB, आदि हैं
गाइल्स का SO- रुकना बुराई है '

1

शायद यह इसलिए है क्योंकि आपके उबंटू की वास्तुकला i386 (32 बिट संस्करण) है। जब आप दौड़ते हैं तो परिणाम क्या होता है uname -a?


uname -a... Linux DT9400 2.6.32-32- जेनेरिक # 62-Ubuntu SMP Wed 20 अप्रैल 21:54:21 UTC 2011 i686 GNU / लिनक्स ... हालाँकि, जैसा कि मैंने अपने खोज में "अद्यतन जानकारी:" में कहा था। एक अन्य 10.04 32 बिट के दोहरे बूट वाले इंस्टॉलेशन से पता चलता है कि 3.9 गिब .. दोनों ही ड्यूल-बूट सिस्टम एक ही सीडी से स्थापित किए गए थे, लेकिन वे कर्स्टन को अलग-अलग कर्नेल चला रहे हैं, और अलग-अलग प्रोग्राम इंस्टॉल किए गए हैं ... BTW, यह हाल ही में नहीं हो रहा है, यह कई महीनों के लिए 3.2 GiB दिखा रहा है ..
पीटर।

आप स्पष्ट रूप से एक 32-बिट कर्नेल ('i686') चला रहे हैं। वैसे, 3.9Gb का मतलब पहले से ही 4Gb है, क्योंकि कुछ एड्रेस स्पेस हार्डवेयर द्वारा आरक्षित है।
mbaitoff

हां, धन्यवाद mbaitoff, मुझे वॉकअबाउट जाने के लिए थोड़ी मेमोरी की उम्मीद होगी, लेकिन मुझे लगता है कि 0.8 GiB बहुत अधिक है, इसलिए मैं यह जानना चाहूंगा कि यहां क्या हो रहा है।
पीटर।

AFAIK Ubuntu PAE कर्नेल स्थापित कर सकते हैं जो x86 पर भी बड़ी मात्रा में रैम का उपयोग कर सकते हैं
एंटोन बर्कोवस्की

3
मुझे लगता है कि आपको केवल पे कर्नेल (linux-generic-pae और linux-headers-generic-pae) स्थापित करने की आवश्यकता है और, यदि आपको पसंद है, तो सामान्य कर्नेल को हटा दें।
एंटोन बार्कोवस्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.