# DigitalOcean CPU-Optimized 2 vCPU / 4 GB

[London 1](https://rackcensus.com/locations/london-vps-benchmarks "Every provider in London")

Benchmark complete

Finished Oct 19, 2026

Geekbench 7 single-core

1,090

Geekbench 7 multi-core

1,271

Disk 4K IOPS

66,268

fio random read and write, 50/50

Monthly price at test time

$42.00

30 multi-core points per dollar

Same price today

## Server

[DigitalOcean](https://rackcensus.com/vps-providers/digitalocean-benchmarks)[CPU-Optimized 2 vCPU / 4 GB](https://rackcensus.com/plans/xhyrw9-digitalocean-cpu-optimized-2-vcpu-4-gb-benchmarks?location=lon1)

-

Provider

DigitalOcean

-

Plan

CPU-Optimized 2 vCPU / 4 GB

-

Location

London 1

-

vCPU

2

-

RAM

4 GB

-

Storage

25 GB SSD

-

Network

2 Gbps

-

OS image

ubuntu-24-04-x64

-

Trigger

Scheduled

-

Queued at

Oct 18, 2026, 17:05: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)

## CPU

| Version | Single-core | Multi-core | Result link |
| --- | --- | --- | --- |
| Geekbench 7 | 1,090 | 1,271 | [Geekbench Browser](https://browser.geekbench.com/v7/cpu/665322) |

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 | 1,0936th of 9 | 1,1484th of 4 |
| Navigation | 1,3474th of 9 | Single-core only |
| HTML5 Browser | 1,0365th of 9 | Single-core only |
| PDF Viewer | 1,1725th of 9 | Single-core only |
| Photo Library | 8916th of 9 | 1,0854th of 4 |
| Clang | 1,1754th of 9 | 1,4794th of 4 |
| Text Processing | 1,0425th of 9 | 1,1134th of 4 |
| Asset Compression | 9048th of 9 | 1,2494th of 4 |
| HDR | 1,0144th of 9 | 1,1554th of 4 |
| Photo Editor | 1,1806th of 9 | 1,4903rd of 4 |
| Ray Tracer | 1,0926th of 9 | 1,5503rd of 4 |
| Structure from Motion | 1,1806th of 9 | Single-core only |
| Game Physics | 1,0787th of 9 | Single-core only |
| Video Encoder | 1,0697th of 9 | Single-core only |
| Audio Encoder | 1,1198th of 9 | Single-core only |
| Video Player | 1,1276th of 9 | Single-core only |

Rank among the 9 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 | 129.3 MB/s (33,090 IOPS) | 129.6 MB/s (33,178 IOPS) | 258.9 MB/s (66,268 IOPS) |
| 64K | 143 MB/s (2,287 IOPS) | 143.7 MB/s (2,299 IOPS) | 286.7 MB/s (4,586 IOPS) |
| 512K | 187.4 MB/s (374 IOPS) | 197.4 MB/s (394 IOPS) | 384.9 MB/s (768 IOPS) |
| 1M | 246.8 MB/s (246 IOPS) | 263.3 MB/s (263 IOPS) | 510.1 MB/s (509 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, London, UK (10G) | IPv4 | 2.01 Gbps | 1.9 Gbps |
| Eranium, Amsterdam, NL (100G) | IPv4 | 2 Gbps | 1.89 Gbps |
| Leaseweb, Singapore, SG (10G) | IPv4 | 1.22 Gbps | 1.38 Gbps |
| Clouvider, Los Angeles, CA, US (10G) | IPv4 | 1.08 Gbps | 1.55 Gbps |
| Leaseweb, NYC, NY, US (10G) | IPv4 | 1.81 Gbps | 1.56 Gbps |

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

## Application workloads

### [PostgreSQL transactions](https://rackcensus.com/workloads/postgres_transaction)
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 | 99.67 | 15.88 / 1793.71 | 0 / 60 | load generator fell behind |
| 1 | 500 | 492.9 | 6.69 / 21.52 | 0 / 1278 | load generator fell behind |
| 1 | 1000 | 979.39 | 6.54 / 17.83 | 0 / 3709 | load generator fell behind |
| 1 | 3000 | 2962.47 | 9.89 / 39.51 | 0 / 6749 | error limit exceeded |
| 2 | 100 | 99.96 | 8.67 / 1265.91 | 0 / 8 | load generator fell behind |
| 2 | 500 | 493.8 | 8.11 / 26.21 | 0 / 1115 | load generator fell behind |
| 2 | 1000 | 977.53 | 7.84 / 22.91 | 0 / 4044 | load generator fell behind |
| 2 | 3000 | 2958.24 | 12.97 / 38.71 | 0 / 7507 | error limit exceeded |

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

### [PostgreSQL large dataset](https://rackcensus.com/workloads/postgres_large)
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](https://rackcensus.com/workloads/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 | 1000 | 2.91 / 11.03 | 0 / 0 | Met workload limits |
| 1 | 5000 | 4998.69 | 4.54 / 15.71 | 0 / 91 | Met workload limits |
| 1 | 10000 | 9961.11 | 5.18 / 17.64 | 0 / 6980 | Met workload limits |
| 1 | 25000 | 19050.15 | 23.15 / 35.31 | 0 / 1070725 | load generator saturated |
| 2 | 1000 | 1000 | 2.17 / 7.33 | 0 / 0 | Met workload limits |
| 2 | 5000 | 4999.16 | 2.68 / 11.4 | 0 / 146 | Met workload limits |
| 2 | 10000 | 9939.5 | 7.75 / 23.39 | 0 / 10871 | Met workload limits |
| 2 | 25000 | 19689.72 | 22.67 / 33.89 | 0 / 955737 | load generator saturated |

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

### [Redis persistent queue](https://rackcensus.com/workloads/redis_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 | 6.61 / 16.91 | 0 / 0 | Met workload limits |
| 1 | 500 | 500 | 3.49 / 10 | 0 / 0 | Met workload limits |
| 1 | 1000 | 1000 | 3.36 / 7.16 | 0 / 0 | Met workload limits |
| 1 | 3000 | 2999.59 | 5.69 / 21.75 | 0 / 71 | Met workload limits |
| 2 | 100 | 100 | 4.76 / 12.83 | 0 / 0 | Met workload limits |
| 2 | 500 | 500 | 3.87 / 13.68 | 0 / 0 | Met workload limits |
| 2 | 1000 | 1000 | 4.01 / 12.69 | 0 / 0 | Met workload limits |
| 2 | 3000 | 2997.64 | 12.03 / 46.5 | 0 / 422 | Met workload limits |

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

### [Discourse community](https://rackcensus.com/workloads/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](https://rackcensus.com/workloads/n8n_webhook)
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 | 32.2 / 50.95 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 26.21 / 41.15 | 0 / 0 | Met workload limits |
| 1 | 50 | 49.99 | 134.03 / 307.4 | 0 / 0 | Met workload limits |
| 1 | 100 | 56.88 | 4805.3 / 4950.93 | 0 / 7583 | latency limit exceeded |
| 2 | 5 | 5 | 30.9 / 47.94 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 26.48 / 56.39 | 0 / 0 | Met workload limits |
| 2 | 50 | 49.99 | 122.47 / 319.92 | 0 / 0 | Met workload limits |
| 2 | 100 | 56.75 | 4805.3 / 4950.93 | 0 / 7612 | latency limit exceeded |

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

### [n8n queue workers](https://rackcensus.com/workloads/n8n_queue)
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 | 46.97 / 78.69 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 46.03 / 102.22 | 0 / 0 | Met workload limits |
| 1 | 50 | 41.63 | 6807.61 / 7519.94 | 0 / 1278 | latency limit exceeded |
| 1 | 100 | 40.54 | 6944.46 / 7226.48 | 0 / 10487 | latency limit exceeded |
| 2 | 5 | 5 | 48.92 / 101.2 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 50.95 / 194.13 | 0 / 0 | Met workload limits |
| 2 | 50 | 42.49 | 6541.94 / 6807.61 | 0 / 1136 | latency limit exceeded |
| 2 | 100 | 42.63 | 6607.37 / 6807.61 | 0 / 10116 | latency limit exceeded |

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

### [Ghost publishing](https://rackcensus.com/workloads/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 | 390.58 / 467.39 | 0 / 0 | Met workload limits |
| 1 | 20 | 19.97 | 1575.95 / 2167.21 | 0 / 0 | latency limit exceeded |
| 1 | 50 | 33.67 | 7013.92 / 7013.92 | 993 / 1754 | latency limit exceeded |
| 1 | 100 | 30.99 | 7013.92 / 7013.92 | 1615 / 10605 | latency limit exceeded |
| 2 | 5 | 5 | 382.87 / 449.12 | 0 / 0 | Met workload limits |
| 2 | 20 | 19.96 | 893.33 / 1357.3 | 0 / 0 | Met workload limits |
| 2 | 50 | 33.07 | 7013.92 / 7013.92 | 1037 / 1800 | latency limit exceeded |
| 2 | 100 | 28.89 | 7013.92 / 7013.92 | 1872 / 10743 | latency limit exceeded |

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

### [Formbricks / Next.js](https://rackcensus.com/workloads/formbricks_surveys)
Failed

Public survey rendering, persisted responses and authenticated analysis.

RuntimeError: RuntimeError: TimeoutError:

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

### [Elasticsearch search and ingestion](https://rackcensus.com/workloads/elasticsearch_search)
Measured

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

Elasticsearch search and ingestion measurements| Repeat | Offered / s | operations/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 10 | 10 | 14.43 / 22.2 | 0 / 0 | Met workload limits |
| 1 | 50 | 50 | 11.27 / 18.02 | 0 / 0 | Met workload limits |
| 1 | 100 | 100 | 9.78 / 16.22 | 0 / 0 | Met workload limits |
| 1 | 250 | 250 | 13.68 / 27.6 | 0 / 0 | Met workload limits |
| 2 | 10 | 10 | 13.98 / 23.88 | 0 / 0 | Met workload limits |
| 2 | 50 | 50 | 11.15 / 18.4 | 0 / 0 | Met workload limits |
| 2 | 100 | 100 | 10 / 18.21 | 0 / 0 | Met workload limits |
| 2 | 250 | 250 | 24.13 / 46.5 | 0 / 0 | Met workload limits |

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

### [GitHub self-hosted runner](https://rackcensus.com/workloads/github_runner)
Insufficient RAM

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

Requires 8192 MiB RAM; plan has 4096 MiB, 3915 MiB detected.

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

### [Odoo Community sales](https://rackcensus.com/workloads/odoo_sales)
Failed

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

RuntimeError: fixture command in rc-odoo failed: -packages/odoo/cli/shell.py", line 148, in shell self.console(local\_vars) File "/usr/lib/python3/dist-packages/odoo/cli/shell.py", line 82, in console exec(sys.stdin.read(), local\_vars) File "\<string\>", line 1, in \<module\> PermissionError: [Errno 13] Permission denied: '/tmp/rc-seed.py'

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

## Advertised vs. measured

| Spec | Advertised | Measured |
| --- | --- | --- |
| vCPU | 2 | 2 |
| CPU | Dedicated vCPU | 0% of busy CPU time stolen |
| RAM | 4 GB | 3.8 GiB |
| Storage | 25 GB SSD | 24.1 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:** Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70GHz

**CPU cores:** 2

**CPU frequency:** 2694 MHz

**AES-NI:** Yes

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

**RAM reported:** 3.8 GiB

**Swap reported:** 0 MiB

**Disk reported:** 24.1 GiB

**Virtualization reported:** KVM

**CPU steal:** 0% 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:** CPU-Optimized 2 vCPU / 4 GB

**Product line:** CPU-Optimized

**Location:** London 1

**vCPU:** 2 dedicated vCPU

**Architecture:** x86\_64

**RAM:** 4 GB

**Storage:** 25 GB SSD

**Virtualization:** KVM

**Network:** 2 Gbps

**Transfer:** 4 TB

**Port 25:** Closed

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

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

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

**Ran at:** Oct 18, 2026, 19:24:27 UTC

**Parser version:** 5

## Run timeline

**Queued:** Oct 18, 2026, 17:05:00 UTC

**Server created:** Oct 18, 2026, 19:24:13 UTC

**First update from the server:** Oct 18, 2026, 19:24:13 UTC

**Completed:** Oct 19, 2026, 00:05:00 UTC

**Server deleted:** Oct 19, 2026, 00:05:00 UTC

**Cost of this run:** $0.29

Tests 48 of 52 done Live output 298 lines

Setup 2 cores, 3.8 GiB RAM 4 of 4Done

Disk (fio) 271 MB/s at 4k, 535 MB/s at 1m 5 of 5Done

Network, IPv4 (iperf3) Median 1.81 Gbit/s send, 1.56 Gbit/s receive, 2 retried 5 of 5Done

Geekbench 7, single-core Score 1,090 17 of 17Done

Geekbench 7, multi-core Score 1,271 9 of 9Done

Web apps 4 failed, 1 skipped 7 of 11Some failed

TestResultTime

PostgreSQL transactions Application workloads Passed 30m 18s

PostgreSQL large dataset Application workloads Stopped RuntimeError: RuntimeError: TimeoutError: 2m 51s

Redis cache Application workloads Passed 28m 32s

Redis persistent queue Application workloads Passed 28m 25s

Discourse community Application workloads Stopped RuntimeError: RuntimeError: TimeoutError: 17m 14s

n8n workflows Application workloads Passed 31m 42s

n8n queue workers Application workloads Passed 32m 41s

Ghost publishing Application workloads Passed 34m 49s

Formbricks / Next.js Application workloads Stopped RuntimeError: RuntimeError: TimeoutError: 16m 14s

Elasticsearch search and ingestion Application workloads Passed 37m 30s

GitHub self-hosted runner Application workloads Not run Requires 8192 MiB RAM; plan has 4096 MiB, 3915 MiB detected.

Odoo Community sales Application workloads Stopped RuntimeError: fixture command in rc-odoo failed: -packages/odoo/cli/shell.py", line 148, in shell self.console(local\_vars) File "/usr/lib/python3/dist-packages/odoo/cli/shell.py", line 82, in console exec(sys.stdin.read(), local\_vars) File "\<string\>", line 1, in \<module\> PermissionError: [Errno 13] Permission denied: '/tmp/rc-seed.py' 2m 00s

Finish Results saved 1 of 1Done

Watch party 0 watching

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

## Watch party

Loading the party
