Linux

‘free’ 和 ‘/proc/meminfo/ 報告的總記憶體比 ‘dmidecode’ 少

  • October 3, 2019

我們在託管中心有一台伺服器(真正的物理伺服器,而不是虛擬機),執行 64 位 Debian ( uname -r: 3.16.0-4-amd64)。

/proc/meminfo報告大約 4 GiB 總記憶體:

$ head -n 1 /proc/meminfo
MemTotal:        4051692 kB

free報告相同(我只查看了該total列;我不是在談論已使用、免費、共享、緩衝區、記憶體):

$ free -k
            total       used       free     shared    buffers     cached
Mem:       4051692    3867356     184336     220908      63948    1203596
-/+ buffers/cache:    2599812    1451880
Swap:     15728208     652540   15075668

也是如此dmesg | grep Memory

$ dmesg | grep Memory
[    0.000000] Memory: 4034240K/4185236K available (5287K kernel code, 949K rwdata, 1836K rodata, 1208K init, 840K bss, 150996K reserved)

但是 dmidecode 報告 4 * 2 GiB = 8 GiB 的 RAM,如果我理解正確的話:

$ sudo dmidecode --type memory

# dmidecode 2.12
SMBIOS 2.6 present.

Handle 0x0008, DMI type 5, 24 bytes
Memory Controller Information
   Error Detecting Method: 64-bit ECC
   Error Correcting Capabilities:
       Single-bit Error Correcting
   Supported Interleave: One-way Interleave
   Current Interleave: One-way Interleave
   Maximum Memory Module Size: 4096 MB
   Maximum Total Memory Size: 16384 MB
   Supported Speeds:
       Other
   Supported Memory Types:
       DIMM
       SDRAM
   Memory Module Voltage: 3.3 V
   Associated Memory Slots: 4
       0x0009
       0x000A
       0x000B
       0x000C
   Enabled Error Correcting Capabilities:
       Single-bit Error Correcting

Handle 0x0009, DMI type 6, 12 bytes
Memory Module Information
   Socket Designation: DIMM1A
   Bank Connections: 0 1
   Current Speed: Unknown
   Type: DIMM SDRAM
   Installed Size: 2048 MB (Single-bank Connection)
   Enabled Size: 2048 MB (Single-bank Connection)
   Error Status: OK

Handle 0x000A, DMI type 6, 12 bytes
Memory Module Information
   Socket Designation: DIMM1B
   Bank Connections: 2 3
   Current Speed: Unknown
   Type: DIMM SDRAM
   Installed Size: 2048 MB (Single-bank Connection)
   Enabled Size: 2048 MB (Single-bank Connection)
   Error Status: OK

Handle 0x000B, DMI type 6, 12 bytes
Memory Module Information
   Socket Designation: DIMM2A
   Bank Connections: 4 5
   Current Speed: Unknown
   Type: DIMM SDRAM
   Installed Size: 2048 MB (Single-bank Connection)
   Enabled Size: 2048 MB (Single-bank Connection)
   Error Status: OK

Handle 0x000C, DMI type 6, 12 bytes
Memory Module Information
   Socket Designation: DIMM2B
   Bank Connections: 6 7
   Current Speed: Unknown
   Type: DIMM SDRAM
   Installed Size: 2048 MB (Single-bank Connection)
   Enabled Size: 2048 MB (Single-bank Connection)
   Error Status: OK

Handle 0x002A, DMI type 16, 15 bytes
Physical Memory Array
   Location: System Board Or Motherboard
   Use: System Memory
   Error Correction Type: Single-bit ECC
   Maximum Capacity: 16 GB
   Error Information Handle: Not Provided
   Number Of Devices: 4

Handle 0x002C, DMI type 17, 28 bytes
Memory Device
   Array Handle: 0x002A
   Error Information Handle: Not Provided
   Total Width: 64 bits
   Data Width: 64 bits
   Size: 2048 MB
   Form Factor: DIMM
   Set: None
   Locator: DIMM1A
   Bank Locator: BANK0
   Type: DDR3
   Type Detail: Synchronous
   Speed: 1333 MHz
   Manufacturer: Micron        
   Serial Number: 501C6FDC
   Asset Tag: AssetTagNum0
   Part Number: 9JSF25672AZ-1G4D1 
   Rank: Unknown

Handle 0x002E, DMI type 17, 28 bytes
Memory Device
   Array Handle: 0x002A
   Error Information Handle: Not Provided
   Total Width: 64 bits
   Data Width: 64 bits
   Size: 2048 MB
   Form Factor: DIMM
   Set: None
   Locator: DIMM1B
   Bank Locator: BANK1
   Type: DDR3
   Type Detail: Synchronous
   Speed: 1333 MHz
   Manufacturer: Micron        
   Serial Number: 2A1C6FDC
   Asset Tag: AssetTagNum1
   Part Number: 9JSF25672AZ-1G4D1 
   Rank: Unknown

