cosbench-rs is a Rust implementation of the core COSBench workload model. It
supports mock, S3, and Swift storage, staged concurrency, mixed operation
ratios, integrity checks, multipart thresholds, and machine-readable reports.
Install and verify
cd cosbench-rs
cargo build --release --locked
./target/release/cosbench-rs --help
./target/release/cosbench-rs validate -c examples/swift-tempauth.yamlWorkload schema
Top-level fields are name, optional description, optional
sample_interval_secs, storage, optional auth, and stages.
Storage types:
mock: optional simulatedlatency_us;s3: endpoint, region, access/secret keys, path-style choice, timeout, and multipart threshold/part size;swift: storage endpoint, timeout, and optional static token.
Auth types are none, temp_auth, and keystone_v3. For Swift, an empty
storage endpoint uses the URL returned by authentication.
name: swift-roundtrip
description: prepare, mixed read/write, then cleanup
sample_interval_secs: 1
auth:
type: temp_auth
url: http://127.0.0.1:8080/auth/v1.0
user: test:tester
key: REPLACE_FROM_SECRET_STORE
storage:
type: swift
endpoint: ""
timeout_ms: 60000
stages:
- name: main
kind: main
workers: 8
runtime_secs: 30
operations:
- { type: read, ratio: 70 }
- { type: write, ratio: 30 }
objects:
cprefix: bench-
containers: { start: 1, end: 4 }
oprefix: object-
objects: { start: 1, end: 1000 }
size: 65536
hash_check: trueEach stage needs workers greater than zero, at least one operation with a
nonzero total ratio, and either runtime_secs or total_ops. Write operations
need a nonzero size or size_max. sequential: true makes object selection
deterministic for prepare/cleanup-style stages.
Commands
cosbench-rs validate -c workload.yaml
cosbench-rs run -c workload.yaml --report-dir reports
cosbench-rs report -i reports --output reports/report.html
cosbench-rs import-xml -i legacy.xml -o workload.yaml
cosbench-rs serve --bind 127.0.0.1:19088run writes JSON, CSV, and per-stage timeline CSV files when --report-dir is
set. The HTML report is self-contained. Preserve the workload file and raw JSON
beside derived CSV/HTML output.
Control server
serve provides /api/health, /api/workloads, /api/workloads/{id}, and
/runs/{id}. Submitted work runs asynchronously in the process. The server’s
CORS layer is permissive; bind it to loopback or a protected benchmark network
and do not place storage credentials in browser-visible shared workloads.
Fair measurement
Separate prepare, measured main, and cleanup stages. Confirm the prepared population before interpreting read success. Record route, client placement, host contention, connection/concurrency settings, object distribution, errors, and p50/p95/p99. Route-labelled historical results are on Performance; G8 requirements are on G0-G8 validation.