Dual (multi) Channel RAM, or not …how to figure out (with software)

Hi, how would i figure out whether my box runs its memory in dual / multi channel mode?

Please constrain your replies to software tools that produce a relevant output; i know, my box runs in DC mode, but i’m looking for a way to put that information on my screen, without downtime while looking at the BIOS Setup.

dmidecode doesn’t seem to produce the desired information.

Try this:

sudo lshw -short -c memory

Thanks, i guess Synchronous is the keyword here, is it? I mean, it doesn’t explicitly state “Dual-Channel”.

H/W path           Device      Class          Description
=========================================================
/0/0                           memory         64KiB BIOS
/0/3d                          memory         16GiB System Memory
/0/3d/0                        memory         [empty]
/0/3d/1                        memory         8GiB DIMM Synchronous 2133 MHz (0,5 ns)
/0/3d/2                        memory         [empty]
/0/3d/3                        memory         8GiB DIMM Synchronous 2133 MHz (0,5 ns)
/0/43                          memory         256KiB L1 cache
/0/44                          memory         1MiB L2 cache
/0/45                          memory         8MiB L3 cache
/0/100/1f.2                    memory         Memory controller

I would guess so but I don’t know for sure.


OK, it doesn’t seem to be that. But I found something. Try:

sudo dmidecode 2.3 | grep Interleaved

Should basically tell you the number of channels in use.
It says unknown for me but depending on hardware / distro you might have better luck

1 Like

Aight, thanks, i think that’s it!

It’s even better without grepping the “d” …well, apart from piping it into less, of course. Not sure what 2.3 does, it’s evidently not required on Ubuntu 16.04 LTS.

sudo dmidecode | grep Interleave
Interleave Position: 1
Interleaved Data Depth: 2
Interleave Position: 2
Interleaved Data Depth: 2

Duckduckgoing “dmidecode Interleaved Data Depth” yielded this gem

edit: I’ll shut down my box, rearrange the DIMMs and double-check …for science :wink:

1 Like

All right, it Science Time, Science Sunday :rofl::+1:

I’ve conducted several reboots and hardware re-configurations, while recording the output of dmidecode, each time. My OS was Ubuntu 16.04.x LTS x64.

My platform is a Gigabyte GA-X150M-PRO ECC

I have a 2x 8GB kit of Kingston KVR21E15D8K2/16I DDR4 ECC memory, which i’ve run in the following configurations (inner means near CPU, outer means near edge):

* "DDI": dual DIMM, dual channel, inner sockets (DDR4_4 & DDR4_3)
* "DDO": dual DIMM, dual channel, outer sockets (DDR4_2 & DDR4_1)
* "DSO": dual DIMM, single channel, outer sockets (DDR4_3 & DDR4_1)
* "SSO": single DIMM, single channel, outer socket (DDR4_1)

Here are the (imho)relevant sections of dmidecode …* sigh * …ok, nope, that’s not gonna happen! I’ll certainly not manually prefix every single line with 4 spaces, in order to produce nice “monospace code” block formatting in this here forum! No, no, nope, no-no-no-no-no, NOPE, not happening! (I’ll file a bug report / feature request, demanding a simple <pre> tag later.)

A’ight, here’s Plan B, a.k.a. the
interpretation of my scientific results, but without any supporting data. :yum::+1: (you’re wellcome)

  • Type Detail: Synchronous is present in all samples: doesn’t seem to be an indicator of S/D channel mode. I guess the Synchronous produced by lshw -short -c memory is equally irrelevant. It’s probably ‘synchronous’ to the memory controller’s clock. (might be an indicator for CPU-internal mem ctlr, not sure though)
  • Partition Width: is present in both S&D channel configs. However, it’s value was different. In every “Dxx” it was 2, but in the “Sxx” (Single DIMM) config it was 1. This might be an indicator for the total amount of installed DIMMs. Per definition, a value >= 2 is required for dual / multi channel mode.
  • GOTCHA! The keyword Interleave wasn’t present in any of the “xSx” (single channel) samples, but was present in all of the “xDx” samples.

