Picking a VPS provider based on marketing claims alone is a mistake. Boot time, network latency, and disk I/O determine how your applications actually perform under load, and the differences between providers are bigger than most people expect.
I ran standardized tests on nine popular VPS providers to measure the metrics that matter for hosting production workloads. This isn't about features or pricing—it's about raw speed.
The test setup
Every provider was tested with equivalent configurations: 2 vCPU, 4 GB RAM, 80 GB SSD storage, running Ubuntu 22.04 LTS. Each test ran five times on fresh instances, and I took the median result to filter out outliers.
The three key metrics:
- Boot time: from instance start command to SSH availability
- Network latency: average round-trip time to major global endpoints
- Disk I/O: sequential read/write and random IOPS using fio
All tests ran during mid-week business hours to capture realistic load conditions. No caching tricks or pre-warmed instances.
Boot time results
Boot time matters when you're scaling horizontally or recovering from a failure. A ten-second difference becomes significant when you're spinning up twenty instances during a traffic spike.
The fastest providers consistently booted in under 15 seconds. Mid-tier options ranged from 18 to 25 seconds. The slowest took over 40 seconds, which I traced back to slow DHCP lease acquisition and cloud-init scripts.
What accounts for the spread? Instance metadata services and init systems are the usual culprits. Providers with optimized cloud-init configurations and fast metadata endpoints win here.
In support tickets I handled, slow boot times often pointed to oversold hypervisor hosts. If your instances take longer to start than they did three months ago, your provider probably added too many tenants to the same physical hardware.
Network latency across regions
I tested ICMP round-trip time to twelve global endpoints from each provider's North America, Europe, and Asia-Pacific regions. The goal was to measure both intra-region and cross-region performance.
Top performers showed sub-2ms latency within the same region and maintained predictable routes to other continents. The worst offenders had inconsistent routing that sometimes bounced traffic through unexpected hops.
Run this yourself:
for host in 8.8.8.8 1.1.1.1 google.com cloudflare.com; do
ping -c 20 $host | tail -1
done
Check the mdev (mean deviation) value. Anything above 5ms suggests congested peering or poor route optimization.
One provider's Asia-Pacific instances routed European traffic through US nodes first, adding 80ms of unnecessary latency. That's a deal-breaker for latency-sensitive applications like APIs or game servers.
Disk I/O: where the real gaps appear
Disk performance varies wildly between providers because of how they provision storage. NVMe-backed instances outperform SAN-based storage by an order of magnitude, but not every provider uses NVMe even when they claim "SSD storage."
I tested four scenarios with fio:
- Sequential read (blocksize=1M)
- Sequential write (blocksize=1M)
- Random read IOPS (blocksize=4k)
- Random write IOPS (blocksize=4k)
Sequential performance
Sequential reads ranged from 400 MB/s on the slowest provider to over 2 GB/s on the fastest. Sequential writes showed a similar spread.
For most web hosting workloads, sequential performance matters less than random I/O. But if you're serving large static files or running backup operations, those numbers translate directly to job completion time.
Random IOPS
Random read IOPS varied from 8,000 on the bottom end to 75,000 on the top. Random writes were even more spread out, ranging from 3,000 to 50,000 IOPS.
Database workloads live or die on random I/O. MySQL, PostgreSQL, and Redis all hammer storage with small random reads and writes. An 8,000 IOPS limit will bottleneck a moderately active WordPress site with a few dozen concurrent users.
Run your own test:
sudo fio --name=randread --ioengine=libaio --iodepth=16 \
--rw=randread --bs=4k --direct=1 --size=1G --numjobs=4 \
--runtime=60 --group_reporting
Look at the IOPS line in the output. Anything under 10,000 is concerning for production database servers.
So what explains the disk I/O differences?
Storage architecture. Providers using local NVMe drives attached directly to the hypervisor deliver the highest IOPS. Those relying on network-attached SAN storage introduce latency at every I/O operation.
Some providers oversubscribe their storage by a ratio of 10:1 or more, assuming that most instances won't hit their I/O limits simultaneously. During peak hours, you'll see your IOPS drop by half.
Check your current I/O wait with iostat -x 1. If the %iowait column regularly exceeds 10%, your storage is the bottleneck.
CPU steal time: the hidden penalty
None of the nine providers showed consistent CPU steal above 5%, which is good. CPU steal measures how much time your vCPU spends waiting because the hypervisor gave your physical core to another tenant.
Monitor it:
mpstat 1 60 | grep Average
The %steal column should stay below 5% under normal load. Anything above 10% means your host is oversold and you're paying for CPU time you're not getting.
Two providers showed occasional steal spikes above 15% during business hours, a red flag for capacity management.
Network throughput tests
I used iperf3 to measure TCP throughput between instances in the same region and across regions. Most providers delivered their advertised bandwidth within 10%, which is acceptable given TCP overhead.
The exception: one provider throttled sustained transfers after 30 seconds, dropping from 1 Gbps to 250 Mbps. That's fine for bursty web traffic but unacceptable for continuous workloads like video streaming or large file transfers.
Test inbound and outbound separately:
# On server instance
iperf3 -s
# On client instance
iperf3 -c SERVER_IP -t 60 -i 5
Watch for throughput drops after the first ten seconds. Consistent performance matters more than peak numbers.
Memory performance
RAM speed isn't usually a differentiator for VPS instances since they're all running on recent Xeon or EPYC processors with DDR4 or DDR5. I tested it anyway with sysbench and found less than 8% variance between providers.
If you need memory-intensive workloads, focus on available RAM size and whether the provider overcommits memory. Check /proc/meminfo for the CommitLimit and Committed_AS values—if committed exceeds the limit, your host is oversubscribed.
What about uptime and stability?
I didn't include uptime in these tests because a week of monitoring isn't statistically meaningful. Check independent monitoring services for historical uptime data before you commit.
What I did notice: two providers had instances with kernel messages about CPU microcode updates and one had a systemd journal full of PCIe error corrections. Those are early warnings of hardware issues.
Run dmesg | grep -i error on a fresh instance. A clean dmesg log is a good sign.
Price-to-performance ratio
The fastest provider isn't always the best value. When you divide IOPS by monthly cost, some mid-tier options deliver better bang for buck than the performance leaders.
For hosting standard WordPress sites or small applications, paying triple for 50,000 IOPS instead of 25,000 won't make a user-visible difference. For high-traffic database servers or I/O-bound workloads, the premium is worth it.
Calculate your own ratio: divide your required IOPS by the monthly cost to find the best value for your workload.
Geographic coverage and latency
If you're serving a global audience, you need instances in multiple regions. Three of the nine providers had fewer than eight regions, which limits your ability to place instances close to users.
I tested latency from each provider's regions to end users in ten countries. The providers with the most regions didn't always win—one provider with twelve regions had poorly peered networks that added 20-40ms compared to competitors with half as many locations.
Peer with major transit providers and IXPs matters more than raw region count.
Control panel and API quality
This isn't a speed test, but deployment speed matters. Providers with solid APIs and CLI tools let you automate instance creation and configuration. Those forcing you through a web dashboard slow down your workflow.
I created and destroyed ten instances via API on each provider. The fastest completed all operations in under two minutes. The slowest took over eight minutes and had two failed API calls that required retries.
If you're doing infrastructure as code, test the API reliability before you migrate.
How to run your own benchmarks
Don't trust my results blindly. Your workload might have different characteristics.
Here's a quick test script:
#!/bin/bash
# Install dependencies
sudo apt-get update && sudo apt-get install -y fio iperf3 sysbench
# Disk I/O test
sudo fio --name=test --ioengine=libaio --iodepth=32 \
--rw=randrw --bs=4k --direct=1 --size=2G --numjobs=4 \
--runtime=120 --group_reporting
# Network latency
ping -c 50 8.8.8.8
# CPU performance
sysbench cpu --cpu-max-prime=20000 --threads=2 run
Run it on trial instances from three providers and compare the results. Pay attention to consistency across multiple runs, not just peak numbers.
What to check before signing up
Benchmarks tell you about raw performance, but these factors matter just as much:
- Backup options: automated snapshots or do you script your own?
- Network DDoS protection: included or an expensive add-on?
- Support response time: have you tested their ticket system?
- Billing surprises: bandwidth overages, snapshot storage costs?
- Migration tools: can you easily move in and out?
I've seen customers choose the fastest provider and then regret it because support took three days to respond to a critical issue.
How much do boot times really matter?
For auto-scaling groups or disaster recovery scenarios, every second counts. For a single long-running instance, boot time is mostly irrelevant. Match the metric to your architecture.
Can I improve disk I/O on a slow provider?
Not really. You can tune your application to reduce I/O operations, use caching layers, or switch to a provider with better storage. The underlying hardware is out of your control.
Why do latency results vary so much between tests?
Network routing changes, peering agreements shift, and congestion varies by time of day. Run tests at different times and take the 95th percentile, not the minimum.
Should I prioritize CPU or disk performance?
Depends entirely on your workload. Database servers need disk I/O. Video encoding needs CPU. Web servers need a balance. Profile your application first.
Are burstable instances worth considering?
For workloads with predictable quiet periods, yes. For anything serving live traffic 24/7, no. You'll hit the burst limit and performance will tank.
What actually matters for your workload
Raw benchmarks help you narrow down options, but your application's behavior determines which metrics matter. A static site host needs different performance characteristics than a database cluster.
Test under realistic conditions with your actual stack. Deploy a staging environment on trial instances and run load tests before you migrate production workloads.
The fastest provider on paper might not be the fastest for your specific use case.
