Sun Grid Engine根据作业设置内存要求

我希望能够为每个作业设置内存需求。

例如:运行5个工作,我知道每个工作都需要4GB的内存。 我在Ubuntu服务器上有16 GB的RAM和16 GB的交换。 我想避免使用交换。 我可以做些什么: qsub -l mem_required_for_my_job=4G job1; qsub -l mem_required_for_my_job=4G job2; qsub -l mem_required_for_my_job=4G job3; qsub -l mem_required_for_my_job=4G job4; qsub -l mem_required_for_my_job=4G job5 qsub -l mem_required_for_my_job=4G job1; qsub -l mem_required_for_my_job=4G job2; qsub -l mem_required_for_my_job=4G job3; qsub -l mem_required_for_my_job=4G job4; qsub -l mem_required_for_my_job=4G job5 qsub -l mem_required_for_my_job=4G job1; qsub -l mem_required_for_my_job=4G job2; qsub -l mem_required_for_my_job=4G job3; qsub -l mem_required_for_my_job=4G job4; qsub -l mem_required_for_my_job=4G job5 ? 这个工作在某些时候需要4 GB,但是一开始就不需要。

如何告诉SGE我的要求是什么? 如果只有16 GB可用,如何避免安排5 x 4 GB?

我阅读了用户指南并尝试了s_vmem, h_vmem, mem_free, mem_used 。 没有一个是我想要的。 我不希望我的工作在处理过程中被杀死。 我希望他们不要安排,除非所需的最大资源可用。

我可以这样做吗?

谢谢你们!

在我们的集群中,我们使用h_vmem来强制执行作业内存分配。

您似乎缺less的东西是将可用量设置为可用资源。 在qconf -mcqmon复合对话框中,您需要将资源设置为可请求和可用的。

然后,在每个使用qconf -me主机上,您需要设置complex_values的可用内存量。

例如,我们有主机定义,如下所示:

 hostname node004 load_scaling NONE complex_values h_vmem=30.9G,exclusive=1,version=3.3.0 

我认为你正在寻找的是virtual_free

“如果虚拟空闲的作业请求超过了可用的数量,作业不会被分派到该主机的队列中。 从https://web.archive.org/web/20100801220839/http://wikis.sun.com/display/GridEngine/Configuring+Complex+Resource+Attributes

另见http://markmail.org/message/2iw4esthqvs5rc2a