Storage Benchmark

POST /storage/benchmark/disk

Run disk benchmark (fio)

Runs a fio benchmark on the target node against a device or directory

Request JSON Object:
  • custom_profile (any) – CustomProfile allows overriding preset params. Only used when ProfileID is empty.

  • duration_sec (integer) – DurationSec overrides the profile’s runtime (max 300s).

  • profile_id (string) – ProfileID selects a preset (e.g. “4k-randwrite”). If empty, CustomProfile is used.

  • target (string) – Device path (e.g. /dev/sdb) OR directory path (e.g. /tmp/fio-test). If a directory is given, fio writes test files there. If empty, defaults to /tmp/karios-bench.

Status Codes:
Request Headers:
  • X-Target-Node – Target node IP for HAProxy routing

Response JSON Object:
  • duration_seconds (number)

  • error (string)

  • id (string)

  • profile (string)

  • raw_output (string)

  • read.bandwidth_kbps (number)

  • read.bandwidth_mbps (number)

  • read.iops (number)

  • read.latency_avg_us (number)

  • read.latency_p50_us (number)

  • read.latency_p999_us (number)

  • read.latency_p99_us (number)

  • read.total_ios (integer)

  • started_at (string)

  • status (string) – “running”, “completed”, “failed”

  • target (string)

  • type (string)

  • write.bandwidth_kbps (number)

  • write.bandwidth_mbps (number)

  • write.iops (number)

  • write.latency_avg_us (number)

  • write.latency_p50_us (number)

  • write.latency_p999_us (number)

  • write.latency_p99_us (number)

  • write.total_ios (integer)

POST /storage/benchmark/pool

Run pool benchmark (rados bench)

Runs rados bench on a Ceph pool from the target node

Request JSON Object:
  • duration_sec (integer)

  • mode (string) – “write”, “seq”, “rand”

  • pool_name (string)

Status Codes:
Request Headers:
  • X-Target-Node – Target node IP for HAProxy routing

Response JSON Object:
  • duration_seconds (number)

  • error (string)

  • id (string)

  • profile (string)

  • raw_output (string)

  • read.bandwidth_kbps (number)

  • read.bandwidth_mbps (number)

  • read.iops (number)

  • read.latency_avg_us (number)

  • read.latency_p50_us (number)

  • read.latency_p999_us (number)

  • read.latency_p99_us (number)

  • read.total_ios (integer)

  • started_at (string)

  • status (string) – “running”, “completed”, “failed”

  • target (string)

  • type (string)

  • write.bandwidth_kbps (number)

  • write.bandwidth_mbps (number)

  • write.iops (number)

  • write.latency_avg_us (number)

  • write.latency_p50_us (number)

  • write.latency_p999_us (number)

  • write.latency_p99_us (number)

  • write.total_ios (integer)

GET /storage/benchmark/profiles

List benchmark profiles

Returns the available fio benchmark presets

Status Codes:
Response JSON Object:
  • profiles[].block_size (string) – fio parameters

  • profiles[].description (string)

  • profiles[].direct (integer)

  • profiles[].id (string)

  • profiles[].io_depth (integer)

  • profiles[].io_engine (string)

  • profiles[].name (string)

  • profiles[].num_jobs (integer)

  • profiles[].read_write (string)

  • profiles[].runtime_sec (integer)

  • profiles[].rw_mix_read (integer) – only for randrw

  • profiles[].test_size (string)

POST /storage/benchmark/rbd

Run RBD benchmark (rbd bench)

Runs rbd bench on a Ceph RBD image from the target node

Request JSON Object:
  • duration_sec (integer)

  • image_name (string)

  • io_pattern (string) – “rand” or “seq” (default seq)

  • io_size (string) – e.g. “4K”, “4096”

  • io_threads (integer)

  • io_total (string) – e.g. “1G”, “1073741824”

  • io_type (string) – “write”, “read”, “readwrite”

  • pool_name (string)

Status Codes:
Request Headers:
  • X-Target-Node – Target node IP for HAProxy routing

Response JSON Object:
  • duration_seconds (number)

  • error (string)

  • id (string)

  • profile (string)

  • raw_output (string)

  • read.bandwidth_kbps (number)

  • read.bandwidth_mbps (number)

  • read.iops (number)

  • read.latency_avg_us (number)

  • read.latency_p50_us (number)

  • read.latency_p999_us (number)

  • read.latency_p99_us (number)

  • read.total_ios (integer)

  • started_at (string)

  • status (string) – “running”, “completed”, “failed”

  • target (string)

  • type (string)

  • write.bandwidth_kbps (number)

  • write.bandwidth_mbps (number)

  • write.iops (number)

  • write.latency_avg_us (number)

  • write.latency_p50_us (number)

  • write.latency_p999_us (number)

  • write.latency_p99_us (number)

  • write.total_ios (integer)

GET /storage/benchmark/tools

Check benchmark tool availability

Returns whether fio, rados, and rbd CLIs are installed on the target node

Status Codes:
Request Headers:
  • X-Target-Node – Target node IP for HAProxy routing