Recent changes (master)
The following changes since commit f2cd91604af170e972438c461a40230e266a57d9:
debug: fix inverted logic in fio_did_warn() (2018-02-12 10:55:07 -0700)
are available in the git repository at:
git://git.kernel.dk/fio.git master
for you to fetch changes up to 488468793d72297f7dccd42a7b50011e74de0688:
Merge branch 'wip-ifed-rados' of https://github.com/ifed01/fio (2018-02-14 12:43:04 -0700)
----------------------------------------------------------------
Igor Fedotov (1):
Add support for Ceph Rados benchmarking.
Jens Axboe (1):
Merge branch 'wip-ifed-rados' of https://github.com/ifed01/fio
Makefile | 3 + configure | 34 ++++ engines/rados.c | 479 +++++++++++++++++++++++++++++++++++++++++++++++++++++ examples/rados.fio | 24 +++ fio.1 | 17 +- 5 files changed, 553 insertions(+), 4 deletions(-) create mode 100644 engines/rados.c create mode 100644 examples/rados.fio
---
Diff of recent changes:
Makefile +3 -0
@@ -95,6 +95,9 @@ endif ifdef CONFIG_WINDOWSAIO SOURCE += engines/windowsaio.c endif +ifdef CONFIG_RADOS + SOURCE += engines/rados.c +endif ifdef CONFIG_RBD SOURCE += engines/rbd.c endif
configure +34 -0
@@ -173,6 +173,8 @@ for opt do ;; --disable-rdma) disable_rdma="yes" ;; + --disable-rados) disable_rados="yes" + ;; --disable-rbd) disable_rbd="yes" ;; --disable-rbd-blkin) disable_rbd_blkin="yes"
@@ -1527,6 +1529,35 @@ fi print_config "IPv6 helpers" "$ipv6" ########################################## +# check for rados +if test "$rados" != "yes" ; then + rados="no" +fi +cat > $TMPC << EOF +#include <rados/librados.h> + +int main(int argc, char **argv) +{ + rados_t cluster; + rados_ioctx_t io_ctx; + const char cluster_name[] = "ceph"; + const char user_name[] = "client.admin"; + const char pool[] = "rados"; + + /* The rados_create2 signature required was only introduced in ceph 0.65 */ + rados_create2(&cluster, cluster_name, user_name, 0); + rados_ioctx_create(cluster, pool, &io_ctx); + + return 0; +} +EOF +if test "$disable_rados" != "yes" && compile_prog "" "-lrados" "rados"; then + LIBS="-lrados $LIBS" + rados="yes" +fi +print_config "Rados engine" "$rados" + +########################################## # check for rbd if test "$rbd" != "yes" ; then rbd="no"
@@ -2262,6 +2293,9 @@ fi if test "$ipv6" = "yes" ; then output_sym "CONFIG_IPV6" fi +if test "$rados" = "yes" ; then + output_sym "CONFIG_RADOS" +fi if test "$rbd" = "yes" ; then output_sym "CONFIG_RBD" fi
engines/rados.c new file +479 -0
479 lines not on this page · raw message
examples/rados.fio new file +24 -0
@@ -0,0 +1,24 @@ +###################################################################### +# Example test for the RADOS engine. +# +# Runs a 4k random write test against a RADOS via librados +# +# NOTE: Make sure you have either Ceph pool named 'rados' or change +# the pool parameter. +###################################################################### +[global] +#logging +#write_iops_log=write_iops_log +#write_bw_log=write_bw_log +#write_lat_log=write_lat_log +ioengine=rados +clientname=admin +pool=rados +busy_poll=0 +rw=randwrite +bs=4k + +[rbd_iodepth32] +iodepth=32 +size=128m +nr_files=32
fio.1 +13 -4
@@ -1585,6 +1585,11 @@ size to the current block offset. \fBblocksize\fR is ignored. I/O engine that does regular EXT4_IOC_MOVE_EXT ioctls to simulate defragment activity in request to DDIR_WRITE event. .TP +.B rados +I/O engine supporting direct access to Ceph Reliable Autonomic Distributed +Object Store (RADOS) via librados. This ioengine defines engine specific +options. +.TP .B rbd I/O engine supporting direct access to Ceph Rados Block Devices (RBD) via librbd without the need to use the kernel rbd driver. This
@@ -1773,21 +1778,25 @@ after event. .RE .RE .TP -.BI (rbd)clustername \fR=\fPstr +.BI (rbd,rados)clustername \fR=\fPstr Specifies the name of the Ceph cluster. .TP .BI (rbd)rbdname \fR=\fPstr Specifies the name of the RBD. .TP -.BI (rbd)pool \fR=\fPstr -Specifies the name of the Ceph pool containing RBD. +.BI (rbd,rados)pool \fR=\fPstr +Specifies the name of the Ceph pool containing RBD or RADOS data. .TP -.BI (rbd)clientname \fR=\fPstr +.BI (rbd,rados)clientname \fR=\fPstr Specifies the username (without the 'client.' prefix) used to access the Ceph cluster. If the \fBclustername\fR is specified, the \fBclientname\fR shall be the full *type.id* string. If no type. prefix is given, fio will add 'client.' by default. .TP +.BI (rbd,rados)busy_poll \fR=\fPbool +Poll store instead of waiting for completion. Usually this provides better +throughput at cost of higher(up to 100%) CPU utilization. +.TP .BI (mtd)skip_bad \fR=\fPbool Skip operations against known bad blocks. .TP