Ubuntu 14.04 RAM 不可用--mallocate 问题

Ubuntu 14.04 RAM 不可用--mallocate 问题

我遇到了一个奇怪的情况,我的 Ubuntu 服务器 (14.04) 无法识别安装在我服务器上的所有内存。我有一台 HP Proliant DL 380 G3 服务器 (32 位),​​内存为 10 GB。我无法使用超过 3GB 的内存。我安装了 Ubuntu 14.04.2 32 位版本,内核为 3.13.0-46-generic #79-Ubuntu SMP。

cat /proc/meminfo
MemTotal:       10108436 kB
MemFree:         9036220 kB

cat /boot/config-3.13.0-46-generic |grep PAE
CONFIG_X86_PAE=y

memtester也尝试了一个 Python 程序来测试内存,得到了结果-

sudo memtester 4G 1
pagesize is 4096
pagesizemask is 0xfffff000
bytes 0 < pagesize 4096 -- memory argument too large?

我究竟做错了什么?

答案1

您的 10 GB 内存被正确识别。但您使用的是 32 位操作系统。这意味着每个用户级进程(如memtester)只能看到 32 位地址空间;本质上,没有一个进程可以访问超过 4 GB 的内存(通常更少)。

您已启用 PAE。这意味着,10 GB 内存的不同部分可以分配给不同的进程,因此您实际上可以使用所有内存 - 但不能由同一进程使用所有内存。

如果单个程序需要使用超过 4 GB,那么您需要安装 64 位版本的 Ubuntu。

答案2

32 位操作系统,除非完全支持PAE(物理地址扩展),否则不能分配超过 4GB 的 RAM,包括 VRAM 和与特定主板和 I/O 设备配置相关的其他次要事项:维基百科:3 GB 屏障

Ubuntu已支持其PAE自身功能,因此请尝试强制重新安装PAE安装选项,如下所示:Ubuntu.com: PAE

相关内容