# DigitalOcean General Purpose — Premium Intel 4 vCPU / 16 GB

[New York 3](https://rackcensus.com/locations/new-york-vps-benchmarks "Every provider in New York")

Benchmark complete

Finished Oct 22, 2026

Geekbench 7 single-core

1,317

Geekbench 7 multi-core

2,859

Disk 4K IOPS

148,586

fio random read and write, 50/50

Monthly price at test time

$151.00

19 multi-core points per dollar

Same price today

## Server

[DigitalOcean](https://rackcensus.com/vps-providers/digitalocean-benchmarks)[General Purpose — Premium Intel 4 vCPU / 16 GB](https://rackcensus.com/plans/us8xfz-digitalocean-general-purpose-premium-intel-4-vcpu-16-gb-benchmarks?location=nyc3)

-

Provider

DigitalOcean

-

Plan

General Purpose — Premium Intel 4 vCPU / 16 GB

-

Location

New York 3

-

vCPU

4

-

RAM

16 GB

-

Storage

60 GB NVMe

-

Network

10 Gbps

-

OS image

ubuntu-24-04-x64

-

Trigger

Scheduled

-

Queued at

Oct 20, 2026, 23:25: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,317 | 2,859 | [Geekbench Browser](https://browser.geekbench.com/v7/cpu/690332) |

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,24221st of 52 | 2,55914th of 30 |
| Navigation | 1,43813th of 52 | Single-core only |
| HTML5 Browser | 1,35412th of 52 | Single-core only |
| PDF Viewer | 1,53013th of 52 | Single-core only |
| Photo Library | 1,22316th of 52 | 2,88314th of 30 |
| Clang | 1,29011th of 52 | 3,27613th of 30 |
| Text Processing | 1,34413th of 52 | 2,55216th of 30 |
| Asset Compression | 1,04131st of 52 | 2,63816th of 30 |
| HDR | 1,19818th of 52 | 2,28315th of 30 |
| Photo Editor | 1,48216th of 52 | 3,37014th of 30 |
| Ray Tracer | 1,28313th of 52 | 3,56713th of 30 |
| Structure from Motion | 1,56413th of 52 | Single-core only |
| Game Physics | 1,20420th of 52 | Single-core only |
| Video Encoder | 1,27813th of 52 | Single-core only |
| Audio Encoder | 1,29217th of 52 | Single-core only |
| Video Player | 1,41314th of 52 | Single-core only |

Rank among the 52 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 | 289.8 MB/s (74,195 IOPS) | 290.6 MB/s (74,391 IOPS) | 580.4 MB/s (148,586 IOPS) |
| 64K | 1.57 GB/s (25,693 IOPS) | 1.58 GB/s (25,828 IOPS) | 3.14 GB/s (51,521 IOPS) |
| 512K | 1.62 GB/s (3,308 IOPS) | 1.7 GB/s (3,484 IOPS) | 3.32 GB/s (6,792 IOPS) |
| 1M | 1.34 GB/s (1,367 IOPS) | 1.42 GB/s (1,458 IOPS) | 2.76 GB/s (2,825 IOPS) |

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

## Network

### IPv4 transfer speed

Loading...

| Target | Protocol | Send | Receive |
| --- | --- | --- | --- |
| Leaseweb, NYC, NY, US (10G) | IPv4 | 9.4 Gbps | 9.4 Gbps |
| Eranium, Amsterdam, NL (100G) | IPv4 | 1.65 Gbps | 2.84 Gbps |
| Leaseweb, Singapore, SG (10G) | IPv4 | 663 Mbps | 925 Mbps |

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.03 / 6.77 | 0 / 0 | Met workload limits |
| 1 | 500 | 496.94 | 4.7 / 5.43 | 0 / 550 | Met workload limits |
| 1 | 1000 | 991.48 | 4.54 / 5.12 | 0 / 1532 | Met workload limits |
| 1 | 3000 | 2985.55 | 4.59 / 5.36 | 0 / 2595 | Met workload limits |
| 2 | 100 | 100 | 5.96 / 6.77 | 0 / 0 | Met workload limits |
| 2 | 500 | 497.17 | 4.59 / 5.76 | 0 / 509 | Met workload limits |
| 2 | 1000 | 991.21 | 4.48 / 5.06 | 0 / 1581 | Met workload limits |
| 2 | 3000 | 2986.03 | 4.54 / 5.49 | 0 / 2512 | Met workload limits |

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

### PostgreSQL large dataset
Measured

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

PostgreSQL large dataset measurements| Repeat | Offered / s | transactions/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 100 | 100 | 6.77 / 7.75 | 0 / 0 | Met workload limits |
| 1 | 500 | 496.53 | 5 / 5.76 | 0 / 625 | Met workload limits |
| 1 | 1000 | 992.22 | 4.82 / 5.62 | 0 / 1399 | Met workload limits |
| 2 | 100 | 100 | 6.77 / 7.75 | 0 / 0 | Met workload limits |
| 2 | 500 | 496.89 | 4.88 / 5.56 | 0 / 560 | Met workload limits |
| 2 | 1000 | 992.68 | 4.76 / 5.89 | 0 / 1317 | Met workload limits |

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 | 1000 | 1.68 / 1.84 | 0 / 0 | Met workload limits |
| 1 | 5000 | 4999.97 | 1.57 / 1.76 | 0 / 0 | Met workload limits |
| 1 | 10000 | 9999.69 | 1.11 / 1.6 | 0 / 44 | Met workload limits |
| 1 | 25000 | 24340.33 | 14.9 / 20.86 | 0 / 118426 | load generator saturated |
| 2 | 1000 | 1000 | 1.6 / 1.79 | 0 / 0 | Met workload limits |
| 2 | 5000 | 4999.98 | 1.55 / 1.7 | 0 / 0 | Met workload limits |
| 2 | 10000 | 9999.44 | 1.13 / 1.63 | 0 / 97 | Met workload limits |
| 2 | 25000 | 24307.18 | 15.22 / 20.86 | 0 / 124681 | 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 | 3.68 / 4.27 | 0 / 0 | Met workload limits |
| 1 | 500 | 500 | 2.91 / 3.15 | 0 / 0 | Met workload limits |
| 1 | 1000 | 999.99 | 2.95 / 3.19 | 0 / 0 | Met workload limits |
| 1 | 3000 | 2999.99 | 2.3 / 2.83 | 0 / 0 | Met workload limits |
| 2 | 100 | 100 | 3.49 / 4.11 | 0 / 0 | Met workload limits |
| 2 | 500 | 500 | 2.87 / 3.11 | 0 / 0 | Met workload limits |
| 2 | 1000 | 1000 | 2.91 / 3.19 | 0 / 0 | Met workload limits |
| 2 | 3000 | 2999.98 | 2.3 / 2.76 | 0 / 0 | Met workload limits |

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

### Discourse community
Measured

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

Discourse community measurements| Repeat | Offered / s | journeys/s | p95 / p99 ms | Errors / dropped | Result |
| --- | --- | --- | --- | --- | --- |
| 1 | 2 | 1.96 | 186.52 / 262.01 | 8 / 0 | error limit exceeded |
| 1 | 5 | 4.69 | 165.41 / 262.01 | 56 / 0 | error limit exceeded |
| 1 | 10 | 9.19 | 172.17 / 278.19 | 146 / 0 | error limit exceeded |
| 1 | 25 | 22.68 | 267.29 / 357.04 | 416 / 0 | error limit exceeded |
| 2 | 2 | 1.96 | 181 / 259.4 | 8 / 0 | error limit exceeded |
| 2 | 5 | 4.69 | 168.76 / 267.29 | 56 / 0 | error limit exceeded |
| 2 | 10 | 9.19 | 172.17 / 278.19 | 146 / 0 | error limit exceeded |
| 2 | 25 | 22.68 | 241.88 / 371.58 | 416 / 0 | error limit exceeded |

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

### n8n workflows
Failed

Webhook, transformation, branching and a verified final response.

URLError: \<urlopen error [Errno 111] Connection refused\>

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

### n8n queue workers
Failed

Completed queued workflows including waiting time and worker execution.

URLError: \<urlopen error [Errno 111] Connection refused\>

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 | 301.32 / 339.66 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 346.51 / 360.62 | 0 / 0 | Met workload limits |
| 1 | 50 | 43.84 | 7013.92 / 7013.92 | 883 / 0 | latency limit exceeded |
| 1 | 100 | 48.57 | 7013.92 / 7013.92 | 912 / 8080 | latency limit exceeded |
| 2 | 5 | 5 | 298.33 / 336.29 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 336.29 / 346.51 | 0 / 0 | Met workload limits |
| 2 | 50 | 43.77 | 7013.92 / 7013.92 | 886 / 0 | latency limit exceeded |
| 2 | 100 | 48.81 | 7013.92 / 7013.92 | 923 / 8037 | latency limit exceeded |

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

### Formbricks / Next.js
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
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 | 9.16 / 11.65 | 0 / 0 | Met workload limits |
| 1 | 50 | 50 | 7.41 / 9.26 | 0 / 0 | Met workload limits |
| 1 | 100 | 100 | 6.69 / 8.38 | 0 / 0 | Met workload limits |
| 1 | 250 | 250 | 6.1 / 8.38 | 0 / 0 | Met workload limits |
| 2 | 10 | 10 | 9.47 / 11.65 | 0 / 0 | Met workload limits |
| 2 | 50 | 50 | 7.66 / 9.36 | 0 / 0 | Met workload limits |
| 2 | 100 | 100 | 6.69 / 8.67 | 0 / 0 | Met workload limits |
| 2 | 250 | 250 | 5.96 / 8.2 | 0 / 0 | Met workload limits |

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

### GitHub self-hosted runner
Failed

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

ValueError: set RUNNER\_BENCHMARK\_REPOSITORY and RUNNER\_BENCHMARK\_REVISION to the repository and commit hosting benchmark-runner.yml

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

### Odoo Community 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 | 4 | 4 |
| CPU | Dedicated vCPU | 0% of busy CPU time stolen |
| RAM | 16 GB | 15.6 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:** Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz

**CPU cores:** 4

**CPU frequency:** 2594 MHz

**AES-NI:** Yes

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

**RAM reported:** 15.6 GiB

**Swap reported:** 0 MiB

**Disk reported:** 58 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:** General Purpose — Premium Intel 4 vCPU / 16 GB

**Product line:** General Purpose — Premium Intel

**Location:** New York 3

**vCPU:** 4 dedicated vCPU

**Architecture:** x86\_64

**RAM:** 16 GB

**Storage:** 60 GB NVMe

**Virtualization:** KVM

**Network:** 10 Gbps

**Transfer:** 5 TB

**Port 25:** Closed

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

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

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

**Ran at:** Oct 22, 2026, 03:48:41 UTC

**Parser version:** 5

## Run timeline

**Queued:** Oct 20, 2026, 23:25:00 UTC

**First update from the server:** Oct 22, 2026, 03:48:38 UTC

**Completed:** Oct 22, 2026, 08:19:00 UTC

**Server deleted:** Oct 22, 2026, 08:19:00 UTC

**Cost of this run:** $1.02

Tests 46 of 51 done Live output 1324 lines

Setup 4 cores, 15.6 GiB RAM 4 of 4Done

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

Network, IPv4 (iperf3) Median 1.65 Gbit/s send, 2.84 Gbit/s receive 3 of 3Done

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

Geekbench 7, multi-core Score 2,859 9 of 9Done

Web apps 5 failed 7 of 12Some failed

TestResultTime

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

PostgreSQL large dataset 6 measured trials completed 6 trials Measurements, 6 measured trials completed 30m 30s

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

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

Discourse community 8 measured trials completed 8 trials Measurements, 8 measured trials completed 35m 05s

n8n workflows URLError: \<urlopen error [Errno 111] Connection refused\> Stopped URLError: \<urlopen error [Errno 111] Connection refused\> 27m 41s

n8n queue workers URLError: \<urlopen error [Errno 111] Connection refused\> Stopped URLError: \<urlopen error [Errno 111] Connection refused\> 27s

Ghost publishing 8 measured trials completed 8 trials Measurements, 8 measured trials completed 32m 04s

Formbricks / Next.js RuntimeError: RuntimeError: TimeoutError: Stopped RuntimeError: RuntimeError: TimeoutError: 12m 48s

Elasticsearch search and ingestion 8 measured trials completed 8 trials Measurements, 8 measured trials completed 33m 22s

GitHub self-hosted runner ValueError: set RUNNER\_BENCHMARK\_REPOSITORY and RUNNER\_BENCHMARK\_REVISION to the repository and commit hosting benchmark-runner.yml Stopped ValueError: set RUNNER\_BENCHMARK\_REPOSITORY and RUNNER\_BENCHMARK\_REVISION to the repository and commit hosting benchmark-runner.yml 0s

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' 1m 20s

Finish Results saved 1 of 1Done

Watch party 0 watching

This party closed at 09:19 UTC. It's read only now.

## Watch party

Loading the party
