64-बिट डेबियन पर केवल 3.2 जीबी 4 जीबी रैम का पता चला


9

मैं डेबियन स्क्वीज़ (x64) चला रहा हूँ:

# uname -srvmo
Linux 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64 GNU/Linux

मेरे पास G31M-S मदरबोर्ड में DDR2 के 2 संगत 2 जीबी स्टिक्स हैं । यह 8GB तक का समर्थन करता है:

यहाँ छवि विवरण दर्ज करें

चूंकि यह एक सर्वर है, मैं वास्तव में ग्राफिक्स के बारे में परवाह नहीं करता हूं। इसलिए मैंने इसे सबसे कम पर सेट किया।

Internal Graphics Mode Select: Auto
                               Enabled, 1MB   <--
                               Enabled, 8MB
DVMT Mode Select:              Fixed Mode     <--
                               Auto
    DVMT/FIXED Memory:         128MB          <--
                               256MB

यहाँ छवि विवरण दर्ज करें

हालाँकि, लिनक्स केवल 3.19GiB मेमोरी का पता लगा रहा है:

# cat /proc/meminfo
MemTotal:        3350712 kB
...

E820 के नक्शे को देखते हुए :

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[    0.000000]  BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 00000000cfdb0000 (usable)
[    0.000000]  BIOS-e820: 00000000cfdb0000 - 00000000cfdc0000 (ACPI data)
[    0.000000]  BIOS-e820: 00000000cfdc0000 - 00000000cfdf0000 (ACPI NVS)
[    0.000000]  BIOS-e820: 00000000cfdf0000 - 00000000cfe00000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ff380000 - 0000000100000000 (reserved)
[    0.000000] DMI present.
[    0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it.
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)

और थोड़ा गणित कर रहा है:

>>> ((0x9F800 - 0x10000) + (0xCF6B0000 - 0x100000)) / 1024.0 / 1024.0 / 1024.0
3.240476608276367

हमें बस एक ही जवाब मिलता है।

मैं क्या खो रहा हूँ?


मैं "PCI एड्रेस स्पेस" तर्क को पूरी तरह से नहीं खरीद रहा हूँ। दो 2GB में से एक को बाहर निकालकर, सेटअप स्क्रीन 2048MB दिखाता है।

# cat /proc/meminfo
MemTotal:        2058432 kB

वह 1.96GB की है।

E820 मानचित्र फिर से:

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[    0.000000]  BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 000000007fdb0000 (usable)
[    0.000000]  BIOS-e820: 000000007fdb0000 - 000000007fdc0000 (ACPI data)
[    0.000000]  BIOS-e820: 000000007fdc0000 - 000000007fdf0000 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000007fdf0000 - 000000007fe00000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ff380000 - 0000000100000000 (reserved)
[    0.000000] DMI present.
[    0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it.
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)

और गणित ...

>>> ((0x9F800 - 0x10000) + (0x7fdb0000 - 0x100000)) / 1024.0 / 1024.0 / 1024.0
1.9973125457763672

तो मुझे 2GB / 2GB मिला। /proc/cpuinfoदिखाता है कि मेरा प्रोसेसर 36-बिट भौतिक पते का समर्थन करता है। 2 ^ 36 = 64GB, जिसे मैं पास भी नहीं हूं।


# ./smem -R 4G -w
Area                           Used      Cache   Noncache
firmware/hardware            843592          0     843592
kernel image                      0          0          0
kernel dynamic memory        181116     134616      46500
userspace memory             287784      19736     268048
free memory                 2881812    2881812          0

सुनिश्चित करें कि मेमोरी रीमैपिंग BIOS में चालू है।
डेविड श्वार्ट्ज

@DavidSchwartz मैंने इसे चालू करने की कोशिश की, और कर्नेल बूट पर घबरा गया। मैं कोशिश कर सकता हूँ कि एक जीवित सीडी के साथ यद्यपि।
जोनाथन रेनहार्ट

@DavidSchwartz आप बिल्कुल सही हैं। स्मृति रीमैपिंग चालू करने से लगता है कि चाल चली गई है। इसके बिना यह चालू हो गया, Memtest86 + की रिपोर्ट ~ 3300 एमबी। इसे चालू करने के साथ, यह 4086 एमबी की रिपोर्ट करता है। यदि आप इसका उत्तर देते हैं, तो मैं सहर्ष स्वीकार करूंगा।
जोनाथन रेनहार्ट 4

जवाबों:


5

आपको BIOS में मेमोरी रीमैपिंग चालू करना होगा । अन्यथा, यह 4GB सीमा से ऊपर मेमोरी को रीमैप नहीं करेगा और कुछ मेमोरी को हार्डवेयर मैपिंग द्वारा कवर किया जाएगा।


यही समस्या थी। स्मृति रीमैपिंग चालू करने से लगता है कि चाल चली गई है। इसके बिना, Memtest86 + रिपोर्ट ~ 3300 एमबी। इसे चालू करने के साथ, यह 4086 एमबी की रिपोर्ट करता है।
जोनाथन रेइनहर्ट

वही, सक्षम करने से पहले Memory Hole Remapping(AMIBIOS), POST लगभग 3.3 GiB रिपोर्ट करेगा, जबकि DMI अभी भी 2 GiB के दो मॉड्यूलों की सूची देगा।
njsg

