Logs and AdminComment - KasperSkytte/slurmjobpacker GitHub Wiki
Logs and AdminComment
AdminComment
Set by sjp.place() (only if empty); see it with scontrol show job:
AdminComment=sjp:placed=slim1,slim2;job=4c,16G,4.0G/c;v=20
AdminComment=sjp:pin=node01;from=slim1,slim2;job=4c,16G,4.0G/c;free=60c,293G,4.9G/c;v=20
| field | |
|---|---|
placed= |
partitions set |
pin=, from= |
pinned node; partitions before pinning |
job= |
CPUs, memory, memory per CPU (512 MB if none requested) |
free= |
pinned node's free space at the time |
v= |
placement table version |
time=, busy= |
time_aware: job time limit; time left on the node's jobs |
released= |
replaces pin= after an unstarted pin is removed |
skipped= |
not placed, and why (no room, reservation, gpu, ...); replaced by placed= or pin= if a recheck takes it over |
moved= |
slim1>fat1: partitions changed by the latest recheck |
room=no |
no node had room: placed by shape (always_place) |
eta= |
pinned to wait for room (wait_for_room): time until the node was expected to have it |
qos= |
normal>flex: moved to the flex QOS (kept after moving back) |
sjpd relies on these marks: it only releases its own pins, moves and widens jobs sjp placed
(or skipped for want of room), and
moves flex jobs back to the recorded QOS.
slurmctld log
One line per sjp.place() call:
sjp: uid=1000 name='wrap' -> slim1 (v20 b0,1,1 pin=node01)
sjp: uid=1000 name='big' -> not placed (no room)
sjp: uid=1000 name='big' -> slim1 (v20 b3,6,1 no room, by shape pin=node03 eta 2.0h)
v20: table version; b0,1,1: bucket (memory per CPU, CPUs, time limit); refit:
partitions too small for the job were dropped. With sjp.config.verbose = true:
sjp: uid=1000 name='wrap' -> fat1,slim1 (v1 b2,2,1): job 4 CPUs x 8192 MB (2048 MB/CPU), 120 min; table fat1,slim1; no pin: several tasks without -N 1
sjpd
| file | |
|---|---|
/var/log/sjp/sjp.log |
readable: jobs seen, actions (with command and reason), errors |
/var/log/sjp/decisions.jsonl |
same as JSON: start, stop, preflight, placement, action, policy, limits, error |
/run/sjp/status.json |
current idle share, pending and capped jobs, pulse state |
python3 -m sjp.report /var/log/sjp/decisions.jsonl --summary
python3 -m sjp.report /var/log/sjp/decisions.jsonl --only different,excluded
Actions: write_policy_table, release_pin, move_partitions, pin_waiting, widen_partitions, set_qos_cpu_limits,
flex_job, unflex_job; each says whether it ran or why not.