Hosting plans are full of terms like VPS, KVM, vCPU and NVMe, and it is not always clear what stands behind them. Below we explain what a VPS is, what you are actually renting, and how to check it on the server in a couple of minutes.
What a VPS is (and why some providers call it a VDS)
A VPS (Virtual Private Server) is a virtual server: a slice of a physical server that works as a separate machine with its own operating system, root access and IP address. VDS (Virtual Dedicated Server) is a synonym that is common on Russian-language sites and rare in English. Some providers draw their own line between the two (for example, they call plans with dedicated cores VDS), but there is no common standard: look at the plan's specifications, not at its name.
A virtual server differs from a dedicated server in that the physical hardware is shared among several customers. A dedicated server is entirely yours, but it costs more and takes longer to provision; a virtual server is created in minutes, and its resources can be increased without migrating.
Virtualization: KVM and containers
How exactly the server is divided depends on the virtualization technology.
| KVM (full virtualization) | Containers (OpenVZ, LXC) | |
|---|---|---|
| OS kernel | each server has its own | shared with the host machine |
| Which OS you can install | any: different Linux distributions, Windows, custom images | only Linux with the host's kernel |
| Docker, custom kernel modules, kernel settings (sysctl) | work | often restricted or unavailable |
| Isolation | strong, at the hardware virtualization level | weaker: shared kernel |
| Cost for the provider | higher | lower: customers can be packed more densely |
KVM (Kernel-based Virtual Machine) is a hypervisor built into the Linux kernel. Each server gets its own virtual hardware and its own kernel, so inside it works like a regular computer. Most modern providers sell VPS on KVM; container virtualization shows up in the cheapest plans.
How to check what your server runs on:
systemd-detect-virt
kvm means full KVM virtualization, openvz or lxc means a container, none means a physical server.
vCPU: what a virtual core is
A vCPU is the virtual processor your system sees. Physically it is a thread of the host machine's processor, and the hypervisor distributes processor time among all servers on that machine. Three things are important to understand:
- Cores are usually shared. The provider assumes that servers do not load the processor to 100% at the same time, so it sells more vCPUs than there are threads on the machine. This is normal practice; the question is the ratio. Under constant high load on other customers' servers, your server will get less processor time.
- The processor model and clock speed matter more than the number of cores for most web projects: two vCPUs of a modern high-frequency processor often outperform four vCPUs of an old one.
- Dedicated cores (dedicated vCPU) are pinned to your server and not shared. They cost more and are needed for constant compute load: builds, video encoding, calculations.
How to check:
nproc # how many vCPUs the system sees
lscpu | grep -E 'Model name|^CPU\(s\)|Thread'
A sign that the processor is short because of neighbors is a high steal value (st) in top or vmstat 1: the share of time when your server was ready to run, but the hypervisor gave the processor to others. A few percent is normal; a constant several tens of percent is a reason to contact support.
Memory: guaranteed or not
RAM in a KVM plan is usually guaranteed: if the plan says 4 GB, your server is allocated 4 GB, and it will not be given to neighbors. Memory is what limits how many servers fit on a physical machine, which is why it costs more in a plan than a core does.
Container virtualization sometimes offers "burst" memory, which you get only if the host has it free. You cannot rely on it.
free -h
The total column shows how much memory the server has; available shows how much more programs can take without pushing others out.
Disk: NVMe, SSD and what else matters
- NVMe is an SSD connected directly to the PCIe bus. It is faster than a SATA SSD in throughput and especially in latency, which is noticeable for databases.
- Local disk or network storage. A local NVMe disk gives the best speed; network storage (Ceph and the like) gives reliability and migration between machines, but with higher latency.
- The size is "raw". The stated size is the size of the server's disk; part of it is taken by the OS itself, a few gigabytes for Ubuntu Server.
lsblk -d -o NAME,SIZE,ROTA,MODEL # ROTA 0 means SSD, 1 means hard drive
df -h /
Network and IP addresses
- Port speed (for example, 1 Gbit/s) is the maximum speed of the server's connection; the real speed depends on network load and the route to the client.
- Traffic can be unmetered, capped by volume, or throttled after a limit: always read this in the plan.
- A dedicated IPv4 is your own address, on which you can run mail, a website and a reverse DNS record. IPv6 is often provided free as an entire subnet.
What to compare in VPS plans
- Virtualization technology: Docker and custom operating systems need KVM.
- The processor model and whether the cores are dedicated.
- Memory: guaranteed.
- Disk type (NVMe), local or network.
- Port speed and traffic terms.
- How much it costs to increase resources and whether this can be done without reinstalling.
How to check that what you got matches the plan is covered in the article on VPS performance testing. How many resources to take for a specific project is in the article "How much RAM does a VPS need"; and once you have bought a server, it is worth setting it up with a basic checklist right away.