S3 Performance Benchmark
Replication Guide

Complete technical methodology and setup instructions to replicate our S3 provider performance benchmarking

Purpose: This document provides all technical details necessary to replicate the S3 provider performance benchmarking conducted on September 18-19, 2025.

Want to see the results? Check our S3 provider performance comparison for detailed benchmark analysis.

Virtual Machine Specifications

  • Platform: Linux (Debian GNU/Linux 13 — trixie)
  • Kernel: 6.12.41+deb13-cloud-amd64
  • Architecture: x86_64
  • RAM: 16GB
  • Location: US-East-1 datacenter
  • Working Directory: /root

Required Tools Installation

Install MinIO Warp (Primary Testing Tool)

# Download and install warp v1.0.7
wget https://github.com/minio/warp/releases/download/\
v0.7.6/warp_Linux_x86_64.deb

sudo dpkg -i warp_Linux_x86_64.deb

# Verify installation
warp --version

Install AWS CLI

# Install AWS CLI v1
sudo apt-get update
sudo apt-get install -y awscli

# Verify installation
aws --version

Install System Monitoring Tools

sudo apt-get install -y \
  htop iotop nethogs sysstat

Create AWS Credentials File

Create /root/.aws/credentials with the following structure:

[rabata]
aws_access_key_id = YOUR_RABATA_ACCESS_KEY
aws_secret_access_key = YOUR_RABATA_SECRET_KEY

[amazon]
aws_access_key_id = YOUR_AWS_ACCESS_KEY
aws_secret_access_key = YOUR_AWS_SECRET_KEY

[backblaze]
aws_access_key_id = YOUR_B2_ACCESS_KEY
aws_secret_access_key = YOUR_B2_SECRET_KEY

# Add other providers…

Provider Endpoints and Buckets

Provider Endpoint Region
rabata.io US s3.us-east-1.rabata.io us-east-1
Amazon S3 s3.amazonaws.com us-east-1
Backblaze B2 s3.us-east-005.backblazeb2.com us-east-005
Hetzner fsn1.your-objectstorage.com fsn1
iDrive e2 a6i4.va.idrivee2-49.com virginia
Cloudflare R2 [account-id].r2.cloudflarestorage.com global
DigitalOcean Spaces nyc3.digitaloceanspaces.com nyc3

Test Parameters

  • Test durations: 30 seconds to 10 minutes per test
  • Thread counts: 4, 8, 16, 32 concurrent operations (8 threads shown in comparison charts)
  • Object sizes: 256KiB, 1MiB, 5MiB, 10MiB, 50MiB
  • Operation mix: GET (45%), PUT (15%), DELETE (10%), STAT (30%)

Core Test Commands

Thread Scaling Tests (PUT Operations)

Run for each provider with 4, 8, 16, 32 threads:

# Example for rabata.io with 8 threads
warp put --host ”s3.us-east-1.rabata.io" \
  --access-key "YOUR_ACCESS_KEY" \
  --secret-key "YOUR_SECRET_KEY" \
  --bucket "backupi" \
  --tls --duration 30s \
  --concurrent 8 \
  --obj.size 10MiB

Thread Scaling Tests (GET Operations)

# Example for rabata.io with 8 threads, 200 objects
warp get --host ”s3.us-east-1.rabata.io" \
  --access-key "YOUR_ACCESS_KEY" \
  --secret-key "YOUR_SECRET_KEY" \
  --bucket "backupi" \
  --tls --duration 30s \
  --concurrent 8 \
  --obj.size 10MiB \
  --objects 200

Mixed Operation Tests

# Example for 1MB objects with 8 threads
warp mixed --host ”s3.us-east-1.rabata.io" \
  --access-key "YOUR_ACCESS_KEY" \
  --secret-key "YOUR_SECRET_KEY" \
  --bucket "backupi" \
  --tls --duration 30s \
  --concurrent 8 \
  --obj.size 1MiB \
  --objects 100

File Size Impact Tests

Run with different object sizes (256KiB, 1MiB, 5MiB, 10MiB):

# Example for 256KB objects
warp mixed --host ”s3.us-east-1.rabata.io" \
  --access-key "YOUR_ACCESS_KEY" \
  --secret-key "YOUR_SECRET_KEY" \
  --bucket "backupi" \
  --tls --duration 30s \
  --concurrent 8 \
  --obj.size 256KiB \
  --objects 100

Long Duration Tests (10 Minutes)

# Example for sustained load testing
warp mixed --host ”s3.us-east-1.rabata.io" \
  --access-key "YOUR_ACCESS_KEY" \
  --secret-key "YOUR_SECRET_KEY" \
  --bucket "backupi" \
  --tls --duration 600s \
  --concurrent 8 \
  --obj.size 1MiB \
  --objects 500

Tests Per Provider

For each provider, the following comprehensive test sequence was executed:

Mixed Operations Baseline - 1MB objects, 8 threads, 30s

PUT Thread Scaling - 10MB objects, 30s

  • 4 threads
  • 8 threads
  • 16 threads
  • 32 threads

GET Thread Scaling - 10MB objects, 30s

  • 4 threads (100 objects)
  • 8 threads (200 objects)
  • 16 threads (400 objects)
  • 32 threads (800 objects)

Object Size Tests - 8 threads, 30s

  • 256KB (100 objects)
  • 1MB (100 objects)
  • 5MB (100 objects)
  • 10MB (100 objects)

Optional: Long Duration Test - 1MB, 8 threads, 600s, 500 objects

Metrics to Record

For each test, record:

  • Throughput: MB/s for data transfer
  • Operations/sec: Object operation rates
  • Latency percentiles: 50th, 95th, 99th (if available)
  • Error rates: Timeouts, rate limiting, API errors
  • Test duration: Actual vs requested

Output Files

Warp generates compressed CSV files with detailed results:

# Example output files
warp-mixed-2025-09-18[135952]-4bH2.csv.zst
warp-put-2025-09-18[140049]-qskq.csv.zst
warp-get-2025-09-18[140226]-nygC.csv.zst

Quick Command Reference

# Mixed operation test (baseline)
warp mixed --host "HOST" --access-key "KEY" --secret-key "SECRET" \
  --bucket "BUCKET" --tls --duration 30s --concurrent 8 \
  --obj.size 1MiB --objects 100

# PUT performance test
warp put --host "HOST" --access-key "KEY" --secret-key "SECRET" \
  --bucket "BUCKET" --tls --duration 30s --concurrent 8 \
  --obj.size 10MiB

# GET performance test
warp get --host "HOST" --access-key "KEY" --secret-key "SECRET" \
  --bucket "BUCKET" --tls --duration 30s --concurrent 8 \
  --obj.size 10MiB --objects 200

Ready to Test Rabata Performance Yourself?

Start your free trial and experience our S3‑compatible storage with no credit card required.