How to enable dual channel mode?

Hello, I’m struggling with an old ram and a new one with very similar specs but of different brands and I need help enabling dual channel for these Kingston and Ballistix of 8GB, 3200MHZ, 1.35v, it seems i can’t do it on my own. I’ll give details in the pictures (XMP is disabled as of now): ram — ImgBB

I benchmark my rams and i get 8427.17 MiB/sec which in dual channel it’s supposed to be much higher right? My motherboard is a B550 M K gigabyte and my CPU ryzen 5 5500gt. Bios is from march 2024. Using slots A2 and B2

In just about every situation I have ever seen dual-channel will happen automatically as long as its possible - ie: the memory modules match and are in the correct seats.

I dont know about your rig but … maybe these should be A1+A2 or B1+B2 ?

Unclear. I might expect higher in most cases … but some see a measly 5-7% increase in data transfer speed and we dont know what the single-channel benchmark was.

They are on the slots of matching color.

How would you test if dual channel is activated or not?

We could run something like dmidecode.

sudo dmidecode -t 17 | grep -i channel

If we see something like

        Bank Locator: P0 CHANNEL A
        Bank Locator: P0 CHANNEL B

( ~ 2 channels. channel A and channel B ~ )

Then it should be functioning as dual-channel.

1 Like
Bank Locator: P0 CHANNEL A
Bank Locator: P0 CHANNEL A
Bank Locator: P0 CHANNEL B
Bank Locator: P0 CHANNEL B

Slightly different than expected.
You can run the dmidecode command and inspect it.

sudo dmidecode -t 17

Each device will have its own paragraph/section.
In which you should be able to find the channel for each module.

# dmidecode 3.6
Getting SMBIOS data from sysfs.
SMBIOS 3.3.0 present.

Handle 0x0023, DMI type 17, 92 bytes
Memory Device
        Array Handle: 0x0022
        Error Information Handle: 0x0026
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8 GB
        Form Factor: SODIMM
        Set: None
        Locator: DIMM 0
        Bank Locator: P0 CHANNEL A
        Type: DDR4
        Type Detail: Synchronous Unbuffered (Unregistered)
        Speed: 3200 MT/s
        Manufacturer: Micron Technology
        Serial Number: 00000000
        Asset Tag: Not Specified
        Part Number: 4ATF1G64HZ-3G2E1    
        Rank: 1
        Configured Memory Speed: 3200 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 0x2C
        Module Product ID: Unknown
        Memory Subsystem Controller Manufacturer ID: Unknown
        Memory Subsystem Controller Product ID: Unknown
        Non-Volatile Size: None
        Volatile Size: 8 GB
        Cache Size: None
        Logical Size: None

Handle 0x0024, DMI type 17, 92 bytes
Memory Device
        Array Handle: 0x0022
        Error Information Handle: 0x0027
        Total Width: 64 bits
        Data Width: 64 bits
        Size: 8 GB
        Form Factor: SODIMM
        Set: None
        Locator: DIMM 0
        Bank Locator: P0 CHANNEL B
        Type: DDR4
        Type Detail: Synchronous Unbuffered (Unregistered)
        Speed: 3200 MT/s
        Manufacturer: Micron Technology
        Serial Number: 00000000
        Asset Tag: Not Specified
        Part Number: 4ATF1G64HZ-3G2E1    
        Rank: 1
        Configured Memory Speed: 3200 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 0x2C
        Module Product ID: Unknown
        Memory Subsystem Controller Manufacturer ID: Unknown
        Memory Subsystem Controller Product ID: Unknown
        Non-Volatile Size: None
        Volatile Size: 8 GB
        Cache Size: None
        Logical Size: None

So in this example we can observe the first is on Channel A and the second is on Channel B and thus functioning as dual-channel.

# dmidecode 3.6
Getting SMBIOS data from sysfs.
SMBIOS 3.3.0 present.

Handle 0x0012, DMI type 17, 92 bytes
Memory Device
	Array Handle: 0x000B
	Error Information Handle: 0x0011
	Total Width: Unknown
	Data Width: Unknown
	Size: No Module Installed
	Form Factor: Unknown
	Set: None
	Locator: DIMM 0
	Bank Locator: P0 CHANNEL A
	Type: Unknown
	Type Detail: Unknown

Handle 0x0014, DMI type 17, 92 bytes
Memory Device
	Array Handle: 0x000B
	Error Information Handle: 0x0013
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 8 GB
	Form Factor: DIMM
	Set: None
	Locator: DIMM 1
	Bank Locator: P0 CHANNEL A
	Type: DDR4
	Type Detail: Synchronous Unbuffered (Unregistered)
	Speed: 3200 MT/s
	Manufacturer: Kingston
	Serial Number: 48566102
	Asset Tag: Not Specified
	Part Number: KF3200C16D4/8GX     
	Rank: 1
	Configured Memory Speed: 3200 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 2, Hex 0x98
	Module Product ID: Unknown
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 8 GB
	Cache Size: None
	Logical Size: None

