# DigitalOcean CPU-Optimized 2 vCPU / 4 GB

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

Benchmark complete

Finished Oct 7, 2026

Geekbench 7 single-core

1,057

Faster than 18% of 2 vCPU plans

Geekbench 7 multi-core

1,251

Faster than 9% of 2 vCPU plans

Disk 4K IOPS

60,279

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=sfo2)

-

Provider

DigitalOcean

-

Plan

CPU-Optimized 2 vCPU / 4 GB

-

Location

San Francisco 2

-

vCPU

2

-

RAM

4 GB

-

Storage

25 GB SSD

-

Network

2 Gbps

-

OS image

ubuntu-24-04-x64

-

Trigger

Scheduled

-

Queued at

Oct 7, 2026, 01:06:00 UTC

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

Referral link. If you sign up through it, I may get paid.

[Skip the referral](https://rackcensus.com/go/digitalocean/direct)[How this works](https://rackcensus.com/transparency#referrals-heading)

## Latest runs of this plan

- [New York 1 Oct 5, 2026](https://rackcensus.com/benchmarks/cgj40n-digitalocean-cpu-optimized-2-vcpu-4-gb-nyc1-benchmark)934
- [Singapore 1 Oct 3, 2026](https://rackcensus.com/benchmarks/t36q0p-digitalocean-c-2-sgp1-benchmark)972
- [New York 1 Oct 3, 2026](https://rackcensus.com/benchmarks/wvj2os-digitalocean-c-2-nyc1-benchmark)1,258

[Full history of this plan](https://rackcensus.com/plans/xhyrw9-digitalocean-cpu-optimized-2-vcpu-4-gb-benchmarks/history)

## CPU

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

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,08431st of 44 | 1,14640th of 44 |
| Navigation | 1,29924th of 44 | Single-core only |
| HTML5 Browser | 1,06730th of 44 | Single-core only |
| PDF Viewer | 1,15729th of 44 | Single-core only |
| Photo Library | 88032nd of 44 | 1,08641st of 44 |
| Clang | 1,11330th of 44 | 1,47537th of 44 |
| Text Processing | 90138th of 44 | 1,10541st of 44 |
| Asset Compression | 89339th of 44 | 1,22640th of 44 |
| HDR | 1,00229th of 44 | 1,13940th of 44 |
| Photo Editor | 1,17029th of 44 | 1,44938th of 44 |
| Ray Tracer | 1,04733rd of 44 | 1,45940th of 44 |
| Structure from Motion | 1,16331st of 44 | Single-core only |
| Game Physics | 1,03031st of 44 | Single-core only |
| Video Encoder | 1,02730th of 44 | Single-core only |
| Audio Encoder | 1,09632nd of 44 | Single-core only |
| Video Player | 1,07730th of 44 | Single-core only |

Rank among the 44 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.

## Memory, TLS and scheduler

### Memory bandwidth (STREAM)

| Test | Result | Runs | Spread |
| --- | --- | --- | --- |
| Copy higher is better | 11.7 GB/s | 3 | 0.194% |
| Scale higher is better | 13.3 GB/s | 3 | 0.542% |
| Add higher is better | 13.9 GB/s | 3 | 0.643% |
| Triad higher is better | 14 GB/s | 3 | 0.622% |

Average of 3 runs. Spread is the standard deviation as a share of the average.

### TLS and crypto (OpenSSL)

| Test | Result | Runs | Spread |
| --- | --- | --- | --- |
| RSA 4096 signs higher is better | 252/s | 3 | 1.54% |
| RSA 4096 verifies higher is better | 16,763/s | 3 | 0.0883% |
| SHA-256 higher is better | 285 MB/s | 3 | 0.102% |
| AES-256-GCM higher is better | 3.74 GB/s | 3 | 0.339% |
| ChaCha20-Poly1305 higher is better | 2.6 GB/s | 3 | 0.334% |

Average of 3 runs. Spread is the standard deviation as a share of the average.

### Scheduler latency (schbench)

| Test | Result | Runs | Spread |
| --- | --- | --- | --- |
| Request latency, median lower is better | 7.14 ms | 3 | 0.129% |
| Requests per second, 90th percentile higher is better | 278/s | 3 | 0.208% |
| Request latency, 99.9th percentile lower is better | 13.3 ms | 3 | 0.847% |
| Requests per second, average higher is better | 277/s | 3 | 0.0902% |

Average of 3 runs. Spread is the standard deviation as a share of the average.

## Disk

| Block size | Read | Write | Total |
| --- | --- | --- | --- |
| 4K | 117.6 MB/s (30,100 IOPS) | 117.9 MB/s (30,179 IOPS) | 235.5 MB/s (60,279 IOPS) |
| 64K | 152.1 MB/s (2,433 IOPS) | 152.9 MB/s (2,445 IOPS) | 304.9 MB/s (4,878 IOPS) |
| 512K | 204.6 MB/s (409 IOPS) | 215.4 MB/s (430 IOPS) | 420 MB/s (839 IOPS) |
| 1M | 218.4 MB/s (218 IOPS) | 232.9 MB/s (232 IOPS) | 451.3 MB/s (450 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 | 873 Mbps | 1.64 Gbps |
| Eranium, Amsterdam, NL (100G) | IPv4 | 1.06 Gbps | 1.66 Gbps |
| Leaseweb, Singapore, SG (10G) | IPv4 | 1.09 Gbps | 1.29 Gbps |
| Clouvider, Los Angeles, CA, US (10G) | IPv4 | 1.96 Gbps | 1.88 Gbps |
| Leaseweb, NYC, NY, US (10G) | IPv4 | 1.73 Gbps | 1.48 Gbps |

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

## Datastores

### PostgreSQL

#### fsync speed (pg\_test\_fsync)

| Method | Operations per second | Time per operation |
| --- | --- | --- |
| One 8 kB write |
| --- |
| open\_datasync | 1,288 | 0.777 ms |
| fdatasync | 1,519 | 0.658 ms |
| fsync | 692 | 1.45 ms |
| fsync\_writethrough | Not supported here | n/a |
| open\_sync | 742 | 1.35 ms |
| Two 8 kB writes |
| --- |
| open\_datasync | 823 | 1.22 ms |
| fdatasync | 1,582 | 0.632 ms |
| fsync | 639 | 1.57 ms |
| fsync\_writethrough | Not supported here | n/a |
| open\_sync | 354 | 2.82 ms |
| open\_sync at different write sizes |
| --- |
| 1 \* 16kB open\_sync write | 751 | 1.33 ms |
| 2 \* 8kB open\_sync writes | 379 | 2.64 ms |
| 4 \* 4kB open\_sync writes | 213 | 4.7 ms |
| 8 \* 2kB open\_sync writes | 97.1 | 10.3 ms |
| 16 \* 1kB open\_sync writes | 43.7 | 22.9 ms |
| fsync on a non-write descriptor |
| --- |
| write, fsync, close | 691 | 1.45 ms |
| write, close, fsync | 778 | 1.29 ms |
| Non-synced 8 kB writes |
| --- |
| write | 612,131 | 0.002 ms |

pg\_test\_fsync against the Docker volume Postgres keeps its data on. fdatasync is Linux's default wal\_sync\_method.

#### pgbench at scale 10

| Workload | Clients | Transactions/s | Median | p95 | p99 | p99.9 | Failed |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Read/write (TPC-B like) | 1 | 878 | 1.04 ms | 1.26 ms | 3.16 ms | 27.2 ms | 0 |
| Read/write (TPC-B like) | 8 | 2,417 | 2.75 ms | 5.64 ms | 11.6 ms | 52.6 ms | 0 |
| Read/write (TPC-B like) | 32 | 2,528 | 9.21 ms | 30.3 ms | 57.1 ms | 186 ms | 0 |
| Read only | 1 | 19,192 | 0.057 ms | 0.069 ms | 0.083 ms | 0.191 ms | 0 |
| Read only | 8 | 28,070 | 0.262 ms | 0.409 ms | 0.493 ms | 1.39 ms | 0 |
| Read only | 32 | 28,746 | 0.98 ms | 1.46 ms | 2.01 ms | 3.92 ms | 0 |

Scale 10 (1,000,000 accounts), loaded in 2.32 s. 60 s per run, prepared statements. Latency comes from sampled transaction logs, and p99.9 is left out when fewer than 1,000 were sampled.

#### pgbench at scale 100

| Workload | Clients | Transactions/s | Median | p95 | p99 | p99.9 | Failed |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Read/write (TPC-B like) | 1 | 659 | 1.21 ms | 1.82 ms | 7.08 ms | 50.2 ms | 0 |
| Read/write (TPC-B like) | 8 | 1,800 | 3.53 ms | 8.86 ms | 21 ms | 70.7 ms | 0 |
| Read/write (TPC-B like) | 32 | 2,105 | 10.9 ms | 34.7 ms | 92.5 ms | 201 ms | 0 |
| Read only | 1 | 12,596 | 0.068 ms | 0.105 ms | 0.406 ms | 2.36 ms | 0 |
| Read only | 8 | 22,170 | 0.336 ms | 0.518 ms | 0.685 ms | 2.18 ms | 0 |
| Read only | 32 | 23,075 | 1.25 ms | 1.93 ms | 2.67 ms | 4.93 ms | 0 |

Scale 100 (10,000,000 accounts), loaded in 26.9 s. 60 s per run, prepared statements. Latency comes from sampled transaction logs, and p99.9 is left out when fewer than 1,000 were sampled.

### MySQL

#### sysbench OLTP

| Workload | Threads | Transactions/s | Queries/s | Median | p95 | p99 | Errors |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Read/write | 1 | 154 | 3,083 | 5.18 ms | 9.73 ms | 37.6 ms | 0 |
| Read/write | 8 | 405 | 8,095 | 15.8 ms | 47.5 ms | 94.1 ms | 0 |
| Read/write | 32 | 332 | 6,632 | 65.6 ms | 303 ms | 580 ms | 0 |
| Read only | 1 | 585 | 9,362 | 1.79 ms | 2.26 ms | 2.81 ms | 0 |
| Read only | 8 | 995 | 15,912 | 7.84 ms | 10.7 ms | 12.8 ms | 0 |
| Read only | 32 | 919 | 14,711 | 35 ms | 44.2 ms | 50.1 ms | 0 |

10 tables of 100,000 rows, loaded in 17.7 s. 60 s per run, one connection per thread.

### Redis

#### memtier

| Mix | Operations/s | Hits/s | Median | p99 | p99.9 |
| --- | --- | --- | --- | --- | --- |
| 1:10 set:get | 42,949 | 39,044 | 1.26 ms | 3.3 ms | 5.89 ms |
| 1:1 set:get | 41,625 | 20,812 | 1.33 ms | 3.28 ms | 5.66 ms |

1,000,000 keys of 32 bytes. 64 connections over 2 threads, 60 s per ratio.

## Web frameworks

| Framework | Fortunes req/s | Single query req/s | JSON req/s | Fortunes p99 at 256 connections |
| --- | --- | --- | --- | --- |
| Next.js | The results arrived but couldn't be read, so no numbers are shown. |
| Express | The results arrived but couldn't be read, so no numbers are shown. |
| Fastify | The results arrived but couldn't be read, so no numbers are shown. |
| NestJS | The results arrived but couldn't be read, so no numbers are shown. |
| Nuxt | The results arrived but couldn't be read, so no numbers are shown. |
| FastAPI | The results arrived but couldn't be read, so no numbers are shown. |
| Django | The results arrived but couldn't be read, so no numbers are shown. |
| Rails | The results arrived but couldn't be read, so no numbers are shown. |
| Laravel | The results arrived but couldn't be read, so no numbers are shown. |
| Symfony | The results arrived but couldn't be read, so no numbers are shown. |

### WooCommerce

#### Page mix

| Step | Requests/s | Median | p95 | p99 | Error rate |
| --- | --- | --- | --- | --- | --- |
| 8 virtual users |
| --- |
| Home page | 1.31 | 1.2 s | 1.3 s | 1.34 s | 0% |
| Shop page | 1.31 | 1.62 s | 1.71 s | 1.77 s | 0% |
| Category page | 1.31 | 1.02 s | 1.62 s | 1.67 s | 0% |
| Product page | 1.31 | 1.1 s | 1.27 s | 1.3 s | 0% |
| Product search | 1.31 | 970 ms | 1.07 s | 1.09 s | 0% |
| 32 virtual users |
| --- |
| Home page | 1.36 | 4.35 s | 4.84 s | 4.96 s | 0% |
| Shop page | 1.36 | 5.78 s | 6.65 s | 6.75 s | 0% |
| Category page | 1.36 | 5.11 s | 6.15 s | 6.3 s | 0% |
| Product page | 1.36 | 4.37 s | 4.68 s | 4.75 s | 0% |
| Product search | 1.13 | 4.17 s | 4.46 s | 4.52 s | 0% |

#### Cart and checkout

| Step | Requests/s | Median | p95 | p99 | Error rate |
| --- | --- | --- | --- | --- | --- |
| 8 virtual users |
| --- |
| Add to cart | 2.48 | 1.29 s | 1.46 s | 1.55 s | 0% |
| Cart | 2.48 | 1.05 s | 1.21 s | 1.25 s | 0% |
| Checkout | 2.48 | 822 ms | 963 ms | 975 ms | 0% |
| 32 virtual users |
| --- |
| Add to cart | 2.5 | 4.27 s | 5.19 s | 5.25 s | 0% |
| Cart | 2.5 | 4.6 s | 4.98 s | 5.03 s | 0% |
| Checkout | 2.5 | 3.62 s | 4.07 s | 4.17 s | 0% |

k6 with a fixed number of virtual users, 62 to 71 s per level. The error rate counts responses that weren't a 200.

## 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:** San Francisco 2

**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 7, 2026, 01:07:20 UTC

**Parser version:** 5

## Run timeline

**Queued:** Oct 7, 2026, 01:06:00 UTC

**Server created:** Oct 7, 2026, 01:07:16 UTC

**First update from the server:** Oct 7, 2026, 01:07:16 UTC

**Completed:** Oct 7, 2026, 02:31:00 UTC

**Server deleted:** Oct 7, 2026, 02:31:00 UTC

**Cost of this run:** $0.089

Tests 61 of 61 done Live output 756 lines

Setup 2 cores, 3.8 GiB RAM 4 of 4Done

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

Network, IPv4 (iperf3) Median 1.09 Gbit/s send, 1.64 Gbit/s receive, 1 retried 5 of 5Done

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

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

Phoronix (memory, TLS, scheduler) 3 of 3Done

Datastores 5 of 5Done

Web frameworks 12 of 12Done

Finish Results saved 1 of 1Done

Watch party 0 watching

This party closed at 02:24 UTC. It's read only now.

## Watch party

Loading the party
