Skip to the content.

Topology Guide

StrataBench supports all common client/server assignment patterns via --topology.

Scenarios

Scenario Clients Servers Topology Auto?
1 client → 1 server 0–1 1 (--target) single Yes (default)
N clients → 1 server N (--clients) 1 pool Yes
1 client → N servers 0–1 N (--targets) sweep Yes
N clients → M servers (paired) N M shard Yes (when N>1 and M>1)
N clients × M servers (all pairs) N M matrix Manual

Examples

1 client, 1 server (local)

stratabench run --profile nvme-random-oltp --target /dev/nvme0n1

Multi-client, one server (pool)

All agents hammer the same device/endpoint. Results are summed.

stratabench run --profile ssd-random-4k --target /dev/nvme0n1 \
  --clients 10.0.1.1:7777,10.0.1.2:7777,10.0.1.3:7777 \
  --topology pool

One client, multi-server (sweep)

Coordinator runs the profile against each target in parallel.

stratabench run --profile s3-put-throughput \
  --targets 10.0.1.10:9000,10.0.1.11:9000,10.0.1.12:9000 \
  --topology sweep

Multi-client, multi-server (shard)

Round-robin pairing: client[i] → target[i % M].

stratabench run --profile nvme-random-oltp \
  --targets /dev/nvme0n1,/dev/nvme1n1,/dev/nvme2n1 \
  --clients 10.0.1.1:7777,10.0.1.2:7777,10.0.1.3:7777 \
  --topology shard
# c1→nvme0, c2→nvme1, c3→nvme0

Multi-client × multi-server (matrix)

Every client runs against every server (cartesian product).

stratabench run --profile s3-cluster-rdma \
  --targets 10.0.1.10:9000,10.0.1.11:9000 \
  --clients 10.0.2.1:7777,10.0.2.2:7777 \
  --topology matrix
# 4 assignments: c1→s1, c1→s2, c2→s1, c2→s2

Auto mode (default)

--topology auto
Clients Targets Inferred mode
0–1 1 single
0–1 2+ sweep
2+ 1 pool
2+ 2+ shard

Use --topology matrix explicitly for full cartesian fan-out.

Native Warp coordinator mode

For cluster profiles (s3-cluster-*), use --warp-clients (Warp port 7761) on a single coordinator run — distinct from --clients (StrataBench agents on port 7777):

stratabench run --profile s3-cluster-put-get --target 10.0.1.10:9000 \
  --warp-clients 10.0.1.1:7761,10.0.1.2:7761,10.0.1.3:7761

For agent-based distribution (recommended), use --clients + --topology pool instead.

Results

Each run stores:

Kubernetes / API

spec:
  profile: s3-cluster-rdma
  targets:
    - 10.0.1.10:9000
    - 10.0.1.11:9000
  clients:
    - 10.0.2.1:7777
    - 10.0.2.2:7777
  topology: shard

REST API: POST /api/v1/runs with targets, clients, topology fields.