Handle 0x0017, DMI type 17, 92 bytes
Memory Device
	Array Handle: 0x000B
	Error Information Handle: 0x0016
	Total Width: Unknown
	Data Width: Unknown
	Size: No Module Installed
	Form Factor: Unknown
	Set: None
	Locator: DIMM 0
	Bank Locator: P0 CHANNEL B
	Type: Unknown
	Type Detail: Unknown

Handle 0x0019, DMI type 17, 92 bytes
Memory Device
	Array Handle: 0x000B
	Error Information Handle: 0x0018
	Total Width: 64 bits
	Data Width: 64 bits
	Size: 8 GB
	Form Factor: DIMM
	Set: None
	Locator: DIMM 1
	Bank Locator: P0 CHANNEL B
	Type: DDR4
	Type Detail: Synchronous Unbuffered (Unregistered)
	Speed: 3200 MT/s
	Manufacturer: Unknown
	Serial Number: E2F7748C
	Asset Tag: Not Specified
	Part Number: BLS8G4D32AESTK.M8FE1
	Rank: 1
	Configured Memory Speed: 3200 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 6, Hex 0x9B
	Module Product ID: Unknown
	Memory Subsystem Controller Manufacturer ID: Unknown
	Memory Subsystem Controller Product ID: Unknown
	Non-Volatile Size: None
	Volatile Size: 8 GB
	Cache Size: None
	Logical Size: None

They’re on dual channel technically, but I was expecting more speed. Could it be because they’re different brands/chips?


A2+B2 is correct for two modules on that motherboard (and most B550 motherboards).

How to interpret dmidecode output is… contentious :laughing:

One simple way to be absolutely sure is to run memtest from the grub menu and it should be 128-bit Mode for dual channel - https://superuser.com/a/1621323

1 Like

The suggestion by @MrLavender is a good one to be super sure.

I still dont think the speed is ridiculous though.

On a laptop I just checked with dual-channel (also not overclocked or anything special) it came out to 7798.92 MiB/sec … but only after plugging it in. Before it was about half of that. Which reminds me to tell you to double check any power saving features or similar that may be interfering.

Lately there have been more than a few threads related to power-profiles-daemon being left in power-saving mode in particular. Just a possibility if it really should be higher.

I try to run memtest, but it doesn’t show on the grub menu, despite being installed.

mod edit - remove screenshot

Did you recreate grub.cfg after installing memtest ?
:footprints:

yes, “grub-mkconfig -o /boot/grub/grub.cfg”

You may need to install the memtest86+-efi package, I can’t remember if it’s installed by default. Then update grub.

Having said that I just tried it myself and it seems that memtest86+-efi (which is different from the original memtest86) doesn’t show that Mode information…

As @cscs said earlier dual-channel will be enabled automatically as long as you put the dimms in the correct slots, which you have. Any further problems after that are likely caused by mismatched memory.

Just enabling XMP profile 1 should be all you need to do because the XMP1 profile is the same for both. But that does not guarantee that two sticks from different manufacturers that were manufactured 4 years apart will happily work together.

If XMP is disabled then the memory is not running at 3200 (unless you set all the timings manually) so that would explain your benchmark numbers. What are you using to benchmark?

1 Like

Just checked single channel bandwith and it’s very similar :frowning: 8361.35 MiB/sec

I tried enabling XMP profile 1 which is only different on tRC (one is 72 and the other one 74, check images I uploaded), and manually, I set System memory multiplier to 32.00 and it’s currently set at that.

I run “inxi -m” and it shows that it’s at “speed: 3200 MT/s”, which is what CPU-X also says.

I do my benchmarks with sysbench

Is there a simpler way to know if dual channel is activated or not? Despite the fact that I really doubt it.

As far as I am aware (no expert here) if the memory modules aren’t identical, you have to mess with timings etc. in BIOS to match the lowest common denominator (i.e. both match the slowest of the two) for this to work properly. :man_shrugging:

1 Like

I tried that but no results

There is nothing I know of on Linux that will say “your ram is running in dual channel mode”. But it is because the dimms are on different channels.

What speed are you expecting to see and why? This is sysbench memory run on my B550 system which has better CPU and RAM than yours (5800X + 2x 16GB 3600 C16)

89217.01 MiB transferred (8921.24 MiB/sec)

But I can get much higher numbers with different parameters;

$ sysbench memory --memory-block-size=1G --memory-total-size=32G --memory-oper=read run | grep transferred
32768.00 MiB transferred (36636.93 MiB/sec)

$ sysbench memory --memory-block-size=1G --memory-total-size=32G --memory-oper=write run | grep transferred
32768.00 MiB transferred (19751.75 MiB/sec)

I thought the whole point of making your rams dual channel, is to make them faster. My benchmarks are pretty similar on single and dual channel.

sysbench memory run on it’s own is not a great test because it uses 1K block size. Needs to be much larger for realistic testing. Compare before and after with at least 64M block size instead - sysbench memory --memory-block-size=64M run.