Skip to content
Back to Blog
Performance11 min read

NVMe VPS Hosting: 7 Providers with Real Performance Data

Benchmark seven NVMe VPS providers on sustained IOPS, latency under load, and price-per-IOPS to find which deliver real storage performance.

Written by Abdul AbrorTechnical Hosting Support Engineer
NVMe VPS Hosting: 7 Providers with Real Performance Data
On this page

Every host claims NVMe. Few deliver the sustained IOPS your database actually needs when twenty users hit checkout at the same time.

I've spent months testing seven providers that market NVMe VPS plans, running storage benchmarks under synthetic load and real application workloads. The gap between marketing and reality is wide. Some hosts throttle IOPS after the first few seconds, others share a single NVMe drive across dozens of VMs, and a handful actually provision the fast, consistent storage they advertise. This article walks through what I measured, how the numbers translate to real application performance, and which providers are worth your money.

Why NVMe matters for VPS workloads

NVMe uses the PCIe bus instead of SATA. That architectural change means lower latency and higher queue depth. For a VPS running WordPress, MySQL, or Redis, the difference shows up in two places: random read IOPS when serving page requests, and write latency when committing transactions.

A SATA SSD tops out around 90,000 IOPS with sub-millisecond latency. NVMe can push 500,000 IOPS with latency measured in microseconds. Your VPS won't see those enterprise numbers because you're sharing the drive, but even a fraction of that headroom translates to faster database queries and shorter page load times under concurrent traffic.

The catch? "NVMe" on a spec sheet doesn't guarantee you'll see that performance. Overprovisioning, controller bottlenecks, and IOPS throttling all kill the advantage. I've seen hosts deliver worse sustained performance on NVMe than a decent SATA SSD setup simply because they crammed too many VMs onto one drive.

Testing methodology

I provisioned the entry-level NVMe VPS plan from each provider, usually the $10–$20/month tier. Each instance ran Ubuntu 22.04 LTS with a clean install, no control panel, and identical kernel settings. I used fio for synthetic benchmarks and sysbench for database workload simulation.

Three tests per provider:

  1. Random 4K read/write – 60 seconds, queue depth 32, measures peak IOPS
  2. Sustained mixed workload – 300 seconds, 70% read / 30% write, queue depth 16, shows throttling behavior
  3. MySQL OLTP – sysbench oltp_read_write with 10 threads, 100,000 transactions, captures real-world database latency

I ran each test three times and averaged the results. The goal wasn't to crown a winner but to surface patterns: does performance stay flat over time, does latency spike under load, and does the price match the delivered IOPS.

Provider 1: Vultr High Frequency Compute

Vultr's High Frequency line uses NVMe drives and dedicates more CPU cycles per VM than their standard instances. The $12/month plan gives you 1 vCPU, 2 GB RAM, and 32 GB storage.

Random 4K read hit around 55,000 IOPS in the first minute, then settled to 42,000 IOPS for the sustained test. Write IOPS stayed consistent at 18,000. Latency held under 0.8 ms for reads and 1.8 ms for writes even during the mixed workload. No obvious throttling.

The MySQL benchmark completed 100,000 transactions in 94 seconds with an average query latency of 9.4 ms. That's solid for a $12 instance. Vultr provisions reasonably and doesn't oversell the storage layer.

Price per 1,000 sustained IOPS: approximately $0.29.

Provider 2: Linode (Akamai) Premium Plans

Linode rebranded under Akamai but kept their infrastructure. The Premium tier uses NVMe across all nodes. A $12 instance gets you 1 vCPU, 2 GB RAM, and 50 GB storage.

Initial 4K read IOPS clocked in at 61,000, dropping to 48,000 after two minutes. Writes stayed near 22,000 IOPS with latency under 1.5 ms. The sustained test showed a gentle decline rather than a hard throttle, which is fine for most workloads.

MySQL OLTP finished in 88 seconds, 11.2 ms average latency. Linode's network is fast and their support is good, but storage performance didn't pull ahead of Vultr despite a slightly higher peak.

Price per 1,000 sustained IOPS: approximately $0.25.

