我希望能够为每个作业设置内存需求。
例如:运行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 -mc或qmon复合对话框中,您需要将资源设置为可请求和可用的。
然后,在每个使用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