如何使用 Sungrid 限制主机上的作业数量?

How to limit the number of jobs on a host using Sungrid?

我正在使用 Sungrid6.2u5,我正在尝试在 4 个主机上提交一些作业,我需要 运行 50 个作业使用所有 4 个主机,但我想通知 SGE 我只想要 5 个在任何给定时间第 4 台主机上的作业 运行,我该怎么做?

我是 SunGrid.Could 的新手,请指点我 SGE 基础知识,我的意思是我从哪里开始? 我在网上找到这个,

Daniel Templeton 的 Sun Grid Engine 6.2 初学者指南
但显然这是为系统管理员准备的,我只是一个试图了解 SGE 功能的普通用户。

谢谢,

如果你不应该 运行 在第 4 个节点 (我们称它为 computer04 超过 5 个作业,它可能无法 运行宁更多的东西。一般来说,我们鼓励您为您的工作适当指定资源量,以防止核心过载和内存不足的情况。

如果您在 computer04 上总共有 20 Gb 而您的作业使用 5 Gb,您可以将所有作业限制为 5Gb 内存使用量:

qsub -l vmem=5G my_work

磁盘数量也是如此:

qsub -l fsize=10G my_work

我发现可以使用 -l -h= 选项在特定主机上 运行 作业。

qsub -l -h=computer04 -l vmem=5G my_work

5 份工作。然后使用

qsub -l vmem=5G my_work

其他 45 个职位。


(更脏的方式) 你可以在没有 memory/disk 限制的情况下做到这一点:

qsub -l -h=computer04 my_work # 5 jobs
qsub -l -h="!computer04" my_work # for 45 jobs

如果您有不同的队列或资源,并且可以将它们用于不同的作业。例如,您有 queue_4 运行 在 computer04 上的所有内容,以及 queue_main 与其他计算机链接的内容,那么,您

qsub -q queue_4 my_work

5 个职位,

qsub -q queue_main my_work

其他工作。


评论更新:

可以强制 SGE 拒绝 user/host 的超过 X 个作业。它应该由队列管理员完成。

qconf -arqs  
{
   name         max_jobs_per_computer04
   description  "maximal number of jobs for user1 on computer04 restricted to 5!"
   enabled      TRUE
   limit        users user1 hosts computer04 to slots=5
}

如果您想限制您的用户仅提交 某种 computer04 职位,您需要定义complex parameter如图here.