Почему моя система показывает только 3,2 ГБ ОЗУ, когда у меня определенно 4,0 ГБ

12

У меня установлено 2x2 гигабайта палочек оперативной памяти.
Запуск memtest86из меню загрузки grub подтверждает это. Memtest86 не сообщает об ошибках.

Тем не менее, каждый раз, когда я проверяю свою доступную память в работающей системе Ubuntu 10.04, она сообщает только о 3,2 ГБ.

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

У кого есть моя недостающая RAM?

Обновленная информация: я только что загрузился с двойной загрузкой в ​​другую версию Ubuntu 10.04 на том же оборудовании (я забыл, что установил его много месяцев назад, для экстренных случаев):) .... Он сообщает 3.9 ГиБ через System Monitor...

Я разместил свою самую последнюю /var/log/messagesинформацию на http://pastebin.ubuntu.com/629246/

Peter.O
источник
Какое ядро ​​вы используете? Если вы не используете «bigmem» или «x86-64», вы можете не видеть всю свою оперативную память видимой для системы. Кроме того, некоторые параметры BIOS влияют на видимость общего объема ОЗУ. Используйте свой / var / log / messages log (в самом начале), чтобы увидеть, как отображались области памяти.
mbaitoff
Я не знаю, как интерпретировать /var/log/messages, но я разместил мою самую последнюю информацию здесь: pastebin.ubuntu.com/629246 .. может быть, кто-то может сделать это головой или хвостом :)
Peter.O
Был ли это журнал из системы, сообщенной в 3,2 ГБ, или из системы, сообщенной в 3,9 ГБ?
mbaitoff
Строки 61,62 из вашего лога показывают 3.2Gb в наличии.
mbaitoff
У меня Ubuntu 10.04 с x86-64 (64bit) установлена ​​на 4Gb-машине. Он сообщает о 3964 Мб ('free -m'), поэтому ваша вторая установка правильно определяет объем вашей оперативной памяти. Пожалуйста, проверьте, какое ядро ​​установлено в вашей второй системе.
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
сообщаю
1
Машина отображает ОЗУ выше отметки 4 ГБ, чтобы она могла поместить аппаратную память, такую ​​как ваш видеопамять, под отметку 4 ГБ, чтобы они могли использоваться 32-разрядными ядрами без поддержки Pae.
psusi
Я полагаю, все ваши ГБ должны быть GiB?
Вейнхамз
@TechliveZheng Это сайт, посвященный компьютерным технологиям, а не сайт по физике. Все мои MB, GB и т. Д. Действительно являются MiB, GiB и т. Д.
Жиль "ТАК, перестань быть злым"
1

Может быть, это потому, что архитектура вашего Ubuntu - i386 (32-битная версия). Каков результат, когда вы бежите uname -a?

Джефф
источник
uname -a... Linux DT9400 2.6.32-32-generic # 62-Ubuntu SMP Ср 20 апреля 21:54:21 UTC 2011 i686 GNU / Linux ... Однако, как я уже упоминал в "Обновленной информации:" в моем квесте, другая 10.04 32-битная установка с двойной загрузкой показывает 3.9 Гиб. Обе системы с двойной загрузкой были установлены с одного компакт-диска, но в настоящее время работают с разными ядрами, и на них установлены разные программы ... Кстати, это не так давно, Он показывает 3,2 ГиБ в течение многих месяцев.
Peter.O
Вы, очевидно, используете 32-битное ядро ​​('i686'). Кстати, 3.9Gb уже означает 4Gb, так как некоторое адресное пространство зарезервировано аппаратным обеспечением.
mbaitoff
Да, спасибо mbaitoff, я бы ожидал, что немного памяти уйдет, но я думаю, что 0,8 ГиБ это слишком много, поэтому я хотел бы узнать, что здесь происходит.
Peter.O
AFAIK Ubuntu может установить ядро ​​PAE, которое может использовать большие объемы оперативной памяти даже на x86
Антон Барковский
3
Я думаю, вам просто нужно установить ядро ​​pae (linux-generic-pae и linux-headers-generic-pae) и, если хотите, удалить общее ядро.
Антон Барковский