Specialized tests
These tests can help evaluate particular capabilities rather than general performance.
| Test type | Use for |
|---|---|
| Multipart operations | Objects larger than 64MB |
| Versioning | Systems that maintain object history |
| Object retention | Compliance or immutability requirements |
| Distributed benchmarking | High-capacity storage systems |
| Long-running stability tests | Production deployment validation |
| Performance comparison | Configuration changes or upgrades |
Multipart operations
Multipart tests evaluate performance when transferring very large objects (>64MB) using parallel streams.
Use multipart-put for upload testing and multipart for download testing.
# Test large file uploads with parallel parts
warp multipart-put --obj.size 5GB --part.size 100MB --concurrent-parts 10 --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
# Test parallel downloads
warp multipart --obj.size 5GB --parts 10 --concurrent 20 --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
# Test maximum upload parallelism
warp multipart-put --obj.size 10GB --concurrent-parts 50 --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
Monitor part-level concurrency to understand how many parallel streams the storage system handles efficiently. Too many parallel streams risks overwhelming the system without improving throughput.
For the S3 operations used by these tests and additional compatibility notes, see the S3 compatibility and required operations section.
Versioning
Versioning tests evaluate performance when the storage system maintains multiple versions of objects.
Each PUT operation creates a new version rather than replacing the existing object.
Versioning adds overhead because the storage system tracks multiple object versions.
# Test version creation
warp versioned --versions 100 --obj.size 1MB --concurrent 20 --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
# Test version retrieval
warp versioned --versions 50 --obj.size 10MB --concurrent 30 --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
See MinIO-specific features for notes about features that require MinIO servers.
Object retention
Retention tests evaluate object lock and legal hold features that prevent deletion.
COMPLIANCEmode prevents any modification or deletion until the retention period expires.GOVERNANCEmode allows privileged users to modify or delete objects despite retention policies.
# Test compliance mode retention
warp retention --retention-mode COMPLIANCE --retention-days 90 --obj.size 100MB --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
# Test governance mode with legal hold
warp retention --retention-mode GOVERNANCE --retention-days 30 --legal-hold --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
Retention features typically add minimal performance overhead. The storage system primarily enforces deletion restrictions rather than affecting upload or download performance.
Distributed benchmarking
Distributed benchmarking coordinates multiple client machines to generate higher aggregate loads than a single machine can produce. Use this approach when you need to exceed single-client network or CPU limits.
For detailed information about architecture, setup, deployment strategies, and best practices for distributed benchmarking, see the Distributed benchmarking documentation.
Long-running stability tests
Stability tests run for extended periods to identify performance degradation or resource leaks. These tests verify that storage systems maintain consistent performance under sustained load.
Short tests (under 10 minutes) measure peak performance. Long tests (hours or days) reveal stability issues that only appear during extended operation.
# 24-hour stability test
warp mixed --duration 24h --concurrent 50 --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
Use auto-termination to stop tests automatically when performance stabilizes to a variation of no more than 7.5% different for 7 of the last 25 samples. This saves time while ensuring tests run long enough to produce valid results.
# Run until performance stabilizes
warp mixed --autoterm --concurrent 50 --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
For details on how Warp determines stability or how to configure what is considered stable, see the GitHub readme.
Performance comparison
Warp includes a comparison tool that can analyze data from previously saved tests and identify differences between them. This approach helps evaluate configuration changes or system upgrades. Run multiple iterations to account for performance variability.
# Test configuration A
warp mixed --duration 30m --benchdata config-a.csv.zst --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
# Test configuration B
warp mixed --duration 30m --benchdata config-b.csv.zst --access-key YOUR_ACCESS_KEY --secret-key YOUR_SECRET_KEY
# Compare results
warp cmp config-a.csv.zst config-b.csv.zst
To limit the results to just the test type provided, use warp analyze with the --analyze.v flag.
Comparison testing helps make informed decisions about hardware, configuration, or deployment options.
Additional available tests
Warp includes additional specialized tests for other uncommon use cases. For complete documentation on these tests, refer to the Warp repository README.
| Test | Purpose |
|---|---|
| ZIP | MinIO s3zip extension for archive access |
| Snowball | Bulk data import via TAR archives |
| Fanout | Single-to-multiple object replication |
| Append benchmark | S3 Express One Zone append operations |