You’ve got a fresh Proxmox node, installed Ryzen or Intel, and set DOCP/XMP in BIOS. You check lshw or dmidecode and it says your RAM is running at 3200 MT/s. But when you run a VM or a container with memory-intensive workloads, it feels like it’s dragging. You check dmesg again and realize the kernel is reporting 1600 MT/s. What gives?
You’ve probably seen this before: you enable DOCP/XMP in BIOS, reboot, and everything looks good. But the system still runs at half speed. The problem isn’t the hardware or the BIOS — it’s how the kernel initializes memory and interacts with the profile. This is especially common with Proxmox 7.x and older AMD CPUs, but even newer setups can hit this if the kernel doesn’t properly apply the profile during boot.
The fix? Ensure the kernel respects the DOCP/XMP settings. You can force this by modifying the kernel command line to explicitly pass memory parameters.
Here’s a working example of a /etc/default/grub snippet that forces the kernel to use the correct memory speed and apply the DOCP/XMP profile:
GRUB_CMDLINE_LINUX="memmap=16G$16G amd_pstate=passive processor.max_cstate=1 mem=32G"
After updating the GRUB config, run:
sudo update-grub && sudo reboot
Once the system boots back up, check with:
dmesg | grep -i "dram"
You should now see the correct speed reflected in the kernel log. If not, double-check that your BIOS is updated and that the profile is correctly enabled. For Intel, it’s XMP 2.0; for AMD, it’s DOCP. Also, make sure you're not running a kernel module or firmware that’s overriding the memory settings.
This small change can make a big difference in VM density and responsiveness — especially for tasks that rely on fast memory access, like databases, VMs, or even containerized AI workloads. Done.
Top comments (0)