如何在Linux中找到最大支持的内存

时间:2020-03-21 11:44:26  来源:igfitidea点击:

我们想将内存升级到新购买的计算机或者旧系统,我们无法了解系统的最大支持的内存,我们会做什么?
当然,我们可以从系统目录,手册以及系统供应商获取规格。
但是,没有必要。
以下是从命令行查找Linux中的最大支持内存的两种方法。

1.使用DMidecode在Linux中找到最大支持的内存

从Man页面中,DMidecode是一种以人类可读格式转储计算机DMI(有人说SMBIOS)表内容的工具。
此表包含系统的硬件组件的描述,以及其他有用的信息,如序列号和BIOS修订。
使用DMidecode,我们可以检索此信息而无需探测实际硬件。

Dmidecode可在大多数Linux发行版的默认存储库中提供。

要在Arch Linux及其衍生产品中安装它,请运行:

$sudo pacman -S dmidecode

在Debian/Ubuntu/Linux Mint:

$sudo apt-get install dmidecode

在Rhel/CentOS/Scientific Linux/Fedora:

$sudo yum install dmidecode

或者,

$sudo dnf install dmidecode

在SUSE/OpenSUSE上:

$sudo zypper in dmidecode

安装DMicode后,运行以下命令,以查找系统的最大支持的内存:

$sudo dmidecode -t 16

示例输出:

# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.6 present.
Handle 0x0014, DMI type 16, 15 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

如上所述,在上述输出中,最大支持的内存大小为16 GB,可用的内存插槽(DIMM)的数量为2.

我们可能想要当前安装的内存大小。
为此,运行:

$sudo dmidecode -t 17

示例输出:

Getting SMBIOS data from sysfs.
SMBIOS 2.6 present.
Handle 0x0017, DMI type 17, 28 bytes
Memory Device
 Array Handle: 0x0014
 Error Information Handle: 0x0000
 Total Width: Unknown
 Data Width: Unknown
 Size: No Module Installed
 Form Factor: DIMM
 Set: None
 Locator: DIMM_B
 Bank Locator: BANK 2
 Type: Unknown
 Type Detail: None
 Speed: Unknown
 Manufacturer: Not Specified
 Serial Number: Not Specified
 Asset Tag: Not Specified
 Part Number: Not Specified
 Rank: Unknown
Handle 0x0015, DMI type 17, 28 bytes
Memory Device
 Array Handle: 0x0014
 Error Information Handle: 0x0000
 Total Width: 64 bits
 Data Width: 64 bits
 Size: 4096 MB
 Form Factor: SODIMM
 Set: None
 Locator: DIMM_A
 Bank Locator: BANK 0
 Type: DDR3
 Type Detail: Synchronous
 Speed: 1067 MHz
 Manufacturer: 014F
 Serial Number: 00092AF2
 Asset Tag: 54114000 
 Part Number: JM1066KSN-4G 
 Rank: Unknown

如我们在输出中看到的,我的系统有两个DIMM插槽,4 GB 内存安装在一个插槽中。
我的内存类型是DDR3,速度为1067 MHz。
另一个是空的。

或者,运行以下任何一个命令以显示系统的内存详细信息。

$sudo dmidecode -t memory

示例输出:

# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.6 present.
Handle 0x0014, DMI type 16, 15 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
[...]

要查看完整的系统硬件详细信息,请运行:

$sudo dmidecode

请注意,一些芯片组和BIOS可能无法提供准确的信息。
但是,我们可能会从服务器级硬件上获得完整的细节。

有关更多详细信息,请参阅Man页面。

$man dmidecode

2.使用MEMCONF找出Linux中的最大支持的内存

MEMCONF是一个简单的PERL脚本,它显示安装在Linux,UNIX,Sun/Oracle Solaris和HP-UX系统中的内存模块。

在使用此脚本之前,请确保已安装Perl。

要在Arch Linux及其衍生产品上安装Perl,请运行:

$sudo pacman -S perl

在Debian/Ubuntu/Linux Mint:

$sudo apt-get install perl

在Rhel/Fedora/CentOS/Scientific Linux上:

$sudo yum install perl

或者,

$sudo dnf install perl

安装Perl后,使用命令下载Memconf脚本:

$wget https://sourceforge.net/projects/memconf/files/V3.12/memconf-v3.12.pl.gz

使用命令提取zip:

$gunzip memconf-v3.12.pl.gz

最后,运行Memconf脚本,如下所示。

$sudo perl memconf-v3.12.pl

示例输出:

memconf: V3.12 07-Oct-2015 http://sourceforge.net/projects/memconf/
 hostname: sk
 Dell Inc. Inspiron N5050 (Dual-Core Hyper-Threaded Intel(R) Core(TM) i3-2350M @ 2.30GHz)
 Memory Error Correction: None
 Maximum Memory: 16384MB (16GB)
 DIMM_A BANK 0: 4096MB 1067MHz Synchronous DDR3 SODIMM, AMD JM1066KSN-4G
 empty memory sockets: DIMM_B BANK 2
 total memory = 4096MB (4GB)

如上所述,最大支持的内存为16 GB。