Provider 3: DigitalOcean Premium Intel/AMD Droplets

DigitalOcean's Premium droplets run on NVMe-backed storage. The $12 tier includes 1 vCPU, 2 GB RAM, and 50 GB disk.

Random read hit 38,000 IOPS initially, falling to 29,000 IOPS during sustained load. Write IOPS hovered at 14,000. Latency was acceptable but not exceptional: 1.1 ms read, 2.3 ms write. I noticed periodic spikes every 30–40 seconds where latency jumped to 8 ms, likely from a noisy neighbor or background I/O on the host.

MySQL workload took 118 seconds with 11.8 ms average query time. DigitalOcean is reliable and their API is clean, but storage performance lags behind Vultr and Linode at this price point.

Price per 1,000 sustained IOPS: approximately $0.41.

Provider 4: Hetzner Cloud CX Series

Hetzner's CX line uses NVMe local storage. A CX21 instance costs around €5.83 (~$6.40) and delivers 2 vCPUs, 4 GB RAM, and 40 GB disk. The price is half of the others.

Random 4K read: 72,000 IOPS peak, 58,000 sustained. Write: 26,000 IOPS. Latency stayed under 0.6 ms for reads and 1.2 ms for writes. No throttling detected. MySQL completed in 76 seconds, 7.6 ms average latency.

This is the best storage performance I measured, and it costs a third of most competitors. The catch is Hetzner's network has higher latency to the US East Coast (80–100 ms vs. 10–20 ms), and you'll deal with EU data residency rules if you're serving a US audience. For European deployments or latency-tolerant workloads, it's hard to beat.

Price per 1,000 sustained IOPS: approximately $0.11.

Provider 5: AWS Lightsail

Lightsail instances use EBS storage under the hood, not local NVMe, but Amazon markets some tiers as "high performance." A $12 instance gives 2 GB RAM, 1 vCPU, and 60 GB SSD.

Random read: 9,000 IOPS, dropping to 7,500 IOPS sustained. Write: 3,200 IOPS. Latency was 3.5 ms read, 9 ms write. MySQL took 214 seconds.

Lightsail is EBS-backed network storage pretending to compete with local NVMe. It doesn't. If you need tight AWS integration or you're already running a bunch of services in their ecosystem, fine. Otherwise, the IOPS and latency aren't competitive with actual NVMe VPS hosts.

Price per 1,000 sustained IOPS: approximately $1.60.

Provider 6: Kamatera

Kamatera offers customizable VPS plans with NVMe add-ons. A typical build with 1 vCPU, 2 GB RAM, and 40 GB NVMe storage runs about $16/month after the first month discount ends.

Random read: 44,000 IOPS, sustained at 36,000. Write: 17,000 IOPS. Latency was 0.9 ms read, 2.1 ms write. MySQL completed in 102 seconds, 10.2 ms per query.

Kamatera's performance sits between DigitalOcean and Vultr, but their billing is confusing and the first-month pricing doesn't reflect the renewal rate. Storage performance is fine but not exceptional for the cost.

Price per 1,000 sustained IOPS: approximately $0.44.

Provider 7: Contabo VPS S SSD

Contabo advertises NVMe on some plans. The VPS S SSD costs €6.99 (~$7.70) with 4 vCPUs, 8 GB RAM, and 200 GB storage. The specs look absurd for the price.

Random read: 12,000 IOPS, dropping to 8,500 sustained. Write: 4,100 IOPS. Latency spiked to 6 ms read, 14 ms write under load. MySQL took 198 seconds.

Contabo crams too many VMs onto each host. The CPU allocation is generous but storage is clearly overprovisioned. I hit throttling within 20 seconds of starting the benchmark. If your workload is CPU-bound and storage-light, the value is there. For anything database-heavy or I/O-sensitive, skip it.

Price per 1,000 sustained IOPS: approximately $0.91.

What the numbers mean for your application

IOPS and latency benchmarks are abstract until you map them to real use cases.

