Almost nobody sizes a VPS correctly on the first try. The common failure is not picking too small a plan — it is paying for headroom you never touch, month after month, on a server that idles at 4% CPU. The good news is that you can measure whether a plan is over- or under-provisioned in about twenty minutes using tools that cost nothing.
The four numbers that matter
Ignore vague “feels slow” impressions. Resource fit comes down to four metrics:
- CPU steal — time your vCPU waited while the host ran other tenants. Sustained steal above 5% means the host is oversold, not that your plan is too small.
- Load average vs vCPU count — load 1.0 on a 1-vCPU box is fully busy; the same load on a 4-vCPU box is idle.
- RAM usage and swap — steady swap activity is the clearest under-provisioning signal.
- Disk I/O wait — high iowait with low CPU use points at storage, not compute.
Free tools to collect them
You need nothing commercial. These ship with most distributions or install in seconds:
vmstat 1— columnsr,b,si,so, andstgive run queue, blocked processes, swap in/out, and steal in one line.toporhtop— live CPU and memory split per process.free -m— used RAM and what has spilled into swap.iostat -x 5— disk utilisation and await time.sar(sysstat) — overnight history, so you can judge peak, not just this second.nloadoriftop— network throughput against your plan’s cap.
Reading the results: over vs under
| Metric | Over-provisioned | Under-provisioned |
|---|---|---|
| CPU usage (peak) | Under 20% | Sustained near 100% |
| Load vs vCPU | 0.2× vCPU or lower | Greater than 1× vCPU |
| Swap in/out | Zero | Continuous activity |
| iowait | Near 0% | Above 20% |
| Steal time | Under 1% | Above 5% |
Run the collection over a full week, including your busiest hour. A single midday sample will tell you almost nothing; peak load is what your plan must survive.
Distinguishing over-provisioning from a host problem
High steal time is not a sizing issue — it means the physical host is crowded. Downgrading will not help; moving provider might. Conversely, high iowait with idle CPU means you bought the wrong storage tier, not the wrong RAM. Before you pay for an upgrade, confirm which of the four numbers is actually out of range. Upgrading RAM to fix an I/O bottleneck wastes money every month.
Turning the metrics into a plan change
- Peak CPU under 20% and no swap: you can likely drop a tier. Check the plan comparison for the next size down at the same storage.
- Swap active but CPU low: add RAM, keep the vCPU count.
- iowait high: move to NVMe storage before adding CPU.
- Steal high: benchmark the host, not your config — see whether another provider performs better.
Right-sizing is usually a downgrade, and it should be checked quarterly. Workloads drift: a service that needed 4 GB last year may now run comfortably in 2, or the reverse after a feature launch. Set a recurring calendar reminder and re-run the four checks.
Common misreadings that waste money
Even with the right tools, a few traps catch almost everyone. The first is judging by average instead of peak: a server that idles at 3% CPU for twenty-three hours and pins at 95% for one hour needs the headroom, and the average hides that entirely. The second is treating free RAM as waste. A few hundred megabytes of unused memory is healthy — an operating system that is constantly at the edge of its RAM has no room to absorb a traffic burst or a background job. The third is blaming CPU for what is really a disk problem: high iowait with comfortable CPU load means you need faster storage, not more cores.
- Measure peak over a full week, never a single sample.
- Leave a modest RAM cushion rather than running at the limit.
- Check iowait before assuming a CPU upgrade is needed.
- Watch for resource creep after every new deployment or feature launch.
A quarterly right-sizing routine
Fifteen minutes once a quarter is enough to keep a fleet correctly sized. Snapshot the four key numbers at your busiest hour, compare them against the thresholds above, and write down what changed since the last review. If peak CPU dropped below 20% with no swap activity, plan a downgrade. If swap is active or load exceeds your vCPU count, plan an upgrade. If steal time is elevated, the problem is the host, and the honest answer may be to migrate rather than to pay more for a crowded machine.
Record the outcome each time. Over a year these notes tell you whether your workload is genuinely growing or whether you have been paying for headroom that never gets used. That history is what turns right-sizing from a one-off cleanup into a durable saving.
Why this matters for budget buyers
Every tier you over-buy compounds. A $12 plan you only need $6 of is a $72 annual waste per server before you have optimised anything else. The measurements above take twenty minutes a quarter and need no paid tooling. Pair them with current budget VPS options and you can move to the correct tier with confidence rather than guesswork.
The discipline is simple: measure peak, not average; separate host problems from sizing problems; and treat every upgrade as a hypothesis to be tested. Done that way, right-sizing becomes one of the highest-return habits a price-conscious operator can build.
