# Memory Speed



## Nutz (Jul 17, 2019)

Hello All,

I swapped all memory for one of my FreeBSD server.
I changed all memory module with the exact same speed : 1600 MT/s

Unfortunately, when I check result from `dmidecode -t memory` all of them are at 800 MT/s

Does it mean one of my memory module have a "speed issue" and the other all calibrate their speed ?
Or do I need to check something else?

Best regards,
N!


----------



## msplsh (Jul 17, 2019)

It also could be that the motherboard or CPU don't support the higher speed, or that the BIOS is set to 800.


----------



## SirDice (Jul 17, 2019)

I agree with msplsh, check those first.


----------



## ucomp (Jul 17, 2019)

Nutz said:


> Or do I need to check something else?


yes, you need to check your servers specs & memory-installation manual...
since we don't know your server-model here's an example , how memory is organised in servers and how the speed depends on it :


Spoiler: detailed example IBM 



*Installing a memory module*
The following notes describe the types of DIMMs that the server supports and other information that you must consider when you install DIMMs.

When you install or remove DIMMs, the server configuration information changes. When you restart the server, the system displays a message that indicates that the memory configuration has changed.
The server supports only industry-standard double-data-rate 3 (DDR3), 800, 1066, or 1333 MHz, PC3-10600R-999, registered or unbuffered, synchronous dynamic random-access memory (SDRAM) dual inline memory modules (DIMMs) with error correcting code (ECC). See IBM Support Portalfor a list of supported memory modules for the server.
The specifications of a DDR3 DIMM are on a label on the DIMM, in the following format.
_ggge_Rx_ff_-PC3-_wwwwwm_-_aa_-_bb_-_cc_
where:
_ggg_ is the total capacity of the DIMM (for example, 1GB, 2GB, or 4GB)
_e_is the number of ranks
1 = single-rank
2 = dual-rank
4 = quad-rank

_ff_is the device organization (bit width)
4 = x4 organization (4 DQ lines per SDRAM)
8 = x8 organization
16 = x16 organization

_wwwww_is the DIMM bandwidth, in MBps
6400 = 6.40 GBps (PC3-800 SDRAMs, 8-byte primary data bus)
8500 = 8.53 GBps (PC3-1066 SDRAMs, 8-byte primary data bus)
10600 = 10.66 GBps (PC3-1333 SDRAMs, 8-byte primary data bus)
12800 = 12.80 GBps (PC3-1600 SDRAMs, 8-byte primary data bus)

_m_is the DIMM type
E = Unbuffered DIMM (UDIMM) with ECC (x72-bit module data bus)
R = Registered DIMM (RDIMM)
U = Unbuffered DIMM with no ECC (x64-bit primary data bus)

_aa_ is the CAS latency, in clocks at maximum operating frequency
_bb_ is the JEDEC SPD Revision Encoding and Additions level
_cc_ is the reference design file for the design of the DIMM
_d_ is the revision number of the reference design of the DIMM


Note: To determine the type of a DIMM, see the label on the DIMM. The information on the label is in the format xxxxx nRxxx PC3-xxxxx-xx-xx-xxx. The numeral in the sixth numerical position indicates whether the DIMM is single-rank (n=1), dual-rank (n=2), or quad-rank (n=4).
The following rules apply to DDR3 DIMM speed as it relates to the number of DIMMs in a channel:
When you install 1 DIMM per channel, the memory runs at 1333 MHz
When you install 2 DIMMs per channel, the memory runs at 1066 MHz
When you install 3 DIMMs per channel, the memory runs at 800 MHz
All channels in a server run at the fastest common frequency
Do not install registered and unbuffered DIMMs in the same server

The maximum memory speed is determined by the combination of the microprocessor, DIMM speed, and the number of DIMMs installed in each channel.
In two-DIMM-per-channel configuration, a server with an Intel Xeon X5600 series microprocessor automatically operates with a maximum memory speed of up to 1333 MHz when one of the following conditions is met:
Two 1.5 V single-rank or dual-rank RDIMMs are installed in the same channel. In the Setup utility, *Memory speed* is set to *Max performance* mode
Two 1.35 V single-rank or dual-ranl RDIMMs are installed in the same channel. In the Setup utility, *Memory speed* is set to *Max performance* and *LV-DIMM power* is set to *Enhance performance* mode. The 1.35 V RDIMMs will function at 1.5 V

