Currently, librbdfio honors time_based: True from the benchmark YAML and passes --time_based to fio.
kvmrbdfio does not. It always passes --runtime= and --size=, and it only adds --time_based when recovery_test is set.
Without --time_based, fio treats --runtime as a maximum. The job still stops when --size= is filled. Sequential write/read of a modest image can finish in a few seconds even when YAML asked for a any seconds sample.
That makes librbdfio vs kvmrbdfio comparisons with the same time / time_based YAML invalid: one path ran for the full window, the other may not have.
Even with:
benchmarks:
kvmrbdfio:
time: 60
time_based: True
fio should run for 60 seconds (--runtime=60 --time_based), same as librbdfio, I personally faced this a benchmarking limitation while running cbt for my own ceph cluster.
Currently, librbdfio honors
time_based: Truefrom the benchmark YAML and passes--time_basedto fio.kvmrbdfio does not. It always passes
--runtime=and--size=, and it only adds--time_basedwhenrecovery_testis set.Without
--time_based, fio treats--runtimeas a maximum. The job still stops when--size=is filled. Sequential write/read of a modest image can finish in a few seconds even when YAML asked for a any seconds sample.That makes
librbdfiovskvmrbdfiocomparisons with the sametime/time_basedYAML invalid: one path ran for the full window, the other may not have.Even with:
fio should run for 60 seconds (--runtime=60 --time_based), same as librbdfio, I personally faced this a benchmarking limitation while running cbt for my own ceph cluster.