Hetzner cpx22
The complete benchmark report. Every workload, in one place.
All values below are medians of passed runs unless stated otherwise.
CPU performance
sysbench 1.0.20 prime workload · 1 thread and all 2 vCPUs.
Single thread
All 2 vCPUs
- 1 thread1,647
- 2 threads3,269
Median of 3 passed runs of about 30 seconds per thread count.
gzip fixed corpus · compression input throughput 207.5 MiB/s · single run.
Memory bandwidth
sysbench 1.0.20 memory · sequential read and write operations.
- Read31,622
- Write25,991
- CopyNot measured
Median of 3 passed runs of about 30 seconds per operation. The copy workload is deferred in this methodology.
Disk performance
fio 3.36 · direct I/O · sequential, random and mixed jobs measured separately.
| Workload | Throughput | p95 latency |
|---|---|---|
| Sequential read | 4,536 MB/s | 9,765 µs |
| Sequential write | 3,766 MB/s | 10,289 µs |
| Random read | 70,359 IOPS | 659.5 µs |
| Random write | 65,823 IOPS | 667.6 µs |
| Random mix · read | 31,057 IOPS | 1,090 µs |
| Random mix · write | 13,322 IOPS | 1,335 µs |
Median of 3 passed runs of about 30 seconds per job. The mixed job's reads and writes are listed separately.
Network performance
Source: Singapore, SG · published internet speed observations.
No published internet speed test for this plan and region.
The original capped iperf path checks are retained as historical evidence under Evidence.
PostgreSQL performance
PostgreSQL 16.15 · pgbench · in-memory and storage-bound datasets.
| Dataset profile | Transactions / sec | Average latency | Passed runs |
|---|---|---|---|
| In memory | 3,704 | 1.08 ms | 3 of 3 passed |
| Storage-bound | 3,090 | 1.29 ms | 3 of 3 passed |
Median of 3 passed runs of about 30 seconds per dataset. Latency percentiles were not measured.
Consistency across runs
One deployment · repeated runs inside the recorded test window.
Workload skipped · No measured score. This report covers a 19 min test window, so no time series exists and none is drawn.
| Repetition | CPU 1 thread | Memory read | Random read | PostgreSQL |
|---|---|---|---|---|
| 1 | 1,647 events/s | 31,622 MiB/s | 71,916 IOPS | 3,667 tx/s |
| 2 | 1,645 events/s | 31,828 MiB/s | 70,359 IOPS | 3,704 tx/s |
| 3 | 1,648 events/s | 31,480 MiB/s | 67,787 IOPS | 3,728 tx/s |
Individual runs, not medians. PostgreSQL uses the in-memory dataset. Spread within one test window does not establish long-term consistency.
Inspect the evidence.
Recorded environment, reviewed measurements and the published snapshot.
Reviewed, sanitized snapshot: every run, the environment record and all limitations. Raw intake logs remain private.
One deployment describes this report, not every server a provider operates.
A 19 min test window does not establish 24-hour consistency or long-term reliability.
AI-assisted review · AI-assisted review · Reviewed 18 Oct 2026 · Published 18 Oct 2026 · Revision 1
Review and measurement limits
- Single deployment; not an independent three-instance cohort.
- No hardware attestation.
- Pilot memory implements read/write; copy workload deferred.
- Network endpoints must be supplied by the operator; no public third-party servers are used.
- Database latency distribution is not available from this pilot parser; average latency only.
- This profile is not a full implementation of all proposed methodology tests.
- Resource-constrained environment: CPU workers and RAM reflect affinity/cgroup limits, not host capacity. Private resource-limits evidence retains both; do not merge container/VM or architecture cohorts.
- Short profile: does not establish 24-hour consistency.
- This report received AI-assisted evidence review under user-delegated authorization. This is not independent human verification or hardware attestation.
- This pilot measures its recorded test window. It does not establish 24-hour consistency, long-term reliability or provider-wide performance.
- Network tests use two controlled endpoints, one stream, a 100 Mbit/s rate setting and a requested 64 MiB byte target per direction. Reverse-mode polling can exceed that byte target; actual sent and received bytes govern traffic accounting. These results do not measure maximum link capacity.
- Provider, region and SKU were matched to retained deployment records. Missing detected values and deployment locations within a detected Hetzner network zone use operator-supplied context and remain labelled supplied. The original detected network zone is retained privately; the detected datacenter zone remains in the report. Control-plane records and checksums do not attest the physical host or establish physical-host independence.
- Package versions and available guard and journal evidence were reviewed. These records do not establish continuous absence of package activity throughout the test window.
- The pilot includes memory read/write and average PostgreSQL latency. Memory-copy tests and PostgreSQL latency percentiles are not implemented. Skipped consistency and missing measurements are not scores.
- These network observations were collected during provider-reported maintenance on core routers. They are not a normal-path baseline. The status notice does not establish that maintenance caused any individual measurement or any CPU, memory, disk or database result.
Environment and configuration
| Recorded field | Value |
|---|---|
| Provider | Hetzner · detected |
| Region | Singapore, SG (sin) · supplied |
| Plan | cpx22 · supplied |
| CPU | AMD EPYC-Genoa Processor |
| Architecture | x86_64 |
| Kernel | 6.8.0-138-generic |
| Virtualization | kvm |
| Agent | 0.2.0 (45388107250ca6e26b216f15a9c17b8d405ec1b7+source.ff98e866b26b3ac76b512554) |
| Dependencies | sysbench: sysbench 1.0.20 · fio: fio-3.36 · iperf3: iperf 3.16 (cJSON 1.7.15) · postgresql: postgres (PostgreSQL) 16.15 (Ubuntu 16.15-0ubuntu0.24.04.1) · pgbench: pgbench (PostgreSQL) 16.15 (Ubuntu 16.15-0ubuntu0.24.04.1) · gzip: gzip 1.12 · apt:sysbench: 1.0.20+ds-6build2 · apt:fio: 3.36-1ubuntu0.1 · apt:iperf3: 3.16-1build2 · apt:postgresql-16: 16.15-0ubuntu0.24.04.1 · apt:postgresql-client-16: 16.15-0ubuntu0.24.04.1 · apt:gzip: 1.12-1ubuntu3.2 |
| Configuration hash | 2ecdad5941770963efb0fb612b5f2f2666da32a393c2b2f7a8b78bcfaa6089e5 |
| Started | 2026-10-17T16:47:40.332Z |
| Finished | 2026-10-17T17:07:05.892Z |
| Execution status | completed |
Historical capped network path checks
Original full benchmark deployment · 17 Oct 2026. These controlled iperf path checks used a 100 Mbit/s rate setting and do not measure internet speed or maximum link capacity. RTT is the probe mean; jitter and packet loss were not measured. The original report JSON retains these measurements.
| Controlled destination | Download | Upload | RTT | Jitter | Loss |
|---|---|---|---|---|---|
| Controlled endpoint 1 | 99.9 Mbit/s | 97.0 Mbit/s | 161.5 ms | — | — |
| Controlled endpoint 2 | 100.1 Mbit/s | 81.6 Mbit/s | 160.2 ms | — | — |
Every measured repetition and outcome
CPU performance
| Workload / repetition | Outcome | Metric | Value |
|---|---|---|---|
| CPU 1 thread(s) · repetition 1 | passed | Events per second | 1,647 events/s |
| CPU 2 thread(s) · repetition 1 | passed | Events per second | 3,286 events/s |
| CPU 1 thread(s) · repetition 2 | passed | Events per second | 1,645 events/s |
| CPU 2 thread(s) · repetition 2 | passed | Events per second | 3,266 events/s |
| CPU 1 thread(s) · repetition 3 | passed | Events per second | 1,648 events/s |
| CPU 2 thread(s) · repetition 3 | passed | Events per second | 3,269 events/s |
| gzip fixed corpus · repetition 1 | passed | Compression input throughput | 207.5 MiB/s |
Memory bandwidth
| Workload / repetition | Outcome | Metric | Value |
|---|---|---|---|
| Memory read · repetition 1 | passed | Bandwidth | 31,622 MiB/s |
| Memory write · repetition 1 | passed | Bandwidth | 25,971 MiB/s |
| Memory read · repetition 2 | passed | Bandwidth | 31,828 MiB/s |
| Memory write · repetition 2 | passed | Bandwidth | 25,991 MiB/s |
| Memory read · repetition 3 | passed | Bandwidth | 31,480 MiB/s |
| Memory write · repetition 3 | passed | Bandwidth | 26,234 MiB/s |
Disk performance
| Workload / repetition | Outcome | Metric | Value |
|---|---|---|---|
| Disk write · repetition 1 | passed | write bandwidth | 3,817 MB/s |
| Disk write · repetition 1 | passed | write operations | 3,640 IOPS |
| Disk write · repetition 1 | passed | write p50 latency | 8,454 µs |
| Disk write · repetition 1 | passed | write p95 latency | 10,158 µs |
| Disk write · repetition 1 | passed | write p99 latency | 11,993 µs |
| Disk read · repetition 1 | passed | read bandwidth | 5,152 MB/s |
| Disk read · repetition 1 | passed | read operations | 4,913 IOPS |
| Disk read · repetition 1 | passed | read p50 latency | 6,128 µs |
| Disk read · repetition 1 | passed | read p95 latency | 8,454 µs |
| Disk read · repetition 1 | passed | read p99 latency | 9,372 µs |
| Disk randwrite · repetition 1 | passed | write bandwidth | 269.6 MB/s |
| Disk randwrite · repetition 1 | passed | write operations | 65,823 IOPS |
| Disk randwrite · repetition 1 | passed | write p50 latency | 469.0 µs |
| Disk randwrite · repetition 1 | passed | write p95 latency | 667.6 µs |
| Disk randwrite · repetition 1 | passed | write p99 latency | 888.8 µs |
| Disk randread · repetition 1 | passed | read bandwidth | 294.6 MB/s |
| Disk randread · repetition 1 | passed | read operations | 71,916 IOPS |
| Disk randread · repetition 1 | passed | read p50 latency | 419.8 µs |
| Disk randread · repetition 1 | passed | read p95 latency | 610.3 µs |
| Disk randread · repetition 1 | passed | read p99 latency | 888.8 µs |
| Disk randrw · repetition 1 | passed | read bandwidth | 127.4 MB/s |
| Disk randrw · repetition 1 | passed | read operations | 31,093 IOPS |
| Disk randrw · repetition 1 | passed | read p50 latency | 626.7 µs |
| Disk randrw · repetition 1 | passed | read p95 latency | 1,073 µs |
| Disk randrw · repetition 1 | passed | read p99 latency | 1,286 µs |
| Disk randrw · repetition 1 | passed | write bandwidth | 54.6 MB/s |
| Disk randrw · repetition 1 | passed | write operations | 13,336 IOPS |
| Disk randrw · repetition 1 | passed | write p50 latency | 626.7 µs |
| Disk randrw · repetition 1 | passed | write p95 latency | 1,303 µs |
| Disk randrw · repetition 1 | passed | write p99 latency | 1,991 µs |
| Disk write · repetition 2 | passed | write bandwidth | 3,766 MB/s |
| Disk write · repetition 2 | passed | write operations | 3,591 IOPS |
| Disk write · repetition 2 | passed | write p50 latency | 8,585 µs |
| Disk write · repetition 2 | passed | write p95 latency | 10,289 µs |
| Disk write · repetition 2 | passed | write p99 latency | 12,648 µs |
| Disk read · repetition 2 | passed | read bandwidth | 4,179 MB/s |
| Disk read · repetition 2 | passed | read operations | 3,986 IOPS |
| Disk read · repetition 2 | passed | read p50 latency | 7,569 µs |
| Disk read · repetition 2 | passed | read p95 latency | 10,682 µs |
| Disk read · repetition 2 | passed | read p99 latency | 12,124 µs |
| Disk randwrite · repetition 2 | passed | write bandwidth | 281.1 MB/s |
| Disk randwrite · repetition 2 | passed | write operations | 68,637 IOPS |
| Disk randwrite · repetition 2 | passed | write p50 latency | 448.5 µs |
| Disk randwrite · repetition 2 | passed | write p95 latency | 667.6 µs |
| Disk randwrite · repetition 2 | passed | write p99 latency | 806.9 µs |
| Disk randread · repetition 2 | passed | read bandwidth | 288.2 MB/s |
| Disk randread · repetition 2 | passed | read operations | 70,359 IOPS |
| Disk randread · repetition 2 | passed | read p50 latency | 428.0 µs |
| Disk randread · repetition 2 | passed | read p95 latency | 659.5 µs |
| Disk randread · repetition 2 | passed | read p99 latency | 921.6 µs |
| Disk randrw · repetition 2 | passed | read bandwidth | 126.7 MB/s |
| Disk randrw · repetition 2 | passed | read operations | 30,943 IOPS |
| Disk randrw · repetition 2 | passed | read p50 latency | 626.7 µs |
| Disk randrw · repetition 2 | passed | read p95 latency | 1,090 µs |
| Disk randrw · repetition 2 | passed | read p99 latency | 1,335 µs |
| Disk randrw · repetition 2 | passed | write bandwidth | 54.4 MB/s |
| Disk randrw · repetition 2 | passed | write operations | 13,273 IOPS |
| Disk randrw · repetition 2 | passed | write p50 latency | 618.5 µs |
| Disk randrw · repetition 2 | passed | write p95 latency | 1,335 µs |
| Disk randrw · repetition 2 | passed | write p99 latency | 2,007 µs |
| Disk write · repetition 3 | passed | write bandwidth | 3,623 MB/s |
| Disk write · repetition 3 | passed | write operations | 3,455 IOPS |
| Disk write · repetition 3 | passed | write p50 latency | 9,110 µs |
| Disk write · repetition 3 | passed | write p95 latency | 10,551 µs |
| Disk write · repetition 3 | passed | write p99 latency | 12,517 µs |
| Disk read · repetition 3 | passed | read bandwidth | 4,536 MB/s |
| Disk read · repetition 3 | passed | read operations | 4,326 IOPS |
| Disk read · repetition 3 | passed | read p50 latency | 6,980 µs |
| Disk read · repetition 3 | passed | read p95 latency | 9,765 µs |
| Disk read · repetition 3 | passed | read p99 latency | 10,813 µs |
| Disk randwrite · repetition 3 | passed | write bandwidth | 269.1 MB/s |
| Disk randwrite · repetition 3 | passed | write operations | 65,706 IOPS |
| Disk randwrite · repetition 3 | passed | write p50 latency | 469.0 µs |
| Disk randwrite · repetition 3 | passed | write p95 latency | 684.0 µs |
| Disk randwrite · repetition 3 | passed | write p99 latency | 913.4 µs |
| Disk randread · repetition 3 | passed | read bandwidth | 277.7 MB/s |
| Disk randread · repetition 3 | passed | read operations | 67,787 IOPS |
| Disk randread · repetition 3 | passed | read p50 latency | 448.5 µs |
| Disk randread · repetition 3 | passed | read p95 latency | 667.6 µs |
| Disk randread · repetition 3 | passed | read p99 latency | 938.0 µs |
| Disk randrw · repetition 3 | passed | read bandwidth | 127.2 MB/s |
| Disk randrw · repetition 3 | passed | read operations | 31,057 IOPS |
| Disk randrw · repetition 3 | passed | read p50 latency | 618.5 µs |
| Disk randrw · repetition 3 | passed | read p95 latency | 1,090 µs |
| Disk randrw · repetition 3 | passed | read p99 latency | 1,319 µs |
| Disk randrw · repetition 3 | passed | write bandwidth | 54.6 MB/s |
| Disk randrw · repetition 3 | passed | write operations | 13,322 IOPS |
| Disk randrw · repetition 3 | passed | write p50 latency | 634.9 µs |
| Disk randrw · repetition 3 | passed | write p95 latency | 1,352 µs |
| Disk randrw · repetition 3 | passed | write p99 latency | 2,040 µs |
Network performance
| Workload / repetition | Outcome | Metric | Value |
|---|---|---|---|
| Network upload endpoint 1 · repetition 1 | passed | Sender throughput | 100.2 Mbit/s |
| Network upload endpoint 1 · repetition 1 | passed | Receiver throughput | 97.0 Mbit/s |
| Network download endpoint 1 · repetition 1 | passed | Sender throughput | 100.1 Mbit/s |
| Network download endpoint 1 · repetition 1 | passed | Receiver throughput | 99.9 Mbit/s |
| Latency endpoint 1 · repetition 1 | passed | Round-trip mean | 161.5 ms |
| Network upload endpoint 2 · repetition 1 | passed | Sender throughput | 85.9 Mbit/s |
| Network upload endpoint 2 · repetition 1 | passed | Receiver throughput | 81.6 Mbit/s |
| Network download endpoint 2 · repetition 1 | passed | Sender throughput | 100.1 Mbit/s |
| Network download endpoint 2 · repetition 1 | passed | Receiver throughput | 100.1 Mbit/s |
| Latency endpoint 2 · repetition 1 | passed | Round-trip mean | 160.2 ms |
PostgreSQL performance
| Workload / repetition | Outcome | Metric | Value |
|---|---|---|---|
| PostgreSQL memory dataset · repetition 1 | passed | Transactions | 3,667 tx/s |
| PostgreSQL memory dataset · repetition 1 | passed | Average latency | 1.09 ms |
| PostgreSQL memory dataset · repetition 2 | passed | Transactions | 3,704 tx/s |
| PostgreSQL memory dataset · repetition 2 | passed | Average latency | 1.08 ms |
| PostgreSQL memory dataset · repetition 3 | passed | Transactions | 3,728 tx/s |
| PostgreSQL memory dataset · repetition 3 | passed | Average latency | 1.07 ms |
| PostgreSQL storage dataset · repetition 1 | passed | Transactions | 3,132 tx/s |
| PostgreSQL storage dataset · repetition 1 | passed | Average latency | 1.28 ms |
| PostgreSQL storage dataset · repetition 2 | passed | Transactions | 2,914 tx/s |
| PostgreSQL storage dataset · repetition 2 | passed | Average latency | 1.37 ms |
| PostgreSQL storage dataset · repetition 3 | passed | Transactions | 3,090 tx/s |
| PostgreSQL storage dataset · repetition 3 | passed | Average latency | 1.29 ms |
Consistency over time
| Workload / repetition | Outcome | Metric | Value |
|---|---|---|---|
| 24-hour consistency · repetition 1 | skipped | No measured score | Not measured |