Conclusion

Your RAM does NOT run in SINGLE channel mode when the keyword Interleave is present in dmidecode output. Please feel free to comment and correct my interpretation.

Educated guessing

The field Interleave Position must be, …well, nope, i’m not touching that one, yet.
But the field Interleaved Data Depth, almost certainly describes the amount of currently used memory channels.

Request

If you have access to a multi channel RAM box, preferably triple, quad channel, or even more awesome, please post your dmidecode | grep Interleave, in order to verify my Interleaved Data Depth hypothesis.

__happy_happy(“y’all”’);

edit: my CPU was a Xeon E3-1230 V5

Well, that’s weird! On my other rig, my previous hypothesis evaluates to single channel mode. But dual-booting the same machine into Windows 10/64, running CPU-Z, results in Dual.

dmidecode | grep -i asrock -A1
	Manufacturer: ASRock
	Product Name: H97M-ITX/ac
dmidecode | grep Interleave
	Interleave Position: 1
	Interleaved Data Depth: 1
	Interleave Position: 2
	Interleaved Data Depth: 1

I thought single / multi channel mode is OS-INdependent. Did i miss a memo, or something?

edit: This board has only 2 DIMM sockets, and both of 'em are populated with DIMMs of a Mushkin 997069S “Enhanced Stealth Stiletto” 2x 8GB DDR3-1600(XMP) kit.

the same thing happened with me too…running cpu-z in windows dual boot resulted in dual , the command dmidecode | grep Interleave didn’t give any output but running dmidecode produced a large sum of data that contained in it the following lines:

` Handle 0x0010, DMI type 20, 35 bytes
Memory Device Mapped Address

Starting Address: 0x00000000000
Ending Address: 0x000FFFFFFFF
Range Size: 4 GB
Physical Device Handle: 0x0008
Memory Array Mapped Address Handle: 0x000A
Partition Row Position: Unknown
Interleave Position: 1
Interleaved Data Depth: 1

Handle 0x0011, DMI type 20, 35 bytes
Memory Device Mapped Address

Starting Address: 0x00100000000
Ending Address: 0x001FFFFFFFF
Range Size: 4 GB
Physical Device Handle: 0x0009
Memory Array Mapped Address Handle: 0x000A
Partition Row Position: Unknown
Interleave Position: 2
Interleaved Data Depth: 1 `

but after doing some research i found many other cases with similar config giving the same output.
the DMI type 20 defines the ‘Memory Device Mapped Address’ and not the hardware memory device(DMI type 17) thus typingdmidecode -t 17 for DMI type 17 gave output:
`# dmidecode 3.1
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.

`Handle 0x0008, DMI type 17, 40 bytes
Memory Device

Array Handle: 0x0007
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: SODIMM
Set: None
**Locator: ChannelA-DIMM0**
Bank Locator: BANK 0
Type: DDR4
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 2400 MT/s
Manufacturer: Samsung
Serial Number: 00000000
Asset Tag: 9876543210
Part Number: M471A5244BB0-CPB    
Rank: 1
Configured Clock Speed: 2400 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V`

Handle 0x0009, DMI type 17, 40 bytes
Memory Device

Array Handle: 0x0007
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: SODIMM
Set: None
**Locator: ChannelB-DIMM0**
Bank Locator: BANK 2
Type: DDR4
Type Detail: Synchronous Unbuffered (Unregistered)
Speed: 2400 MT/s
Manufacturer: Samsung
Serial Number: 00000000
Asset Tag: 9876543210
Part Number: M471A5244BB0-CPB    
Rank: 1
Configured Clock Speed: 2400 MT/s
Minimum Voltage: 1.2 V
Maximum Voltage: 1.2 V
Configured Voltage: 1.2 V `

which i guess indeed meant dual channel memory(as cpu-z in windows was showing)
so to conclude interleaved data depth = 1 does mean absence of interleaved data packets. so maybe dual channel memory without interleaving may be possible acting as just “fast memory” but an expert opinion would be appreciated.

1 Like