The server supports a maximum of 18 single-rank or dual-rank RDIMMs. The server supports up to 12 single-rank or dual-rank UDIMMs or quad-rank RDIMMs.
The server supports three single-rank or dual-rank DIMMs per channel. The server supports a maximum of two quad-rank RDIMMs per channel. The following table shows an example of the maximum amount of memory that you can install using ranked DIMMs:
Table 1. Maximum memory installation using ranked DIMMs


12Single-rank UDIMMs2 GB24 GB12Dual-rank UDIMMs4 GB48 GB18Single-rank RDIMMs2 GB36 GB18Dual-rank RDIMMs2 GB36 GB18Dual-rank RDIMMs4 GB72 GB18Dual-rank RDIMMs8 GB144 GB12Quad-rank RDIMMs16 GB192 GB18Dual-rank RDIMMs16 GB288 GB


[TR]
[TH]Number of DIMMs [/TH]
[TH]DIMM type[/TH]
[TH]DIMM size[/TH]
[TH]Total memory[/TH]
[/TR]​

The RDIMM options that are available for the server are 2 GB, 4 GB, 8 GB, and 16 GB. The server supports a minimum of 2 GB and a maximum of 288 GB of system memory using RDIMMs.
*For 32-bit operating systems only:* Some memory is reserved for various system resources and is unavailable to the operating system. The amount of memory that is reserved for system resources depends on the operating system, the configuration of the server, and the configured PCI devices.
The UDIMM options that are available for the server are 2 GB and 4 GB. The server supports a minimum of 2 GB and a maximum of 48 GB of system memory using UDIMMs.
Note: The amount of usable memory is reduced depending on the system configuration. A certain amount of memory must be reserved for system resources. To view the total amount of installed memory and the amount of configured memory, run the Setup utility. For additional information, see Configuring the server.
A minimum of one DIMM must be installed for each microprocessor. For example, you must install a minimum of two DIMMs if the server has two microprocessors installed. However, to improve system performance, install a minimum of three DIMMs for each microprocessor.
DIMMs in the same channel must be the same type (RDIMM or UDIMM) to ensure that the server will operate correctly.
When you install one quad-rank RDIMM in a channel, install it in the DIMM connector furthest away from the microprocessor.
Do not install one quad-rank RDIMM in one channel and three RDIMMs in another channel.
The following illustration shows the location of the DIMM connectors on the system board.
Figure 1. DIMM connectors location


----------



## Nutz (Jul 18, 2019)

Hi All,

thanks all for your answer.

I didn't mention that because i changed the memory module with the exact same model. And the old memory module was working fine.
That's why i dont think its a problem from BIOS configuration and/or a limit from the motherboard.

To be more specific, i would like to know if you have some commands that's could be useful to investigate memory issue.

`- sysctl -h hw.physmem hw.realmem hw.availmem
- dmesg
- dmidecode
-..etc`

Sorry for the "lack of details" from my first post 

Have a nice day,
N!


----------



## marcus123 (Jul 18, 2019)

how about: 

`top`


----------



## Phishfry (Jul 18, 2019)

Nutz said:


> Does it mean one of my memory module have a "speed issue" and the other all calibrate their speed ?


Without a shred of detail this is hard to tell. Generally you have cheap modules with a SPD chip containing the speed and timings..
More deluxe modules use XMP. This is sort of a memory handshake where they negotiate best timings.

So what do you have for modules? Lets start at the top DDR3 or DDR4.


----------



## Phishfry (Jul 18, 2019)

Nutz said:


> i changed the memory module with the exact same model. And the old memory module was working fine.


Sometimes when I have simple problems like this I remove all memory modules and boot up, let it beep a bunch then shutdown and install memory.
This tends to flush any residual memory settings.


----------



## driesm (Jul 18, 2019)

Ha, I think this might be because of DDR, IIRC.
The reported speeds are halved when dealing with DOUBLE DATA RATE memory.
Its something silly like that (pretty sure), but be sure to check your BIOS.
I also noticed this with CPU-Z reporting memory speeds on my Windows machine.

EDIT; I just checked my own FreeBSD server and speeds are reported by dmidecode as the speed on the modules. So not half as I've seen on my Windows system with CPU-Z before.


----------



## msplsh (Jul 18, 2019)

Nutz said:


> i changed the memory module with the exact same model. And the old memory module was working fine.



Put the old memory back and run `dmidecode -t memory` then.


----------



## Nutz (Jul 23, 2019)

Hi All,

Thanks all for your answer.
I didnt find anything from system side.

i'm going to plan a maintenance to check BIOS.

Have a good day,
N!


----------

