Profiles¶
A profile is a YAML file describing what a code prints. Profiles are
composable: slurm (always applied) together with icon and cray-mpich
describes an ICON run on a Cray machine, and each profile is detected from the
content of the log itself.
runhealth --list-profiles
# cray-mpich Cray MPICH / Slingshot: CXI counters, libfabric warnings
# icon ICON atmosphere/ocean model: progress, timer report, coupling
# slurm SLURM batch job metadata, step failures and cancellations. (always applied)
# watchdog Hang watchdog in the job script: timeouts, firing, tracebacks
Profile |
Detects |
Contributes |
|---|---|---|
|
always |
|
|
ICON output or a generated ICON runscript |
time steps and SYPD, the timer report, coupling and I/O phases, |
|
Slingshot or libfabric output |
the CXI counter summary, libfabric flow-control warnings, MPICH aborts |
|
a |
the timeouts the script declares, when the watchdog fired, sent SIGABRT and cancelled the step, the diagnostics directory it wrote, and the Python frames printed at the signal |
Adding a profile¶
Place a YAML file in a directory and point runhealth at it:
runhealth /path/to/logs --profile-dir ./my-profiles
export RUNHEALTH_PROFILE_DIR=$HOME/.runhealth # or set it once
The following is a complete profile for a solver that prints
iteration 42, residual 1.0e-6:
name: mysolver
description: "Iterative solver: progress and convergence"
detect:
- 'mysolver v[0-9]'
settings:
progress_label: iterations
progress_series: iteration
series:
iteration:
re: 'iteration (\d+), residual (\S+)'
fields: [step, residual]
cast: {step: int}
role: progress
markers:
solve_start: {re: 'entering solve', label: solve}
outcome:
- {re: '^converged in (\d+) iterations', level: ok}
- {re: '^diverged after (\d+) iterations', level: fail}
This is sufficient for throughput, a progress-rate plot, phase timing, stall
detection relative to the typical iteration time, and a verdict. --profile mysolver pins the profile; without that flag it is detected automatically.
The complete schema, covering timer tables, message families and thresholds, is given in the profile reference.