设置SGE来完全填充每个节点,而不是分配作业

最初张贴在错误堆栈溢出…请参阅底部的post来回复该post。

我search了一会,但找不到答案。 我的问题是这样的:假设我有一个SGE设置了两个12-CPU的机器。 我有两个1-CPU作业提交给网格,但其他用户通常会提交12-CPU作业。 这些是不能在多台机器上拆分的共享内存作业。 会发生什么是有时我会提交我的两个工作,他们将分别去一个单独的机器,每个11/12 CPU免费。 这样可以防止其他人在运行时运行12-CPU作业。

有没有解决的办法? 我知道你可以使用fillup规则来控制一个qsub(所以fillup可以让一个12-CPU的qsub停留在一台机器上,在几台机器之间进行拆分等等),但是有没有类似的设置来迫使单独的qsub去到同一台机器? 我也知道我可以明确地要求一个特定的机器(我认为这是-h机器名,或类似的东西),但我宁愿有一个比这更强大的设置。

任何帮助表示赞赏。 谢谢!

PS:在堆栈溢出文章,一个响应进来之前线程closuresbuild议使用并行环境allocation_rule = $ fill_up。 除非我在尝试中做了什么错误,否则我不认为这样做能够解决问题。 从我所看到的testing中,如果我设置为fill_up,这意味着如果可能的话,在单个qsub中请求的CPU将被放置在同一个网格计算机上,但是来自不同qsubs的CPU仍然会转到低负载计算机上网格select),并可能去一个空的机器。 testing这涉及到qsubbing几个单一的CPU作业,等待~5分钟,然后提交几个。 虽然有时候第一个小组最终会在同一台机器上(我猜是因为机器负载不是实时的,所以他们都被发送到同一个低负载的机器上?),但是第二个小组不会一直去与第一组相同的机器。

调度程序的默认load_forumla设置是np_load_avg ,它将新的作业分配给负载平均值最低的节点。 为了让它填充节点,您可以将load_formula设置为插槽 。 要查看当前的调度程序设置

qconf -ssconf 

修改设置:

 qconf -msconf