我正在为我公司的开发部门设置大量 64 位 RedHat VM (VMware vSphere)。大多数都是从 4096MB RAM 开始的,但 Linux 似乎只能识别 3832MB。谁能告诉我这是为什么?
答案1
Linux 不使用一块 RAM 的原因有多种:
- 如果Linux检测到它属于硬件外设。大多数计算机需要 RAM 用于显示,因此需要为显卡保留一些 RAM。显卡也可能包含自己的 RAM;由于显卡对内存的要求相对较高,因此它们往往不会与自己的 RAM 捆绑在一起(但也有例外)。
至少VMware和VirtualBox将视频内存算作分配给虚拟机的内存的一部分。视频内存的大小是 VM 配置中的设置。 - Linux 将使用的内存地址范围可以通过内核命令行上的
mem=…
ad参数进行限制。memmap=…
- 有时内核可能无法使用某些内存。由于 RAM 接口相当标准,因此这种情况几乎不会发生,除非您运行非 LPAE 32 位内核并拥有 4GB 或更多 RAM。
- 对于 ECC 内存,某些检测到错误的范围可能会被标记为不可用。
实际上,大多数时候,Linux 可以使用的内存是可用 RAM 减去视频内存(可能还包括其他硬件外设使用的内存)。 Linux 本身将内存分为两部分:内核使用的内存和进程可用的内存。大多数工具(例如,free
将可用于进程的内存总量报告为总数)。
因此,如果free
显示总计 3832MB,并且该(物理或虚拟)计算机上有 4096MB RAM,则意味着
4096MB - 3832MB = video memory (+ other hardware memory) + kernel memory
硬件加内核 264MB 听起来似乎很合理。您有 3832MB 可用于应用程序,因为其余部分由硬件和内核使用。
答案2
在 vSphere 客户端中,点击虚拟机上的“编辑设置”。在“硬件”选项卡下,选择“视频卡”。您应该在右侧看到视频内存。我的默认是8MB。