KVM (Kernel-based Virtual Machine) is the virtualization technology built into the Linux kernel. It turns a Linux server into a hypervisor that runs many isolated virtual machines, each with its own kernel and operating system. Most modern VPS hosting, including all VPS.DO VPS plans, is built on KVM. Here’s what that means for you as a user.
How KVM works
- Hardware virtualization: modern CPUs have extensions (Intel VT-x, AMD-V) that let guest operating systems run directly on the CPU, at near-native speed, while the host keeps control.
- The kvm kernel module exposes this to user space. Each virtual machine is a normal Linux process on the host, scheduled like any other.
- QEMU emulates the rest of the machine: disks, network cards, the BIOS/UEFI, and the console.
- virtio drivers in the guest give fast, paravirtualized disk and network I/O, instead of emulating old hardware.
- Management tools (libvirt, and the provider’s control panel) create, start, stop and reinstall VMs.
Full virtualization vs containers
| KVM (full virtualization) | Containers / OS-level (LXC, OpenVZ) | |
|---|---|---|
| Kernel | Own kernel per VM | Shared host kernel |
| Operating systems | Any Linux distribution, Windows, BSD | Same-kernel Linux only |
| Isolation | Strong (hardware-level boundary) | Process-level |
| Kernel modules, custom kernels | Yes | No |
| Docker, Kubernetes, WireGuard kernel module | Yes | Limited or provider-dependent |
| Overhead | Small | Smaller |
See KVM vs OpenVZ vs LXC.
What a KVM VPS lets you do
- Run any supported OS: Ubuntu, Debian, CentOS, AlmaLinux, and Windows Server (on plans with enough disk). See KVM VPS and Windows VPS.
- Load kernel modules, and tune kernel parameters with
sysctl(TCP settings, BBR congestion control, and more). See TCP BBR. - Run Docker, Podman, Kubernetes (k3s, kubeadm) and VPN servers (WireGuard, OpenVPN) without restrictions. See Docker VPS and WireGuard VPN server.
- Use your own firewall (iptables or nftables, UFW) inside the VM.
- Access the server through a VNC console in the control panel, even when networking is broken. That’s handy for firewall mistakes.
Check that you’re on KVM
systemd-detect-virt # prints "kvm"
lscpu | grep -i hypervisor # Hypervisor vendor: KVM
lsmod | grep virtio # virtio drivers loaded
Performance considerations
- vCPU: each vCPU is a thread scheduled on the host’s physical cores. Performance depends on the host CPU and on how the provider allocates resources. See vCPU explained.
- Steal time (
stintop) shows time your VM waited for the host CPU. Consistently high steal means contention. - Disk: virtio-blk or virtio-scsi on SSD storage gives good I/O. Benchmark with fio. See fio disk benchmark.
- Network: virtio-net provides near line-rate throughput. Test with iperf3. See iperf3 bandwidth test.
top # watch the "st" value in the CPU line
vmstat 1 5 # "st" column
Nested virtualization
Running VMs inside a KVM VPS (for example a hypervisor, or Android emulators) requires nested virtualization, which many providers don’t enable. Containers (Docker, LXC) work fine without it.
KVM vs other hypervisors
KVM competes with VMware ESXi, Microsoft Hyper-V and Xen. KVM dominates in Linux-based hosting and public clouds, because it’s part of the Linux kernel, open source, and well supported by tooling (libvirt, Proxmox VE, OpenStack).
Quick reference
| Item | Meaning |
|---|---|
| KVM | Linux kernel hypervisor (hardware virtualization) |
| QEMU | Device emulation for KVM guests |
| virtio | Fast paravirtualized disk and network drivers |
| Check | systemd-detect-virt → kvm |
| CPU contention | st (steal) in top / vmstat |
Related: what is a VPS and VPS vs cloud hosting.