How to Read Cheap VPS Offer Without Regret
Break down cheap VPS offers line by line: vCPU oversell, “unlimited” bandwidth rules, NVMe claims, renewal cost, and a 30-minute acceptance test.
Wetín cheap VPS offer no tell you
Read cheap VPS offer backwards, because na the price be the least useful number for the page. Wetin decide whether the box good na the part wey the listing no print: the oversell ratio behind the vCPU count, the fair use clause behind the word "unlimited", the renewal price after the first term, and whether backups and the IPv4 address dey billed on top. This guide go take listing line by line, then give you acceptance test to run for the box while you still fit ask for your money back.
None of this mean say low price na trick. Older hardware, denser packing, self-service support, and thinner platform redundancy na how low price fit possible at all. The work na to know which trade-off you accept before your users discover am for you. Everything below dey run on Ubuntu 24.04 with the packages wey dey available for August 2026.
vCPU no be core
vCPU na scheduling slot, e no be piece of silicon. For KVM (kernel-based virtual machine), every vCPU na thread for the host, and host scheduler dey put that thread for physical core when na im turn. Host fit sell four vCPUs against one physical core, and every guest still go report the full count for nproc. The number for the listing na the highest limit of wetin you fit request, and e no talk anything about wetin dem reserve for you.
Oversell ratio na how many vCPUs host dey sell per physical core. For 1:1, na you alone get the core. Cheap plans dey use higher ratio, and dem almost never publish the ratio. So, treat any listing wey no talk "dedicated core" or "dedicated vCPU" as shared. Shared fit work for most jobs because most servers dey idle most of the time. E go stop to work when your busy hour na also everybody else busy hour.
You fit measure the effect from inside the guest. When your vCPU ready to run but host give the physical core to another guest, dem dey count that wait as steal time: the st column for vmstat and %st for top. Steal time na how noisy neighbour dey show for your own metrics, and na the most useful number for this guide because listing no fit fake am.
Dedicated core still dey shared for other ways. Memory bandwidth, last level cache, and storage path belong to the whole host. "Dedicated vCPU" remove the biggest source of variation. E no remove everything.
Check the CPU model too, with lscpu. Two plans fit both talk "4 vCPU", while their single-thread speed differ by factor of two, because one host fit dey several CPU generations older. Old silicon for low price fit be fair trade for build agent, but e no good for checkout page.
"Unlimited bandwidth" na at least four different products
Dem dey describe traffic in four ways, and dem no mean the same thing.
- A metered allowance. The listing go give one number, like "2 TB per month" or something similar. Wetin matter na wetin happen after you pass am: overage charge for every extra TB, or speed cut go something very slow until the month change. Find out which one e be before you need the information.
- An unmetered plan wey get fair use clause. Dem no dey count traffic, and acceptable use policy go set the limit with words instead of numbers. Search that document for "fair use", "sustained", "excessive" and "abuse".
- A port speed cap. 100 Mbit/s port go limit you according to physical speed, no matter wetin the traffic policy talk.
- Combination of the last two: unmetered traffic for slow port. Na this one common pass for cheap plans, and the offer dey honest as long as you read the port speed.
The data behind this chart
[
{
"label": "100 Mbit/s",
"tb_ceiling_30d": 32,
"hours_per_tb": 22.2
},
{
"label": "200 Mbit/s",
"tb_ceiling_30d": 65,
"hours_per_tb": 11.1
},
{
"label": "500 Mbit/s",
"tb_ceiling_30d": 162,
"hours_per_tb": 4.4
},
{
"label": "1 Gbit/s",
"tb_ceiling_30d": 324,
"hours_per_tb": 2.2
}
]Port speed na hard ceiling, and the arithmetic simple. 100 Mbit/s na 12.5 megabytes per second, so 30 days of that port at full rate go move about 32 TB. The same 30 days for 1 Gbit/s port go give 324 TB. TB here mean 10^12 bytes, na the unit wey hosts dey use bill. This na arithmetic, no be measurement, and no real server dey run port flat out for one month.
The second column na the one wey dey change plans. To move one terabyte go take about 22.2 hours for 100 Mbit/s port and 2.2 hours for gigabit port. If your recovery plan na "pull the backup down and start again", that number na your recovery time.
Two more details dey hide for this line of the spec. "1 Gbit/s shared" mean say dem share the port with other guests, so the ceiling above na best case, no be promise. And some hosts dey bill traffic with the 95th percentile of the sampled rate instead of total volume, so steady load fit cost far less than spiky one.
No matter wetin the plan talk, measure your own use. vnstat dey read interface counters and keep history.
sudo apt install -y vnstat
sudo systemctl enable --now vnstat
vnstat -d
vnstat -mImmediately after install, vnstat go print Not enough data available yet. because its database no get samples yet. Come back the next day, and vnstat -m go give you monthly total wey you fit compare with the allowance wey you dey pay for.
This NVMe claim dey real, and you fit check am?
lsblk -d -o NAME,ROTA,SIZE,MODELROTA wey be 0 mean say guest receive information say the device no be rotational. Hypervisor dey provide that value, so e describe wetin host advertise, no be the media wey dey underneath. The MODEL column dey usually empty for virtio disk like /dev/vda, and e show generic QEMU HARDDISK for SCSI attached disk. You dey check virtual disk, so the label no prove anything.
The property wey worth checking na latency, and the real difference dey between local NVMe and network attached volume. Network volume fit show large sequential throughput figure and still feel slow, because throughput dey measured with many requests in flight while database dey wait for one small write at a time. Measure for queue depth 1 to check latency, then use deeper queue to check IOPS (input/output operations per second).
sudo apt install -y fio
fio --name=lat --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=1 --numjobs=1 --runtime=60 --time_based --group_reporting
fio --name=iops --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randread --bs=4k --iodepth=32 --numjobs=1 --runtime=60 --time_based --group_reporting
rm -f fiotestRead the clat percentiles block, especially the 99.00th line. Na the completion latency wey the slowest one percent of requests experience, and na wetin user go feel as stall. As rough guide, local NVMe for queue depth 1 dey answer within hundreds of microseconds, while network attached volume dey answer in milliseconds. Compare your own two runs instead of trusting one published figure, and run the pair three times across one day, because disk wey share resources with other tenants fit behave differently for 03:00 and 20:00.
fio dey write the 1 GB file first, so leave enough space for the disk, and remember say the test dey use any IOPS allowance wey the plan apply. When you only need quick reading, ioping -c 20 . go give you latency for one line. Benchmark only get value if you fit repeat am, so save the exact command lines and the output with the date attached.
Wetín dey included, and wetín dem go bill on top
- IPv4. Normally, one address dey included. Some cheap plans give you shared address behind NAT (network address translation), with small number of forwarded ports. This one mean say you no fit run anything for port 443 wey belong to you. Check with
ip -4 addr show scope globalandcurl -4 https://icanhazip.com. If the two answers different, e mean say you dey behind NAT. - IPv6. Routed /64 give you addresses for containers and anything wey you want make people reach from outside. One /128 cover outbound traffic and small other things.
- Backups. Automatic backups normally na paid add-on. Snapshots often dey free, but snapshot dey for the same infrastructure with the disk wey e copy. So e protect you from your own mistake, but e no protect you if you lose the host. Keep one copy outside the server, no matter wetin the plan include.
- DDoS handling. Many hosts respond to volumetric attack (distributed denial of service) by null routing your IP address for fixed period. The server remain healthy. Na just say internet no fit reach am. Ask for the trigger threshold and how long the null route go last.
- Support scope. For unmanaged plan, na you be the system administrator, and the host responsibility stop for the hypervisor and network. Na this be the biggest real cost difference between two plans wey get identical specifications.
- Licences and panels. Control panel, commercial operating system, or mail add-on fit cost more every month than the server itself.
Kinni virtualization type you dey buy?
systemd-detect-virtkvm or qemu mean full virtualization: you get your own kernel and the modules wey you choose to load inside am. lxc, lxc-libvirt or openvz mean container wey dey share host kernel. none mean bare metal.
The difference dey show well when kernel dey shared. sudo modprobe wireguard fail, and ip link add dev wg0 type wireguard return RTNETLINK answers: Operation not supported, because container no fit load kernel module wey host never load. free -h fit report host memory instead of your own when lxcfs no dey, so your monitoring dey read numbers wey no concern your server. Other containers often dey share swap with you, and running virtual machines inside your VPS no possible at all. Container plans cheaper for a reason, and for static site or small application, dem still be the correct thing to buy.
Wetin be the renewal price?
The price wey dem advertise often cover only the first term. Look for the words "renews at" for the order page, and check the term length wey dem attach to the discount. Discount wey last one year and discount wey remain active for the whole plan na different products, even though dem get the same first invoice.
Read the refund terms with the same care. Note how long the money-back window last, whether e start when you place the order or when provisioning happen, whether add-ons like extra IP addresses dey refundable, and whether annual prepayment go return pro rata. Then set reminder for your calendar one week before the renewal date, because the cheapest time to leave na before the invoice.
Switching later no free too. Moving a few hundred gigabytes of data, rebuilding configuration, waiting for DNS (domain name system) time to live values, and rebuilding IP reputation for a mail server fit take the whole weekend. Include that weekend when the saving look convincing. Wetin VPS really cost for one year na the figure wey you suppose compare, no be the first month.
The thirty minute acceptance test
Run this for the new box before you migrate anything, and while refund window still open. Secure am first: the first ten minutes on a new VPS cover the user account, the keys and the firewall. Then install the tools.
sudo apt update
sudo apt install -y sysbench fio ioping sysstat stress-ng vnstat mtr-tiny curlCheck 1: wetin dem actually give me?
systemd-detect-virt
nproc
lscpu | grep -E 'Model name|MHz|Hypervisor'
free -h
lsblk -d -o NAME,ROTA,SIZE,MODEL
ip -4 addr show scope global
curl -4 -s https://icanhazip.comYou suppose see the virtualization type, CPU model, and memory figure wey dey within few percent of wetin you buy. free -h wey report RAM wey pass wetin the plan sell by far mean say na container without lxcfs, no be bonus. Public address from curl wey never show for ip -4 addr mean say dem dey share the IPv4 address.
Check 2: how fast one thread be, and how much steal dey when load dey?
sysbench cpu --cpu-max-prime=20000 --threads=1 runRecord the events per second line. Single-thread speed decide how fast page go render and how long build go take, and na this number cheap plans dey differ most. Now load every vCPU and watch wetin scheduler actually give you.
stress-ng --cpu 0 --timeout 300s &
vmstat 1 30
mpstat -P ALL 1 10--cpu 0 start one worker for every online CPU. Watch the st column for vmstat and %steal for mpstat. Occasional single digits for shared plan normal. If steal dey double digits for minutes, e mean say dem oversubscribe the physical cores, so your work dey queue behind another tenant. Run sysbench again while load dey on: if single-thread score collapse, e mean say your vCPUs dey compete with each other. Most times, dem na sibling threads for one core instead of separate cores. Low score with almost zero steal na the other case: host don apply CPU cap, and you no fit see am directly from inside the guest.
Check 3: how disk dey behave for queue depth 1?
Run the two fio commands from the NVMe section and keep both results: the 99th percentile latency for queue depth 1 and the IOPS for depth 32. Then check writes, because many volumes dey much slower for that direction.
fio --name=wlat --filename=fiotest --size=1G --direct=1 --ioengine=libaio --rw=randwrite --bs=4k --iodepth=1 --numjobs=1 --runtime=30 --time_based --group_reporting
rm -f fiotestA dd sequential figure na the number listing like quote and the least useful one you fit collect, because sequential streaming no be wetin database or busy web application dey spend the day doing. Collect am if you want compare. Decide based on the latency.
Check 4: how network dey look from where your users dey?
First pull something large go down to the VPS.
curl -o /dev/null -w 'in: %{speed_download} bytes/s\n' https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xzThat one test only one path into your server. The direction wey matter na the one your users take, so serve a file and pull am from machine wey dey near dem.
fallocate -l 100M /var/tmp/100mb.bin
python3 -m http.server 8080 --directory /var/tmpThen, from laptop or server wey dey close to your audience:
curl -o /dev/null -w 'down: %{speed_download} bytes/s\n' http://YOUR_SERVER_IP:8080/100mb.bin
mtr --report --report-cycles 50 YOUR_SERVER_IPPort 8080 must dey open for firewall while you dey do this. Afterwards, close am and delete the file, then stop the Python server with Ctrl+C. For the mtr output, read the loss column for the final line. Loss for intermediate hop with no loss for destination normal, because routers give the ICMP (internet control message protocol) replies wey mtr count with low priority. That no be loss for your traffic. Loss for the last line na real loss.
Repeat the network test during your users' peak hour. One sample for 02:00 only tell you about quiet network.
Save all four results for file with the date, then run dem again after one month. Plan wey fine for day one but slow for week six na plan wey the host don fill up, and the day one numbers na wetin go help you know that instead of guessing.
When cheap VPS dey the right choice
Low price dey buy real things, and e dey cost real things too. Older CPUs, higher oversell ratio, slower network storage, self-service support, and less redundancy na wetin make the price small. Match dem with the work wey you wan do.
Cheap VPS correct for development box, CI runner, VPN endpoint, monitoring node, backup target, or static site. All of dem fit survive one slow minute. Cheap VPS na bad trade where latency na the product: checkout page, interactive API, game server, or database wey another service dey wait for. The test above go tell you which one you buy, and e go tell you while the answer still dey cost nothing.
FAQ
Wetin vCPU mean for cheap VPS offer?
A vCPU na one virtual processor wey dem present to your guest, and e map to one thread wey host scheduler run for physical core when e fit. Na allowance to request CPU time, no be reserved hardware, unless listing talk say "dedicated core" or "dedicated vCPU". Hosts dey sell more vCPUs pass the cores wey dem get, and dem hardly publish that ratio, so measure am. Run stress-ng --cpu 0 --timeout 300s and monitor the st column for vmstat 1. If Steal dey double digits, e mean say you dey wait for cores wey other guests dey use.
"unlimited bandwidth" really mean say e unlimited?
No. The limit usually dey two places outside the plan description. The acceptable use policy set fair use limit with words, while port speed set hard ceiling in bytes. A 100 Mbit/s port no fit pass more than about 32 TB for 30 days even when e dey full rate. So ask for the port speed and read the policy for the words "fair use" and "sustained". Then track wetin you really send with vnstat -m and compare am with the allowance.
How I fit know whether my VPS really dey use NVMe?
You no fit confirm the physical media from inside guest, because lsblk only report wetin hypervisor advertise: ROTA of 0 and empty or generic model string. Wetin you fit measure na the behaviour. Run fio with --direct=1 at --iodepth=1 and read the 99.00th percentile completion latency. Local NVMe dey answer within hundreds of microseconds, while network attached volume dey answer in milliseconds even when the sequential throughput look impressive. Repeat the test some times across the day, because shared disk no dey behave the same for 03:00 and 20:00.
Wetin I suppose test before refund window close?
Four things, for this order. Wetin the box really be, from systemd-detect-virt, lscpu and free -h. Single thread speed, from sysbench cpu --cpu-max-prime=20000 --threads=1 run. Steal time under full load, from stress-ng --cpu 0 wey you monitor with vmstat 1. Disk latency, from fio at queue depth 1. Then measure the network from machine wey dey near your users with mtr and download one file wey you serve from the box. Thirty minutes dey enough for everything, and if you do am before you migrate anything, refund window still dey serve as leverage.