Re: [PATCH v1 0/3] fio: option to make engines load dynamically

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jeff,

Thanks for taking a look at this.
Answers (this time in plain text, sorry about that) inline below.

On Mon, Jun 29, 2020 at 6:28 PM Jeff Moyer <jmoyer@xxxxxxxxxx> wrote:
>
> Yigal Korman <ykorman@xxxxxxxxx> writes:
>
> > Hi,
> >
> > The following patchset provides a configuration option that converts a
> > select set of engines into external engines that are loaded dynamically
> > on demand.  The purpose of this option is to provide distribution
> > packagers the ability to separate the core fio functionality from the
> > addition optional engines.  Some of the optional engines have multiple
> > dependencies that increase the footprint of fio considerably even when
> > the user requires only the basic 'sync' engine.  See examples of the
> > issue below.
>
> Did you forget to include the examples?

Sorry, I didn't, it's easy to miss though, they're below the pull summary.

They are a bit verbose, so I'll recap here:
Without the patchset, on a Fedora 31 system, installing fio brings a
total of 38 package dependencies, the installed size is 57MB.
With the patchset, installing fio brings a single dependency
(numactl-libs) and the installed size is 2.1MB.

These numbers are relatively small but when one needs to bring fio to
an offline server, collecting these dependencies is a hassle.
Also, bundling fio into a container where the base image is small
(Fedora 31 is ~200MB), the install size becomes more prominent.

>
> I'm not sure I see a benefit to this change.  fio isn't some core system
> service--it's a benchmarking tool.  Maybe your examples shed more light
> on why this matters?

I actually think that although fio is a benchmarking tool, it became
so ubiquitous in the storage world that I'd consider it a core tool.
I think all recent storage-related research papers and product
brochures that I saw have always included fio performance numbers.
Perhaps, if it will be possible to reduce its footprint, we might
start seeing it on the distro's base install.

Regards,
Yigal

>
> -Jeff
>
> >
> > I've tried to keep the changes as small and unobtrusive as possible.
> > The only significant change is the way an engine is defined in the
> > Makefile (variables are now prefixed with engine name).  If the option
> > is provided, the Makefile will build the engines as external libraries
> > and install them in /usr/lib/fio by default.  Fio will then search for
> > the engines in that location if the engine is not compiled in.  The last
> > patch should help with the migration to the new scheme by suggesting
> > that an additional package is required if the engine is not found.
> >
> > Future work to consider:
> > * Move the engine help text from fio to the engines themselves.  Create
> > * a whitelist of engines so that only engines that are part of the main
> > * codebase are searched and loaded automatically.  Convert more engines
> > * to this scheme. The current set of engines was selected based on
> > * simplicity and external dependencies. Engines with multiple exported
> > * flavors (i.e. glusterfs) are not converted yet.
> >
> > Branch is also available on github, at
> > https://github.com/ykorman/fio/tree/dynamic-libengines.
> >
> > A sample of how to package fio with this new mode for RPM-based
> > distributions is available here:
> > https://src.fedoraproject.org/fork/ykorman/rpms/fio/tree/dynamic-libengines
> >
> > A sample of the packages for Fedora can be found here:
> > https://copr.fedorainfracloud.org/coprs/ykorman/fio/
> >
> > See examples of how this improves our quality of life (tm) below the
> > pull summary.
> >
> >
> > Yigal Korman (3):
> >   configure/Makefile: engine LIBS consistency
> >   configure: new --dynamic-libengines build option
> >   fio: suggest installing engine package when missing
> >
> >  .gitignore         |  1 +
> >  Makefile           | 86 +++++++++++++++++++++++++++++++++++++---------
> >  configure          | 20 +++++------
> >  engines/dev-dax.c  |  2 +-
> >  engines/guasi.c    |  2 +-
> >  engines/http.c     |  2 +-
> >  engines/libaio.c   |  2 +-
> >  engines/libhdfs.c  |  6 ++--
> >  engines/libiscsi.c |  6 ++--
> >  engines/libpmem.c  |  2 +-
> >  engines/libzbc.c   |  2 +-
> >  engines/nbd.c      |  2 +-
> >  engines/pmemblk.c  |  2 +-
> >  engines/rados.c    |  2 +-
> >  engines/rbd.c      |  2 +-
> >  engines/rdma.c     |  9 ++---
> >  ioengines.c        | 26 ++++++++++++--
> >  ioengines.h        |  6 ++++
> >  os/os-linux.h      |  2 ++
> >  19 files changed, 131 insertions(+), 51 deletions(-)
>



[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux