Writing this for a good old friend. If anyone else has use of it – great! 🙂
When you are looking at hosting offers, whether it’s shared, reseller, or VPS hosting, you can often see things like “2 vCPU cores,” “150% CPU,” “4 x CPU” and similar. What does this mean? The short answer is: “it depends.” For an explanation, read on.
Table Of Contents (T.O.C.):
- Physical – what is a CPU?
- Virtual – what is a vCPU?
- vCPU advantages – the good
- Not all the vCPU-s were created equal
- Apendix – how to check the server?
1. Physical – what is a CPU?
To easily understand what a vCPU is, it’s good to first understand what a CPU is.
CPU (Central Processing Unit) is the computer’s (and smartphone’s) brain. Modern CPU-s have several cores, and every core can have several threads.
If we imagine a computer as a workshop, here’s what it would look like:
- 1 CPU = one workshop.
- 4 cores = 4 workers.
- 2 threads per core = 2 hands per a worker.
- RAM = workbench size
A small workbench means not all the workers can work efficiently at the same time, they’ll be bumping into each other.
- NVMe (or SSD) = warehouse
A small warehouse won’t store enough spare parts and finished products.
A slow warehouse won’t deliver spare parts, or take in the finished products fast enough. So the workers will be idling while they are waiting for the storekeeper to serve them so they could work.
- Motherboard = building and corridors
If a building is poorly designed, with narrow corridors, the production won’t go smoothly.
2. Virtual – what is a vCPU?
I’ll first explain this using an analogy, so the technical stuff can be more easily understood later on.
Let’s say I have one workshop (CPU), with four workers (cores), that are all strong and healthy with two hands each (threads).
And let’s say I wish to rent my production capacities to another company. Normal companies will make contracts based on the cost per unit produced. But when it comes to the hosting industry, things are a lot more “shady.”
- If I rent the whole workshop, that’s a “dedicated server” and the buyer knows what they’re paying for.
If’m also taking care of security, work-hour tracking, discipline etc, that’s a “managed dedicated server.”
- If I rent one worker, that’s a “dedicated VPS” – here the buyer also generally knows what they’re getting.
- But what if I rent “a worker” (with the quotation marks)? That’s a vCPU, and those are the usual VPS and shared hosting offers. Read on.
When I’m renting a virtual “worker,” the buyer doesn’t know what exactly I mean by that. It’s never the whole workshop (CPU). It’s almost never the whole worker (core). At best, it is one hand’s work capacity (thread)!
Besides, not all the workers are the same. Modern CPU-s work faster and more efficiently than the older ones, even if they have the same number of cores.
On top of that, in the hosting industry, things are even “worse” in 99% of the cases (I’ll explain the quotation marks in chapter 3).
Let’s take the above-mentioned 4-core (4 workers) CPU with 2 threads per core for an example:
- 4 cores with 2 threads each = 8 threads.
- 8 threads time 4 cores (again!) = 32 vCPU
And that’s if the provider isn’t too “greedy” (see Overselling vs Overloading)! Using the one physical CPU from our example, you can easily make (and sell) even 64 vCPU-s. Customers usually can’t know what they are paying for, unless they do benchmark speed testing – especially in shared (and reseller) hosting environments.
Do you understand now that a “vCPU” means practically nothing? The amount of resources you get for one vCPU varies from one provider to the next.
The process for technically implementing this is called “virtualization.” Using a similar principle, you can set several virtual machines on your own computer.
3. vCPU advantages – the good
If you’ve read chapter 2, you are now probably feeling cheated by the hosting companies. But it’s not all that black (it’s grey 🙂 ). Why I think vCPU-s are a phenomenal thing?
Hosting server hardware, including the CPU-s is expensive to buy and to run (fire protection, backup power supply, maintenance, physical security, fast Internet connection etc.).
vCPU is a great way to save money.
When I call a plumber, I’m not paying their monthly wage, only the time they spent on fixing my problem.
Likewise, when I rent a vCPU (from a high-quality hosting provider), I’m not paying for more than I need. No more analogies, here’s a practical example:
- Each month, over 170,000 people visit BikeGremlin websites.
- The other websites I host (around 10 more) are visited by over 50,000 people each month.
- That’s a total of over 220,000 monthly visitors, with an average of over 7,000 daily visits.
All that combined worked fine on 1.5 vCPU, with the average load not going over 25%. Thanks to that, I could get a relatively cheap hosting package, with all the websites working nicely.
Could I have rented only 0.5 vCPU? No. Occasionally, and very briefly, some of my websites require as much as 1.5 vCPU. This usually happens when I make greater changes on a WordPress website (for example, when I change category hierarchy on a website with many posts).
Because of this, I even rented more resources – 2.5 vCPU. Now my websites are never hitting a limit and can all work smoothly all the time:
It boils down to that websites don’t all use the same amount of resources at any given moment.
Thanks to this fact, a hosting provider can do the following, with all the websites working nicely, and at a low price for the customers:
- Take one CPU with 4 cores and 2 threads per core – and make 32 vCPUs.
- Use such server to sell 20 reseller hosting packages like the one I’m using – with 2.5 vCPU each.
- Or, sell 500 shared hosting accounts with 1 vCPU each.
That’s how shared and VPS hosting works. Similar to a restaurant that serves hundreds of people per day, but only has 20 tables.
4. Not all the vCPU-s were created equal
One vCPU doesn’t offer the same performance with every hosting provider. Why? For the following reasons (one not excluding the others):
- Some physical CPU-s are more powerful than the othres (and vice-versa).
- Some providers put too many customers on one physical server.
- Some providers sell too many total vCPU resources on one physical server.
A lot also depends on the rest of the server’s hardware, quality of infrastructure, and the system administrator’s competence. But here I’ll explain another factor that depends on the hosting provider’s business policy:
Am I allowed to use 50%, or 100% of my available vCPU resources for hours, or the whole time?
- If a provider allows this, then it must be very pricy, or the server will not work stably in case some clients host very resource-demanding projects.
- If a provider sets a hard limit, like “no more than 25% of the available vCPU for more than 30 minutes,” then it can be cheap and high-performing, but the clients need to be careful about what they’re doing.
Most hosting providers are somewhere between these two extremes, but not all. HostMantis for example sets a hard limit for their shared hosting packages, but websites fly on that relatively cheap hosting. While Veerotech lets you freely use 100%, but they charge a lot more – so websites work fast there as well (HostMantis is slightly faster in my experience 🙂 ).
I’m writing this because I’ve heard this complaint a thousand times: “they told me I’m using too many resources and I should upgrade to a more expensive package.”
If you’ve read this article, you understand why that is. Of course, there are a lot of bad, greedy providers. But even the best provider can’t afford to just let a client go 100% all the time – not at the prices charged for VPS and shared/reseller hosting. For such use, there are dedicated servers and dedicated VPS-s.
Correction by Predrag Damjanović from MyCyty Hosting:
This does not go for all the unmanaged VPS providers. Hetzner for example tolerates the use of practically 100% of the available resources almost all the time, and they aren’t expensive.
As the Americans say: “There’s no free lunch.” With a high-quality hosting provider, vCPU-s let you pay very little to get relatively high resources – for when you need them.
The downside is that bad hosting providers use vCPU’s flexibility to sell you a cat in a bag. But such providers should be avoided for thousand other reasons.
6. Apendix – how to check the server?
Most providers don’t disclose server hardware info, nor how many vCPU-s are sold from one CPU. Here I’ll describe the methods I use to check whether one provider is “better/faster” than the other.
Sysinfo script (download link from my website – the original source). It works with most shared and reseller hosting environments (it works with PHP 7.X versions). If you download and unpack it in the public directory of a website hosted with a provider, you can go to “your-domain.com/sysinfo/” and see the basic info of the hosting server (including the CPU).
Then you can visit this address (Hurricane Electric’s website):
Enter the IP address of your website there to see how many domains (websites) are hosted there.
Still, a dozen static HTML websites won’t put nearly as much load on a server as an average WordPress site. Likewise, a very powerful CPU can provide poor performance if the server is overloaded with a lot of “heavy” websites. So take this with a grain of salt.
The true picture is shown only when you compare a provider’s real-use performance with the other providers. Not even various benchmark tests can paint the whole picture. Long term real use can’t be beaten.
Nonetheless, even though testing can’t tell you which providers are good, they can tell you which providers to avoid. I use Octoperf load tests to see if a server is OK, or really poor. Every decent shared hosting server should “survive” 20 simultaneous visitors on a WordPress website with decent caching (without caching, I think 10 visitors is the right size). Load tests should not last more than 5 minutes, without the provider’s explicit approval (double-check on this). Also, if you intend to run more than one or two such tests, double-check with the provider, so you don’t get kicked out for server abuse.
It goes without saying that for any testing and comparing, you should always use the same website, just migrate it. Otherwise, you’ll be comparing apples to oranges and never get any useful info.