A WordPress site with WooCommerce and 50 concurrent users will hammer your database with random reads during product page loads and checkout. If your VPS can sustain 40,000+ read IOPS with sub-1ms latency, page generation stays under 200 ms even during traffic spikes. Drop to 10,000 IOPS with 3+ ms latency and you'll see 800+ ms generation times, which cascade into slow TTFB and angry users.

Redis and Memcached love low latency more than raw IOPS. A caching layer doing key lookups benefits from the microsecond-level access NVMe provides. The difference between 0.6 ms and 3 ms adds up when you're doing thousands of cache hits per page render.

MySQL and PostgreSQL under write-heavy workloads care about both. Commit latency determines transaction throughput. If writes take 10+ ms, your checkout flow will bottleneck. Sustained write IOPS under 15,000 means trouble when multiple users are updating inventory or writing session data simultaneously.

The overprovisioning problem

Most hosts don't give you dedicated NVMe. You're sharing one or two drives with 20–50 other VMs on the same physical node. The IOPS you see depend on what your neighbors are doing.

I've run tests on the same provider at different times of day and seen 40% swings in IOPS. That variance is normal for shared hosting, but it matters if your traffic spikes at predictable times. A host that throttles after 60 seconds of sustained I/O will hurt your database during a flash sale, even if synthetic benchmarks look fine.

Look for these red flags: - IOPS drop by more than 50% after the first minute - Latency spikes above 5 ms randomly during sustained load - Write performance falls off a cliff compared to reads

Providers that provision conservatively show gentle degradation, not cliffs. Vultr, Linode, and Hetzner all stayed within 25% of their peak during sustained tests. DigitalOcean and Contabo showed sharper drops, and AWS Lightsail was consistently slow because it's network storage.

How to test your own VPS storage

Install fio and run a quick 4K random read test:

sudo apt update && sudo apt install -y fio
fio --name=randread --ioengine=libaio --iodepth=32 --rw=randread \
    --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 \
    --group_reporting --filename=/tmp/fio-test

Check the IOPS line in the output. Anything above 30,000 is decent for a shared NVMe VPS. Under 10,000 means you're on slow storage or heavily throttled.

For latency, look at the clat (completion latency) percentiles. The 99th percentile matters more than the average. If clat (usec): 99th shows anything above 3000 (3 ms), your storage will struggle under load.

Run the same test with --rw=randwrite to check write performance. Writes should be at least 30% of read IOPS. If writes are under 5,000 IOPS, you'll have trouble with databases.

Price-per-IOPS comparison

Hetzner delivers the best value at $0.11 per 1,000 sustained IOPS, but you'll pay for that in network latency if you're far from their EU data centers. Linode comes in second at $0.25, followed by Vultr at $0.29. Both offer better US network performance than Hetzner.

DigitalOcean ($0.41), Kamatera ($0.44), and Contabo ($0.91) lag behind. AWS Lightsail at $1.60 per 1,000 IOPS isn't worth it unless you're locked into AWS for other reasons.

These ratios assume you're buying the entry-level NVMe plan. Larger instances often deliver better IOPS-per-dollar because the host allocates more storage bandwidth to higher tiers. A $40 plan might drop the cost to $0.15 per 1,000 IOPS even on a pricier provider.

Beware "burstable" and "baseline" IOPS

Some providers advertise burst IOPS but bury the baseline rate in the fine print. You'll see 60,000 IOPS for the first 30 seconds, then drop to 3,000 IOPS for the rest of the hour. That's worthless for sustained workloads.

AWS does this with EBS volumes. Azure does it with their B-series VMs. Even some dedicated NVMe VPS hosts implement soft throttling after you hit a certain I/O threshold.

Check the provider's documentation for terms like "baseline throughput," "I/O credits," or "fair use policy." If they mention credits that refill over time, assume you'll be throttled during any sustained load. Real NVMe VPS hosts don't ration IOPS; they just provision the hardware appropriately and let you use what you paid for.

Network latency and storage performance interact

A VPS with great IOPS but 120 ms ping times to your users won't feel fast. Your application makes dozens of round trips per page load: DNS, TLS handshake, HTTP requests, database queries, API calls. Each round trip adds the network latency.

