> For the complete documentation index, see [llms.txt](https://docs.zus.network/zus-devops/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zus.network/zus-devops/zus-network-testing/performance-test/zs3server-warp-benchmark-testing.md).

# ZS3Server Warp Benchmark Testing

This document outlines the performance benchmarking process for ZS3Server using [Warp](https://github.com/minio/warp), a powerful S3 benchmarking tool. These tests were run against a ZS3 deployment launched via Blimp as per ZS3 Deployment Instructions.

### Setup Instructions

#### 1. Deploy ZS3Server

Ensure your ZS3Server is deployed and running. Follow the [deployment guide](https://docs.zus.network/zus-docs/system-overview/storage/zs3-server/backup-recovery-and-replication) using Blimp.

#### 2. Build Warp Binary

Clone the Warp repository:

```bash
git clone https://github.com/minio/warp.git
cd warp
go build
```

This will generate the `warp` binary in your local directory.

#### 3. Run Benchmark Tests

All benchmark tests are executed against the `<zs3server-ip:port>` using the following credentials:

* **Access Key**: `rootroot`
* **Secret Key**: `rootroot`
* **Bucket**: `benchmark`
* **Duration**: `3 minutes`
* **Host Example**: `http://127.0.0.1:3333`

### Test Commands

Each test measures performance under varying conditions of object size and concurrency.

#### PUT Tests

| Description           | Command                                                                                                                                               |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| 100MB, concurrency 16 | `./warp put --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 16 --obj.size 100MB` |
| 1KB, concurrency 180  | `./warp put --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 180 --obj.size 1KB`  |
| 1KB, concurrency 16   | `./warp put --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 16 --obj.size 1KB`   |
| 1KB, concurrency 400  | `./warp put --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 400 --obj.size 1KB`  |

***

#### GET Tests

| Description                      | Command                                                                                                                                                               |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 100MB, concurrency 16            | `./warp get --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 16 --obj.size 100MB --objects 500`   |
| 1KB, concurrency 180             | `./warp get --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 180 --obj.size 1KB --objects 50000`  |
| 4000MB, 1 object, concurrency 16 | `./warp get --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 16 --obj.size 4000MB --objects 1`    |
| 1KB, concurrency 16              | `./warp get --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 16 --obj.size 1KB --objects 100000`  |
| 1KB, concurrency 400             | `./warp get --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 400 --obj.size 1KB --objects 100000` |

***

#### MIXED Tests

| Description           | Command                                                                                                                                                               |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 100MB, concurrency 16 | `./warp mixed --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 16 --obj.size 100MB --objects 250` |
| 1KB, concurrency 16   | `./warp mixed --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 16 --obj.size 1KB --objects 50000` |

***

#### LIST Tests

| Description            | Command                                                                                                                                                                |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 100MB, concurrency 180 | `./warp list --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 180 --obj.size 1KB --objects 1000`   |
| 1KB, concurrency 16    | `./warp list --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 16 --obj.size 1KB --objects 100000`  |
| 1KB, concurrency 400   | `./warp list --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 400 --obj.size 1KB --objects 100000` |

***

#### DELETE Tests

| Description          | Command                                                                                                                                                                  |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 1KB, concurrency 120 | `./warp delete --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 120 --obj.size 1KB --objects 48000`  |
| 1KB, concurrency 400 | `./warp delete --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 400 --obj.size 1KB --objects 100000` |
| 1KB, concurrency 16  | `./warp delete --host <zs3server-ip:port> --access-key rootroot --secret-key rootroot --bucket benchmark --duration 3m --concurrent 16 --obj.size 1KB --objects 100000`  |

After running each test, save the output (preferably in JSON or CSV) for future comparison and trends. You can also generate graphs for:

* Throughput (ops/sec)
* Latency (min, max, avg)
* Error rates
