Skip to main content
Version: 0.0.15 (latest)

Developer Toolkit

The full client packages ship with everything needed to build applications against MASS and to measure storage performance from a client host. No source checkout or separate runtime install is required.

warning

This page applies to the full client packages — every Ubuntu .deb and the EL9 .rpm. The EL10 .rpm is a thin client that ships only the mass-ctl binary, so none of the runtimes, examples, or benchmarks below are present on it.

Building Applications​

A pkg-config entry named mass points at the bundled client runtime:

pkg-config --cflags --libs mass

Compile against it:

gcc my_app.c $(pkg-config --cflags --libs mass) -o my_app

The linker flags embed runtime search paths, so the resulting binary resolves the bundled libraries without setting LD_LIBRARY_PATH.

Ready-to-build C examples (key-value and array) are installed at /opt/boostx-sds/daos/example with their CMakeLists.txt and a README.

HDF5​

The HDF5 runtime and its connector ship under /opt/boostx-sds/hdf5. Parallel-HDF5 applications need MPI headers:

mpicc my_h5_app.c $(pkg-config --cflags --libs mass) -o my_h5_app

To route HDF5 I/O through MASS, set:

export HDF5_VOL_CONNECTOR=daos

The plugin path is already configured by the package.

info

On hosts running Mellanox OFED, the bundled data tools select a compatible MPI automatically, avoiding crashes at launch.

Benchmarking with IOR​

The IOR benchmark ships at /opt/boostx-sds/ior/bin/boostx-ior, and the package adds it to PATH, so you can measure storage performance directly from any client host.

# Mount a volume first, then run against the mount point
boostx-ior -a POSIX -w -r -t 1m -b 1g -o /mnt/data/ior-test

Before a bandwidth run, optimize the environment:

eval $(mass-ctl env --bandwidth)

Bulk Data Copy​

mass-ctl dsync wraps the bundled MPI-parallel data mover at /opt/boostx-sds/mpifileutils/bin/boostx-dsync. See Commands.

Multi-Socket Hosts​

On a client host with more than one processor socket, the client automatically uses the network card physically closest to its processor, avoiding slower cross-socket traffic. On a host with several network cards, it picks the card that can actually reach the storage network; if none can, the error names the network it tried to reach.