35

I'm trying to determine (without physically having access to a machine) the number of RAM channels it supports (single, dual, etc) - AND whether it is configured to use that setup, e.g with four slots and dual channel RAM, you only get dual channel if you plug your RAM into the correct slots.

I know how to determine how many RAM modules I have plugged in, I don't know how to get the number of channels.

6 Answers 6

8
# dmidecode -t memory | grep Bank
    Bank Locator: P0_Node0_Channel0_Dimm0
    Bank Locator: P0_Node0_Channel0_Dimm1
    Bank Locator: P0_Node0_Channel1_Dimm0
    Bank Locator: P0_Node0_Channel1_Dimm1
    Bank Locator: P0_Node0_Channel2_Dimm0
    Bank Locator: P0_Node0_Channel2_Dimm1
    Bank Locator: P0_Node0_Channel3_Dimm0
    Bank Locator: P0_Node0_Channel3_Dimm1
3
  • 2
    Not working: Bank Locator: Not Specified
    – Imaskar
    Sep 27, 2018 at 13:33
  • 1
    dmidecode also gave me Bank Locator: Not Specified, but sudo lshw -class memory worked for me. Dec 17, 2021 at 19:35
  • Even dmidecode -t memory gives me no specific output: # dmidecode 3.3 Getting SMBIOS data from sysfs. SMBIOS 2.5 present.
    – budoattack
    Apr 13 at 14:40
6

People giving "Interleaved Data Depth" as the answer are not correct. Interleaved Data Depth either is not the correct indicator or is very commonly misreported (If it's reported at all).

An easy way to obtain how many channels you're using is to do something like the following:

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

sample output (Dual channel):

RAM  32 GB   ChannelA-DIMM0
RAM  32 GB   ChannelB-DIMM0

On this same machine, let's check Interleaved Data Depth:

sudo dmidecode | grep Interleaved

output:

Interleaved Data Depth: 1
Interleaved Data Depth: 1

On this same machine was also verified in Windows via CPU-Z. Under memory was reported verbatim: Dual Channel

So Interleaved Data Depth is incorrect but we can easily check our channels (A, B, C, D, etc.).

3

The best way to check if the motherboard is single, dual, triple or quad capable is to grab the motherboard name and check the manual specifications. Dual, Triple or quad channel are limited by the hardware, bios, existence of different types of ram, and ram frequency and ram configuration.

dmidecode -t memory will NOT provide all the motherboard capabilities, it will only provide the installed hardware configuration, showing only the slot and channel that each piece of ram is allocated.

you can have a motherboard that quad channel capable but due mixing rams, u get only dual or single; incompatibility between ram in the same channel will force a fall back to the last capable mode (eg. cannot do quad-channel, it will try 2x dual, cannot 4 x single)

a quad channel will have 4x more bandwidth than the single (256bits vs 64bits). For that all the sticks must be able to work together, because, it will allocated the data across the number of channels, so once the data is requested, instead been reading from a single ram stick it will be read from many ram pieces.

0

I agree with Conrado that should read the manual. My manual specifically says I am free to mix the size of DIMMs in a single channel set.

However my processor states that this is not allowed because it does not support Intel® Flex Memory Access.

Intel® Flex Memory Access facilitates easier upgrades by allowing different memory sizes to be populated and remain in dual-channel mode.

I should note that the Intel page also correctly states that my processor supports 4 memory channels while also saying:

Intel® processors come in four different types: Single Channel, Dual Channel, Triple Channel, and Flex Mode. Maximum supported memory speed may be lower when populating multiple DIMMs per channel on products that support multiple memory channels.

This is confusing because in my case I have four channels, where one DIMM is 32 GiB and the rest are 16 GiB.

The manual for my servers goes on to state that this is allowed with RDIMMs sized up to 32 GiB, but would cause the bus speed to step down one level if that 32 GiB DIMM were any larger. There is additional language about behavior on two populated CPU socket systems like mine.

I think the important thing is to check real world behavior. You should be able to look up the theoretical maximum memory bandwidth, and if not you can calculate this by doing some simple math based on how the CPU talks to memory in your particular system.

You can then run a memory bandwidth test to see if the number is close to the theoretical value.

If this is on a Hypervisor you may want to repeat the experiment in VMs, to see how they are behaving. Obviously the Hypervisor has complex settings, so if you have NUMA node spanning enabled you should make sure the VM is allotted to one node.

Here is an illustration of why reading the manual is so important. enter image description here

With all this complexity and contradiction, I suggest simply testing real world bandwidth to the advertised max. I suspect you want the test to be simple to get close to the theoretical max; read only or write only, but complex use of the memory would also be interesting to see.

I don't know the best software option, but here is the Ubuntu manage for mbw - Memory BandWidth benchmark (Note the TODO says its only single threaded).

You may want to run the test with multiple thread support. Here is an OSS example: https://github.com/gabaker/TARUC_Bench

-1

Do the dmidecode command but specify which type to use, like this:

$ sudo dmidecode -t memory | grep Size

This is the output from my system, I have a total of four channels and atm using two.

Size: 4096 MB
Size: No Module Installed
Size: 4096 MB
Size: No Module Installed
1
  • 7
    This displays the number of DIMM slots, not the number of channels. Jul 11, 2015 at 14:28
-1

I tried out dmidecode

dmidecode -t memory

Fortunately, the row Bank Locator: SOCKET 1 CHANNEL 7 DIMM 0 tell DIMM 170 was in Channel 7. And the machine support 32 DIMM with total 8 channels. The corresponding channels listed bellow:

Handle 0x0026, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x0006
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 32 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM170 J31
        Bank Locator: SOCKET 1 CHANNEL 7 DIMM 0
        Type: DDR4
        Type Detail: Synchronous Registered (Buffered)
        Speed: 2666 MT/s
        Manufacturer: Samsung
        Serial Number: 0x40C3BA1D
        Asset Tag: 1838
        Part Number: M393A4K40BB2-CTD
        Rank: 2
        Configured Clock Speed: 2666 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 2.0 V
        Configured Voltage: 1.2 V
[user@centos ~]$ sudo dmidecode -t memory | grep CHANNEL
        Bank Locator: SOCKET 0 CHANNEL 0 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 0 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 1 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 1 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 2 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 2 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 3 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 3 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 4 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 4 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 5 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 5 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 6 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 6 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 7 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 7 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 0 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 0 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 1 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 1 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 2 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 2 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 3 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 3 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 4 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 4 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 5 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 5 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 6 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 6 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 7 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 7 DIMM 1

2
  • You may want to clarify your answer as it currently doesn't really seem to address the issue in the question.
    – Kusalananda
    Aug 21, 2019 at 9:03
  • I used demidecode sucessfully found out that my machine has 8 DDR channels
    – kucer
    Aug 21, 2019 at 15:44

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .