Unable to check if memory is running in dual-channel mode

Some background first: When I built my latest system two years ago and got a DDR4 motherboard I bought 16 GB of RAM (2 x 8 GB). Today I had the money to finally order another set, identical to the first one so that all 4 memory modules are the exact same model in every way. I just installed them and everything works fine, I have 32 GB of memory and the system even feels a little faster.

Still I wanted to make sure the system is running in dual-channel mode given I never used all 4 memory slots before. The BIOS doesn’t seem to inform me. I looked up the Linux command commonly used to verify, but for some odd reason it doesn’t appear to give me a clear verdict.

[linux-qz0r mircea]# dmidecode -t 17
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.1.1 present.

Handle 0x0034, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x002C
        Error Information Handle: 0x0033
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM_A1
        Bank Locator: BANK 0
        Type: DDR4
        Type Detail: Synchronous Unbuffered (Unregistered)
        Speed: 3200 MT/s
        Manufacturer: Kingston
        Serial Number: 89FA951F
        Asset Tag: Not Specified
        Part Number: KHX3200C16D4/8GX    
        Rank: 1
        Configured Memory Speed: 3200 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 1.2 V
        Configured Voltage: 1.2 V

Handle 0x0037, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x002C
        Error Information Handle: 0x0036
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM_A2
        Bank Locator: BANK 1
        Type: DDR4
        Type Detail: Synchronous Unbuffered (Unregistered)
        Speed: 3200 MT/s
        Manufacturer: Kingston
        Serial Number: B74E32EC
        Asset Tag: Not Specified
        Part Number: KHX3200C16D4/8GX    
        Rank: 1
        Configured Memory Speed: 3200 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 1.2 V
        Configured Voltage: 1.2 V

Handle 0x003A, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x002C
        Error Information Handle: 0x0039
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM_B1
        Bank Locator: BANK 2
        Type: DDR4
        Type Detail: Synchronous Unbuffered (Unregistered)
        Speed: 3200 MT/s
        Manufacturer: Kingston
        Serial Number: 89FA90A7
        Asset Tag: Not Specified
        Part Number: KHX3200C16D4/8GX    
        Rank: 1
        Configured Memory Speed: 3200 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 1.2 V
        Configured Voltage: 1.2 V

Handle 0x003D, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x002C
        Error Information Handle: 0x003C
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM_B2
        Bank Locator: BANK 3
        Type: DDR4
        Type Detail: Synchronous Unbuffered (Unregistered)
        Speed: 3200 MT/s
        Manufacturer: Kingston
        Serial Number: AD8E3007
        Asset Tag: Not Specified
        Part Number: KHX3200C16D4/8GX    
        Rank: 1
        Configured Memory Speed: 3200 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 1.2 V
        Configured Voltage: 1.2 V

I understand my locator should be something like ChannelA-DIMM0 but instead I have ones like DIMM_A1. Does this indicate there might be a problem and I could be on single channel? Could that happen even when all memory modules are identical in every way? How do I check with certainty?

Not much luck with lshw either.

