BIOS/UEFI 丢失了多少物理 RAM?

BIOS/UEFI 丢失了多少物理 RAM?

dmesg在 6 个不同的系统(4 个服务器,为了比较还有 2 台笔记本电脑)上浏览 Linux 内核输出时,我对 BIOS/UEFI 保留的大量 RAM 感到震惊

三台服务器系统有此输出

3 x server with 128GiB RAM show this
[    0.000000] Memory: 5491432k/136314880k available (7668k kernel code, 2636180k absent, 2440136k reserved, 6052k data, 1876k init)
=> ~2.5GiB RAM "BIOS-reserverd"    

1 x server with 512GiB RAM show this:
[    5.892498] Memory: 527942676K/536409480K available (10252K kernel code, 1241K rwdata, 3320K rodata, 1592K init, 2272K bss, 8466804K reserved, 0K cma-reserved)
=> ~8.5GiB "lost to BIOS"

1 x latop with this info
[    0.086548] Memory: 16115288K/16583384K available (14339K kernel code, 1524K rwdata, 7928K rodata, 1660K init, 2928K bss, 467840K reserved, 0K cma-reserved)
=> ~450MiB reserved (256 is VGA, but still 200MB out of 16GiB is )

1 x laptop (thinkpad x200s no uefi) yields: 
[    0.432824] Memory: 8022988K/8282140K vailable (14339K kernel code, 1524K rwdata, 7912K rodata, 1660K init, 2928K bss, 258892K reserved, 0K cma-reserved) 
=> 258 MiB (however this being almost entirely the graphic 256MiB)

我可以理解,一些内存由固件(UEFI/BIOS)保留,但是 8.5GiB 或 ECC RAM 的丢失似乎不容易理解。

我想知道我应该如何看待保留的——并且因此丢失的——RAM。

对我来说,EFI 系统似乎倾向于占用大约 1.5% 的总物理 RAM。

这些价值观能够得到证实吗?

能否解释一下为什么 UEFI 使用了这么多的 RAM?(8.5GiB 比我运行全功能桌面多媒体系统所用的大多数笔记本电脑系统都要大)。

答案1

这些类型的损失很少是由于机器或 BIOS 实际使用了 RAM,而是由于分配了部分地址空间用于 RAM 以外的目的。

例如,在超过 2 GB 的 RAM 流行之前,许多制造商只是决定第一位为“1”的任何地址都是用于除 RAM 之外的硬件用途,其余 2 GB 就放在那里。

我对现代更大的地址总线不太熟悉,但关键是使用 DMA(直接内存访问)或类似方式通过总线的所有内容,在地址空间方面几乎可以获取它想要的内容。RS-232 串行卡可能只需要不到 100 个地址,但制造商可以决定花费少量时间和金钱让它只获取它需要的地址,但也可以决定获取 32k、32meg 或他们想获取的其他任何地址空间。主板上有很多东西也会占用地址空间。

底线是,有些东西也会占用地址空间,而你通常无法改变这一点。所以如果这是你的问题(可能是也可能不是),那么除了忍受它或更换硬件之外,你没有别的办法。尝试使用实用程序来显示你的硬件使用的地址空间范围……也许你可以摆脱一些东西。假设你的服务器可能在主板上有一组辅助声音芯片,它们因为某种原因而消耗殆尽。关闭 BIOS 中未使用的东西可能会有所帮助,但我不会期望太多。

再次,我不太清楚现代更大的地址总线是如何工作的,但获得更大的地址总线可能是可行的方法。如果你有一台可以接受实际需要的 2 倍、4 倍甚至 16 倍 RAM 的机器,这将意味着它还具有(除非东西改变了它的实现)2、4 或 16 倍于 RAM(或“DRAM”或其他)所需地址空间,因此你的硬件应该能够浪费 75% 或更多的最大地址空间而不会导致该问题。:-)

相关内容