Почему Linux только видит 3832 МБ моих 4096 МБ RAM?

Этот трюк еще приятнее и не требует никаких внешних пакетов:

curl ipinfo.io/23.66.166.151
1
31.07.2014, 11:13
2 ответа

Есть несколько причин, по которым часть ОЗУ не будет использоваться Linux:

  • Если Linux обнаружит, что она принадлежит аппаратному периферийному устройству. Большинству компьютеров требуется оперативная память для дисплея, и поэтому зарезервировано некоторое количество ОЗУ для видеокарты. Также видеокарта может содержать собственную оперативную память; поскольку видеокарты имеют относительно высокие требования к памяти, они, как правило, не поставляются в комплекте с собственной оперативной памятью (но есть исключения).
    По крайней мере, VMware и VirtualBox считают видеопамять частью памяти, выделенной виртуальной машине. Размер видеопамяти устанавливается в конфигурации виртуальной машины.
  • Диапазон адресов памяти, которые будет использовать Linux, можно ограничить с помощью параметров mem =… ad memmap =… в командной строке ядра.
  • Иногда ядро ​​не может использовать часть памяти. Поскольку интерфейсы RAM являются довольно стандартными, этого почти никогда не происходит, за исключением случаев, когда вы запускаете 32-разрядное ядро, отличное от LPAE, и имеете 4 ГБ или более ОЗУ.
  • При использовании памяти ECC некоторые диапазоны, в которых была обнаружена ошибка, могут быть помечены как непригодные для использования.

На практике большую часть времени память, которую Linux может использовать, представляет собой доступную оперативную память за вычетом видеопамяти (и, возможно, памяти, используемой другими аппаратными периферийными устройствами). Сам Linux делит память на две части: память, используемую ядром, и память, доступную для процессов. Большинство инструментов, таких как free , сообщают как общий объем памяти, доступной процессам.

Итак, если free показывает в общей сложности 3832 МБ и у вас есть 4096 МБ ОЗУ на этой (физической или виртуальной) машине, это означает, что

4096MB - 3832MB = video memory (+ other hardware memory) + kernel memory

264 МБ для оборудования плюс ядро ​​звучат правдоподобно. У вас есть 3832 МБ для приложений, потому что остальное используется оборудованием и ядром.

3
27.01.2020, 23:28

В клиенте vSphere нажмите «Изменить настройки» на вашей виртуальной машине. На вкладке «Оборудование» выберите «Видеокарта». Вы должны увидеть видеопамять справа. У меня по умолчанию 8 МБ.

0
27.01.2020, 23:28

Теги

Похожие вопросы