[linux-qz0r mircea]# lshw -C memory
  *-firmware                
       description: BIOS
       vendor: American Megatrends Inc.
       physical id: 0
       version: 5603
       date: 07/28/2020
       size: 64KiB
       capacity: 16MiB
       capabilities: pci apm upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer acpi usb biosbootspecification uefi
  *-memory
       description: System Memory
       physical id: 2c
       slot: System board or motherboard
       size: 32GiB
     *-bank:0
          description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 3200 MHz (0.3 ns)
          product: KHX3200C16D4/8GX
          vendor: Kingston
          physical id: 0
          serial: 89FA951F
          slot: DIMM_A1
          size: 8GiB
          width: 64 bits
          clock: 3200MHz (0.3ns)
     *-bank:1
          description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 3200 MHz (0.3 ns)
          product: KHX3200C16D4/8GX
          vendor: Kingston
          physical id: 1
          serial: B74E32EC
          slot: DIMM_A2
          size: 8GiB
          width: 64 bits
          clock: 3200MHz (0.3ns)
     *-bank:2
          description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 3200 MHz (0.3 ns)
          product: KHX3200C16D4/8GX
          vendor: Kingston
          physical id: 2
          serial: 89FA90A7
          slot: DIMM_B1
          size: 8GiB
          width: 64 bits
          clock: 3200MHz (0.3ns)
     *-bank:3
          description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 3200 MHz (0.3 ns)
          product: KHX3200C16D4/8GX
          vendor: Kingston
          physical id: 3
          serial: AD8E3007
          slot: DIMM_B2
          size: 8GiB
          width: 64 bits
          clock: 3200MHz (0.3ns)
  *-cache:0
       description: L1 cache
       physical id: 2f
       slot: L1 - Cache
       size: 512KiB
       capacity: 512KiB
       clock: 1GHz (1.0ns)
       capabilities: pipeline-burst internal write-back unified
       configuration: level=1
  *-cache:1
       description: L2 cache
       physical id: 30
       slot: L2 - Cache
       size: 4MiB
       capacity: 4MiB
       clock: 1GHz (1.0ns)
       capabilities: pipeline-burst internal write-back unified
       configuration: level=2
  *-cache:2
       description: L3 cache
       physical id: 31
       slot: L3 - Cache
       size: 32MiB
       capacity: 32MiB
       clock: 1GHz (1.0ns)
       capabilities: pipeline-burst internal write-back unified
       configuration: level=3
sudo dmidecode | grep Interleaved

If you see data depth of 2 you are running dual channel

From quick research I found there is no way to tell that from the system, the above command is often given, also the long command sudo dmidecode -t 17 | awk 'BEGIN { FS=":"; OFS="\t" } /Size|Channel/ { line = (line ? line OFS : "") $2 } /^$/ { print line; line="RAM" }' | grep -iv 'no' is often given, but apparently it doesn’t seem to give an answer.

The real method is to check your motherboard manual, and position the memory modules in the appropriate slots. Check your BIOS it is the reliable method.

For an example here are my ‘results’ with the often given commands to check:

[omano@omano-nvme ~]$ sudo dmidecode | grep Interleaved
        Interleaved Data Depth: Unknown
        Interleaved Data Depth: Unknown

sudo dmidecode -t 17 | awk 'BEGIN { FS=":"; OFS="\t" } /Size|Channel/ { line = (line ? line OFS : "") $2 } /^$/ { print line; line="RAM" }' | grep -iv 'no

both give me no result.

I have dual channel memory though.

Just realized I might be misinterpreting the data here: My motherboard might be reporting the same thing mentioned by other people but in different words.

slot: DIMM_A1
slot: DIMM_A2
slot: DIMM_B1
slot: DIMM_B2

Wouldn’t it be correct to assume the 1 and 2 are the memory slots, but the A and B represent the channels? In this case that should be correct: I have channel A and channel B.

You can assume that. Still check the motherboard manual and do as they say is the proper way to have dual channel memory.

The BIOS only seems to have one option for interleaved memory, either Auto or Disabled. It’s on Auto obviously, so as far as settings go it should all be good.

If somehow it weren’t working I don’t see what I could do anyway: They’re all the same model and make so it should be fine. This is mostly a curiosity just to be extra sure everything’s in order.

I’ll risk it and repeat a third time. Check you mother board manual, do as they say then you’ll be sure.
Apparently Memtest is able to tell that (the Mode seem to be for single/dual/triple/quad channel respectively for 64/128/196/256 bits). Windows tools also reliably tell that too. On Linux, on a booted system, my research lead me to the conclusion that you can NOT know at all, from the system.

Here for reference is the best answer I found after searching a bit and discarding the wrong info everyone repeat https://superuser.com/questions/1092324/cant-get-dual-channel-memory-status-from-linux-why/1621323#1621323

PS: on a non UEFI system, you should have Memtest available in the Grub menu already (by default).

Oh, that must be why I don’t have it (UEFI system with secure boot). I remember Clonezilla used to have Memtest too so if I ever find the time maybe I’ll leave it running sometime and check this as well. Thanks for the idea and suggestion.