Handle 0x0030, DMI type 17, 28 bytes
Memory Device
   Array Handle: 0x002A
   Error Information Handle: Not Provided
   Total Width: 64 bits
   Data Width: 64 bits
   Size: 2048 MB
   Form Factor: DIMM
   Set: None
   Locator: DIMM2A
   Bank Locator: BANK2
   Type: DDR3
   Type Detail: Synchronous
   Speed: 1333 MHz
   Manufacturer: Micron        
   Serial Number: 511C6FDC
   Asset Tag: AssetTagNum2
   Part Number: 9JSF25672AZ-1G4D1 
   Rank: Unknown

Handle 0x0032, DMI type 17, 28 bytes
Memory Device
   Array Handle: 0x002A
   Error Information Handle: Not Provided
   Total Width: 64 bits
   Data Width: 64 bits
   Size: 2048 MB
   Form Factor: DIMM
   Set: None
   Locator: DIMM2B
   Bank Locator: BANK3
   Type: DDR3
   Type Detail: Synchronous
   Speed: 1333 MHz
   Manufacturer: Micron        
   Serial Number: 4B1C6FDC
   Asset Tag: AssetTagNum3
   Part Number: 9JSF25672AZ-1G4D1 
   Rank: Unknown

我錯過了什麼?它是託管中心的伺服器,所以很遺憾,我無法輕易看到實際安裝的內容。

編輯: man dmidecode說“通常情況下,DMI 表中包含的資訊不准確、不完整或完全錯誤。”。也許 dmidecode 只是報告錯誤的數據?

編輯:這不是重複為什麼 Linux 會奇怪地報告“空閒”記憶體?. 這個問題是關於可用記憶體,以及緩衝區和記憶體帶來的混亂。我關心可用記憶體,只關心總記憶體。不要讓我對free命令的用法欺騙了你:我沒有用它來查看可用記憶體量,而只是查看總記憶體量。如果有人仍然認為這個問題是重複的,請解釋我為什麼,因為我不明白。

編輯:dmidecode -t1根據 Lenniey 的要求

$ sudo dmidecode -t1
# dmidecode 2.12
SMBIOS 2.6 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
       Manufacturer: Supermicro
       Product Name: X8SIL
       Version: 0123456789
       Serial Number: 0123456789
       UUID: 49434D53-0200-9037-2500-379025009946
       Wake-up Type: Power Switch
       SKU Number: To Be Filled By O.E.M.
       Family: To Be Filled By O.E.M.

事實證明,其中一個記憶體模組出現故障,導致系統忽略同一通道中的一個和另一個。

我們現在辦公室裡有伺服器,我們看到確實存在 4 個 DIMM 模組,每個 2 GB。我已經一個一個地測試了這些模組,發現有一個有問題的模組。

(這並不能解釋為什麼 dmidecode 對所有四個模組都顯示“錯誤狀態:正常”。我想這可以通過引用“DMI 表中包含的資訊通常不准確、不完整或完全錯誤”來解釋。在手冊頁中)

該 Supermicro X8SIL 主機板的手冊可在以下網址獲得:http: //www.supermicro.com/manuals/motherboard/3420/MNL-1130.pdf

在第 32 頁(又名 2-10)上,它指出如果使用無緩衝 (UDIMM) 單列記憶體,則使用 1 GB DIMM 時支持的最大記憶體量僅為 4 GB,而使用 2 GB DIMM 時支持的最大記憶體量為 8 GB。

對於雙列 UDIMM,最大容量為 16 GB。

只有使用Registered (RDIMM) 四列記憶體模組才能達到32 GB的極限最大容量,使用它們時記憶體匯流排速度會受到影響。

並在“Micron 9JSF25672AZ-1G4D1”上進行了一些Google搜尋,將我帶到了這裡: https ://www.compuram.biz/memory_module/mt9jsf25672az-1g4d1/micron.htm

似乎證實了美光科技 (MT) 9JSF25672AZ-1G4D1 確實是一個大小為 2 GB 的無緩衝單列記憶體模組。

在手冊的第 34 頁(或第 2-13 頁)上,它表明當僅使用 4 GB 的 RAM 時,其中很大一部分將分配給系統設備並且將無法使用。這可能至少也解釋了安裝 8 GB 時缺少的一些記憶體。不幸的是,該手冊沒有詳細描述 8 GB 情況下的系統設備分配。

引用自:https://serverfault.com/questions/889000