Marketing pages promise dedicated vCPUs, NVMe storage, and blazing network speeds. Reality is messier. I spun up identical VPS instances across eight providers—DigitalOcean, Linode (Akamai), Vultr, Hetzner, OVHcloud, UpCloud, Contabo, and IONOS—and ran the same battery of tests on each to see where the spec sheet ends and actual performance begins.
This isn't about picking a winner. It's about understanding what you're buying when you hand over $10 or $50 a month, and which metrics actually matter for your workload.
Test methodology
Every provider was tested on a comparable tier: 2 vCPU, 4 GB RAM, and SSD or NVMe storage in a European datacenter. I ran three core benchmarks on fresh Ubuntu 22.04 LTS installs with minimal configuration—sysbench for CPU and disk I/O, iperf3 for network throughput, and UnixBench for a composite system score.
Each test ran three times. I averaged the results and threw out obvious outliers caused by noisy neighbors or transient network issues. The goal was to capture typical performance, not best-case or worst-case spikes.
CPU performance
CPU tests used sysbench to calculate prime numbers up to 20000. Single-threaded and multi-threaded runs reveal how the hypervisor allocates CPU time and whether the advertised vCPU count translates to real compute power.
sysbench cpu --threads=1 --time=60 run
sysbench cpu --threads=2 --time=60 run
Providers with dedicated CPU plans consistently scored higher on single-threaded tasks. Shared CPU tiers showed more variance—one provider's "2 vCPU" instance performed closer to 1.3 vCPUs under load, likely due to overcommitment on the physical host.
Hetzner and UpCloud delivered the tightest performance ranges across multiple test runs, suggesting stable CPU allocation. Contabo and IONOS showed wider swings, which isn't surprising given their budget positioning and higher density per node.
Disk I/O
Disk tests measured random read/write IOPS and sequential throughput using sysbench fileio. I tested with 16 KB block sizes for random I/O and 1 MB blocks for sequential, both common in database and application workloads.
sysbench fileio --file-test-mode=rndrd --file-total-size=4G prepare
sysbench fileio --file-test-mode=rndrd --file-total-size=4G run
sysbench fileio --file-test-mode=rndrd --file-total-size=4G cleanup
NVMe claims are everywhere, but real IOPS varied wildly. One provider advertised NVMe and delivered random read IOPS barely above what you'd expect from SATA SSD. Another didn't mention storage type at all but consistently hit four-figure IOPS.
Sequential throughput mattered less in practice. Most application bottlenecks show up in random I/O—database queries, cache lookups, file metadata operations. If your workload is disk-heavy, filter by random IOPS first and ignore the sequential benchmarks providers love to advertise.
Network throughput
Network tests used iperf3 to measure bandwidth to a nearby public server in the same region, then to a server two regions away. Both TCP and UDP tests ran for 60 seconds to account for burst vs. sustained performance.
iperf3 -c iperf.example.net -t 60
iperf3 -c iperf.example.net -t 60 -u -b 1G
Intra-region bandwidth was almost always at or near the advertised limit. Cross-region performance told a different story—some providers clearly prioritize local traffic and throttle inter-region transfers, while others maintained consistent speeds regardless of destination.
Latency to major public DNS resolvers (1.1.1.1, 8.8.8.8) varied by 5-15 ms depending on datacenter location and upstream peering. That matters if you're serving latency-sensitive APIs or real-time applications.
What the benchmarks actually reveal
Raw numbers are useful, but the patterns are more interesting. Three things stood out across all the tests.
First, advertised specs are a starting point, not a guarantee. "2 vCPU" can mean a guaranteed allocation or a best-effort share of a physical core. Read the fine print on CPU steal time and overcommitment policies.
Second, variance matters as much as peak performance. A provider that delivers 3000 IOPS on Tuesday and 1200 IOPS on Thursday is harder to capacity-plan around than one that consistently delivers 2000. Check reviews and support forums for complaints about noisy neighbor issues.
Third, the cheapest option isn't always the worst. Contabo's budget pricing comes with trade-offs in consistency, but if your workload tolerates occasional slowdowns and you're cost-sensitive, it's viable. Conversely, premium pricing doesn't guarantee premium performance—one higher-priced provider landed in the middle of the pack on every test.
Picking the right provider for your workload
Benchmarks measure potential. Your workload determines what matters.
CPU-bound applications
If you're running build servers, video encoding, or scientific computing, single-threaded CPU performance and low steal time are priorities. Look for providers that offer dedicated CPU plans or explicitly limit the number of VMs per physical host.
Hetzner and UpCloud both offer strong CPU performance at their respective price points. DigitalOcean's dedicated CPU droplets are pricier but deliver consistent performance, which matters when you're billing customers or running CI/CD pipelines.
Database and disk-heavy workloads
Random IOPS and disk latency dominate here. If you're self-hosting PostgreSQL, MySQL, or Redis, you need stable four-figure random read IOPS and low write latency.
UpCloud and Vultr both performed well on random I/O tests. Linode's block storage add-ons are worth considering if you need to scale storage independently of compute. Avoid providers that showed high variance in disk performance unless you plan to use network-attached storage or a managed database service.
Web servers and static content
Network throughput and latency matter most. If you're serving HTTP requests, WordPress sites, or APIs, prioritize intra-region bandwidth and low latency to your target audience.
DigitalOcean, Vultr, and Linode all have mature global networks with good peering. Hetzner offers excellent value in Europe but has fewer datacenter options outside the EU. Check where your users are and pick a provider with a nearby datacenter.
Burstable and development workloads
For staging environments, personal projects, or bursty traffic, consistency is less critical and cost becomes the main factor. Shared CPU tiers and budget providers make sense here.
Contabo and IONOS deliver usable performance for light workloads at aggressive prices. Just don't run production databases on them without testing under load first.
Beyond the benchmarks
Performance is only part of the equation. I've handled enough support tickets to know that uptime, support quality, and billing surprises matter as much as IOPS.
Uptime and incident history
Check third-party status trackers and historical incident reports. Every provider has outages, but how they communicate and recover matters. Providers with transparent status pages and post-incident reports earn trust.
Support responsiveness
If you're managing production infrastructure, ticket response time and engineer expertise matter. Some providers route all tickets through L1 support with scripted responses, while others give you access to engineers who know how to debug kernel panics and network issues.
In my experience, Linode and UpCloud have consistently helpful support teams. DigitalOcean's community tutorials are excellent but ticket response can be slow. Budget providers often have limited support outside business hours.
Billing and cost predictability
Read the bandwidth policies carefully. Some providers include generous transfer allowances; others charge per GB after a low threshold. Snapshot and backup pricing varies widely—what looks cheap on the VPS page can get expensive once you add redundancy and backups.
Hetzner includes 20 TB of traffic on even budget VPS plans. DigitalOcean's bandwidth pooling across droplets is useful if you run multiple instances. Vultr and IONOS both have lower included transfer and charge for overages, which can surprise you during traffic spikes.
Practical next steps
Start by identifying your workload's primary constraint—CPU, disk, or network. Run your own tests if you have time. Deploy a test instance, run sysbench and iperf3, and measure what matters to your application.
If you're migrating from shared hosting or another VPS, load test before you move production traffic. I've seen too many migrations fail because the new VPS couldn't handle the same MySQL query load as the old environment, despite better specs on paper.
Use multiple datacenters for anything user-facing. Geographic distribution reduces latency and gives you failover options. Most providers make it easy to spin up instances in different regions and snapshot for quick replication.
Monitor your VPS after deployment. CPU steal time, disk wait, and network errors are early warnings that your chosen tier or provider isn't meeting your workload's needs. Set up basic monitoring with Netdata, Prometheus, or your provider's built-in tools.
Common questions
Which VPS provider is fastest overall?
There's no universal fastest. UpCloud and Hetzner lead on raw performance, but your workload and datacenter location matter more than aggregate benchmarks.
Are budget VPS providers worth it?
For development, staging, and non-critical workloads, yes. Contabo and IONOS deliver usable performance at low prices. For production databases or high-traffic sites, spend more on consistency.
How much does CPU steal time matter?
On shared CPU plans, occasional steal is normal. If you consistently see above 5%, your workload is fighting for resources and you should upgrade to a dedicated CPU plan or a different provider.
Should I trust advertised NVMe claims?
Test the random IOPS yourself. NVMe is faster than SATA in theory, but overprovisioned NVMe storage can perform worse than well-tuned SATA SSDs. The storage type matters less than the IOPS the provider actually delivers.
Do I need a managed VPS or unmanaged?
If you're comfortable with SSH, package management, and basic security, unmanaged saves money. Managed VPS makes sense if you want the provider to handle OS updates, security patches, and server monitoring.
What to prioritize
Match the provider to your workload's limiting resource. CPU-heavy apps need dedicated vCPUs and low steal time. Databases need consistent random IOPS. Web servers need low latency and strong network peering.
Run benchmarks on a test instance before committing. Advertised specs are a starting point—real performance under your workload is what matters. Check support quality, uptime history, and billing policies before you migrate production traffic, because switching providers mid-crisis is painful.
No single provider wins every category. Pick based on what your application actually needs, not what the marketing page promises.
