fabianwimberger
cloud-bench
Python

Benchmark CPU, memory, and disk performance across AWS, GCP, AZURE, ORACLE, Hetzner and OVH instances. With cost analysis.

Last updated Jun 30, 2026
24
Stars
0
Forks
3
Issues
0
Stars/day
Attention Score
35
Language breakdown
Python 55.6%
JavaScript 19.7%
HCL 12.7%
Shell 5.5%
CSS 5.1%
Go Template 0.8%
Files click to expand
README

Cloud Bench

CI codecov License: MIT

A cloud instance benchmarking suite comparing CPU, memory, and disk performance across providers with cost analysis. 36 instance types across Hetzner Cloud, AWS EC2, OVHcloud, Oracle Cloud (OCI), Google Cloud Platform (GCP), and Microsoft Azure.

Background

A €20 instance can mean very different things between providers. This runs the same sysbench and fio suite on each, tracks cost per benchmark point, and publishes the results to GitHub Pages. Infrastructure is provisioned and torn down via Terraform and Ansible so runs stay reproducible.

Features

  • Multi-provider — Hetzner Cloud, AWS EC2, OVHcloud, OCI, GCP, Azure (36 instance types)
  • Standardized benchmarks — CPU (sysbench), Memory (sysbench), Disk I/O (fio)
  • Metric averaging — scores based on all historical runs, not just the latest
  • Cost analysis — performance per dollar with EUR/USD toggle
  • Interactive dashboard — filtering, comparison, per-instance history charts
  • Automated pricing — live pricing from provider APIs + ECB exchange rates
  • Security-first — fresh SSH keys per run, firewall whitelisting, automatic cleanup
  • Cost guards — pre-run estimation blocks expensive configurations ($5 / 15 instance limit)
  • Local benchmarking — standalone script for users to compare their own hardware

Live Dashboard

View the latest results at fabianwimberger.github.io/cloud-bench

Scores shown are averaged across all benchmark runs for each instance type, not just the latest run.

Pipeline

flowchart LR
    TF[Terraform<br/>provision] --> AN[Ansible<br/>sysbench, fio]
    AN --> R[Collect JSON]
    R --> TFD[Terraform<br/>destroy]
    R --> P[Process<br/>normalize, price]
    P --> D[GitHub Pages<br/>dashboard]

Quick Start

Local

Compare your own machine against the official results. No cloud credentials needed:

git clone https://github.com/fabianwimberger/cloud-bench.git
cd cloud-bench
sudo bash scripts/run-local-bench.sh

Runs the same sysbench/fio benchmarks and outputs a JSON file plus a terminal summary. See docs/local-benchmark.md for details.

Cloud

# Clone and configure
git clone https://github.com/fabianwimberger/cloud-bench.git
cd cloud-bench

Hetzner Cloud

export HCLOUD_TOKEN="your-token" ./scripts/run-local.sh

AWS

export AWSACCESSKEY_ID="your-key" export AWSSECRETACCESS_KEY="your-secret" PROVIDER=aws ./scripts/run-local.sh

OVHcloud

export OVHOPENSTACKUSERNAME="user-xxxxx" export OVHOPENSTACKPASSWORD="your-password" export OVHCLOUDPROJECT_ID="your-project-id" PROVIDER=ovhcloud ./scripts/run-local.sh

GCP

export GCPPROJECTID="your-project-id" export GCPCREDENTIALS='{"type": "serviceaccount", ...}' # Service account JSON key PROVIDER=gcp ./scripts/run-local.sh

Azure

export AZURE_SUBSCRIPTI export AZURECLIENTID="your-client-id" export AZURECLIENTSECRET="your-client-secret" export AZURETENANTID="your-tenant-id" PROVIDER=azure ./scripts/run-local.sh

Or run via GitHub Actions: Actions > Run Benchmarks

How It Works

config/instances.yaml → Terraform → Ansible (sysbench/fio) → Python (scoring) → React Dashboard

Methodology:

  • 5 runs per test, median value used for consistency
  • Scores normalized 0-100 per category
  • Weights: CPU 40%, Memory 35%, Disk 25%
  • Raw metrics averaged across all historical runs per instance
  • Cost-efficiency calculated from monthly price and composite score
  • All benchmarks run on Ubuntu 24.04 in EU (Frankfurt) regions

Configuration

Edit config/instances.yaml to add/remove instances:

providers:
  hetzner:
    currency: EUR
    default_region: fsn1
    instances:
      - id: cx23
        name: CX23
        arch: X86
        vcpu: 2
        ram_gb: 4
        disk_gb: 40
        pricing:
          hourly: 0.0048
          monthly: 2.99

No code changes needed — Terraform, Ansible, and the frontend all pick up config changes automatically. See docs/configuration.md for details.

Security

  • Fresh Ed25519 SSH key generated per run, never reused
  • Firewall/security group allows SSH from runner IP only
  • Auto-cleanup via if: always() — infrastructure destroyed even if benchmarks fail
  • Orphan cleanup workflows as safety net (manual trigger for all providers)

Documentation

License

MIT License — see LICENSE file.

Third-Party Licenses

| Component | License | Source | |-----------|---------|--------| | sysbench | GPL v2+ | https://github.com/akopytov/sysbench | | fio | GPL v2 | https://github.com/axboe/fio |

🔗 More in this category

© 2026 GitRepoTrend · fabianwimberger/cloud-bench · Updated daily from GitHub