Understanding VPS Specs: vCPU, RAM, NVMe, and What Actually Matters
A practical guide to decoding VPS specifications. Learn what vCPU means, why NVMe matters, how much RAM you actually need, and how to read through the marketing.
Why This Guide Exists
VPS providers love to throw numbers at you. "4 vCPU," "8GB RAM," "NVMe storage," "1Gbps network." These specs mean something specific, and understanding them prevents two common mistakes: paying for resources you don't need, or skimping on resources that will cause problems.
This guide explains each spec, how it translates to real-world performance, and how to size a VPS for different workloads.
vCPU: What It Actually Means
A "vCPU" (virtual CPU) is not the same as a physical CPU core. It's a slice of a physical CPU, allocated to your virtual machine.
How Virtualisation Works
A physical server might have two AMD EPYC 9654 processors, each with 96 physical cores (192 threads). That server runs 50 VPS instances. Each VPS gets a portion of those cores โ typically 1-4 vCPU per instance.
The allocation model matters:
| Type | Description | Performance Characteristic |
|---|
| Bare metal | Entire physical server dedicated to you | Consistent, predictable |
|---|---|---|
| Dedicated vCPU | Physical core allocated exclusively to your VPS | Consistent, no contention |
| Shared vCPU | CPU time allocated from a shared pool | Variable, depends on neighbour load |
| Burstable | Low baseline, high ceiling when host is idle | Good for spiky, bad for sustained |
Most budget VPS (sub-$10/month) use shared vCPU. Premium VPS (>$20/month) typically offer dedicated or prioritised CPU allocation.
What vCPU Count Means for Your Workload
| vCPU | Suitable For |
|---|
| 1 | Static sites, development, learning, lightweight databases |
|---|---|
| 2 | Small web apps, moderate traffic sites, small WordPress installations |
| 4 | Production web apps, medium traffic, concurrent users, development builds |
| 8 | High-traffic sites, API servers, container workloads |
| 16+ | Enterprise workloads, large databases, compute-intensive applications |
The catch: More vCPU doesn't mean faster. A single-threaded task uses one core. If your application isn't parallelised, 8 vCPU provides no benefit over 2. Apache, PHP-FPM, and Node.js applications often run single-threaded per request.
RAM: The Most Important Spec
RAM is typically the bottleneck for web applications. More RAM means:
- More requests served simultaneously without swapping
- Larger database query caches (MySQL/PostgreSQL)
- More application objects held in memory (WordPress object cache, etc.)
- Fewer disk reads (which are orders of magnitude slower than RAM reads)
How Much RAM Do You Actually Need?
| RAM | Workload | Examples |
|---|
| 512MB - 1GB | Minimal | Static HTML, very low traffic PHP, development |
|---|---|---|
| 2GB | Light | WordPress with 10-50 concurrent users, small database |
| 4GB | Medium | WordPress with 50-200 users, moderate database |
| 8GB | Production | Busy web app, 200+ concurrent users, database server |
| 16GB+ | Enterprise | High-traffic apps, large databases, container clusters |
The Swap Problem
When a VPS runs out of RAM, it starts using disk space as "swap." This is called "swapping" and it's catastrophically slow โ disk I/O is 100-1000x slower than RAM.
# Check if your VPS is swapping
free -h
# If the "Swap" row shows used space > 0, you're swapping
Never let a production system swap. It will feel slow and unresponsive, and the disk thrashing can cause crashes. If you're consistently above 80% RAM utilisation, upgrade.
Storage: NVMe vs SSD vs SATA
Storage technology has a massive impact on perceived performance.
The Hierarchy
| Type | Speed | Use Case | Price Impact |
|---|
| SATA HDD | ~100 MB/s | Archive, cheap bulk storage | Lowest |
|---|---|---|---|
| SATA SSD | ~500 MB/s | Standard hosting | Standard |
| NVMe | 1,000-7,000 MB/s | Performance-critical | Moderate |
| High-performance NVMe | 7,000+ MB/s | Database servers, I/O-heavy apps | Premium |
NVMe (Non-Volatile Memory Express) is a protocol designed for flash storage that minimises latency. A "good" NVMe drive in a VPS reaches 1,000-3,000 MB/s. Enterprise-grade NVMe (Intel Optane, Samsung PM9A1) reaches 7,000 MB/s.
Real-World Impact
For a typical web server, disk I/O matters most for:
1. Database queries โ Reading from disk vs RAM cache is the difference between 1ms and 100ms query times 2. File operations โ Upload handling, log writing, caching 3. Application startup โ PHP opcode cache loading, framework initialisation
# Measure your disk read speed
dd if=/dev/zero of=/tmp/test bs=1M count=1024 oflag=direct
# Result in MB/s tells you what you're working with# More thorough test with fio (if available)
fio --name=seq-read --filename=/tmp/test --ioengine=libaio --rw=read --bs=1m --size=1G --runtime=30
Storage Size
Modern SSD/NVMe storage is cheap enough that "running out of disk" is usually a management problem, not a capacity problem. Budget 10-20GB for the OS and base packages, then add:
- WordPress (with media): 5-50GB depending on content
- Database: 1-10GB for most applications
- Logs: 1-5GB (rotate these, don't let them grow indefinitely)
- Backups: Plan for 2x your data size for staging/restoration space
- Speed (throughput) โ How fast data moves in a single connection, measured in Mbps or Gbps. "1Gbps" means the pipe is 1 gigabit per second.
- Bandwidth (data transfer) โ How much total data you can move per month, measured in TB. "2TB bandwidth" means 2 terabytes of outbound transfer included.
A 40GB NVMe partition handles most small-to-medium web applications comfortably.
Network: Speed and Bandwidth
Network Speed vs Bandwidth
These are different things:
What Network Speed Means
A 100Mbps network vs 1Gbps network matters for:
| Task | 100Mbps | 1Gbps |
|---|
| Serving 100MB file | 8 seconds | 0.8 seconds |
|---|---|---|
| Serving 1GB file | 80 seconds | 8 seconds |
| Database sync (small) | Negligible | Negligible |
| Multiple simultaneous downloads | Slower | Faster |
For most web applications serving standard pages (under 1MB per request), network speed rarely saturates. For file hosting, video streaming, or large API responses, it matters significantly.
Bandwidth Limits
Most VPS plans include a monthly bandwidth allowance. Exceeding it incurs overage charges (typically $0.50-2/GB).
| Site Type | Monthly Bandwidth | Notes |
|---|
| Static site | 50-200GB | Images are the main consumer |
|---|---|---|
| WordPress blog | 100-500GB | Depends on traffic and media |
| Web application | 200GB-2TB | Depends heavily on usage patterns |
| File hosting | 1TB+ | Very bandwidth-intensive |
Use a CDN to reduce origin bandwidth consumption by 80-95% for cacheable content.
Reading the Marketing
Here's how to decode common marketing claims:
"Unlimited Bandwidth"
There is no such thing as unlimited bandwidth. Hosts offering "unlimited" either:
- Have a fair use policy they'll enforce when you use too much
- Throttle your speed significantly after a threshold
- Are losing money and will raise prices or shut down
Always check the actual included bandwidth and overage rates.
"Blazing Fast NVMe"
NVMe is faster than SSD, but "NVMe" doesn't tell you which drive or what performance ceiling. Ask for or test the actual throughput.
"100% CPU Allocation"
Marketing. Without dedicated resources, "100% of your allocated CPU" might mean "100% of a shared core that you're sharing with 10 other VMs." Test under load to see actual performance.
"Enterprise Grade Hardware"
Meaningless. Get the specific specs: CPU model, generation, RAM type, SSD/NVMe model. Then you can compare meaningfully.
How to Size Your First VPS
A practical framework:
Step 1: Estimate your concurrent users
- If you don't know, assume 10% of your monthly unique visitors are concurrent at peak
Step 2: Estimate RAM per user
- Static HTML: ~10MB per user
- WordPress (no caching): ~50-100MB per user
- WordPress (with object cache): ~20-30MB per user
- API/Web app: ~10-50MB per user
Step 3: Calculate minimum RAM
- Concurrent users ร RAM per user = minimum RAM needed
- Add 50% headroom for spikes
Step 4: Pick vCPU
- If your application can parallelise (Node.js, Go, async Python): 2-4 vCPU
- If your application is single-threaded (PHP without Swoole): 2 vCPU is usually enough
- More vCPU rarely hurts but is wasted if your app can't use it
Step 5: Test and iterate
- Start with modest specs
- Monitor actual utilisation with
htop,free -h,iostat - Upgrade when consistently above 80% on any resource
The Specs That Matter for Common Workloads
| Workload | RAM | vCPU | Storage | Network |
|---|
| Static site | 1-2GB | 1 | 20GB NVMe | 100Mbps |
|---|---|---|---|---|
| WordPress (small) | 2-4GB | 2 | 40GB NVMe | 200Mbps |
| WordPress (medium) | 4-8GB | 4 | 80GB NVMe | 500Mbps |
| Node.js API | 2-4GB | 2-4 | 40GB NVMe | 500Mbps |
| Small database | 4-8GB | 2-4 | 80GB NVMe | 1Gbps |
| Docker/containers | 8-16GB | 4-8 | 160GB NVMe | 1Gbps |
Bottom Line
- RAM is usually the bottleneck โ monitor it first
- NVMe vs SSD matters for I/O-heavy apps โ database, file processing
- vCPU count doesn't equal speed โ unless your app parallelises
- Network speed matters for large files โ CDN covers most web app needs
- Test under real load โ specs don't tell the whole story
- Start small, monitor, upgrade โ cheaper to add resources than overbuy
Rather than DIY? Let OpsHelp handle everything.
Managed hosting with support, security, backups, and monitoring โ from ยฃ50/mo.