BIOS/UEFI“丢失”了多少物理内存?

fra*_*one 5 memory bios uefi

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)
Run Code Online (Sandbox Code Playgroud)

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

我想知道我应该如何考虑保留 - 因此丢失 - RAM。

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

这些价值能否得到证实?

可以解释为什么 UEFI 使用这么多 RAM 吗?(8.5GiB 比我使用过的带有完整标记的桌面多媒体系统的大多数笔记本电脑系统都多)。

小智 0

这些类型的损失很少是由于机器或 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% 或更多的最大地址空间,而不会导致该问题。:-)