Setting the CPU speed frequency on dedicated server

Fixing a dedicated server CPU not running at full max speed by setting an upper and lower limit with cpufrequtils.

A processor will scale for certain reasons like power consumption, temperature and stability. However, at a lower clock rate tasks will take longer and the CPU could put itself under more load than if it was running at full speed, to begin with.

A CPU’s speed is the rate in wave frequencies which it can execute tasks, also called a clock rate.

Running this command will give you the CPU name/model/type, thread count and the speed (MHz) that thread is running at

grep -E '^model name|^cpu MHz' /proc/cpuinfo

Chances are that on a VPS your allocated CPU will be running at its max speed. On a dedicated however it will have speed scaling enabled. This means that when the CPU isn’t under intensive strain it will find a lower clock speed that makes it comfortably able to do simple tasks.

I found that my Intel Xeon E3-1245 v5 @ 3.50GHz stayed at a mere 800 Mhz most of the time when doing small tasks. Removing CPU scaling and setting a ceiling for the CPU speed was rather easy.

Install cpufrequtils with

sudo apt install cpufrequtils

Once that has finished run:

cpufreq-info

This returns plenty of details about the CPU like its limits, hardware restriction, current speed, and steps.

Set max speed

As my max CPU speed is 3.50GHz I am going to set that as the max upper limit

sudo cpufreq-set -u 3.5Ghz

Set minimum speed

Next is the lower limit, what it will be at when not under a load. I can set 3.5Ghz meaning the CPU will run at that speed 24/7 even if it has no load or I can be conservative.

sudo cpufreq-set -d 3.3Ghz

Sets the CPU minimum clock speed at 3.3GHz, this fixes the problem of my CPU scaling its speeds and not running some tasks at/close to full speed and capability.