5

PCI कुछ एड्रेस स्पेस का भी इस्तेमाल करता है। पीसीआई कार्ड और पीसीआई उपकरण दोनों ही मदरबोर्ड में निर्मित होते हैं (जैसे चिपसेट)।

आमतौर पर इसका मतलब था कि 4 जीबी में से केवल 3¼ से 3 was जीबी ही उपलब्ध था, भले ही आपने ऑनबोर्ड रैम के साथ आधुनिक जीपीयू का उपयोग न किया हो।


मैंने उस तथ्य को बहुत अनदेखा कर दिया ... मेरा मतलब है 0.8GB? हालांकि, e820 मैप में सबसे ऊपर है 0x100000000 == 1<<32, जो दिलचस्प है। तो BIOS 1 << 32 के ऊपर शेष रैम को मैप क्यों नहीं कर रहा है? यह Celeron E3400 है, और /proc/cpuinfoकहते हैं address sizes : 36 bits physical, 48 bits virtualकि 64GB के लिए अच्छा होना चाहिए। ( (1<<36) / (1024*1024*1024) == 64)
जोनाथन रेनहार्ट

मेरे पुराने तान मदरबोर्ड के लिए मैनुअल केवल वही है जो मुझे चेतावनी देता था कि हालांकि यह 4 जीबी रैम का समर्थन करता है, लेकिन यह कभी भी ओएस के लिए यह सब उजागर नहीं करेगा। उपयोग किए गए विस्तार कार्ड (सादे पुराने PCI, 66Mhz, 64 बिट) के आधार पर यह 3.3GB के उपयोगी स्थान को उजागर करेगा। मुझे कभी भी यह परखने को नहीं मिला कि, 512MB RAM मेरे पास मौजूद है। (यह तब वापस आया जब इस दोहरे सीपीयू मदरबोर्ड का मतलब अभी भी दो भौतिक सीपीयू का उपयोग करना था। तब से चीजें बदल सकती हैं और पीसीआई में समान सीमा नहीं हो सकती है। लेकिन अधिकांश मदरबोर्ड में अभी भी पीसीआई और पीसीआई दोनों हैं।)
हेन्स

मेरा संपादन देखें। मुझे लगता है कि समस्या यह है कि या तो BIOS किसी भी मेमोरी के बारे में रिपोर्ट करने से इनकार 1<<32करता है, या यह कर्नेल यह नहीं जानता कि इसे कैसे समझा जाए।
जोनाथन रेनहार्ट

क्या आपने अपने आंतरिक ग्राफिक्स द्वारा साझा की गई स्मृति पर विचार किया था? यदि आपने smemस्थापित किया है, तो smem -R 4G -wउपलब्ध / उपयोग की गई मेमोरी के सामान्य अवलोकन के लिए प्रयास करें ।
इज़्ज़ी

1
@ यह जवाब 32-बिट सिस्टम थे, तो यह उत्तर सही अर्थ लगाएगा। लेकिन 64-बिट (36-बिट भौतिक मेमोरी पते के साथ) के लिए नहीं।
जोनाथन रेनहार्ट

2

फर्मवेयर द्वारा आपकी अनुपलब्ध रैम का उपयोग किया जाता है:

# ./smem -R 4G -w
Area                           Used      Cache   Noncache
firmware/hardware            843592          0     843592
kernel image                      0          0          0
kernel dynamic memory        181116     134616      46500
userspace memory             287784      19736     268048
free memory                 2881812    2881812          0

उपसंहार:

echo $((181116 + 287784 + 2881812 + 843592))
4194304

तो आप देखिए, यह 4GB तक का है। और यहाँ ~ 800M आप गुम रिपोर्ट:

firmware/hardware            843592          0     843592

हां, और मैं इससे हैरान नहीं हूं। सवाल यह है कि BIOS 800MB से अधिक रैम की रिपोर्टिंग क्यों नहीं कर रहा है 0x100000000 (1<<32)? यह ऐसा व्यवहार कर रहा है मानो यह 32 बिट सिस्टम हो।
जोनाथन रेनहार्ट

हां, मुझे लगता है कि यह उत्तर मान्य है, लेकिन यह अंतिम प्रश्न :-) है
जोनाथन रेनहार्ट

तो smem -R 2G -wमशीन में सिर्फ 2 जी के साथ क्या कहते हैं (विशेष रूप से फर्मवेयर / हार्डवेयर के विषय में, क्योंकि यह वह खंड प्रतीत होता है जहां "लापता 800 एम" 4 जी के साथ चला गया)? काफी अजीब होगा अगर फर्मवेयर को अब उन 800M की आवश्यकता नहीं है ...
Izzy

क्या यह AMI BIOS detected: BIOS may corrupt low RAM, working around it.- और विकिपीडिया टिप्पणी (आपके e820link से) के साथ करना पड़ सकता है "कभी-कभी BIOS छोटी गाड़ी है और गलत तरीके से आरक्षित मेमोरी की रिपोर्ट करता है। यह मेमोरी टेस्टिंग सॉफ्टवेयर का कारण बन सकता है, जैसे मेमटेस्ट, त्रुटियों की रिपोर्ट करने के लिए।" ? संपादित करें: आह, नहीं - यह सिर्फ 64k के लिए होगा , 800M नहीं ...
Izzy

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