Repository navigation
Collecting Telemetry
Do this first. The dashboard only reads files — something has to write them. That something is logger-rs, which runs alongside your job and records what it actually used.
Without it, a job produces no psutil_*.log and will never appear in the
dashboard, however correct your profile is.
Add the module lines, then put telemetry_start / telemetry_stop around the
part you want measured:
#PBS -l storage=gdata/gb02+scratch/<your-project>
module use /g/data/gb02/modules
module load logger-rs
source logger-rs.sh
export HPC_DASHBOARD_DIR="/scratch/<your-project>/$USER/dashboard"
./stage-inputs.sh # setup — not measured
telemetry_start
mpirun -np "$PBS_NCPUS" ./my_model
telemetry_stop
./copy-results-back.sh # clean-up — not measuredReplace <your-project> with your project code. The example module lives in
/g/data/gb02/modules; ask your site administrator for its path if your site
uses a different installation. A complete PBS script is in the
logger-rs example.
Marking a region keeps data staging out of the numbers. A long copy from
/g/data uses almost no CPU, so measuring it drags your efficiency down and
makes the Advice tab recommend fewer cores than
your science actually needs.
Anything can go between the two markers — pipelines, redirections, several launches, a command line assembled in variables.
If the script ends or is terminated, the same shutdown runs automatically. Call it explicitly where you can: it records your workload's exit status directly, and keeps clean-up out of the measurement.
A missing binary, an unwritable output directory, a logger that dies on startup: each is reported and then ignored. Running unmeasured is far better than not running.
Start a short interactive job and run:
logger-rs --checkIt reports what can and cannot be measured on that node — whether the job's cgroup was found, which counters PBS delegated to it, whether the output path is writable — in a few seconds instead of after a queue wait.
Most of what it looks for otherwise produces a log file that looks fine and is quietly wrong, which is much harder to notice than a crash.
Every filesystem your job touches must be listed in -l storage=, including
wherever the telemetry is written, and wherever logger-rs itself is installed.
The example above therefore includes both gdata/gb02 and your scratch
project. Add any other project storage your workload uses.
Without it the filesystem simply is not mounted inside the job, and the failure looks like a permissions bug rather than a missing request.
For a multi-node job the output must also be on shared storage. Each node
writes its own file and they are merged at the end, so /tmp or jobfs would
leave the merge with only one node's worth.
Anywhere the job can write and the dashboard can read — typically somewhere
under /scratch. The example above sets it once:
export HPC_DASHBOARD_DIR="/scratch/<your-project>/$USER/dashboard"Whatever you choose, that is the path you give the dashboard as a log directory when you add a profile.
psutil_<jobid>.manifest.json written first, lists everything to expect
psutil_<jobid>_<host>.log one per node, live NDJSON
psutil_<jobid>_<host>.log.summary.json
psutil_<jobid>.summary.json the merged whole-job summary
The merged summary is what the Summary, Advice and Compare tabs read, and it appears once every node has stopped. A job you are watching live will not have one yet — the view picks it up on its own when the job ends.
Getting started
Using it
Help