Skip to main content
RunBook Academy

CephLXXII · BenchmarkingBenchmarking

rados bench

Intermediate⏱ ~17 minradosceph

What you'll learn

  • Run rados bench for write, sequential read, and random read
  • Interpret the output fields
  • Choose parameters that answer the question
  • Clean up afterwards

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

rados bench measures the object layer without RBD, CephFS, or RGW in the path. That makes it the right tool for answering “what can the cluster itself do”.

Running it

ceph osd pool create bench 128 128
ceph osd pool application enable bench rados

rados bench -p bench 60 write --no-cleanup
rados bench -p bench 60 seq
rados bench -p bench 60 rand
rados -p bench cleanup

The order matters: seq and rand read the objects that write --no-cleanup left behind. Running a read benchmark without a preceding write leaves nothing to read.

# useful parameters
rados bench -p bench 60 write -b 4096 -t 32 --no-cleanup
FlagMeaning
-bobject size (default 4 MiB)
-tconcurrent operations (default 16)
--no-cleanupkeep the objects for read tests
--run-namelabel, for parallel runs from several clients

Reading the output

Total time run:         60.041
Total writes made:      14231
Write size:             4194304
Object size:            4194304
Bandwidth (MB/sec):     948.16
Stddev Bandwidth:       112.4
Max bandwidth (MB/sec): 1104
Min bandwidth (MB/sec): 612
Average IOPS:           237
Stddev IOPS:            28
Average Latency(s):     0.0674
Stddev Latency(s):      0.0231
Max latency(s):         0.891
Min latency(s):         0.0192
FieldWhat it tells you
Bandwidthsustained throughput at this object size
Stddev Bandwidthconsistency; high values suggest interference
Min bandwidthworst-case sustained rate
Average Latencymean per-operation latency
Max latencythe tail — often the most informative single number

A max latency far above the average points at an outlier OSD, a scrub, or contention rather than at the cluster’s general capability.

Choosing parameters

QuestionParameters
Maximum throughputdefault 4 MiB objects, high -t
Small-object performance-b 4096, high -t
Latency floor-b 4096 -t 1
Sustained behavioura long duration, 300 s or more

Short runs measure cache and burst behaviour. A 60-second run on a large cluster may not even fill the caches, so a 300-second run is more representative for anything that will run continuously.

Cleaning up

rados -p bench cleanup
rados -p bench ls | wc -l          # should be 0
ceph osd pool delete bench bench --yes-i-really-really-mean-it

Leaving benchmark objects behind consumes capacity indefinitely and distorts later capacity figures. The --run-name used during the benchmark must match for cleanup to find the objects.

Quiz

Knowledge check · 4 questions

  1. Q1. Why do rados bench sequential and random reads produce similar results?

  2. Q2. `rados bench ... write --no-cleanup` removes its objects when the benchmark finishes.

  3. Q3. Benchmark a new cluster at the RADOS layer.

    A cluster is being validated before production. The team wants to know its raw object-layer capability for both large and small objects.

  4. Q4. What does a max latency far above the average indicate in rados bench output?

Passing score: 75%. Answers are checked in this browser.

Production discipline

Run rados cleanup after any --no-cleanup benchmark and verify the object count is zero; the objects persist and a long high-throughput run leaves hundreds of gigabytes. Read the max latency alongside the average — a large gap points at an outlier or contention rather than at capability.

Cross-course references

  • Kubernetes: benchmark workloads left running consume the same silent capacity
  • Linux: any benchmark that creates files needs an explicit cleanup step