Чому моя система показує лише 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.