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.
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.
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.