linux系统支持最大内存,「Linux」- 查找系统支持的最大内存 @20210225

问题描述
机器支持的最大内存除了受操作系统的限制,还受到硬件芯片的寻址限制。如果使用64位操作系统,我们通常不需要担心操作系统限制。作为桌面用户,我们更需要关注硬件的最大内存限制。
本文通过使用命令找到系统硬件支持的最大内存。
关于最大内存限制
在购买笔记本时,商品描述通常会说明最大内存限制,比如 ThinkPad T510 最大支持 8GB 内存,那么为什么会存在“最大内存限制”呢?
来自操作系统的限制
操作系统能够支持的最大内存也是有限的。通常操作系统的文档会注明该系统支持的最大内存。这里不再罗列,细节部分可参考相应文档。
32位操作系统不会超过 4GB,而且这 4GB 内存需要与其他硬件设备共享,因此实际可用内存被缩小到 3 - 3.5GB。而目前(03/09/2020)的操作系统多为64位,我们很少会触及操作系统的最大内存限制。
来自处理器的限制
可添加到笔记本的总内存,取决与内建到处理器中的内存地址寄存器(Memory Address Register)。
大多数 32-bit CPU 寻址只能达到 4GB 而已;但是不管出于何种目的,64-bit CPU 是“无限的”(16EB),因为 64-bit 硬件一次操作64位或8位数据,而在实际中只使用少量的位进行内存寻址。
CPU
Maximum Memory
Bytes Processed Simultaneously
8-bit
65KB
1
16-bit
1MB
2
32-bit
4GB
4
64-bit
16EB
8
按照目前科技水平,没有计算机可以达到 64-bit 理论最大值。
从这里看,目前处理器并不是最大内存限制的根本原因。
来自芯片组的限制
“主板芯片组可寻址的最大内存” —— 如果想要安装更多内存,那么前提是主板的芯片组能够支持。该因素由制造商决定的,可能出于产品定位或制造成本考虑。需要查看硬件手册获取最大内存信息。这也是“最大内存限制”存在的真正原因。
制造商给出的“最大内存限制”通常为芯片组能够支持的最大内存寻址。但是实际芯片组可寻址的内存会高于产品最大内存限制。也就是说虽然官方给出的最大内存限制为 16G,但是有时安装32G内存也能够识别。但是这并没有得到官方保证,但是在官方声明的最大内存限制内是没有问题的(这也是官方测试的范围)。
如果最大 DIMM 是 2G,在官方规格中表示最大内存 2 x 2GB = 4GB。如果此时换成 1 x 4G,可能无法工作。
方法一、dmidecode(8)
安装命令
#!/bin/sh
# Debian
apt-get install dmidecode
执行命令
执行如下命令,查看物理内存信息:
#!/bin/sh
dmidecode -t 16
命令输出类似如下:
# dmidecode 3.2
【linux系统支持最大内存,「Linux」- 查找系统支持的最大内存 @20210225】Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
Handle 0x0005, DMI type 16, 23 bytes
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: None
Maximum Capacity: 16 GB
Error Information Handle: Not Provided
Number Of Devices: 2
输出Maximum Capacity字段表示当前支持的最大内存为16G。
参考文献

    推荐阅读