How minio/warp works
Warp is an S3 benchmarking tool with CLI-driven object workloads, distributed client execution, live/final result analysis, and Iceberg catalog/table benchmarks. The usual flow configures a benchmark, executes it against S3 (locally or through clients), then aggregates and presents results. The graph includes documented benchmark branches and sampled internal layers; unsampled command implementations are represented only at their exact paths, and their specific call paths are not inferred.
Main entry points: aggregate.go Result aggregation · cli.go Command interface · cli S3 workloads · benchserver.go Run coordinator
Components 26
CLI workflows
- Program entry
main.go - Command interface
cli/cli.go - Flags and config
cli/flags.go
Benchmark execution
- S3 workloads
cli - S3 client setup
cli/client.go - HTTP transports
cli/client_transport.go - Data generation
pkg/generator/generator.go
Distributed runs
- Client protocol
cli/benchclient.go - Run coordinator
cli/benchserver.go
Results and analysis
- Result aggregation
pkg/aggregate/aggregate.go - Live updates
pkg/aggregate/live.go - Request statistics
pkg/aggregate/requests.go - Throughput metrics
pkg/aggregate/throughput.go - Analysis commands
cli/analyze.go
Iceberg benchmarks
- Iceberg workloads
cli - Catalog operations
pkg/iceberg/catalog.go - Table commits
pkg/iceberg/commit.go - Dataset generation
pkg/iceberg/dataset.go - Parquet encoding
pkg/iceberg/parquet.go
Result presentation
- Monitor API
api/api.go - Live web UI
wui/server.go - UI data handler
wui/handlers.go
Other components
- Operator
- S3 service
- Warp clients
- Browser
Connections 30
- Operator → Program entry: runs command
README.md - Program entry → Command interface: starts CLI
main.go - Operator → Command interface: selects benchmark
README.md - Command interface → Flags and config: uses options
cli/flags.go - Command interface → S3 workloads: dispatches workload
- S3 workloads → S3 client setup: uses S3 client
cli/client.go - S3 client setup → HTTP transports: builds transport
cli/client.go - S3 client setup → S3 service: connects to
README.md - S3 workloads → Data generation: uses generated data
- Command interface → Iceberg workloads: selects Iceberg run
README.md - Iceberg workloads → Catalog operations: runs catalog operations
cli/iceberg_catalog_read.go - Iceberg workloads → Table commits: generates commits
README.md - Iceberg workloads → Dataset generation: writes table data
cli/iceberg_sustained.go - Dataset generation → Parquet encoding: uses encoding
- Operator → Run coordinator: starts distributed run
README.md - Run coordinator → Warp clients: coordinates clients
README.md - Warp clients → Client protocol: accepts run requests
cli/benchclient.go - Client protocol → S3 workloads: executes benchmark
cli/benchclient.go - Run coordinator → Result aggregation: merges results
cli/benchserver.go - S3 workloads → Result aggregation: records operations
- Result aggregation → Live updates: updates live data
pkg/aggregate/aggregate.go - Result aggregation → Request statistics: computes request stats
pkg/aggregate/aggregate.go - Result aggregation → Throughput metrics: computes throughput
pkg/aggregate/aggregate.go - Operator → Analysis commands: requests analysis
README.md - Analysis commands → Result aggregation: reads results
cli/analyze.go - Run coordinator → Monitor API: serves run status
cli/benchserver.go - Monitor API → Live updates: requests updates
api/api.go - Live web UI → UI data handler: registers routes
wui/server.go - UI data handler → Live updates: polls live data
wui/handlers.go - Browser → Live web UI: views results