Fundamentals 9 min read

Inspecting Server Memory Hardware Details with dmidecode

This article explains how software developers can use the Linux dmidecode command to retrieve detailed server memory hardware information, including size, type, speed, bit width, ECC, channel placement, and rank, and interprets the output to better understand the underlying hardware.

Refining Core Development Skills
Refining Core Development Skills
Refining Core Development Skills
Inspecting Server Memory Hardware Details with dmidecode

Hello everyone, I'm Fei Ge!

Nowadays many software developers know little about hardware; for memory they often only know the capacity in GB and know nothing about other parameters, which is not ideal. One should have a more detailed understanding of the hardware on which their programs run.

Today we will take a closer look at detailed information about your memory hardware.

If you have a blade server on hand, checking the memory hardware is relatively easy—just open the chassis and look at the DIMM modules installed around the CPU.

However, most of our servers are hosted in IDC data centers, making it impossible to open the chassis. Fortunately, Linux provides the dmidecode command, which allows us to conveniently view the memory installation details on the server.

The command outputs information about all memory slots on the motherboard and the DIMMs installed in them, resulting in a lengthy output. Below is a sample excerpt for one memory device.

# dmidecode
......
Memory Device
Handle 0x0039, DMI type 17, 84 bytes
Memory Device
  Array Handle: 0x0031
  Error Information Handle: Not Provided
  Total Width: 72 bits
  Data Width: 64 bits
  Size: 32 GB
  Form Factor: DIMM
  Set: None
  Locator: DIMM 1
  Bank Locator: P0 CHANNEL A
  Type: DDR4
  Type Detail: Synchronous Registered (Buffered)
  Speed: 2933 MT/s
  Manufacturer: Samsung
  Serial Number: 440FEB5D
  Asset Tag: Not Specified
  Part Number: M393A4K40DB2-CVF
  Rank: 2
  Configured Memory Speed: 2933 MT/s
  Minimum Voltage: 1.2 V
  Maximum Voltage: 1.2 V
  Configured Voltage: 1.2 V
  Memory Technology: DRAM
  Memory Operating Mode Capability: Volatile memory
  Firmware Version: Unknown
  Module Manufacturer ID: Bank 1, Hex 0xCE
  Module Product ID: Unknown
  Memory Subsystem Controller Manufacturer ID: Unknown
  Memory Subsystem Controller Product ID: Unknown
  Non-Volatile Size: None
  Volatile Size: 32 kB
  Cache Size: None
  Logical Size: None
......

From the dmidecode output above, we can see the following key information about this memory module.

Bit Width Information: Modern server CPUs and memory are typically 64‑bit. The Data Width column shows a 64‑bit width, meaning each I/O operation can transfer 64 bits of data. The Total Width is 72 bits, indicating an additional 8‑bit ECC (Error‑Correcting Code) redundancy for error detection and correction, so the effective I/O width is 64 + 8 = 72 bits.

Capacity Information: The Size line reports 32 GB, which is the storage capacity of this DIMM. The Type Detail shows “Synchronous Registered (Buffered)”, meaning the module is registered, allowing the large 32 GB capacity.

Memory Generation: Memory generations include DDR, DDR2, DDR3, DDR4, and the newest DDR5, each with various frequency specifications.

The Type line confirms this is DDR4 memory, and the Speed line shows a data rate of 2933 MT/s.

Channel Location: Server CPUs have multiple memory channels; for example, the diagram below shows a CPU with 6 channels, each capable of connecting 2 DIMMs.

The dmidecode output also includes channel information. The Bank Locator line indicates which CPU channel the DIMM is connected to; in the example, the DIMM is attached to P0 CHANNEL A . In reality, the CPU has channels A through H (8 channels), each supporting up to 2 DIMMs, though some slots may be empty.

Handle 0x0038, DMI type 17, 84 bytes
Memory Device
  Array Handle: 0x0031
  Error Information Handle: Not Provided
  Total Width: Unknown
  Data Width: Unknown
  Size: No Module Installed
  Form Factor: Unknown
  Set: None
  Locator: DIMM 0
  Bank Locator: P0 CHANNEL A
  ......
Handle 0x0039, DMI type 17, 84 bytes
Memory Device
  Array Handle: 0x0031
  Error Information Handle: Not Provided
  Total Width: 72 bits
  Data Width: 64 bits
  Size: 32 GB
  Form Factor: DIMM
  Set: None
  Locator: DIMM 1
  Bank Locator: P0 CHANNEL A
  ......

The first entry shows empty fields for Total Width and Data Width , indicating no DIMM is installed in that slot. Each channel on CPU P0 has one empty slot and one populated slot.

This server has two CPUs (P0 and P1), each with 8 channels (A–H). The slot usage pattern is the same for both CPUs.

Therefore, the total physical memory installed is 2 × 8 × 32 GB = 512 GB.

Additional details from dmidecode include a Rank count of 2 per DIMM and a working voltage of 1.2 V.

Note that dmidecode is not exhaustive; it cannot reveal the number of memory chips, latency parameters, or other low‑level details, which must be obtained from the manufacturer’s specifications.

HardwarememoryServerDDR4dmidecode
Refining Core Development Skills
Written by

Refining Core Development Skills

Fei has over 10 years of development experience at Tencent and Sogou. Through this account, he shares his deep insights on performance.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.