Why can a multi-GPU job wait while GPUs are idle?
· Nodeox
Six GPUs are free. A job asking for four still waits. It is tempting to blame the scheduler, but the fleet total leaves out the detail that matters: which four GPUs can this job actually use?
An idle count tells us that devices are not busy. It does not tell us whether they satisfy a particular request, are accessible under the relevant policy, or can run the application together. Those are separate checks. We would start with one pending job and work outward from there.
Start with the reason the job is pending
Slurm exposes pending reasons such as unavailable resources, priority, association or QOS limits and dependencies. A job can face several constraints; the displayed reason is the one encountered by the scheduling attempt, so it is a useful starting point rather than a complete diagnosis. [1]
If the blocker is a dependency, changing GPU types will not finish the preceding job. If an association or QOS limit applies, additional idle devices do not automatically make the allocation permissible. If the request cannot be satisfied, examine its shape before concluding that the fleet is too small.
Keep a small diagnosis record: the request, pending reason, observation time, eligible nodes and the policy that applies. A screenshot of free GPUs without that context makes a weak basis for buying hardware or replacing a scheduler.
Count the devices that fit the request
Consider this hypothetical fleet. Four GPUs are configured as type A, and two are occupied. Four more are type B, and all are free. A job requests four type-A GPUs.
Six devices are idle, but only two match. The allocation cannot be assembled from that snapshot. Slurm can represent GPU types through its generic-resource configuration; what the request can select depends on that configuration. [2]

The type restriction may be necessary. Perhaps the model needs more memory than type B offers, or the validated environment depends on a particular software path. Perhaps it is simply the configuration used in an old submission script. The observation alone does not distinguish those cases.
Ask the application owner why the restriction exists. Then test whether another configuration can complete the same work at the required quality. Removing a request constraint before answering that question can turn a waiting job into a failed job.
Look beyond the GPU count
The allocation also needs enough supporting resources in the right places. Check host memory, CPU requirements, placement, network access and the partitions the account can use. Four free GPUs spread across four machines may be a very different option from four in one machine.
This is where “fragmentation” needs a precise description. Which pieces are available? Which combination is required? What prevents the pieces being used together? The word is more useful when it names the missing combination than when it labels every queue delay.
Also separate resource eligibility from application eligibility. A workload manager may allocate and launch a combination that the training runtime cannot use efficiently. Slurm supports heterogeneous job components; that capability does not by itself settle the training algorithm's compatibility or communication requirements. [3]
What public traces help us ask
Our repository's analysis of the historical Helios traces found a much longer p90 wait for multi-node jobs than single-node jobs: about 21 minutes versus 3 minutes (37 minutes for jobs on exactly two nodes). The multi-node jobs were a small share of job count but a large share of GPU-hours. These are observations from four of SenseTime's eight Helios clusters (public trace, April–September 2020), not a forecast for a university cluster. [4]
They make multi-node requests worth investigating. They do not show that the free GPUs were the wrong model. Helios supplies queue information without the GPU-type evidence needed for that conclusion; our Alibaba PAI analysis supplies type information without useful waiting-time differences. Combining two incomplete pictures does not create the missing causal observation.
For a real fleet, we would want simultaneous evidence: what the job needed, why it waited, which devices were free, and whether those devices could have completed its workload. That is the point where a plausible idea becomes a testable operational question.
Test a change on one workload
Choose a repeatable job with a clear acceptance criterion. Record its usual request and the time from submission to an accepted result. If a broader hardware configuration is eligible, measure its setup, runtime, communication, failures, quality and cost as well.
The alternative might execute more slowly and still return a result earlier because it starts sooner. It might lose that advantage to overhead. It might be unsuitable altogether. An idle-GPU chart cannot choose between those outcomes.
Nodeox is investigating whether suitable workloads can use a broader mixed GPU allocation. Its E1 training tests do not measure customer queue savings. Before making that claim, we need the queue record and a workload comparison in the environment where the decision matters.

For the next pending job, put the free-device count beside its actual request. The discrepancy is often where the useful questions begin.
Sources
Helios public traces, four released clusters, April–September 2020. Queue-wait percentiles recomputed by Nodeox on 1 November 2026: about 3 minutes for single-node jobs, 21.1 minutes for all multi-node jobs and 37 minutes for exactly two nodes.