一、先来看几个用dmidecode查看内存信息的例子。
1、查看内存槽数、那个槽位插了内存,大小是多少
2、查看最大支持内存数
3、查看槽位上内存的速率,没插就是unknown。
以上均是通过dmidecode命令来实现的,具体方法如下:
dmidecode以一种可读的方式dump出机器的DMI(Desktop Management Interface)信息。这些信息包括了硬件以及BIOS,既可以得到当前的配置,也可以得到系统支持的最大配
置,比如说支持的最大内存数等。
DMI有人也叫SMBIOS(System Management BIOS),这两个标准都由DMTF(Desktop Management Task Force)开发。
dmidecode的输出格式,一般类似这样:
Handle 0×0002
DMI type 2, 8 bytes
Base Board Information
Manufacturer:Intel
Product Name: C440GX+
Version: 727281-0001
Serial Number: INCY92700942
解释,前三行都称为记录头(recoce Header),其中包括:
1、recode id(handle): DMI表中的记录标识符,这是唯一的,比如上例中的Handle 0×0002。
2、dmi type id: 记录的类型,譬如说:BIOS,Memory,上例是type 2,即”Base Board Information”
3、recode size: DMI表中对应记录的大小,上例为8 bytes.(不包括文本信息,所有实际输出的内容比这个size要更大。)
记录头之后就是记录的值:
4、decoded values: 记录值可以是多行的,比如上例显示了主板的制造商(manufacturer)、model、version以及serial Number。
二、dmidecode的使用方法
1,最简单的的显示全部dmi信息:
# dmidecode
将输出所有的dmi信息。
2,更精简的信息显示:
# dmidecode -q
-q(–quite) 只显示必要的信息,这个很管用哦。
3,显示指定类型的信息:
通常我只想查看某类型,比如CPU,内存或者磁盘的信息而不是全部的。这可以使用-t(–type TYPE)来指定信息类型:
dmidecode到底支持哪些type?
这些可以在man dmidecode里面看到:
文本参数支持:
bios, system, baseboard, chassis, processor, memory, cache, connector, slot
数字参数支持很多:(见附录)
4,通过关键字查看信息:
比如只想查看序列号,可以使用:
5,下面是一些测试示例。
5.1 查看当前内存和支持的最大内存
linux下,可以使用free或者查看meminfo来获得当前的物理内存:
这里显示了当前服务器的物理内存是8GB。
服务器到底能扩展到多大的内存?
#dmidecode -t 16
# dmidecode 2.7
SMBIOS 2.4 present.
Handle 0×0013, DMI type 16, 15 bytes.
Physical Memory Array
Location: System Board Or Motherboard
Use: System Memory
Error Correction Type: Multi-bit ECC
Maximum Capacity: 64 GB (可扩展到64GB)
Error Information Handle: Not Provided
Number Of Devices: 4
但是,事实不一定如此,因此插槽可能已经插满了。也就是我们还必须查清这里的8G到底是4*2GB, 2*4GB还是其他?
如果是4*2GB,那么尽管可以扩展到64GB,但是插槽已经插满,无法扩展了:
#dmidecode -t 17
# dmidecode 2.7
SMBIOS 2.4 present.
Handle 0×0015, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽1有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM00
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM82
Part Number: MT9HTF6472FY-53EA2
Handle 0×0017, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽2有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM10
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM83
Part Number: MT9HTF6472FY-53EA2
Handle 0×0019, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽3有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM20
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM84
Part Number: MT9HTF6472FY-53EA2
Handle 0x001B, DMI type 17, 27 bytes.
Memory Device
Array Handle: 0×0013
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 2048 MB 【插槽4有1条2GB内存】
Form Factor: DIMM
Set: None
Locator: DIMM30
Bank Locator: BANK
Type: Other
Type Detail: Other
Speed: 667 MHz (1.5 ns)
Manufacturer:
Serial Number: BZACSKZ001
Asset Tag: RAM85
Part Number: MT9HTF6472FY-53EA2
根据上面输出可以发现,如果要扩展,只有将上面的内存条换成16GB的,才能达到4*16GB=64GB的最大支持内存。
附录:
dmidecode支持的数字参数:
总结:在linux系统中,查看内存、硬盘等硬件信息时,dmidecode命令,总是大有用武之地。建议大家牢固掌握该命令。