单机上的GridEngine:如何限制每个作业的核心?

时间:2014-01-16 10:03:58

标签: sungridengine

我有一台32核(2个处理器)和32G RAM的机器。我安装了gridengine来为我创建的队列提交作业。但似乎所有核心​​都在运行作业。

我想知道是否有办法限制每个作业的内核和RAM。例如,我有两个队列:parallel.q和serial.q,因此我为serial.q分配20G RAMS和20个内核,但我希望每个作业只使用一个内核和最大1G RAM,以及8G RAM + 8个内核到一个单一并行工作。所有4个核心和4G公羊留给其他用途。

如何配置我的队列或gridengine以使设置正确?我试着阅读手册,但没有线索。

谢谢!

  

我对并行作业没有问题。我有一些串行作业将调用几个不同的程序,系统将为它们分配所有可用的核心。但我不希望所有内核都用于作业,而不是每个作业只有两个核心可用。(每个作业都有几个顺序运行的程序,在这种情况下,系统会为每个程序分配一个核心)。顺便说一句,我希望有一些空闲的核心来处理其他工作,比如处理数据。是可能还是必要?

1 个答案:

答案 0 :(得分:1)

事实上,如果我理解得很好,你想要用一个子队列对一台机器进行分区,是吗?

这可能会导致SGE出现问题,因为主机配置允许您设置给定节点上可用的CPU数量。比创建队列并将不同的主机分配给不同的队列。

在您的情况下,您应该将同一主机分配给一个主队列,然后添加只能使用给定MAX_SLOTS个插槽的下级队列。

但如果我可以问一个问题:你为什么要分区呢?如果您只设置一个队列并配置一些并行环境,那么您只需使用qsub -pe <parallelEnvironment> <NSLOTS>提交作业,并且Grid Engine会处理所有事情。我建议你至少设置一个OpenMP并行环境,因为你可能不需要像你这样的共享内存机器上的MPI(它看起来很棒BTW)。

另一件事是您必须能够配置模型运行,以便您使用的代码可以与有限数量的CPU一起使用;这非常重要。实际上,您必须为仿真代码分配与SGE相同数量的CPU。此信息包含在qsub-script的$NSLOTS变量中。