Skip to main content

A TUI for the Slurm Workload Manager.

Project description

turm

image image Conda Version

A TUI for Slurm, which provides a convenient way to manage your cluster jobs.

turm demo

turm accepts the same options as squeue (see man squeue). Use turm --help to get a list of all available options. For example, to show only your own jobs, sorted by descending job ID, including all job states (i.e., including completed and failed jobs):

turm --me --sort=-id --states=ALL

Installation

turm is available on PyPI, crates.io, and conda-forge:

# With uv.
uv tool install turm

# With pip.
pip install turm

# With cargo.
cargo install turm

# With pixi.
pixi global install turm

# With conda.
conda install --channel conda-forge turm

# With wget. Make sure ~/.local/bin is in your $PATH.
wget https://github.com/karimknaebel/turm/releases/latest/download/turm-x86_64-unknown-linux-musl.tar.gz -O - | tar -xz -C ~/.local/bin/

The release page also contains precompiled binaries for Linux.

Shell Completion (optional)

Bash

In your .bashrc, add the following line:

eval "$(turm completion bash)"

Zsh

In your .zshrc, add the following line:

eval "$(turm completion zsh)"

Fish

In your config.fish or in a separate completions/turm.fish file, add the following line:

turm completion fish | source

How it works

turm obtains information about jobs by parsing the output of squeue. The reason for this is that squeue is available on all Slurm clusters, and running it periodically is not too expensive for the Slurm controller ( particularly when filtering by user). In contrast, Slurm's C API is unstable, and Slurm's REST API is not always available and can be costly for the Slurm controller. Another advantage is that we get free support for the exact same CLI flags as squeue, which users are already familiar with, for filtering and sorting the jobs.

Resource usage

TL;DR: turmwatch -n2 squeue + tail -f slurm-log.out

Special care has been taken to ensure that turm is as lightweight as possible in terms of its impact on the Slurm controller and its file I/O operations. The job queue is updated every two seconds by running squeue. When there are many jobs in the queue, it is advisable to specify a single user to reduce the load on the Slurm controller (see squeue --user). turm updates the currently displayed log file on every inotify modify notification, and it only reads the newly appended lines after the initial read. However, since inotify notifications are not supported for remote file systems, such as NFS, turm also polls the file for newly appended bytes every two seconds.

Development without Slurm

For local UI testing, this repository includes mocks for squeue, scancel, and scontrol:

PATH=scripts/mock-slurm/bin:$PATH cargo run -- --me

The mock commands read/write files in scripts/mock-slurm/logs, so you can test log rendering and control actions without a Slurm install.

Star History

Star History Chart

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

turm-0.14.0-py3-none-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

turm-0.14.0-py3-none-musllinux_1_2_i686.whl (1.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

turm-0.14.0-py3-none-musllinux_1_2_armv7l.whl (1.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

turm-0.14.0-py3-none-musllinux_1_2_aarch64.whl (1.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

turm-0.14.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

turm-0.14.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl (1.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ s390x

turm-0.14.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

turm-0.14.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (1.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

turm-0.14.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

turm-0.14.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

File details

Details for the file turm-0.14.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b5f059f2c8a462710afc4274a1c9b409ea46bfa9bfc41b76fa2f506c30b922c2
MD5 a51d427bdce776d3cc02a423d2f35ce4
BLAKE2b-256 15f518765b4e6eb548dc6cfdf33d3a0a82830f957e39dbcf2622131bbe497ede

See more details on using hashes here.

File details

Details for the file turm-0.14.0-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 2af3f53568c6484b6cb28baf6412dfc31f059858e79fa2c5c76230d1f17211a3
MD5 db4f0c2326996fb692e1b643234c3f57
BLAKE2b-256 d4262254de0cd9b5c59df5ef8a60c3159db8a384eec98fe1bc05b553be2a9b07

See more details on using hashes here.

File details

Details for the file turm-0.14.0-py3-none-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 8a1ca78037e99a1594f8af6a36f8fd64c75a853bf58b3e187e36e94165aa2737
MD5 06816645c02ac67079f83c4a48cddf0f
BLAKE2b-256 6ffda4dd4e2cadc598c48eec63f2cbcc8358f5ba24995dc4a969d665787b2600

See more details on using hashes here.

File details

Details for the file turm-0.14.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6bdb77e3730252c6bb9db34ea8751e548bb9ae0213ac657e13d7e0bec4198e4a
MD5 d2cd8f884970fd71a69b4c7293b34144
BLAKE2b-256 4c74b6a13678346deddced87b14ea95ff8925862d212a6099fdcbc5acc39a122

See more details on using hashes here.

File details

Details for the file turm-0.14.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 babc684fb5b2aa2b598853b1eeae4f1bed36019179973a0c207e9a7a55bfc38d
MD5 b338a66271e0fe5dc9992297044812d6
BLAKE2b-256 16106907c032a3fc13b95047432d564afabbd2502a903cdc3c4032a1e1799be4

See more details on using hashes here.

File details

Details for the file turm-0.14.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 b59b2e7d620c18d6ebd32ab98a1ae9f1178a7c2d59a325a186ec8fb6cf0b607d
MD5 f4e0926adb224c283a1991dcf40c7229
BLAKE2b-256 310187009948177ff33c53845280e7852c30884bbd3a8fd2d9a29b3dff778c6f

See more details on using hashes here.

File details

Details for the file turm-0.14.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 10608aaa4766645a6935aab00dad6711e94d284029c32c029c7aaa652f4b3d4e
MD5 754137e3be51f01c863af1e554a84354
BLAKE2b-256 e8aa939a8721ff9f36942d27d1350fcd8f6073d56b0301de095fab1641b17147

See more details on using hashes here.

File details

Details for the file turm-0.14.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fd7f038fd81e7109c12b55bf8ab1104b1d96b9962ca2586acd9cc758c1c321bb
MD5 928857105bc009d87050719808d4f61d
BLAKE2b-256 2bf68a30a72af6b78a27c7faeb22703c9f6a30842be1f8fae5d62d833ee8e50d

See more details on using hashes here.

File details

Details for the file turm-0.14.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0f4c1d422cf865b76df7501e1516a949e91791869dcda8fa718c17498826afa7
MD5 9ac56a2e05d8fd1f40ecb3fda18373f5
BLAKE2b-256 035d63ec67c6330792b34e67f436c2f91856217ae0cf8a46781f1b6019961ec5

See more details on using hashes here.

File details

Details for the file turm-0.14.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for turm-0.14.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 27866f87744a4184111436f1d5adf7b5ba451a93334d3bd49f8aaa9f7c9ec044
MD5 352e73bd283c5ef7358dc104cbb0d8e5
BLAKE2b-256 1b59ac0718ce73e88fc786a64ba366a9a963b30b024a6c59b778139e609b868b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page