Hosting for Non-Techies

Understanding CPU Usage on VPS Servers

CPU load can have a hefty impact on the performance of your server. If you are under too much load, your server will grind to a halt, pages won’t load properly, and basic functions may not work. You can monitor your CPU load through your portal by looking at your Resource Graphs (you can find these by logging into your ServInt Portal, clicking on “Services”, and finding “Resource Graphs”). These graphs will present you a picture of how your server is using its CPU, but what exactly do they mean? And when should you get worried that your CPU usage may cause a problem?

Well, the first thing to do is look at your Cores Allocated, Cores Used, and Cores Guaranteed.

Cores Allocated shows the total number of CPU cores you can possibly use on your server; this includes your burst resources, so this number will not always be what you have access to. Cores Guaranteed shows what minimum number of cores will be; you will always have access to this number of cores. Unless you upgraded your server, these two numbers will be constant straight lines.

Cores Used will be what you are looking at to see your current load and how much you need to worry. For ease of use, we’ll pretend that your server has a 1 guaranteed core (we’ll explain later on how more or less cores affects things).

If your load is between 0.0 and 1.0, your CPU is processing the commands sent to it without any delay. A command is sent, it is processed, and the answer comes out. You can think of this like turning on the tap on your sink. If your CPU usage is under 1.0, the water is going down the drain as fast as it comes from the tap.

If the load goes over 1.0, that means there is some delay in the commands being processed. In this case, the sink would start to fill with water. If you have extra allocated cores, they may pick up the slack. If not, your server will begin to respond sluggishly. If it gets too high, the server will begin backing up. In essence, the sink will begin to overflow.

You don’t want your sever load to go over 1.0 and your sink to back up. If you get an occasional spike over 1.0, that is fine. Your burst CPUs can handle it. But when you’re consistently over 1.0, it’s an indication of a problem.

Ideally, you want your CPU load to stay around 0.7. If it is regularly higher, that means you should look into upgrading your solution. 0.7 does not give you very much leeway; if you suddenly receive a large amount of traffic, your server may fail you. Even if you do have burst resources available,

If your CPU load is significantly lower than 0.7 — say it sits around 0.2 or 0.3 constantly — you may be on a solution that is too large for you. Of course, this also allows you a fairly high amount of growth.

If your load is extremely high, say in the 3.0+ range, you essentially need to upgrade immediately. Not only is your server in danger of failing completely, you’re hogging resources.

Note that if you’re using the terminal on your server, you can use the command uptime to look at your server’s CPU usage. It outputs three numbers, the 1, 5, and 15 minute load averages. You should normally look at the 5 or 15 minute load averages for your server. However, this program does not give you historic data like your resource graphs do, so it is less useful if you’re looking at your server during a non-peak time.

More or Less than 1.0 Cores
If you have more or less than 1.0 Guaranteed Cores, it is a simple matter to figure out what numbers you should watch out for. Simply multiple the above recommended numbers by the number of cores you have available.

For instance, if you have 2.5 Guaranteed Cores, a constant server load around 1.75 should make you think about upgrading.

Another way to think of it is that the above numbers are percentages. If you’re at 70% of your Guaranteed Cores consistently, you’ll want to think about upgrade. If you’re at 300%, you’re in urgent need of an upgrade.


Image by Dean Hochman.

Find out more about ServInt solutions

Starting at $27

  1. Hi Hal, we cover that later on in the article. The initial numbers given are based solely on the assumption you are working with 1 core. Under the section "More or Less than 1.0 Cores" we say "If you have more or less than 1.0 Guaranteed Cores, it is a simple matter to figure out what numbers you should watch out for. Simply multiple the above recommended numbers by the number of cores you have available." So in your example, with 6 cores available, the "high alert" number would be 18 (or 6 cores times 3).
  2. Your information about load is very incorrect. The load average is the number of processes in the run queue. Therefore, your load average example of 3 would be perfectly fine when you have 6 cores as that instead means you still have on average 3 cores waiting for processes to run. You would therefore be recommending that people upgrade when they don't have to. Its for reasons like this that make the load value very useful yet very misleading at the same time. Its usually better to look at CPU utilization metrics, but on virtual servers where you have shared cores, this can also be misleading because what 100% means changes based on how busy the entire hardware node is.
  • The New York Times
  • The Hill
  • Bloomberg
  • The Seattle Times
  • Computer World
  • Ars Technica