slurmpast
How your finished Slurm jobs actually ran — and what the next one should ask for.
pip install slurmpast
slurmpast # dashboard, last 7 days
slurmpast --sizing # what to request next time, per workload
slurmpast 51170455 # one job, every field Slurm recorded
slurmpast --demo # no Slurm to hand? synthetic cluster
sp # short alias
enter open · q back · digits jump to a row · / search · f filter · s sort ·
n nodes · p patterns · y copy · ? help
Before the run, slurmate
builds the request. During it,
slurmwatch watches.
After it, slurmpast tells you what happened and what to change.
What to request next time
Over-requesting reserves capacity nobody else can use; under-requesting kills the run. Your own history settles both.
argonne35-pretrain test · 101 runs
--time raise to 10:00:00 (from 08:05:00)
longest of 90 completed runs took 07:58:23.
--mem already about right
--cpus-per-task already about right
#SBATCH --time=10:00:00
That workload was running on a seven-minute margin. With fewer than three usable runs it says not enough evidence instead of guessing.
The figure it measures you against — 08:05:00 above — is the limit your last
run asked for, not the largest in the window. Those differ the moment you tune a
request, and the window is deliberately built to span that tuning: grouping ignores
resource magnitudes, so that raising --mem does not fork the history you are
trying to learn from.
One job
Time, CPU and memory against the limits you asked for, then every field Slurm recorded, the log excerpts if the files are still on disk, and the findings.
Failure, across runs
seff describes one job and slurmwatch one live run. Neither can say "you
submitted this 115 times and it died 99 times." Runs group into workloads, so a
repeated failure — and the node it keeps landing on — is visible at a glance, with
a ready-to-paste --exclude.
That --exclude is offered only when a node is worse than the rest after
accounting for every other node the table tested. Without that correction a large
enough history always produces a culprit: given twenty nodes with one identical
true failure rate, testing each interval on its own named an innocent node more
than half the time.
Correct on any cluster
sacct misreports in ways that are easy to miss: the requested memory is often
blank, limits are recorded per allocation but enforced per node, and a job left in
RUNNING inflates every total. slurmpast handles those, adapts to how your
Slurm version spells things, and prints n/a rather than 0 for anything it
cannot read.
Every trap, and the 85 fields it extracts →
As a library
The analysis modules import no third-party package.
from slurmpast import History, Sacct
from slurmpast.sizing import recommend
history = History(Sacct().history(user="you", since="now-30days"))
for advice in recommend(history.groups[0].jobs):
print(advice.flag, advice.verdict, advice.suggestion)
--json emits everything — 174 values per job.
Slurm 20.11.8 · Python 3.10–3.13 · Textual 0.89–8.2 · MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slurmpast-0.4.0.tar.gz.
File metadata
- Download URL: slurmpast-0.4.0.tar.gz
- Upload date:
- Size: 259.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b98666e50a34974125b25d7253759734277e9bfd3f41bd23502bd6cbd6cc9a25
|
|
| MD5 |
0a864e8ab284a4523846911b9f96908f
|
|
| BLAKE2b-256 |
046f5d7aaaa8746a1356d62104956ad7c381ce07fc973188c2768cf009426fbb
|
Provenance
The following attestation bundles were made for slurmpast-0.4.0.tar.gz:
Publisher:
release.yml on PursuitOfDataScience/slurmpast
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
slurmpast-0.4.0.tar.gz -
Subject digest:
b98666e50a34974125b25d7253759734277e9bfd3f41bd23502bd6cbd6cc9a25 - Sigstore transparency entry: 2307153082
- Sigstore integration time:
-
Permalink:
PursuitOfDataScience/slurmpast@4d47d4d3b01bb152b0d53c25d50f608f0c4c8806 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/PursuitOfDataScience
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4d47d4d3b01bb152b0d53c25d50f608f0c4c8806 -
Trigger Event:
push
-
Statement type:
File details
Details for the file slurmpast-0.4.0-py3-none-any.whl.
File metadata
- Download URL: slurmpast-0.4.0-py3-none-any.whl
- Upload date:
- Size: 154.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2bfe3a4a9ab5ea9b0ab178b6ba434c251eb890b396aeae8cac76a126f051d34
|
|
| MD5 |
51b0760cef3191d872c0cd5d1a957cde
|
|
| BLAKE2b-256 |
0d875189e0c22ce8fbbe70c88b3d40a17edc27efa12da394d56d8e94f23d796a
|
Provenance
The following attestation bundles were made for slurmpast-0.4.0-py3-none-any.whl:
Publisher:
release.yml on PursuitOfDataScience/slurmpast
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
slurmpast-0.4.0-py3-none-any.whl -
Subject digest:
d2bfe3a4a9ab5ea9b0ab178b6ba434c251eb890b396aeae8cac76a126f051d34 - Sigstore transparency entry: 2307153149
- Sigstore integration time:
-
Permalink:
PursuitOfDataScience/slurmpast@4d47d4d3b01bb152b0d53c25d50f608f0c4c8806 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/PursuitOfDataScience
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4d47d4d3b01bb152b0d53c25d50f608f0c4c8806 -
Trigger Event:
push
-
Statement type: