KVM or OpenVZ: which to choose
In 2026 KVM is almost always the right pick: it costs a dollar or two more per month than OpenVZ, but everything runs on it, from Docker to Windows. OpenVZ makes sense in one narrow case, explained below, and at the end you will find the commands to check your own server in a minute.
The short answer: take KVM. On KVM you have your own system kernel, and the server behaves like an ordinary computer: Docker, Windows and any Linux version install fine, and your own firewall and swap work. OpenVZ is a container that shares a kernel with the neighbours on the same physical machine. It is cheaper and lighter, but some familiar programs will not start in it, and you usually find that out after you have paid.
OpenVZ only makes sense if the task is simple, runs on Linux without Docker, and the price difference actually matters to you. Below I look at how big that difference is in practice and what exactly breaks in a container.
How much cheaper OpenVZ really is
Less than you might think. I compared plans with the same amount of memory at the same host: I took the cheapest KVM plan and the cheapest OpenVZ plan and looked at the difference. That gave between 15 and 29 hosts depending on the memory size, using the accsly catalog data of 27 October 2026. The catalog stores prices in roubles, so the dollar amounts are rounded.
With 2 GB of memory, KVM at the median costs well under a dollar more per month, about 16%. With 4 GB the gap is larger, about $2 or 30%. Over a year that comes to somewhere between $8 and $25. And at a third of the hosts that sell both types, KVM of the same size costs the same or even less, so the first step is simply to compare plans within one host.
Choosing OpenVZ also narrows the field a lot. Of the 26,640 plans in the catalog, 501 run on OpenVZ, which is 1.9%, and they are sold by 84 hosts out of 2,175. KVM accounts for 93.5% of all plans (I counted in those where the host did not state the virtualization, because these days the default is almost always KVM). The rest are VMware, Hyper-V, Xen and LXC containers, and for you as a user the first three behave just like KVM.
So the saving on OpenVZ is roughly the price of a coffee a month, and you pay for it with restrictions. For work you would hate to lose, I would not make that trade.
What will not work in an OpenVZ container
Anything that needs its own system kernel. In a container there is one kernel for the whole physical machine, and only the host can change its settings. In practice it looks like this.
Docker often does not install or runs with errors. Many hosts state in their terms that they do not support Docker on OpenVZ. On OpenVZ 7 it sometimes starts if the host has enabled the required features for the container, but you need to confirm that before paying. If your project is built on Docker or you plan to run n8n, GitLab Runner or Kubernetes, look only at KVM or the VPS for Docker selection.
Windows will not run at all. The container uses the host's Linux kernel, so a different operating system is impossible inside it. The catalog has not a single OpenVZ plan with Windows, while among KVM plans Windows is available on about half. Selection: Windows VPS.
The kernel is old and cannot be upgraded. OpenVZ 7 runs kernel 3.10, and the outdated OpenVZ 6 runs 2.6.32. Current distributions are designed for newer kernels, so the host may not have a template for the Ubuntu version you need. Anything added to the kernel later will not work either: for example, the BBR algorithm, which speeds up file delivery over long distances, needs kernel 4.9 or newer.
You cannot load your own kernel modules. This includes, for example, in-kernel WireGuard for a private network between an office and a server. It can be replaced with a version that works without the module, but only if the host has enabled the TUN network device for the container. How to build such a network on a regular KVM server is covered in the article a corporate network on a VPS.
You cannot add swap. The swapon command does not work in a container, so when memory runs out, the process is simply killed. On KVM you can create a 1–2 GB swap file in a minute and get through a load spike.
Memory is counted differently. OpenVZ plans often say something like "1 GB guaranteed, up to 2 GB", and the upper figure is only available while it is free on the host. Plan around the lower one.
When OpenVZ is still a reasonable choice
When the task is small, runs on Linux and does not need Docker. Say you need a server for a simple Python bot, a static site, uptime monitoring of other sites or tests you would not mind losing. A container will cope with that, and over a year you will save roughly $10–12.
Another advantage of a container is that it has almost no overhead. The system boots in seconds, and none of the plan's memory goes to the virtualization itself. On 512 MB plans this is noticeable: on KVM the kernel and system services take about 100–150 MB of it, in a container less.
If this option suits you, the plans are collected in the OpenVZ VPS selection. LXC, a container built along similar lines, is rarer, at about 0.6% of plans, and its limitations are almost the same: LXC VPS.
Is KVM always more honest?
Not always. KVM by itself does not guarantee that the processor is not shared with a dozen neighbours: on inexpensive plans the cores are still shared. The difference is that overselling is easier to spot on KVM, because the system shows how much time the neighbours took away from your machine. I show how to check this below. If the processor will be busy all the time, look for plans with dedicated cores, and for fast single-threaded work, high-frequency CPU VPS.
What to take for your task
A site on WordPress, Drupal or Laravel with a database: KVM. The site benefits from swap for traffic spikes and from a current PHP version, and it makes no sense to put up with an old kernel to save a dollar a month. Selection: VPS for a website.
Anything on Docker, including n8n, GitLab and Kubernetes: KVM only, there is no alternative. Windows and software built for it: also only KVM or Hyper-V.
A Telegram bot in Python or Node.js without Docker, monitoring, a test environment: OpenVZ will do, if it is noticeably cheaper at the same host. If the difference is only a dollar or so a month, I would still take KVM: when you move to Docker or a new system version, you will not have to change servers.
How both types work and a table of differences are in the article VPS vs VDS; here we move on to practice.
How to find out what your server runs on
Hosts do not always state the virtualization in the plan, and sometimes they state it wrongly. You can check it in a minute by connecting to the server over SSH. The simplest command is available on any modern Linux:
systemd-detect-virt
It prints a single word. kvm means KVM, openvz an OpenVZ or Virtuozzo container, lxc an LXC container, vmware and microsoft VMware and Hyper-V, xen Xen. If the output is none, you got a physical machine without virtualization. hostnamectl shows the same thing in its Virtualization line.
If there is no systemd or you want to confirm the answer, there are three indirect signs:
ls /proc/user_beancounters /proc/vz 2>/dev/null # these files exist only in OpenVZ
uname -r # kernel version
lscpu | grep -i hypervisor # on KVM: Hypervisor vendor: KVM
If the first command printed anything, you are in an OpenVZ container. A kernel version like 2.6.32-042stab… means OpenVZ 6, and one with vz7 in the name means OpenVZ 7. There is also the virt-what utility, installed with apt install virt-what and run as root; it recognises more of the rare cases.
How to tell that neighbours are crowding your server
On KVM, look at steal, the time the hypervisor gave to other machines while yours was asking for the processor:
vmstat 1 10
You need the st column on the right. If it shows 0–2, everything is fine. If under load it stays above 5–10, the neighbours are taking a noticeable share of the processor, and the server will run slower than the plan promises. The same figure appears in top as st in the %Cpu line.
In OpenVZ steal is usually not visible, but there is a counter of hit limits instead:
cat /proc/user_beancounters
Look at the last column, failcnt. A non-zero value in the privvmpages or physpages row means the container ran short of memory and some requests were refused. If the numbers keep growing, the plan is too small for your task, even if free shows free memory.
Run these checks in the first days after payment, while the refund period is still valid. Plans that offer one are in the money-back VPS and free trial selections.