Explainer with our own test, 2026
What is KVM? And is your server really running on it?
Not the keyboard-video-mouse switch. This is the virtualization inside Linux, explained with commands you can run and output from our own servers.
KVM VPS
- Your apps
- Your kerneluname -r: 6.1.182
- Virtual hardwarevirtio disk, network, CPUs
- Host kernel + KVMyour VM is one process here
- Physical server
Its own kernel, separate from the host.
Container VPS
- Your apps
- Host kernel, shareduname -r: same as host
- Physical server
Every container on the host runs on one kernel.
The short answer
KVM (Kernel-based Virtual Machine) is the virtualization built into the Linux kernel. It turns a Linux server into a hypervisor, so one physical machine can run many virtual machines, each with its own virtual hardware and its own kernel.
On a VPS, that’s the difference that matters: a KVM VPS is a real machine, while a container VPS (OpenVZ, LXC) shares the host’s kernel with every other customer. Every LiteKeep server is KVM with NVMe, billed by the hour.
Every VPS plan says “fast and secure”. What decides whether your software actually runs is what sits underneath: a real virtual machine, or a container on someone else’s kernel.
So we tested it. We ran one read-only script on our KVM server, inside an LXC container and inside a Docker container, and compared the output line by line.
Below: the plain definition, the parts (KVM, QEMU, the hypervisor), the real difference from a container VPS, what you get on a LiteKeep KVM server, and the same script as a free checker.
In this guide you’ll learn
- What KVM is in one minute, and how it relates to QEMU
- A free checker: paste one command’s output, see what your server is
- KVM vs containers: our side-by-side test
- What you get on LiteKeep KVM: steal time, kernel features, Docker and VPNs
- When it matters for the software you want to run
Chapter 1
KVM in one minute
KVM is full virtualization for Linux on x86 hardware with Intel VT or AMD-V. Here’s what that means in practice.
- It lives in the Linux kernel. KVM was added in Linux 2.6.20, released in February 2007. It is a kernel module (
kvm.ko) plus one for the CPU maker,kvm-intel.koorkvm-amd.ko. - It uses the CPU’s own virtualization support. Intel VT-x and AMD-V let guest code run directly on the real CPU instead of being emulated instruction by instruction.
- A VM is just a process. The host’s kernel schedules each VM like any other program. Each virtual CPU is a thread taking turns on the host’s real cores.
- Each VM gets its own hardware, virtually. A network card, a disk, a graphics adapter, all private to that VM. It boots its own kernel, Linux or Windows.
| What it is | What it does | |
|---|---|---|
| KVM | A part of the Linux kernel | Runs guest CPUs on the real CPU, manages guest memory. Programs reach it through /dev/kvm |
| QEMU (or another VMM) | A normal program on the host | Creates the virtual disk, network card and other devices, and asks KVM to run the CPUs |
| Hypervisor | The whole host doing this | Linux + KVM + a VMM together act as the hypervisor |
QEMU can run without KVM, but then it emulates every instruction in software, which is slow. With KVM switched on, it uses the hardware. The kernel side is a small API: a program opens /dev/kvm, creates a VM, then creates virtual CPUs.
Chapter 2
Is your server KVM? Check it
A plan page can say anything. The server itself can’t hide what it runs on. Run this block over SSH and paste the output.
c=; grep -qa container=lxc /proc/1/environ 2>/dev/null && c=lxc
[ -f /.dockerenv ] && c=docker; [ -f /run/.containerenv ] && c=podman
{ [ -e /proc/vz ] && [ ! -e /proc/bc ]; } || [ -e /proc/user_beancounters ] && c=openvz
[ -z "$c" ] && c=$(systemd-detect-virt --container 2>/dev/null)
echo "container=${c:-none}"
echo "virt=$(systemd-detect-virt --vm 2>/dev/null)"
echo "hypervisor_flag=$(grep -c -w hypervisor /proc/cpuinfo)"
echo "nested=$(grep -m1 -o -wE 'vmx|svm' /proc/cpuinfo || echo no)"
echo "dev_kvm=$([ -e /dev/kvm ] && echo yes || echo no)"
echo "kernel=$(uname -r)"
echo "modules=$([ -e /proc/modules ] && echo yes || echo no)"
echo "tun=$([ -e /dev/net/tun ] && echo yes || echo no)"
echo "steal=$(awk '/^cpu /{t=0; for(i=2;i<=NF;i++) t+=$i; printf "%.2f", 100*$9/t}' /proc/stat)"Read-only, no sudo needed. Works in sh and bash.
Run the block, then paste its output on the left.
Why containers are checked first: inside our LXC container, systemd-detect-virt printed the outer machine’s type, not “lxc”. A container can only report what the host shows it, so the block looks for container markers before asking systemd.
Prefer to check by hand? lscpu shows it too. Ours prints Hypervisor vendor: KVM and Virtualization type: full.
Chapter 3
KVM vs container VPS: our test
Container platforms like LXC and OpenVZ share one kernel between every customer on the host. We wanted to see what that means in practice, not just read about it.
| Our KVM server | LXC container | Docker container | |
|---|---|---|---|
| Kernel (uname -r) | 6.1.182, its own | The host’s, exactly | The host’s, exactly |
| Kernel modules | Features built in | modprobe tried: failed | Not tried |
| /dev/net/tun for VPNs | Yes | No | No |
| systemd-detect-virt says | kvm | The outer machine | Not installed |
On a container VPS, the “host kernel” is the provider’s, shared with every other customer on the machine. Inside LXC, changing a kernel setting with sysctl -w failed with “Read-only file system”.
What that changes for you:
- Software that needs kernel features may not install. mailcow, for example, doesn’t support OpenVZ, LXC or other container platforms. It supports KVM.
- VPNs need a TUN device or a kernel module. Neither container had
/dev/net/tun. Our KVM server did, out of the box. - Docker inside a container needs the host to allow nesting. On KVM it installs like on any Linux machine; our Docker tutorial ran exactly that way.
- Security is stronger on KVM. A VM adds a second boundary, the virtual hardware, so a kernel bug in one VM stays in that VM. In a container, a kernel bug can reach every container on the host.
Chapter 4
What you get on a LiteKeep KVM server
KVM is the mechanism. How a host runs it decides how your server feels. Here’s ours.
1. Your CPU gets the CPU: low steal time
Your vCPUs are threads on the host. When more of them want to run than there are free cores, yours wait, and the kernel counts that wait as steal. Idle time is never counted, so a high number means you wanted the CPU and didn’t get it.
Our server has stolen 0.04% of its CPU time since boot (almost 5 days), and 0.15% under a full minute of 100% load. Check yours with vmstat 1, column st.
2. Kernel features built in
Every LiteKeep server boots a kernel with the features you need compiled in. WireGuard and overlay (for Docker) just work, with nothing to install or load. Keep the rest of the system patched with our unattended upgrades tutorial.
3. NVMe, DDoS filtering and 15 countries
Every server runs on NVMe storage, includes DDoS filtering, and costs the same in all 15 countries. Billed by the hour, never more than the monthly price.
Chapter 5
When KVM matters for you
For a simple website, any VPS type works. KVM starts to matter the moment your software touches the kernel.
| You want to run | KVM VPS (LiteKeep) | Container VPS |
|---|---|---|
| A website or small app | Yes | Yes |
| Docker and Compose | Yes, standard install | Only if the host allows nesting |
| WireGuard or OpenVPN | Yes, built in | Only if the host enables it |
| mailcow | Supported | Not supported by mailcow |
| Windows Server | Yes, on any Lite | No |
| A kernel isolated from other customers | Yes | No |
Running mailcow? It needs at least 6 GB of RAM, so start on a Lite 6. For Docker, a VPN or a website, a Lite 2 is plenty.
Next steps, all tested on KVM: WireGuard on a VPS, Docker without breaking ufw, and the wider guide to choosing a VPS.
Now it’s your move
KVM is the Linux kernel’s own hypervisor: each VM gets virtual hardware and its own kernel. That’s why Docker, VPNs and mail servers run on a KVM VPS and often fail in a container.
Every LiteKeep server is KVM, with NVMe, DDoS filtering and kernel features built in, in 15 countries, billed by the hour. Deploy one, run the checker, and see for yourself.