# LunaNode m.4 2 vCPU / 4 GB

[Toronto](https://rackcensus.com/locations/toronto-vps-benchmarks "Every provider in Toronto")

Benchmark complete

Finished Oct 20, 2026

Geekbench 7 single-core

624

Faster than 19% of 2 vCPU plans

Geekbench 7 multi-core

1,117

Faster than 0% of 2 vCPU plans

Disk 4K IOPS

97,296

fio random read and write, 50/50

Monthly price at test time

$14.00

80 multi-core points per dollar

Same price today

## Server

[LunaNode](https://rackcensus.com/vps-providers/lunanode-benchmarks)[m.4 2 vCPU / 4 GB](https://rackcensus.com/plans/foq312-lunanode-m-4-2-vcpu-4-gb-benchmarks?location=toronto)

-

Provider

LunaNode

-

Plan

m.4 2 vCPU / 4 GB

-

Location

Toronto

-

vCPU

2

-

RAM

4 GB

-

Storage

35 GB SSD

-

Network

Unknown

-

OS image

Ubuntu 24.04 64-bit (template)

-

Trigger

Scheduled

-

Queued at

Oct 19, 2026, 16:23:00 UTC

[Visit LunaNode](https://rackcensus.com/go/lunanode)

## CPU

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

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 | 85134th of 41 | 1,29620th of 23 |
| Navigation | 96030th of 41 | Single-core only |
| HTML5 Browser | 73735th of 41 | Single-core only |
| PDF Viewer | 92634th of 41 | Single-core only |
| Photo Library | 27240th of 41 | 57623rd of 23 |
| Clang | 66335th of 41 | 1,32722nd of 23 |
| Text Processing | 76534th of 41 | 1,46517th of 23 |
| Asset Compression | 75534th of 41 | 1,51119th of 23 |
| HDR | 51838th of 41 | 1,00123rd of 23 |
| Photo Editor | 40139th of 41 | 80223rd of 23 |
| Ray Tracer | 66837th of 41 | 1,37523rd of 23 |
| Structure from Motion | 82536th of 41 | Single-core only |
| Game Physics | 68235th of 41 | Single-core only |
| Video Encoder | 41239th of 41 | Single-core only |
| Audio Encoder | 80335th of 41 | Single-core only |
| Video Player | 34939th of 41 | Single-core only |

Rank among the 41 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 | 189.8 MB/s (48,584 IOPS) | 190.3 MB/s (48,712 IOPS) | 380.1 MB/s (97,296 IOPS) |
| 64K | 1.53 GB/s (25,140 IOPS) | 1.54 GB/s (25,272 IOPS) | 3.08 GB/s (50,412 IOPS) |
| 512K | 1.56 GB/s (3,186 IOPS) | 1.64 GB/s (3,356 IOPS) | 3.19 GB/s (6,542 IOPS) |
| 1M | 1.96 GB/s (2,004 IOPS) | 2.09 GB/s (2,137 IOPS) | 4.04 GB/s (4,141 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 | 814 Mbps | 694 Mbps |
| Eranium, Amsterdam, NL (100G) | IPv4 | 822 Mbps | 748 Mbps |
| Leaseweb, Singapore, SG (10G) | IPv4 | 629 Mbps | 474 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 | 8.38 / 841.5 | 0 / 0 | load generator fell behind |
| 1 | 500 | 493.74 | 7.75 / 16.56 | 0 / 1127 | load generator fell behind |
| 1 | 1000 | 983.79 | 9.78 / 20.43 | 0 / 2918 | load generator fell behind |
| 1 | 3000 | 2875.89 | 143.77 / 196.08 | 0 / 22228 | latency limit exceeded |
| 2 | 100 | 100 | 8.02 / 10.11 | 0 / 0 | Met workload limits |
| 2 | 500 | 494.25 | 8.67 / 22.44 | 0 / 1034 | load generator fell behind |
| 2 | 1000 | 983.19 | 13.11 / 28.17 | 0 / 3025 | load generator fell behind |
| 2 | 3000 | 2841.79 | 151.16 / 202.06 | 0 / 28296 | latency 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.99 | 2.05 / 4.32 | 0 / 0 | Met workload limits |
| 1 | 5000 | 4999 | 6.17 / 11.65 | 0 / 174 | Met workload limits |
| 1 | 10000 | 9901.87 | 19.59 / 31.87 | 0 / 17607 | latency limit exceeded |
| 1 | 25000 | 13160.49 | 30.59 / 38.71 | 0 / 2130839 | load generator saturated |
| 2 | 1000 | 999.99 | 1.99 / 4.11 | 0 / 0 | Met workload limits |
| 2 | 5000 | 4999.78 | 6.1 / 10.91 | 0 / 32 | Met workload limits |
| 2 | 10000 | 9892.9 | 20.43 / 31.54 | 0 / 19248 | latency limit exceeded |
| 2 | 25000 | 13069.32 | 30.59 / 42.87 | 0 / 2147382 | 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.94 / 7 | 0 / 0 | Met workload limits |
| 1 | 500 | 500 | 221.08 / 289.52 | 0 / 0 | latency limit exceeded |
| 1 | 1000 | 999.99 | 9.36 / 16.22 | 0 / 0 | Met workload limits |
| 1 | 3000 | 2984.69 | 65.62 / 90.6 | 0 / 2631 | load generator saturated |
| 2 | 100 | 100 | 4.82 / 6.39 | 0 / 0 | Met workload limits |
| 2 | 500 | 500 | 4.7 / 10.56 | 0 / 0 | Met workload limits |
| 2 | 1000 | 999.99 | 9.06 / 16.22 | 0 / 0 | Met workload limits |
| 2 | 3000 | 2966.27 | 77.9 / 102.22 | 0 / 5962 | latency 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 | 43.3 / 65.62 | 0 / 0 | Met workload limits |
| 1 | 20 | 20 | 36.78 / 59.92 | 0 / 0 | Met workload limits |
| 1 | 50 | 41.33 | 6740.2 / 7013.92 | 86 / 1313 | latency limit exceeded |
| 1 | 100 | 12.74 | 7013.92 / 7013.92 | 9254 / 6401 | latency limit exceeded |
| 2 | 5 | 0 | 7013.92 / 7013.92 | 900 / 0 | no completed operations |
| 2 | 20 | 19.06 | 44.19 / 140.92 | 169 / 0 | error limit exceeded |
| 2 | 50 | 40.74 | 6875.7 / 7013.92 | 161 / 1343 | latency limit exceeded |
| 2 | 100 | 30.1 | 7013.92 / 7013.92 | 4313 / 8266 | 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 | 0.38 | 9085.12 / 9085.12 | 829 / 0 | latency limit exceeded |
| 1 | 20 | 20 | 58.12 / 134.03 | 0 / 0 | Met workload limits |
| 1 | 50 | 2.87 | 9085.12 / 9085.12 | 7509 / 975 | latency limit exceeded |
| 1 | 100 | 0 | 9085.12 / 9085.12 | 5132 / 12868 | no completed operations |
| 2 | 5 | 5 | 56.39 / 71.86 | 0 / 0 | Met workload limits |
| 2 | 20 | 20 | 66.29 / 134.03 | 0 / 0 | Met workload limits |
| 2 | 50 | 9.97 | 9085.12 / 9085.12 | 5965 / 1239 | latency limit exceeded |
| 2 | 100 | 0 | 9085.12 / 9085.12 | 5130 / 12870 | no completed operations |

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 | 605.69 / 710.39 | 0 / 0 | Met workload limits |
| 1 | 20 | 17.77 | 7013.92 / 7013.92 | 349 / 0 | latency limit exceeded |
| 1 | 50 | 0.87 | 7013.92 / 7013.92 | 6462 / 2375 | latency limit exceeded |
| 1 | 100 | 0.73 | 7013.92 / 7013.92 | 6590 / 11274 | latency limit exceeded |
| 2 | 5 | 5 | 605.69 / 710.39 | 0 / 0 | Met workload limits |
| 2 | 20 | 17.81 | 7013.92 / 7013.92 | 349 / 0 | latency limit exceeded |
| 2 | 50 | 0.88 | 7013.92 / 7013.92 | 6461 / 2375 | latency limit exceeded |
| 2 | 100 | 0.7 | 7013.92 / 7013.92 | 6592 / 11278 | 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 | 16.74 / 21.75 | 0 / 0 | Met workload limits |
| 1 | 50 | 50 | 13.54 / 17.83 | 0 / 0 | Met workload limits |
| 1 | 100 | 100 | 12.56 / 19.39 | 0 / 0 | Met workload limits |
| 1 | 250 | 250 | 42 / 96.24 | 0 / 0 | Met workload limits |
| 2 | 10 | 10 | 16.91 / 22.2 | 0 / 0 | Met workload limits |
| 2 | 50 | 50 | 13.54 / 18.21 | 0 / 0 | Met workload limits |
| 2 | 100 | 100 | 12.69 / 20.01 | 0 / 0 | Met workload limits |
| 2 | 250 | 250 | 45.56 / 91.52 | 0 / 0 | Met workload limits |

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 4096 MiB, 3915 MiB detected.

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 | 2 | 2 |
| CPU | Shared vCPU | 0.1% of busy CPU time stolen |
| RAM | 4 GB | 3.8 GiB |
| Storage | 35 GB SSD | 33.8 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 Xeon E312xx (Sandy Bridge, IBRS update)

**CPU cores:** 2

**CPU frequency:** 2900 MHz

**AES-NI:** Yes

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

**RAM reported:** 3.8 GiB

**Swap reported:** 2 GiB

**Disk reported:** 33.8 GiB

**Virtualization reported:** KVM

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

**Distro:** Ubuntu 24.04.5 LTS

**Kernel:** 6.8.0-106-generic

**Architecture:** x86\_64

**IPv4 reachable:** Yes

**IPv6 reachable:** Yes

## Advertised at test time

**Plan:** m.4 2 vCPU / 4 GB

**Product line:** Memory-Optimized

**Location:** Toronto

**vCPU:** 2 shared vCPU

**Architecture:** x86\_64

**RAM:** 4 GB

**Storage:** 35 GB SSD

**Virtualization:** KVM

**Network:** Unknown

**Transfer:** 2.5 TB

**Port 25:** Unknown

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

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

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

**Ran at:** Oct 20, 2026, 13:16:20 UTC

**Parser version:** 5

## Run timeline

**Queued:** Oct 19, 2026, 16:23:00 UTC

**Server created:** Oct 20, 2026, 13:15:12 UTC

**First update from the server:** Oct 20, 2026, 13:15:12 UTC

**Completed:** Oct 20, 2026, 18:25:14 UTC

**Server deleted:** Oct 20, 2026, 18:25:14 UTC

**Cost of this run:** $0.10

Tests 46 of 50 done Live output 1251 lines

Setup 2 cores, 3.8 GiB RAM 4 of 4Done

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

Network, IPv4 (iperf3) Median 814 Mbit/s send, 694 Mbit/s receive 3 of 3Done

Geekbench 7, single-core Score 624 17 of 17Done

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

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

TestResultTime

PostgreSQL transactions 8 measured trials completed 8 trials Measurements, 8 measured trials completed 30m 35s

PostgreSQL large dataset RuntimeError: RuntimeError: TimeoutError: Stopped RuntimeError: RuntimeError: TimeoutError: 3m 31s

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

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

Discourse community RuntimeError: RuntimeError: TimeoutError: Stopped RuntimeError: RuntimeError: TimeoutError: 21m 37s

n8n workflows 8 measured trials completed 8 trials Measurements, 8 measured trials completed 35m 39s

n8n queue workers 8 measured trials completed 8 trials Measurements, 8 measured trials completed 43m 34s

Ghost publishing 8 measured trials completed 8 trials Measurements, 8 measured trials completed 35m 23s

Formbricks / Next.js RuntimeError: RuntimeError: TimeoutError: Stopped RuntimeError: RuntimeError: TimeoutError: 20m 15s

Elasticsearch search and ingestion 8 measured trials completed 8 trials Measurements, 8 measured trials completed 38m 03s

GitHub self-hosted runner Requires 8192 MiB RAM; plan has 4096 MiB, 3915 MiB detected. 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 37s

Finish Results saved 1 of 1Done

Watch party 0 watching

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

## Watch party

Loading the party