If your database is fast (10 ms query time) but your network is slow (100 ms RTT), the network dominates. Users won't notice that your storage is fast.

Pick a provider with data centers close to your traffic. Hetzner's storage is amazing, but if you're serving the US West Coast, that 150 ms ping to Germany will hurt more than slow IOPS on a Linode instance in Fremont. For global traffic, put a CDN in front and choose a VPS location central to your backend workload, not your users.

When NVMe doesn't matter

Static sites served by nginx don't need fast storage. Once the files are in the page cache, requests never hit disk. You could run a static site on spinning rust and serve thousands of requests per second.

Proxy servers, load balancers, and reverse caches are the same. If your VPS is just forwarding requests to backend APIs, storage speed is irrelevant. Save money and pick a cheaper SSD instance.

NVMe matters for databases, filesystems under write load, and anything doing random I/O. WordPress, Rails apps with ActiveRecord, Node.js apps writing logs, and game servers saving state all benefit. If your workload is CPU-bound and rarely touches disk, spend your budget on more vCPUs instead.

What about RAID and redundancy

Local NVMe is fast but fragile. If the physical drive dies, your data is gone unless you have backups. Most VPS providers don't RAID local storage; they rely on snapshots and offsite backups instead.

Some hosts offer "RAID-backed NVMe," which usually means they're striping across multiple drives or using a RAID controller. That adds redundancy but can hurt performance if the RAID implementation introduces latency. I didn't test RAID configurations here, but in general, local NVMe without RAID is faster, and RAID-backed NVMe is more durable.

For production, take frequent snapshots and keep at least one daily backup offsite. Don't rely on RAID alone. A rm -rf / mistake or a ransomware hit will toast your data no matter how many drives are in the array.

What to test before you commit

Spin up a trial instance and run fio for at least five minutes. Watch for throttling. If IOPS stay flat, you're good. If they drop by half after two minutes, you'll regret it when traffic spikes.

Deploy a copy of your production database schema and run a few thousand inserts and selects. Check query latency. Anything under 10 ms average is acceptable for a shared VPS. Above 20 ms means the storage is slow or overloaded.

If you're moving from another host, run the same tests on both and compare. A 20% improvement in IOPS might not justify the migration cost. A 3x improvement in latency will make a visible difference in your application's responsiveness.

Most providers offer hourly billing or a short trial window. Use it.

How much IOPS do I actually need?

A typical WordPress site with moderate traffic runs fine on 15,000–20,000 sustained read IOPS. E-commerce or high-traffic sites with complex queries need 40,000+. If you're running Elasticsearch, Cassandra, or heavy analytics workloads, target 60,000+ IOPS or move to dedicated hardware.

Does NVMe help with backup speed?

Yes, but only if the backup destination is also fast. NVMe can read your filesystem at 2–3 GB/sec, but if you're writing to S3 over a 1 Gbps connection, the network is the bottleneck. Local-to-local backups (like rsync to another NVMe VPS) will be much faster.

Can I trust provider benchmarks?

No. Providers always benchmark under ideal conditions: empty drives, no neighbors, best-case workloads. Real performance is 30–60% lower once the host is under normal load. Run your own tests on a live instance before you migrate production.

What about NVMe over Fabric (NVMe-oF)?

NVMe-oF is network-attached NVMe, used in enterprise SANs. It's faster than iSCSI but slower than local NVMe. You won't find it in budget VPS plans. If a provider mentions it, they're probably using it for shared storage, which means your IOPS will be limited by network bandwidth and contention with other users.

Check latency, not just IOPS

IOPS numbers are easy to game. A provider can burst to 100,000 IOPS for ten seconds by using a write cache, then throttle you down to 5,000 for the next hour. Latency is harder to fake.

Consistent sub-millisecond latency under sustained load is the real signal. If your 99th percentile latency stays under 2 ms during a five-minute fio test, the provider is provisioning properly and not overselling the storage layer. That consistency matters more than a flashy peak IOPS number.

When comparing hosts, plot latency over time instead of looking at IOPS averages. The shape of that graph tells you whether the storage will handle your production load or collapse under pressure.