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.