今天有客户找过来,询问他Linux系统的一些问题,他的主要问题如下:
云服务器的内存为2G,为何显示的内存不足2G,依据如下:

[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 1833 494 465 16 874 1124
Swap: 2047 0 2047

也就是说,他的total memory为1833MB,不是2048MB,然后客户说我们内存没给足。由于之前还真没注意这个,只知道kdump或者linux的缓存机制可能会使可用的内存变小,那么怎么才能知道服务器的实际物理内存大小呢?
google之后,大致了解如下内容:
实际上,用户输入命令free -m之后,显示的total mem为实际可用的内存大小,也就是说,除此之外的内存,因为各种机制,实际的系统中的程序是无法使用的。物理内存的大小可以这样查看:

[root@localhost ~]# dmidecode -t 17 | grep "Size.*MB"

显示结果:
Size: 2048 MB
这个就是实际的物理内存的大小了,实际上dmidecode命令是用于导出计算机dmi信息的工具,可以查看设备的cpu、物理内存等信息。如果对上述命令直接显示的结果有疑问,可以看下所有信息的显示:

dmidecode -t memory | less

显示结果:

# dmidecode 2.12
SMBIOS 2.3 present.

Handle 0x0051, DMI type 16, 15 bytes
Physical Memory Array
Location: Unknown
Use: System Memory
Error Correction Type: None
Maximum Capacity: Unknown
Error Information Handle: 0x0050
Number Of Devices: 64

Handle 0x0055, DMI type 17, 27 bytes
Memory Device
Array Handle: 0x0051
Error Information Handle: 0x0050
Total Width: Unknown
Data Width: Unknown
Size: 2048 MB
Form Factor: Unknown
Set: None
Locator: M0
Bank Locator: None
Type: Other
Type Detail: Unknown
Speed: Unknown
Manufacturer: Microsoft
Serial Number: None
Asset Tag: None
Part Number: None

实际上,后面还有很多关于内存的信息,这里就不一一列举了。
DMI设备分为如下的类型:

0 BIOS
1 System
2 Baseboard
3 Chassis
4 Processor
5 Memory Controller
6 Memory Module
7 Cache
8 Port Connector
9 System Slots
10 On Board Devices
11 OEM Strings
12 System Configuration Options
13 BIOS Language
14 Group Associations
15 System Event Log
16 Physical Memory Array
17 Memory Device
18 32-bit Memory Error
19 Memory Array Mapped Address
20 Memory Device Mapped Address
21 Built-in Pointing Device
22 Portable Battery
23 System Reset
24 Hardware Security
25 System Power Controls
26 Voltage Probe
27 Cooling Device
28 Temperature Probe
29 Electrical Current Probe
30 Out-of-band Remote Access
31 Boot Integrity Services
32 System Boot
33 64-bit Memory Error
34 Management Device
35 Management Device Component
36 Management Device Threshold Data
37 Memory Channel
38 IPMI Device
39 Power Supply
40 Additional Information
41 Onboard Devices Extended Information
42 Management Controller Host Interface

实际上,在查看物理内存中,我们关注type 17即可。

dmidecode -t 17 | less

需要注意的是,dmidecode命令必须用root权限才能运行。

另外,也可以用

[root@localhost ~]# cat /proc/meminfo

查看内存使用情况,通常情况下,最后两行:

DirectMap4k: 47040 kB
DirectMap2M: 2050048 kB

把这两行显示的数值相加,除以1024,就是实际物理内存的大小。

 

 

如何查看Linux物理内存大小

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注