<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Workload Aware Scheduling on Jobset</title><link>/docs/workload-aware-scheduling/</link><description>Recent content in Workload Aware Scheduling on Jobset</description><generator>Hugo</generator><language>en</language><lastBuildDate>Fri, 05 Jun 2026 17:00:00 -0400</lastBuildDate><atom:link href="/docs/workload-aware-scheduling/index.xml" rel="self" type="application/rss+xml"/><item><title>Gang Scheduling</title><link>/docs/workload-aware-scheduling/gang_scheduling/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>/docs/workload-aware-scheduling/gang_scheduling/</guid><description>&lt;p>This example configures gang scheduling so that all 6 pods (3 replicas × 2 completions) in a JobSet must be schedulable before any of them are admitted.&lt;/p>
&lt;h2 id="step-1-create-the-workload">Step 1: Create the Workload&lt;/h2>
&lt;p>The &lt;a href="https://github.com/kubernetes-sigs/jobset/blob/main/site/static/examples/workload-aware-scheduling/workload.yaml">Workload&lt;/a> references the JobSet and defines a pod group template with a gang scheduling policy:&lt;/p>




	
 















 
 
 &lt;div class="highlight">
 &lt;a href="//examples/workload-aware-scheduling/workload.yaml" download="workload.yaml" class="d-flex flex-row-reverse p-2"> &lt;button class="btn btn-outline-primary btn-sm position-absolute"> &lt;i class="fa-solid fa-file-arrow-down">&lt;/i> workload.yaml &lt;/button> &lt;/a>
 &lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#204a87;font-weight:bold">apiVersion&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">scheduling.k8s.io/v1alpha2&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">Workload&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">metadata&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">js-abc&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline">&lt;/span>&lt;span style="color:#204a87;font-weight:bold">spec&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">controllerRef&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">apiGroup&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">jobset.x-k8s.io&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">kind&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">JobSet&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">js&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">podGroupTemplates&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>- &lt;span style="color:#204a87;font-weight:bold">name&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#000">workers&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">schedulingPolicy&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">gang&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#204a87;font-weight:bold">minCount&lt;/span>&lt;span style="color:#000;font-weight:bold">:&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline"> &lt;/span>&lt;span style="color:#0000cf;font-weight:bold">6&lt;/span>&lt;span style="color:#f8f8f8;text-decoration:underline">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div> 

&lt;p>The &lt;code>controllerRef&lt;/code> links the Workload to the JobSet. The &lt;code>podGroupTemplates&lt;/code> entry defines a gang scheduling policy requiring a minimum of 6 pods to be schedulable.&lt;/p></description></item><item><title>Preemption</title><link>/docs/workload-aware-scheduling/preemption/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>/docs/workload-aware-scheduling/preemption/</guid><description>&lt;p>When the &lt;code>WorkloadAwarePreemption&lt;/code> feature gate is enabled, the scheduler can preempt entire pod groups to make room for higher-priority gang-scheduled workloads.&lt;/p>
&lt;h2 id="the-problem">The Problem&lt;/h2>
&lt;p>Without workload-aware preemption, the scheduler preempts individual pods. This can cause problems for gang-scheduled workloads — preempting some pods from a running gang breaks the entire workload, and freeing only a subset of the required resources may not be enough to admit the pending gang.&lt;/p>
&lt;h2 id="how-it-works">How It Works&lt;/h2>
&lt;p>With workload-aware preemption, the scheduler understands that pods belong to a group and makes preemption decisions at the group level. This means:&lt;/p></description></item><item><title>Topology Aware Scheduling</title><link>/docs/workload-aware-scheduling/tas/</link><pubDate>Sun, 31 May 2026 00:00:00 +0000</pubDate><guid>/docs/workload-aware-scheduling/tas/</guid><description>&lt;p>Topology Aware Scheduling (TAS) ensures that all pods in a gang are placed within the same network topology domain (e.g., the same rack, block, or data center zone). This is critical for distributed training workloads where inter-pod communication latency directly impacts performance.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>In addition to the &lt;a href="/docs/">general WAS prerequisites&lt;/a>, you must:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Enable the &lt;code>TopologyAwareWorkloadScheduling&lt;/code> feature gate.&lt;/strong> This feature gate is included in the &lt;a href="/docs/">kind cluster configuration&lt;/a> and is required for topology-aware placement.&lt;/p></description></item></channel></rss>