Чому моя система показує лише 3,2 ГБ оперативної пам’яті, коли у мене напевно є 4,0 ГБ


12

У мене встановлено 2x2 GiB палички оперативної пам’яті.
Запуск memtest86із меню завантаження grub підтверджує це .. memtest86 повідомляє про помилки.

Однак у будь-який спосіб я перевіряю наявну пам'ять у запущеній системі Ubuntu 10.04, вона повідомляє лише про 3,2 Гб.

  • cat /proc/meminfo == 3320132 кБ
  • System Monitor == 3,2 Гб
  • htop == 3242 Мб
  • free -m == 3242 Мб

Хто має мою відсутніх оперативної пам’яті?

Оновлена ​​інформація: я просто подвійно завантажився в іншу версію Ubuntu 10.04 на тому ж апаратному забезпеченні (я забув, що встановив його багато місяців тому, для надзвичайних ситуацій) System Monitor:) .... Він повідомляє про 3,9 Гб, через ...

Я опублікував останню /var/log/messagesінформацію на http://pastebin.ubuntu.com/629246/


Яке ядро ​​ви використовуєте? Якщо ви не використовуєте 'bigmem' або 'x86-64', можливо, у вас не буде видно всієї вашої оперативної пам’яті. Також деякі параметри BIOS впливають на видимість загальної оперативної пам’яті. Використовуйте свій / var / log / message log (на самому початку), щоб побачити, як відображені регіони пам'яті.
— mbaitoff

Я не знаю, як інтерпретувати /var/log/messages, але я опублікував тут свою останню інформацію: pastebin.ubuntu.com/629246 .. можливо, хтось може зробити голову чи хвостик це :)
— Peter.O

Це був журнал із системи, про яку повідомлялося 3,2 Гб, або з 3,9 Гб?
— mbaitoff

Рядки 61,62 з вашого журналу показують, що доступно 3,2 Гбіт.
— mbaitoff

У мене на 4Gb-машині встановлений Ubuntu 10.04 з x86-64 (64bit). Він повідомляє 3964 Мб ("безкоштовно -m"), тож ваша друга установка правильно визначає об'єм оперативної пам'яті. Перевірте, який тип ядра встановлений у вашій 2-й системі.
— mbaitoff

Відповіді:


19

32-бітний адресний простір означає, що у вас є місце для 4 ГБ адрес. В ідеалі ядро ​​любить мати можливість відображати всю фізичну пам'ять, усю пам’ять поточного завдання та всю свою власну пам’ять. Якщо лише фізична пам'ять займає всі доступні 4 Гб, це не спрацює. Отже фізична пам'ять ділиться на низьку пам'ять, яка відображається весь час, і високу пам'ять, яку необхідно відображати під час використання. Якщо ви не використовуєте виправлене ядро, в архітектурі ix86 128 МБ адресного простору присвячено коду ядра та структурам даних, а 896 МБ - для відображення фізичної пам'яті (загалом 1 ГБ).

Фонове читання щодо складності управління пам’яттю, коли ваш адресний простір не комфортно більший, ніж загальна пам’ять:

Витяги з ваших журналів ядра:

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

Тут у вас 887 Мбайт низької пам'яті: теоретичний максимум 896 МБ мінус кілька МБ буферів DMA (зони пам'яті, що використовуються для зв'язку з апаратними пристроями).

Вашої фізичної пам’яті 3328 МБ відображається за адресами нижче 4 ГБ, а 768 МБ - за адресами вище 4 Гб (діапазон 0x100000000–0x130000000). Ви не отримуєте доступу до цих 768 Мб, що пояснює, чому у вас є лише 3242 МБ (4096 МБ оперативної пам’яті мінус 768 МБ недоступних мінус 9 МБ буферів DMA мінус 75 МБ, які використовує саме ядро ​​для коду та даних). Я не знаю, чому BIOS відображає деяку оперативну пам’ять вище позначки 4 ГБ, але як точку даних я розміщую це з ПК з 4 Гб оперативної пам’яті, який аналогічно має оперативну пам’ять, відображену на 0x100000000–0x130000000.

Для картування фізичної пам'яті вище 4 Гб потрібно використовувати PAE . PAE має невеликі накладні витрати (зокрема, це потребує більших структур даних в диспетчері пам'яті), тому це не ввімкнено систематично. Ядро Ubuntu за замовчуванням компілюється без підтримки PAE. Отримайте -generic-paeядро, Встановіть linux-image-generic-pae щоб мати доступ до 64 Гб оперативної пам’яті.

TL, DR: Linux працює як слід. Прошивка не настільки корисна. Отримайте ядро ​​з підтримкою PAE.


Що ж, це було просто ... Дякую Жилле :) ... зрозуміти журнал, безумовно, важче! ... Я встановив linux-image-2.6.32-32-generic-pae, а htopтепер повідомляє3990 MiB
— Peter.O

1
Машина відображає оперативної пам’яті вище позначки 4 ГБ, щоб вона могла поставити апаратну пам’ять, як ваш відеорам, під позначку 4 ГБ, щоб вони могли використовувати 32-бітні ядра, не включені в пає.
— psusi

Я думаю, всі ваші ГБ повинні бути GiB?
— weynhamz

@TechliveZheng Це сайт комп'ютерних технологій, а не сайт фізики. Усі мої МБ, ГБ тощо - це справді MiB, GiB тощо.
— Жил "SO- перестань бути злим"

1

Можливо, це тому, що архітектура вашого Ubuntu - це i386 (32-бітна версія). Який результат, коли ти біжиш uname -a?


uname -a... Linux DT9400 2.6.32-32-generic # 62-Ubuntu SMP Wed Apr 20 21:54:21 UTC 2011 i686 GNU / Linux ... Проте, як я зазначив у "Оновленій інформації:" у своєму квестоні, інша 10.04 32-бітова установка з подвійним завантаженням демонструє 3,9 Гіб. Обидві системи з подвійним завантаженням були встановлені з одного CD, але вони запускаються різними ядрами та мають різні програми, встановлені ... BTW, це ще недавно не відбувається, Він показує 3,2 Гб протягом багатьох місяців ..
— Peter.O

Ви, очевидно, використовуєте 32-бітове ядро ​​('i686'). До речі, 3,9Gb вже означає 4Gb, оскільки деякий адресний простір зарезервовано апаратним забезпеченням.
— mbaitoff

Так, дякую mbaitoff, я б очікував, що трохи пам’яті пройде, але я думаю, що 0,8 ГБ занадто багато, тому я хотів би дізнатися, що тут відбувається.
— Пітер.О

AFAIK Ubuntu може встановити ядро ​​PAE, яке може використовувати велику кількість оперативної пам’яті навіть на x86
— Антон Барковський,

3
Я думаю, вам просто потрібно встановити ядро ​​pae (linux-generic-pae і linux-headers-generic-pae) і, якщо вам подобається, видалити загальне ядро.
— Антон Барковський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.