# DigitalOcean Basic Intel 2 vCPU / 2 GB

[San Francisco 2](https://rackcensus.com/locations/san-francisco-vps-benchmarks "Every provider in San Francisco")

Benchmark complete

Finished Oct 23, 2026

Geekbench 7 single-core

883

Faster than 38% of 2 vCPU plans

Geekbench 7 multi-core

Skipped

Disk 4K IOPS

79,909

fio random read and write, 50/50

Monthly price at test time

$21.00

Same price today

## Server

[DigitalOcean](https://rackcensus.com/vps-providers/digitalocean-benchmarks)[Basic Intel 2 vCPU / 2 GB](https://rackcensus.com/plans/53tgmj-digitalocean-basic-intel-2-vcpu-2-gb-benchmarks?location=sfo2)

-

Provider

DigitalOcean

-

Plan

Basic Intel 2 vCPU / 2 GB

-

Location

San Francisco 2

-

vCPU

2

-

RAM

2 GB

-

Storage

60 GB NVMe

-

Network

2 Gbps

-

OS image

ubuntu-24-04-x64

-

Trigger

Scheduled

-

Queued at

Oct 21, 2026, 07:54:00 UTC

[Visit DigitalOcean](https://rackcensus.com/go/digitalocean)

Referral link. If you sign up through it, I may get paid. [How this works](https://rackcensus.com/transparency#referrals-heading)

## Latest runs of this plan

- [San Francisco 3 Oct 20, 2026](https://rackcensus.com/benchmarks/8hmicy-digitalocean-basic-intel-2-vcpu-2-gb-sfo3-benchmark)968

[Full history of this plan](https://rackcensus.com/plans/53tgmj-digitalocean-basic-intel-2-vcpu-2-gb-benchmarks/history)

## CPU

| Version | Single-core | Multi-core | Result link |
| --- | --- | --- | --- |
| Geekbench 7 | 883 | Skipped | [Geekbench Browser](https://browser.geekbench.com/v7/cpu/696267) |

Multi-core was skipped because Geekbench 7 needs about 3.1 GB of free memory to run 2 threads, and this server didn't have that much. Single-core needs much less, so it still ran.

Scores from different Geekbench versions aren't comparable with each other. Charts only use Geekbench 7.

### Geekbench 7 workloads

| Workload | Single-core | Multi-core |
| --- | --- | --- |
| File Compression | 88447th of 64 | Single-core only |
| Navigation | 1,02241st of 64 | Single-core only |
| HTML5 Browser | 97039th of 64 | Single-core only |
| PDF Viewer | 1,10639th of 64 | Single-core only |
| Photo Library | 74347th of 64 | Single-core only |
| Clang | 82347th of 64 | Single-core only |
| Text Processing | 80047th of 64 | Single-core only |
| Asset Compression | 73353rd of 64 | Single-core only |
| HDR | 86142nd of 64 | Single-core only |
| Photo Editor | 1,03240th of 64 | Single-core only |
| Ray Tracer | 77351st of 64 | Single-core only |
| Structure from Motion | 1,14640th of 64 | Single-core only |
| Game Physics | 82647th of 64 | Single-core only |
| Video Encoder | 80847th of 64 | Single-core only |
| Audio Encoder | 89746th of 64 | Single-core only |
| Video Player | 82848th of 64 | Single-core only |

Rank among the 64 runs with Geekbench 7 workload scores. Bars are relative to the best run. Geekbench doesn't run every workload multi-core, so some rows only have a single-core score.

## Disk

| Block size | Read | Write | Total |
| --- | --- | --- | --- |
| 4K | 155.9 MB/s (39,902 IOPS) | 156.3 MB/s (40,007 IOPS) | 312.1 MB/s (79,909 IOPS) |
| 64K | 602.4 MB/s (9,637 IOPS) | 605.5 MB/s (9,688 IOPS) | 1.18 GB/s (19,325 IOPS) |
| 512K | 841.1 MB/s (1,682 IOPS) | 885.8 MB/s (1,771 IOPS) | 1.69 GB/s (3,453 IOPS) |
| 1M | 769.1 MB/s (769 IOPS) | 820.3 MB/s (820 IOPS) | 1.55 GB/s (1,589 IOPS) |

fio random read and write, 50/50, run by YABS against the boot disk.

## Network

### IPv4 transfer speed

Loading...

| Target | Protocol | Send | Receive |
| --- | --- | --- | --- |
| Clouvider, Los Angeles, CA, US (10G) | IPv4 | 2 Gbps | 1.89 Gbps |
| Clouvider, London, UK (10G) | IPv4 | 779 Mbps | 1.62 Gbps |
| Leaseweb, Singapore, SG (10G) | IPv4 | 791 Mbps | 1.27 Gbps |

Public iperf3 servers vary in capacity and availability. Compare a target only with itself over time.

## Application workloads

### PostgreSQL transactions
Measured

Durable transfers and indexed account lookups against a fixed relational dataset.

PostgreSQL transactions measurements| Repeat | Offered / s | transactions/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 100 | 100 | 6.92 / 8.2 | 0 / 0 | Met workload limits |
| 1 | 500 | 494.87 | 5.89 / 10.11 | 0 / 922 | load generator fell behind |
| 1 | 1000 | 986.27 | 5.96 / 11.65 | 0 / 2471 | load generator fell behind |
| 1 | 3000 | 2965.88 | 6.77 / 20.22 | 0 / 6134 | error limit exceeded |
| 2 | 100 | 100 | 6.92 / 8.57 | 0 / 0 | Met workload limits |
| 2 | 500 | 495.51 | 6.03 / 11.15 | 0 / 808 | Met workload limits |
| 2 | 1000 | 983 | 5.89 / 12.83 | 0 / 3060 | load generator fell behind |
| 2 | 3000 | 2967.06 | 6.46 / 18.4 | 0 / 5921 | error limit exceeded |

p95 ≤ 50 ms · p99 ≤ 100 ms · errors ≤ 1.0%

### PostgreSQL large dataset
Failed

The same transaction mix against ten million accounts; the dataset never shrinks to fit a plan.

RuntimeError: RuntimeError: TimeoutError:

p95 ≤ 100 ms · p99 ≤ 250 ms · errors ≤ 1.0%

### Redis cache
Measured

A mixed cache workload with 1 KiB values, expiration, misses and eviction.

Redis cache measurements| Repeat | Offered / s | operations/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 1000 | 999.97 | 1.87 / 2.17 | 0 / 0 | Met workload limits |
| 1 | 5000 | 4999.99 | 1.96 / 3.82 | 0 / 0 | Met workload limits |
| 1 | 10000 | 9997.38 | 1.42 / 4.32 | 0 / 467 | Met workload limits |
| 1 | 25000 | 23116.33 | 18.59 / 24.38 | 0 / 339035 | load generator saturated |
| 2 | 1000 | 1000 | 1.79 / 1.96 | 0 / 0 | Met workload limits |
| 2 | 5000 | 4986.48 | 1.81 / 2.99 | 0 / 2433 | Met workload limits |
| 2 | 10000 | 9997.21 | 1.35 / 3.63 | 0 / 497 | Met workload limits |
| 2 | 25000 | 22533.2 | 19.39 / 27.6 | 0 / 443766 | load generator saturated |

p95 ≤ 10 ms · p99 ≤ 25 ms · errors ≤ 1.0%

### Redis persistent queue
Measured

Enqueue, consume and acknowledge payloads with append-only persistence.

Redis persistent queue measurements| Repeat | Offered / s | jobs/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 100 | 100 | 4.32 / 4.94 | 0 / 0 | Met workload limits |
| 1 | 500 | 500 | 3.36 / 6.17 | 0 / 0 | Met workload limits |
| 1 | 1000 | 1000 | 3.19 / 4.32 | 0 / 0 | Met workload limits |
| 1 | 3000 | 2999.97 | 3.68 / 8.76 | 0 / 0 | Met workload limits |
| 2 | 100 | 100 | 4.43 / 5.12 | 0 / 0 | Met workload limits |
| 2 | 500 | 500 | 3.23 / 4.76 | 0 / 0 | Met workload limits |
| 2 | 1000 | 999.99 | 6.1 / 27.6 | 0 / 0 | Met workload limits |
| 2 | 3000 | 2957.22 | 4.59 / 26.48 | 0 / 7697 | error limit exceeded |

p95 ≤ 20 ms · p99 ≤ 50 ms · errors ≤ 1.0%

### Discourse community
Failed

Signed-in reading, search, posting and replies in a populated Rails forum.

RuntimeError: RuntimeError: TimeoutError:

p95 ≤ 1500 ms · p99 ≤ 3000 ms · errors ≤ 1.0%

### n8n workflows
Measured

Webhook, transformation, branching and a verified final response.

n8n workflows measurements| Repeat | Offered / s | workflows/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 5 | 5 | 42.43 / 60.52 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 34.95 / 54.7 | 0 / 0 | Met workload limits |
| 1 | 50 | 46.11 | 6162.75 / 6477.16 | 0 / 541 | latency limit exceeded |
| 1 | 100 | 42.49 | 6607.37 / 6944.46 | 22 / 10176 | latency limit exceeded |
| 2 | 5 | 5 | 37.93 / 49.93 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 32.87 / 51.99 | 0 / 0 | Met workload limits |
| 2 | 50 | 46.66 | 5805.53 / 6101.72 | 0 / 461 | latency limit exceeded |
| 2 | 100 | 46.42 | 6101.72 / 6673.45 | 0 / 9458 | latency limit exceeded |

p95 ≤ 1000 ms · p99 ≤ 2000 ms · errors ≤ 1.0%

### n8n queue workers
Measured

Completed queued workflows including waiting time and worker execution.

n8n queue workers measurements| Repeat | Offered / s | workflows/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 5 | 5 | 52.52 / 65.62 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 54.15 / 138.12 | 0 / 0 | Met workload limits |
| 1 | 50 | 35.42 | 7903.59 / 8306.8 | 0 / 2416 | latency limit exceeded |
| 1 | 100 | 33.92 | 8906.09 / 9085.12 | 220 / 11489 | latency limit exceeded |
| 2 | 5 | 5 | 42.43 / 54.7 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 109.66 / 1961.85 | 0 / 0 | Met workload limits |
| 2 | 50 | 33.74 | 8644.13 / 8817.9 | 4 / 2695 | latency limit exceeded |
| 2 | 100 | 33.23 | 9085.12 / 9085.12 | 963 / 10890 | latency limit exceeded |

p95 ≤ 2000 ms · p99 ≤ 4000 ms · errors ≤ 1.0%

### Ghost publishing
Measured

Readers, authenticated draft creation, publishing and image uploads.

Ghost publishing measurements| Repeat | Offered / s | journeys/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 5 | 5 | 462.75 / 537.4 | 0 / 0 | Met workload limits |
| 1 | 20 | 18.23 | 7013.92 / 7013.92 | 291 / 0 | latency limit exceeded |
| 1 | 50 | 1.09 | 7013.92 / 7013.92 | 6429 / 2368 | latency limit exceeded |
| 1 | 100 | 0.91 | 7013.92 / 7013.92 | 6573 / 11256 | latency limit exceeded |
| 2 | 5 | 5 | 476.81 / 542.79 | 0 / 0 | Met workload limits |
| 2 | 20 | 18.66 | 7013.92 / 7013.92 | 239 / 0 | latency limit exceeded |
| 2 | 50 | 28.25 | 7013.92 / 7013.92 | 1742 / 2007 | latency limit exceeded |
| 2 | 100 | 29.88 | 7013.92 / 7013.92 | 1659 / 10760 | latency limit exceeded |

p95 ≤ 1000 ms · p99 ≤ 2000 ms · errors ≤ 1.0%

### Formbricks / Next.js
Insufficient RAM

Public survey rendering, persisted responses and authenticated analysis.

Requires 4096 MiB RAM; plan has 2048 MiB, 1967 MiB detected.

p95 ≤ 1000 ms · p99 ≤ 2000 ms · errors ≤ 1.0%

### Elasticsearch search and ingestion
Insufficient RAM

Full-text search, filtering and aggregations while new documents are indexed.

Requires 4096 MiB RAM; plan has 2048 MiB, 1967 MiB detected.

p95 ≤ 250 ms · p99 ≤ 500 ms · errors ≤ 1.0%

### GitHub self-hosted runner
Insufficient RAM

A pinned build and test workflow with separate cold and warm dependency caches.

Requires 8192 MiB RAM; plan has 2048 MiB, 1967 MiB detected.

p95 ≤ 3600000 ms · p99 ≤ 3600000 ms · errors ≤ 1.0%

### Odoo Community sales
Insufficient RAM

Customer lookup, sales order confirmation, stock operations and reporting.

Requires 4096 MiB RAM; plan has 2048 MiB, 1967 MiB detected.

p95 ≤ 2000 ms · p99 ≤ 4000 ms · errors ≤ 1.0%

## Advertised vs. measured

| Spec | Advertised | Measured |
| --- | --- | --- |
| vCPU | 2 | 2 |
| CPU | Shared vCPU | 0.2% of busy CPU time stolen |
| RAM | 2 GB | 1.9 GiB |
| Storage | 60 GB NVMe | 58 GiB |
| Architecture | x86\_64 | x86\_64 |
| Virtualization | KVM | KVM |

Guests usually report slightly less RAM and disk than advertised because of kernel reservations and filesystem overhead.

## Detected hardware

**CPU model:** DO-Premium-Intel

**CPU cores:** 2

**CPU frequency:** 1995 MHz

**AES-NI:** Yes

**VM-x/AMD-V:** Yes

**RAM reported:** 1.9 GiB

**Swap reported:** 0 MiB

**Disk reported:** 58 GiB

**Virtualization reported:** KVM

**CPU steal:** 0.2% of busy CPU time stolen

**Distro:** Ubuntu 24.04.5 LTS

**Kernel:** 6.8.0-142-generic

**Architecture:** x86\_64

**IPv4 reachable:** Yes

**IPv6 reachable:** Yes

## Advertised at test time

**Plan:** Basic Intel 2 vCPU / 2 GB

**Product line:** Basic Intel

**Location:** San Francisco 2

**vCPU:** 2 shared vCPU

**Architecture:** x86\_64

**RAM:** 2 GB

**Storage:** 60 GB NVMe

**Virtualization:** KVM

**Network:** 2 Gbps

**Transfer:** 3 TB

**Port 25:** Closed

**Monthly price at test time:** $21.00

**Hourly price at test time:** $0.031

**YABS version:** v2026-09-20

**Ran at:** Oct 22, 2026, 21:01:34 UTC

**Parser version:** 5

## Run timeline

**Queued:** Oct 21, 2026, 07:54:00 UTC

**First update from the server:** Oct 22, 2026, 21:01:24 UTC

**Completed:** Oct 23, 2026, 00:36:00 UTC

**Server deleted:** Oct 23, 2026, 00:36:00 UTC

**Cost of this run:** $0.11

Tests 37 of 39 done Live output 1105 lines

Setup 2 cores, 1.9 GiB RAM 4 of 4Done

Disk (fio) 327 MB/s at 4k, 1.66 GB/s at 1m 5 of 5Done

Network, IPv4 (iperf3) Median 791 Mbit/s send, 1.62 Gbit/s receive, 2 retried 3 of 3Done

Geekbench 7, single-core Score 883 18 of 18Done

Web apps 2 failed, 4 skipped 6 of 8Some failed

TestResultTime

PostgreSQL transactions 8 measured trials completed 8 trials Measurements, 8 measured trials completed 29m 56s

PostgreSQL large dataset RuntimeError: RuntimeError: TimeoutError: Stopped RuntimeError: RuntimeError: TimeoutError: 2m 09s

Redis cache 8 measured trials completed 8 trials Measurements, 8 measured trials completed 28m 31s

Redis persistent queue 8 measured trials completed 8 trials Measurements, 8 measured trials completed 28m 23s

Discourse community RuntimeError: RuntimeError: TimeoutError: Stopped RuntimeError: RuntimeError: TimeoutError: 17m 45s

n8n workflows 8 measured trials completed 8 trials Measurements, 8 measured trials completed 32m 13s

n8n queue workers 8 measured trials completed 8 trials Measurements, 8 measured trials completed 32m 54s

Ghost publishing 8 measured trials completed 8 trials Measurements, 8 measured trials completed 33m 48s

Formbricks / Next.js Requires 4096 MiB RAM; plan has 2048 MiB, 1967 MiB detected. Not run Requires 4096 MiB RAM; plan has 2048 MiB, 1967 MiB detected.

Elasticsearch search and ingestion Requires 4096 MiB RAM; plan has 2048 MiB, 1967 MiB detected. Not run Requires 4096 MiB RAM; plan has 2048 MiB, 1967 MiB detected.

GitHub self-hosted runner Requires 8192 MiB RAM; plan has 2048 MiB, 1967 MiB detected. Not run Requires 8192 MiB RAM; plan has 2048 MiB, 1967 MiB detected.

Odoo Community sales Requires 4096 MiB RAM; plan has 2048 MiB, 1967 MiB detected. Not run Requires 4096 MiB RAM; plan has 2048 MiB, 1967 MiB detected.

Finish Results saved 1 of 1Done

Watch party 0 watching

This party closed at 01:36 UTC. It's read only now.

## Watch party

Loading the party
