On Tue, Nov 22, 2022 at 9:17 AM Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> wrote: > On 11/22/22 03:28, Alberto Faria wrote: > > The libblkio library provides a unified API for efficiently accessing > > block devices using modern high-performance block I/O interfaces like > > io_uring and vhost-user-blk. Using libblkio reduces the amount of code > > needed for interfacing with storage devices and allows developers to > > focus on their applcations. > > > > Add a libblkio engine that uses libblkio to perform I/O. This is useful > > to benchmark the library itself, and also adds support for storage > > interfaces and devices otherwise not supported by fio, such as > > virtio-blk PCI, vhost-user, and vhost-vDPA devices. > > > > See the libblkio documentation [2] or KVM Forum 2022 [3] presentation > > for more information on the library itself. > > > > [1] https://gitlab.com/libblkio/libblkio > > [2] https://libblkio.gitlab.io/libblkio/index.html > > [3] https://static.sched.com/hosted_files/kvmforum2022/8c/libblkio-kvm-forum-2022.pdf > > > > Signed-off-by: Alberto Faria <afaria@xxxxxxxxxx> > > --- > > HOWTO.rst | 26 ++ > > Makefile | 6 + > > configure | 25 ++ > > engines/libblkio.c | 463 ++++++++++++++++++++++ > > examples/libblkio-io_uring.fio | 19 + > > examples/libblkio-virtio-blk-vfio-pci.fio | 18 + > > fio.1 | 19 + > > optgroup.h | 2 + > > 8 files changed, 578 insertions(+) > > create mode 100644 engines/libblkio.c > > create mode 100644 examples/libblkio-io_uring.fio > > create mode 100644 examples/libblkio-virtio-blk-vfio-pci.fio > > > > diff --git a/HOWTO.rst b/HOWTO.rst > > index e796f961..d5a2749c 100644 > > --- a/HOWTO.rst > > +++ b/HOWTO.rst > > @@ -2192,6 +2192,12 @@ I/O engine > > the SPDK NVMe driver, or your own custom NVMe driver. The xnvme engine includes > > engine specific options. (See https://xnvme.io). > > > > + **libblkio** > > + Use the libblkio library > > + (https://gitlab.com/libblkio/libblkio). The specific > > + *driver* to use must be set using > > + :option:`libblkio_driver`. > > + > > I/O engine specific parameters > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > @@ -2842,6 +2848,26 @@ with the caveat that when used on the command line, they must come after the > > > > If this option is set. xnvme will use vectored read/write commands. > > > > +.. option:: libblkio_driver=str : [libblkio] > > + > > + The driver to be used by libblkio (e.g. **virtio-blk-vfio-pci**). > > It would be nice to list the possible values and their meaning here. > > > + > > +.. option:: libblkio_pre_connect_props=str : [libblkio] > > + > > + A colon-separated list of libblkio properties to be set after creating > > + but before connecting the ``struct blkio``. Each property must have the > > + format ``<name>=<value>``. Colons can be escaped as ``\:``. These are > > + set after the engine sets any other properties, so those can be > > + overriden. > > "struct blkio" has no meaning whatsoever for the fio command line > interface. So could this be reworded without using struct names ? E.g. > "without connecting the device accessed by libblkio" ? > > And we need to list the possible properties or have at least a link to > some documentation listing the possible properties. Otherwise, how can > the user find that out ? In v2 I ended up linking to the libblkio docs. I avoided adding lists of available drivers and properties since those would become incomplete rather quickly and also depend on the installed version of libblkio. Thanks, Alberto