使用Grid Engine限制单个多线程作业的核心

时间:2014-07-15 18:04:08

标签: multithreading sungridengine

有没有办法限制分配给单个作业的核心数量?类似于我可以通过指定" -l h_vmem = 3g"来限制内存。作为qsub的默认参数,通过sge_request配置文件。

更具体地说,我想避免的场景是:

  1. 用户创建或使用在单个作业中使用多个处理器的程序,例如通过使用Python中的多处理模块。
  2. 用户在非并行环境队列上提交作业,这将使作业占用单个插槽,如qstat所示,但使用了多个CPU(在执行主机上使用top)。
  3. 在这种情况下,一个或多个用户可以分别在队列配置(qconf -mq)或主机配置(qconf -mc)级别绕过该主机允许的插槽或CPU总数。
  4. 例如,在我的队列配置中,我将队列的插槽数限制为该主机上总CPU的1/2:

    slots 10
    

    在主机级别,我设置资源限制以反映该执行主机上的硬件:

    complex_values        slots=20,num_proc=20,h_vmem=60g
    

    对于单线程/处理器作业,遵循队列和主机级别的限制,即提交30个单核作业,10个运行和20个等待。

    但是,当提交3个多处理器作业,每个作业占用10个CPU时,所有作业都同时在单个执行主机上运行。

    虽然可以通过要求用户使用并行环境并询问必要数量的插槽(即每个作业10个插槽)来指定这些限制,但在非并行环境中仍然可以进行有意或无意的超额预订。

    有没有办法避免这种情况?

    提前感谢您的帮助。

0 个答案:

没有答案
相关问题