Kesinlikle 4.0 GiB'ye sahip olduğumda sistemim neden sadece 3.2 GiB RAM gösteriyor


12

RAM yüklü 2x2 GiB çubukları var. Grub önyükleme menüsünden
çalışan memtest86bu doğrular .. memtest86 hata bildirir.

Ancak çalışan bir Ubuntu 10.04 sistemindeki kullanılabilir belleğimi her şekilde kontrol ettiğimde, sadece yaklaşık 3.2 GiB bildiriyor.

  • cat /proc/meminfo == 3320132 kB
  • System Monitor == 3.2 GiB
  • htop == 3242 MB
  • free -m == 3242 MB

Eksik RAM'im kimde ?

Güncellenmiş bilgi: Şimdi aynı donanımda Ubuntu 10.04'ün başka bir sürümüne çift önyükleme yaptım (acil durumlar için aylarca önce kurduğumu unuttum) :) .... 3.9 GiB, System Monitor...

En son /var/log/messagesbilgilerimi http://pastebin.ubuntu.com/629246/ adresinde yayınladım


Ne tür bir çekirdek kullanıyorsunuz? Bir 'bigmem' veya 'x86-64' kullanmadığınız sürece, RAM'inizin tümü sistem tarafından görülemeyebilir. Ayrıca, bazı BIOS seçenekleri toplam RAM'in görünürlüğünü etkiler. Bellek bölgelerinin nasıl eşlendiğini görmek için / var / log / messages günlüğünüzü (en başında) kullanın.
mbaitoff

Nasıl yorumlayacağımı bilmiyorum /var/log/messages, ama en son bilgilerimi buraya gönderdim: pastebin.ubuntu.com/629246 .. belki birisi bunun kafalarını ya da kuyruklarını yapabilir :)
Peter.O

Bu günlük 3.2Gb tarafından bildirilen sistemden mi, yoksa 3.9Gb tarafından bildirilen sistemden mi?
mbaitoff

Günlüğünüzden 61,62 satırlar 3.2Gb kullanılabilir.
mbaitoff

4Gb makinesinde x86-64 (64bit) yüklü Ubuntu 10.04 var. 3964 Mb ('free -m') rapor eder, böylece ikinci kurulumunuz RAM miktarınızı doğru bir şekilde algılar. Lütfen 2. sisteminizde ne tür bir çekirdeğin kurulu olduğunu kontrol edin.
mbaitoff

Yanıtlar:


19

32 bit adres alanı, 4 GB adresler için alanınız olduğu anlamına gelir. İdeal olarak çekirdek tüm fiziksel belleği, mevcut görevin tüm belleğini ve kendi belleğini eşleştirmeyi sever. Fiziksel bellek tek başına kullanılabilir 4 GB'nin tamamını kaplıyorsa, bu işe yaramaz. Bu nedenle fiziksel bellek, her zaman eşlenen düşük belleğe ve kullanım sırasında eşlenmesi gereken yüksek belleğe ayrılır. Yamalı bir çekirdek çalıştırmadığınız sürece, ix86 mimarisinde, çekirdek kodu ve veri yapılarına 128MB adres alanı ayrılmıştır ve 896MB fiziksel belleği eşlemeye ayrılmıştır (toplam 1 GB için).

Adres alanınız toplam belleğinizden rahatça büyük olmadığında bellek yönetiminin karmaşıklıkları hakkında arka plan okuma:

Çekirdek günlüklerinizden alıntılar:

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

Burada 887MB düşük belleğiniz var: teorik maksimum 896MB eksi birkaç MB DMA arabelleği (donanım aygıtlarıyla iletişim kurmak için kullanılan bellek bölgeleri).

Fiziksel belleğinizin 3328 MB'ı 4GB'ın altındaki adreslerde eşlenir ve 768MB 4GB'ın üzerindeki adreslerde eşlenir (0x100000000–0x130000000 aralığı). Neden yalnızca 3242MB kullanılabilir olduğunu açıklayan bu 768MB'ye erişemiyorsunuz (4096MB RAM eksi 768MB erişilemez eksi 9MB DMA tamponları eksi 75MB çekirdeğin kod ve veri için kullandığı). BIOS'un neden 4GB işaretinin üzerinde bazı RAM'leri eşlediğini bilmiyorum, ancak veri noktası olarak bunu, 0x100000000–0x130000000'de RAM eşlemesine sahip olan 4GB RAM'li bir bilgisayardan gönderiyorum.

Fiziksel belleği 4 GB'ın üzerinde eşlemek PAE kullanılmasını gerektirir . PAE küçük bir performans yükü oluşturur (özellikle bellek yöneticisinde daha büyük veri yapıları gerektirir), bu nedenle sistematik olarak etkinleştirilmez. Varsayılan Ubuntu çekirdeği PAE desteği olmadan derlenmiştir. 64 GB'a kadar RAM'e erişebilmek için -generic-paeçekirdeğe Linux-image-generic-pae yükleyin sahip olun.

TL, DR: Linux beklendiği gibi çalışıyor. Ürün yazılımı çok yardımcı değil. PAE özellikli bir çekirdek alın.


Peki, bu kolaydı ... Teşekkürler Gilles :) ... günlüğü anlamak kesinlikle daha zor! ... linux-image-2.6.32-32-generic-paehtop3990 MiB
Yükledim

1
Makine, 4 gb işaretinin üzerindeki ram'ı eşleştirir, böylece pae etkin olmayan 32 bit çekirdekler tarafından kullanılabilmeleri için video ramınız gibi donanım belleğini 4 gb işaretinin altına koyabilir.
Mayıs

Sanırım tüm GB'niz GiB olmalı?
weynhamz

@TechliveZheng Bu bir bilgisayar teknoloji sitesi, bir fizik sitesi değil. Vs benim MB, GB, gerçekten vb MiB, gib vardır
Gilles 'SO durdurma varlık kötülük'

1

Belki de Ubuntu'nuzun mimarisi i386 (32 bit sürümü) olmasıdır. Koştuğunuzda sonuç nedir uname -a?


uname -a... Linux DT9400 2.6.32-32-jenerik # 62-Ubuntu SMP Çar 20 Nis 21:54:21 UTC 2011 i686 GNU / Linux ... Ancak, queston'umdaki "Güncellenmiş bilgi:" bölümünde Başka bir 10.04 32bit çift önyüklemeli kurulum 3.9 Gib gösterir. Her iki çift önyükleme sistemi de aynı CD'den kurulmuş, ancak farklı çekirdekler çalıştırıyor ve farklı programlar yüklü ... BTW, bu son zamanlarda gerçekleşmiyor, Birçok aydır 3.2 GiB gösteriliyor ..
Peter.O

Açıkça 32 bit bir çekirdek çalıştırıyorsunuz ('i686'). Bu arada, 3.9Gb zaten 4Gb anlamına gelir, çünkü bazı adres alanı donanım tarafından ayrılmıştır.
mbaitoff

Evet, teşekkürler mbaitoff, biraz bellek harcanmasını beklerdim, ama bence 0.8 GiB çok fazla, bu yüzden burada neler olduğunu öğrenmek istiyorum.
Peter.O

AFAIK Ubuntu,
x86'da

3
Sanırım sadece pae çekirdeğini (linux-generic-pae ve linux-headers-generic-pae) kurmanız ve isterseniz genel çekirdeği kaldırmanız gerekiyor.
Anton Barkovsky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.