Mengapa sistem saya hanya menampilkan 3,2 GiB RAM ketika saya pasti memiliki 4,0 GiB

12

Saya memiliki RAM 2x2 GiB terpasang.
Menjalankan memtest86dari menu boot grub mengkonfirmasi ini .. memtest86 melaporkan tidak ada kesalahan.

Namun bagaimanapun saya memeriksa memori saya yang tersedia dalam sistem Ubuntu 10.04 yang berjalan, hanya melaporkan sekitar 3,2 GiB.

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

Siapa yang kehilangan RAM saya ?

Info yang diperbarui: Saya baru saja dual- boot ke versi lain dari Ubuntu 10,04 pada perangkat keras yang sama (saya lupa saya telah menginstalnya beberapa bulan yang lalu, untuk keadaan darurat):) .... Ini melaporkan 3,9 GiB, melalui System Monitor...

Saya telah memposting /var/log/messagesinformasi terbaru saya di http://pastebin.ubuntu.com/629246/

Peter.O
sumber
Kernel apa yang Anda gunakan? Kecuali Anda menggunakan 'bigmem' atau 'x86-64', Anda mungkin tidak memiliki semua RAM Anda terlihat oleh sistem. Juga, beberapa opsi BIOS memengaruhi visibilitas total RAM. Gunakan log / var / log / messages (di bagian paling awal) untuk melihat bagaimana wilayah memori dipetakan.
mbaitoff
Saya tidak tahu bagaimana menafsirkannya /var/log/messages, tetapi saya telah memposting informasi terbaru saya di sini: pastebin.ubuntu.com/629246 .. mungkin seseorang dapat membuat kepala-atau-ekornya :)
Peter.O
Apakah itu log dari sistem yang dilaporkan 3.2Gb, atau dari yang dilaporkan 3.9Gb?
mbaitoff
Baris 61,62 dari log Anda menunjukkan 3,2Gb tersedia.
mbaitoff
Saya memiliki Ubuntu 10,04 dengan x86-64 (64bit) diinstal pada mesin 4Gb. Ini melaporkan 3964 Mb ('gratis-m'), jadi pengaturan kedua Anda mendeteksi jumlah RAM Anda dengan benar. Silakan periksa jenis kernel apa yang diinstal pada sistem ke-2 Anda.
mbaitoff

Jawaban:

19

Ruang alamat 32-bit berarti Anda memiliki ruang untuk 4GB alamat. Idealnya kernel suka bisa memetakan semua memori fisik, semua memori dari tugas saat ini, dan semua memori sendiri. Jika memori fisik saja mengambil semua 4GB yang tersedia, itu tidak akan berfungsi. Jadi memori fisik dibagi menjadi memori rendah, yang dipetakan sepanjang waktu, dan memori tinggi, yang harus dipetakan saat digunakan. Kecuali Anda menjalankan kernel yang ditambal, pada arsitektur ix86, ruang alamat 128MB dikhususkan untuk kode kernel dan struktur data, dan 896MB dikhususkan untuk memetakan memori fisik (untuk total 1GB).

Bacaan latar belakang tentang kompleksitas manajemen memori ketika ruang alamat Anda tidak lebih nyaman dari total memori Anda:

Kutipan dari log kernel Anda:

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

Di sini Anda memiliki memori rendah 887MB: maksimum teoritis 896MB dikurangi beberapa MB buffer DMA (zona memori yang digunakan untuk berkomunikasi dengan perangkat perangkat keras).

Dari memori fisik Anda, 3328MB dipetakan pada alamat di bawah 4GB dan 768MB dipetakan pada alamat di atas 4GB (kisaran 0x100000000–0x130000000). Anda tidak mendapatkan akses ke 768MB ini, yang menjelaskan mengapa Anda hanya memiliki 3242MB yang tersedia (4096MB RAM minus 768MB tidak dapat diakses dikurangi 9MB buffer DMA minus 75MB yang digunakan oleh kernel itu sendiri untuk kode dan data). Saya tidak tahu mengapa BIOS memetakan beberapa RAM di atas tanda 4GB, tetapi sebagai titik data, saya memposting ini dari PC dengan 4GB RAM yang juga memiliki RAM yang dipetakan pada 0x100000000–0x130000000.

Memetakan memori fisik di atas 4GB membutuhkan penggunaan PAE . PAE mengeluarkan overhead kinerja kecil (khususnya, ini membutuhkan struktur data yang lebih besar di manajer memori), sehingga tidak diaktifkan secara sistematis. Kernel Ubuntu default dikompilasi tanpa dukungan PAE. Dapatkan -generic-paekernel Instal linux-image-generic-pae untuk dapat mengakses hingga 64GB RAM.

TL, DR: Linux berfungsi seperti yang diharapkan. Firmware tidak begitu membantu. Dapatkan kernel yang mendukung PAE.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Yah, itu mudah ... Terima kasih Gilles :) ... memahami log jelas lebih sulit! ... Saya telah menginstal linux-image-2.6.32-32-generic-pae, dan htopsekarang melaporkan3990 MiB
Peter.O
1
Mesin memetakan ram di atas tanda 4gb sehingga dapat menempatkan memori perangkat keras seperti ram video Anda di bawah tanda 4gb sehingga dapat digunakan oleh kernel 32 bit yang tidak diaktifkan.
psusi
Saya kira semua GB Anda harus GiB?
weynhamz
@ TechliveZheng Ini adalah situs teknologi komputer, bukan situs fisika. Semua MB, GB, dll. Saya memang MiB, GiB, dll.
Gilles 'SO- stop being evil'
1

Mungkin itu karena arsitektur Ubuntu Anda adalah i386 (versi 32 bit). Apa hasilnya saat Anda berlari uname -a?

Jeff
sumber
uname -a... Linux DT9400 2.6.32-32-generic # 62-Ubuntu SMP Rabu 20 April 21:54:21 UTC 2011 i686 GNU / Linux ... Namun, ketika saya metioned di "Info Diperbarui:" di pencarian saya, instalasi 10-bit 32-bit dual-boot lain menunjukkan 3,9 Gib .. Kedua sistem dual-boot diinstal dari CD yang sama, tetapi saat ini menjalankan kernel yang berbeda, dan memiliki program yang berbeda diinstal ... BTW, ini bukan kejadian baru-baru ini, Telah menunjukkan 3,2 GiB selama berbulan-bulan ..
Peter.O
Anda jelas menjalankan kernel 32-bit ('i686'). By the way, 3,9Gb sudah berarti 4Gb, karena beberapa ruang alamat dicadangkan oleh perangkat keras.
mbaitoff
Ya, terima kasih mbaitoff, saya akan berharap sedikit memori untuk pergi walkabout, tapi saya pikir 0,8 GiB terlalu banyak, jadi saya ingin mencari tahu apa yang sedang terjadi di sini.
Peter.O
AFAIK Ubuntu dapat menginstal kernel PAE yang dapat menggunakan RAM dalam jumlah besar bahkan pada x86
Anton Barkovsky
3
Saya pikir Anda hanya perlu menginstal pae kernel (linux-generic-pae dan linux-headers-generic-pae) dan, jika Anda suka, hapus kernel umum.
Anton Barkovsky