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.

  • COMPLIANCE mode prevents any modification or deletion until the retention period expires.
  • GOVERNANCE mode 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