When you rent a VPS, you are promised a certain amount of CPU, RAM, and disk I/O. But how are these resources actually allocated on the physical host? Understanding the mechanics of CPU scheduling, memory overcommitment, and I/O throttling helps you choose the right provider and configure your applications for maximum performance. This article explains how VPS resource allocation works under the hood and how to verify you are getting what you pay for.
How CPU Allocation Works on a VPS
VPS providers use hypervisors (KVM, VMware, Xen) to divide physical CPU cores among virtual machines. There are two allocation models:
- Dedicated vCPU – The virtual core is pinned to a physical core exclusively. No other VPS can use that core. This guarantees consistent performance but costs more.
- Burstable / Shared vCPU – The virtual core competes with other tenants for physical CPU time. The hypervisor uses a weighted fair-share scheduler. You get a certain percentage of a core, and if other VPS instances are idle, you can burst above your baseline.
You can detect CPU contention by checking the steal time metric. High steal time means the hypervisor is delaying your vCPU because other tenants need the physical core:
top -b -n1 | grep %st
# Or use vmstat
vmstat 1 5 | awk '{print $17}'
If your steal time regularly exceeds 5–10%, your VPS is overprovisioned. Compare VPS providers on our comparison table to find those with transparent CPU allocation policies.
Memory Allocation: Guaranteed vs. Overcommitted
RAM is the most straightforward resource — a well-run VPS provider guarantees the advertised amount. However, some budget providers use memory ballooning, where the hypervisor can reclaim unused memory from your VM and give it to another:
- Balloon driver – A kernel module (
virtio_balloon) that allows the host to reclaim memory. Check if it is active:lsmod | grep balloon - KSM (Kernel Same-page Merging) – The hypervisor deduplicates identical memory pages across VMs. This saves RAM but adds CPU overhead.
- Swap on host – Some overcommitted providers host-swap your VM’s memory, causing severe performance degradation.
To verify your actual available memory, run:
free -h
cat /proc/meminfo | grep -E "MemTotal|MemAvailable|Committed"
The MemAvailable value (kernel 3.14+) estimates how much memory is truly available for new applications after accounting for caches and reclaimable pages.
Disk I/O: Fair Queuing and Throttling
Storage performance varies more between VPS providers than any other resource. The hypervisor enforces I/O limits using:
- IOPS caps – Hard limit on read/write operations per second
- Throughput caps – Maximum MB/s for sequential I/O
- Weight-based fair queuing – Proportional allocation when the storage subsystem is under contention
Benchmark your disk I/O with fio, which bypasses the page cache and measures true performance:
# Random 4K read/write (IOPS test)
fio --name=randtest --ioengine=libaio --direct=1 --bs=4k --iodepth=32 --size=512M --rw=randrw --rwmixread=70 --runtime=30
# Sequential 1M read/write (bandwidth test)
fio --name=seqtest --ioengine=libaio --direct=1 --bs=1M --iodepth=16 --size=1G --rw=read --runtime=30
Network Throttling and Fairness
Network bandwidth on a VPS is typically limited by one of three mechanisms:
- TC (Traffic Control) – Linux tc qdisc rules at the hypervisor level
- vNIC rate limiting – The virtual NIC is configured with a max bandwidth in the hypervisor
- Physical port shaping – The top-of-rack switch enforces per-port bandwidth limits
Test your network throughput with iperf3:
iperf3 -c iperf.he.net -t 30
# For full duplex
iperf3 -c iperf.he.net -t 30 --bidir
CPU Steal Time: The Overprovisioning Indicator
Steal time is the most important metric for detecting resource contention. The kernel reports it in /proc/stat as the steal column. Monitor it continuously:
mpstat -P ALL 5
# Look for the %steal column
| Steal % | Severity | Action |
|---|---|---|
| 0–2% | Normal | No action needed |
| 2–5% | Mild | Monitor; consider moving compute-bound workloads |
| 5–10% | Moderate | Investigate provider; file a support ticket |
| 10%+ | Critical | Migrate to a different VPS plan or provider |
If you experience sustained high steal time, see why our VPS benchmarks matter for identifying providers with honest resource allocation.
How to Verify Your Provider’s Resource Guarantees
Use these commands to check resource allocation on any Linux VPS:
# CPU info
lscpu | grep -E "CPU|Core|Thread|NUMA"
nproc
# Memory
free -h
# Disk (check if it's network-attached or local)
lsblk -d -o NAME,SIZE,ROTA,TYPE,MOUNTPOINT
cat /sys/block/vda/queue/rotational # 0=SSD, 1=HDD
# Hypervisor detection
systemd-detect-virt
Conclusion
Understanding VPS resource allocation — how CPU shares are scheduled, how memory is guaranteed or ballooned, and how I/O limits are enforced — is essential for making informed hosting decisions. Monitor steal time, benchmark your disk with fio, and test your network with iperf3 to verify your provider delivers what they promise. When your workload outgrows a shared VPS, the knowledge of how resources work under the hood helps you choose the right upgrade path. Compare VPS providers on our comparison table to find providers with transparent and performant resource allocation.




Leave a Reply
You must be logged in to post a comment.