sqtop is an interactive terminal monitor for Slurm clusters. It gives ordinary HPC users a readable, continuously refreshed view of partitions, queues, users, nodes, and jobs without requiring slurmrestd, root access, or Slurm JSON output.
The project was previously published as s-top. The current executable, crate, and conda package name is sqtop.
squeue, sinfo, and watch are reliable, but they are not ideal for answering scheduler questions quickly:
- Which partitions are saturated right now?
- How much of the queue belongs to me versus other users?
- Which users are consuming the most jobs and resources?
- Which jobs are running, pending, or stuck for a specific reason?
- What changed over the last few refresh cycles?
sqtop focuses on those questions and stays compatible with typical user-level Slurm environments.
- Live partition overview with queue pressure, ownership split, and trend history
- Separate
My Jobs,All Jobs,Users,Partition Detail, andNode Detailviews - Structured job detail and conservative
scancelpreview / result flows - Text-based Slurm collection path designed for clusters where
--jsonis unavailable - Search, filtering, sorting, paging, and horizontal navigation for wide tables
- Mouse support for tabs, rows, modal actions, and sortable headers
| View | Preview |
|---|---|
| Overview | ![]() |
| My Jobs | ![]() |
| All Jobs | ![]() |
| Users | ![]() |
| Partition Detail | ![]() |
| Node Detail | ![]() |
| Job Detail | ![]() |
| Cancel Preview | ![]() |
cargo install sqtopconda install -c wubeizhongxinghua sqtopIf you want conda install sqtop to work without -c, add the channel once:
conda config --add channels wubeizhongxinghua
conda install sqtopcargo build --release
./target/release/sqtopRun the TUI:
sqtopCollect one snapshot and print a summary:
sqtop --onceUse a faster refresh interval:
sqtop --interval 2Dump raw and parsed collector output for troubleshooting:
sqtop --debug-dump- Check whether a partition is congested before submitting a job
- Compare your current queue footprint with other users on the cluster
- Inspect jobs on a specific partition or node
- Find pending jobs by reason, placement, or owner
- Review a selected job before canceling it
The default page shows partition pressure, mine-versus-others usage, running-versus-pending counts, and rolling trends.
Focused view of the current user's active jobs, including resource footprint, placement, search, and cancel actions.
Cluster-wide active queue view with highlighting for the current user's jobs.
Ranks active users by running jobs, pending jobs, total jobs, and resource footprint. The lower pane shows the selected user's active jobs.
Adds partition-local trends, node-state distribution, node list, and jobs in the selected partition.
Shows jobs on a node with interactive user, state, where, and why filters.
Opens a structured detail modal for a selected job, grouped into identity, resources, scheduling, placement, and execution sections.
Reviews eligible and blocked scancel targets before execution, then reports detailed per-job results afterward.
| Key | Action | Scope |
|---|---|---|
Tab / Shift-Tab |
Switch top-level pages | Global |
q |
Go back from detail pages; quit from top-level pages | Global |
j / k / Up / Down |
Move selection or scroll | Lists and modals |
Space / b |
Page down / page up | Lists and modals |
g / G |
Jump to top / bottom | Lists and modals |
Enter |
Open the focused detail | Overview and lists |
/ |
Start live search | Searchable views |
s |
Cycle sort key | Overview, Users, job lists |
f |
Cycle queue-state filter | Job lists |
m |
Toggle mine-only mode | Shared views |
p |
Pin or unpin the current partition | Overview and job views |
[ / ] |
Change selected node | Partition Detail |
n |
Open selected node | Partition Detail |
u / w / y / c |
Change or clear node filters | Node Detail |
i |
Open job detail | Job lists |
x |
Cancel the selected job | Job lists |
X |
Preview bulk cancel | Job lists |
Left / Right |
Move horizontal table viewport | Wide tables |
| Interaction | Result |
|---|---|
| Click a tab | Switch page |
| Click a row | Select row |
| Double-click a row | Open detail |
| Click a sortable header | Sort by that column |
| Mouse wheel | Scroll the active list or modal |
| Click a modal action | Trigger that action |
| Click outside the job-detail modal | Close the modal |
| Flag | Description |
|---|---|
--interval <seconds> |
Refresh interval. Default: 2.0 |
--user <name> |
Override the identity used for Mine / Others |
--all |
Start on the All Jobs page |
--no-all-jobs |
Disable the All Jobs page |
--theme <auto|dark|light> |
Select the UI theme |
--advanced-resources |
Force advanced resource columns on |
--no-advanced-resources |
Hide advanced resource columns |
--debug-dump |
Print raw and parsed data, then exit |
--once |
Collect once, print a summary, then exit |
--compact |
Use a denser layout |
--no-color |
Disable color output |
The live path is intentionally built around text-oriented Slurm commands:
sinfosqueuescontrol show partitionscontrol show nodescontrol show job
sacct is used only for detail enrichment or optional historical views and is not required for the main TUI.
The collector is designed for user-level environments:
- no root privileges assumed
- no
slurmrestd - no requirement for
squeue --jsonorsinfo --json - graceful degradation when optional fields are unavailable
The repository is actively packaged and released through GitHub tags. For upcoming improvements, use the issue tracker and release history as the authoritative source instead of expecting a separate long-term roadmap document here.
| Path | Responsibility |
|---|---|
src/collector/ |
Slurm command execution, timeout handling, cancellation, raw collection |
src/model/ |
Parsers, normalized data structures, aggregation |
src/app.rs |
Application state, refresh orchestration, filtering, sorting, event handling |
src/ui/ |
Rendering, themes, view composition, mouse hit testing |
src/cli.rs |
CLI parsing and current-user resolution |
src/config.rs |
Optional configuration support |
recipe/ |
Conda recipe and build scripts |
.github/workflows/ |
Release packaging and registry publishing |
- Availability of
ReqTRES,AllocTRES,GRES, memory, and GPU fields depends on site configuration - Pending jobs that are eligible for multiple partitions may appear in more than one partition-level pending aggregation
- Narrow terminals still require horizontal navigation on wide tables
- Trend rendering depends on terminal font support for Unicode symbols
- Conda packaging currently targets Linux
x86_64 - The Linux conda package currently targets a
glibcbaseline of2.17
This project is distributed under the MIT license. See LICENSE.







