datacrumbs-utils contains the probe builder, client library, user wrappers, tests, and developer tooling that complement the main datacrumbs runtime.
datacrumbs and datacrumbs-utils now have distinct responsibilities:
datacrumbs- builds the runtime daemon and BPF programs
- owns install-time system configuration generation
- installs the systemd unit and scheduler service scripts
datacrumbs-utils- builds
libdatacrumbs_client.so - builds
datacrumbs_probe_configurator - installs user-facing wrappers such as
datacrumbs_wrap,datacrumbs_track,datacrumbs_untrack,datacrumbs_run,datacrumbs_stop,datacrumbs_salloc,datacrumbs_sbatch, anddatacrumbs_service_wrapper - owns tools, tests, formatting scripts, and Docker helper scripts
- builds
- Build and install
datacrumbs.datacrumbsbootstrapsdatacrumbs-utilsinto the same install prefix as part of its build. datacrumbsgenerates the install-time system configuration and probe secret if they are missing.- Run
datacrumbs_probe_configuratorfromdatacrumbs-utilsagainst a host YAML to generate a signed probes file. - Start
datacrumbsdirectly or throughdatacrumbs@<run-id>.service. - Launch applications with
datacrumbs_wrapor preload/track them withdatacrumbs_track.
bin/datacrumbs_probe_configuratorbin/datacrumbs_wrapbin/datacrumbs_trackbin/datacrumbs_untrackbin/datacrumbs_runbin/datacrumbs_stopbin/datacrumbs_sallocbin/datacrumbs_sbatchbin/datacrumbs_service_wrapperlib/libdatacrumbs_client.soorlib64/libdatacrumbs_client.soetc/datacrumbs/configs/<host>.yamletc/datacrumbs/configs/project.env.local
Generate a signed probes file from an installed host config:
<install-prefix>/bin/datacrumbs_probe_configurator \
<install-prefix>/etc/datacrumbs/configs/<host>.yaml \
/path/to/probes.json.gzThe probe builder reads the install-time system configuration and secret generated by datacrumbs. It validates the selected runtime functions against DATACRUMBS_MAX_RUNTIME_FUNCTIONS and fails early if the selection is too large.
datacrumbs_wrap is the simplest ad hoc entry point:
datacrumbs_wrap dd if=/dev/zero of=/tmp/out.bin bs=1M count=1 status=nonedatacrumbs_track and datacrumbs_untrack patch ELF executables to add or remove libdatacrumbs_client.so.
datacrumbs_run and datacrumbs_stop are multi-node helpers. They expand a node list, connect over SSH, and start or stop datacrumbs@<run-id>.service on each node.
datacrumbs_run --node-list "node[1-4]" --probe-file /path/to/probes.json.gz --run-id myrun
datacrumbs_stop --node-list "node[1-4]" --run-id myrundatacrumbs_salloc and datacrumbs_sbatch inject DataCrumbs metadata into SLURM job comments:
datacrumbs_salloc --datacrumbs-enable --datacrumbs-probe-file /path/to/probes.json.gz -N 2
datacrumbs_sbatch --datacrumbs-enable --datacrumbs-probe-file /path/to/probes.json.gz job.shdatacrumbs_service_wrapper exists mainly for testing the scheduler service flow outside a real prolog or epilog:
datacrumbs_service_wrapper start <job-id> <user> <probe-file>
datacrumbs_service_wrapper stop <job-id> <user> <probe-file>cmake -S . -B build
cmake --build build
ctest --test-dir build --output-on-failureThe utility Docker and formatting workflows now live in this repository as well.