» Cedana / Slurm / Scavenger queue

Turn idle GPUs into capacity. Automatically.

Cedana turns your cluster’s idle time into finished batch work. Long-running jobs run in the gaps; when a priority job arrives, Slurm preempts, Cedana checkpoints, the queue requeues, and the job resumes where it stopped on the next free GPU. Completely automated. Priority always comes first. No scripts, no schedules, no code changes.

Actual results from a 24-hour run

Measured · not simulated

The numbers below are not simulated or projected; they come from a single continuous 24.6-hour run on a real Slurm cluster we stood up on AWS EC2 with 8 NVIDIA A10 GPUs spread across multiple nodes. The experiment modeled the standard scavenger-queue problem: a set of high-priority jobs arrives on an unpredictable schedule and must get GPUs immediately, while a second queue of lower-priority “scavenger” jobs is allowed to run only on capacity the priority jobs are not using. In a conventional Slurm setup, scavenger jobs are killed on preemption and lose all progress. In this run, Cedana checkpointed each scavenger workload at the moment Slurm preempted it, and Slurm requeued and restored it, often on a different node, as soon as idle capacity reappeared. Over the run, priority jobs consumed 34% of the cluster’s total GPU time, leaving 66% idle. The eight scavenger workloads were preempted 588 times in total, and all eight progressed through every preemption and ran to completion. Of the idle GPU time, 87% was converted into kept, useful scavenger work (91% during windows when jobs were actively waiting), with 8% consumed by checkpoint and restore overhead. The median handover, measured from a priority job’s submission to its first CUDA kernel executing on the GPU it preempted, was 11.4 seconds, and 265 of the restores landed on a different node than the one the job was checkpointed from.

000:00
»01 · RUN COUNTERS
Idle GPU time recovered by Cedana0 %

of 0.0 h idle GPU time so far

Work kept · with vs without Cedana
With Cedana0.0 h
Without · simulated0.0 h

Cedana saved 0.0 h

0Priority jobs run
0Preemptions
0Resumed from checkpoint
0Cross-node resumes
0Units rewound
0Restarts from zero
0Restores cut short · no loss
0 / 8Jobs finished
»01B · GPU-HOURS RECOVERED FOR EFFECTIVE WORK
0.0Cluster · 8 GPUs
0.0compute-01 · 4 GPUs
0.0compute-02 · 4 GPUs
»02 · GPU TIMELINE
~ / cedana / slurm / sc26-pre-24h-2 / gpusreplay
PRIORITY JOBPRIORITY WAITING FOR GPUIDLERESTORINGCHECKPOINTING◆ CHECKPOINTED   ▶ RESUMED   ✕ CUT SHORT   ★ FINISHEDPRESS C: WITH / WITHOUT CEDANA
~ / jobs / progress:: units held
THIN GREY BAR: SIMULATED PROGRESS IF EVERY PREEMPTION RESTARTED THE JOB FROM ZERO, SAME SCHEDULE. NOT MEASURED.
~ / idle time / per gpu / wasted otherwise
PRIORITY WORKIDLE TIME RECOVERED · WASTED WITHOUT CEDANACHECKPOINT / RESTOREKEPT SO FAR · NOT YET PREEMPTEDTHROWN AWAY ON PREEMPTIONSTILL IDLE
»03 · FULL RUN
~ / sc26-pre-24h-2 / 1480 minclick to seek

SOURCE: sacct, gpu_index.csv, cedana-slurm logs on both nodes, and the job output files of run sc26-pre-24h-2 (2026-10-25 15:40:49 UTC). Restore phase runs from Slurm start to “workload up”; checkpoint phase from “dump starting” to “dump completed”. Progress is each job’s own PROGRESS counter. The “without checkpointing” bar is simulated: the same preemption times with the job restarting from zero each time.