A container carries no second kernel
A virtual machine is a full guest: its own Linux kernel, its own init/systemd, its own virtual device drivers, its own buffers and page cache. All of that takes memory before you run anything useful.
An LXC system container works differently — its processes run directly on the host kernel. There is no second kernel, no separate drivers, and the page cache is shared with the host. Practically only what you actually started remains (the guest's systemd + services). That's why the overhead of an "empty" system drops from tens of megabytes to a dozen or so.
Clean Debian 13 — how much it uses
| Configuration | RAM usage (fresh boot, idle) |
|---|---|
| Debian 13 — LXC container (no GUI) | ~16 MB |
| Debian 13 — server VM (no GUI) | ~85 MB |
| Debian 13 — VM with XFCE desktop | ~450 MB |
| Debian 13 — VM with GNOME desktop | ~1 GB |
Same kernel, same distribution — yet the gap between a container (~16 MB) and a server VM (~85 MB) is more than 5×. Adding a graphical desktop changes the scale entirely: lightweight XFCE is ~450 MB, and a full GNOME at idle can reach ~1 GB — about 60× more than the server container.
These figures are for a freshly booted, idle system (measured e.g. with free -m). Real usage grows with your services — but the starting overhead is exactly what drives density.
More services on the same host
The "empty" overhead multiplies by the number of instances. On a host with 256 GB of RAM the mere cost of starting hundreds of lightweight services is incomparable: containers leave almost all memory for applications, while a farm of small VMs gives up a large part of it to duplicated system overhead.
- Microservices, websites, APIs, reverse proxies, caches — ideal for containers: dozens/hundreds of instances at minimal overhead.
- Dev/test environments — fast start, negligible memory cost, easy cloning.
- VM + KSM — if you must use VMs, enable KSM to recover part of the duplicated overhead across identical machines.
Density isn't everything — when to pick a VM
A container shares the host kernel, so it isn't suitable everywhere. Choose a full virtual machine when:
- A different kernel from the host — Windows, BSD, a custom/non-standard kernel or kernel modules.
- Hard isolation — untrusted tenants, compliance requirements, hypervisor-level separation.
- Kernel-level operations — custom sysctl needing isolation, drivers, nested virtualisation.
In short: if Linux on the host kernel is enough — a container gives maximum density. If you need a different kernel or hard separation — choose a VM (and consider KSM). The best Proxmox clusters deliberately mix both.
Proxmox VE manages VMs (KVM) and containers (LXC) from a single panel — you don't pick a platform, you pick the right tool per workload.
We'll match VMs and containers to your workloads
We'll plan the VM/LXC split to maximise density and lower RAM cost — with no compromises where you need isolation.
⚡ Free consultation → LXC containers in Proxmox