Skip to content

Component submission: slurm-why #2664

Description

@ajinkyakadam

Software Name

slurm-why


Public URL

https://github.com/ajinkyakadam/slurm-why


Technical Overview

slurm-why is a read-only CLI that translates confusing Slurm job states -- OOM kills, cryptic pending-reason codes, resource requests that will never be granted, broken --dependency chains, decoded exit codes, node failures, and reservation waits -- into a plain-English Diagnosis -> Why -> Fix, instead of requiring users to manually cross-reference raw sacct/squeue/scontrol output.

It's complementary, not competing with anything already in OpenHPC's distribution: since OpenHPC ships Slurm as its default resource manager, slurm-why is a support-load-reducing tool for exactly the population OpenHPC serves -- HPC users on a shared cluster who don't have deep Slurm internals knowledge, and admins triaging user tickets. An --admin mode adds raw technical detail for operators, and admin queue triages every pending job cluster-wide, bucketing "will never run as submitted" jobs before a confused user files a ticket.

It shells out to the standard Slurm client commands (sacct/squeue/scontrol/sacctmgr), which are already present and required on any OpenHPC login node running Slurm -- nothing new needs to be installed alongside it for these to be available.


Latest stable version number

0.4.0


Open-source license type

MIT


Relationship to component?

  • contributing developer

I'm the author/maintainer.


Build system

  • autotools-based
  • CMake
  • other

If other, please describe:
Go module (go build), compiled to a single static binary (CGO_ENABLED=0), cross-compiled for linux/{amd64,arm64,ppc64le} and darwin/{amd64,arm64}. Releases are packaged via GoReleaser, which also produces RPMs (via nfpm) for RHEL-family systems.

Does the current build system support staged path installations?
For example: make install DESTIR=/tmp/foo (or equivalent)

  • yes

The RPM build path uses a real staged install; the raw binary is also just a single file with no install-time path baking, so it can be dropped anywhere (e.g. ~/.local/bin).


Does component run in user space or are administrative credentials required?

  • user space

Every lookup slurm-why performs is something an ordinary user can already run themselves (sacct, squeue, scontrol show partition, sacctmgr show qos/show assoc for read access) -- no root, sudo, or elevated Slurm role is required for standard usage. --admin mode doesn't require new privileges either; it just doesn't get in the way of an operator's own pre-existing elevated Slurm role for cross-user visibility.


Does component require post-installation configuration.

  • yes
  • no

If yes, please describe briefly:
Works out of the box on any login node with the standard Slurm CLI tools on $PATH. (A slurmrestd REST backend is planned as an alternative to the CLI backend, and will require optional site-specific endpoint/token configuration when it lands -- not required for current functionality.)


If component is selected, are you willing and able to collaborate with OpenHPC maintainers during the integration process?

  • yes

Does the component include test collateral (e.g. regression/verification tests) in the publicly shipped source?

  • yes

If yes, please briefly describe the intent and location of the tests.
Fixture-based unit tests (internal/datasource/cli/testdata/) covering both CLI-output parsing and diagnosis logic, run via go test ./... -race -cover in CI on every push/PR (~73% overall coverage, ~98% in the core diagnosis package). Tests never invoke real Slurm binaries -- fixtures captured from a live cluster stand in for them. Separately, test/cluster/ is a Docker Compose-based local Slurm cluster (compiled from SchedMD's official source, checksum-verified) used to manually validate every diagnosis against real sacct/squeue/scontrol output, including genuine cgroup-enforced OOM kills; this has been re-run against Slurm 26.05.2, 24.11.7, 23.02.8, and 21.08.8-2 to confirm cross-version behavior.


Does the component have additional software dependencies (beyond compilers/MPI) that are not part of standard Linux distributions?

  • yes
  • no

If yes, please list the dependencies and associated licenses.
Pure Go with a small number of Go-module dependencies (notably Cobra for CLI argument parsing), statically compiled into the final binary -- nothing to install at runtime beyond Slurm's own client tools, which are already a given on any Slurm login node.


Does the component include online or installable documentation?

  • yes

If available online, please provide URL.
README (https://github.com/ajinkyakadam/slurm-why#readme), install instructions for no-root and RPM paths (https://github.com/ajinkyakadam/slurm-why/blob/main/docs/install.md), and a CONTRIBUTING.md for building/testing from source.


[Optional]: Would you like to receive additional review feedback by email?

  • yes
  • no

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions