可通过[! ]重新排序作业调度主机。
假设:
| 主机 | res |
|---|---|
| h1 | 110 |
| h2 | 20 |

假设如上两个作业处于pending状态,在同一个调度周期内被调度器考虑,首先调度job1。
在调度周期的早期,通过获取集群中的所有主机或任何(-m)请求的主机列表中列出的主机,并根据资源需求字符串部分指定的资源对它们进行排序,来构建一个候选主机列表。假设工作的有序候选主机列表在排序后如下所示:

上图顺序表示h1具有最多的res资源,仅在以后的调度中,每个作业会被逐一分配运行的主机和这些主机上的资源。
假设Job1被调度到主机h1上,因此将分配100 ‘res’。然后,当考虑Job2时,它也可能被安排降落在主机h1上,因为它的候选主机列表并未更改。也就是说,它没有考虑在相同的调度周期内分配给Job1的100个“res”。要解决这个问题,请使用!在order部分的开始,强制调度器为后面的调度阶段的作业重新排序候选主机列表:

!强制Job2的候选主机列表重新排序,顺序变为:
Job2: {h2, h1}
因为Job1在h1上分配了100个“res”,h1将有10个“res”(110-100),而h2将有20个。
您可以将新的批处理内置资源slot反向排序和maxslots排序重新排序相结合,以更好地确保大型并行作业有机会更优化的运行:















