我希望能够为每个作业设置内存要求。
例如:要运行 5 个作业,我知道每个作业都需要 4 GB 内存。我在 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
? 这些作业在某些时刻会需要 4 GB,但不是在开始时。
如何告诉 SGE 我的要求是什么?当只有 16 GB 可用时,如何避免调度 5 x 4 GB?
我阅读了用户指南并尝试了s_vmem, h_vmem, mem_free, mem_used
。它们都不是我所想要的。我不希望我的作业在处理过程中被终止。我希望它们不会被安排,除非有所需的最大资源可用。
我可以这样做吗?
谢谢你们!
答案1
在我们的集群上,我们用h_vmem
它来强制执行作业内存分配。
您似乎忽略了将可用量设置为可消耗资源。在qconf -mc
或在qmon
复合体对话框中,您需要将资源设置为可请求和可消耗。
然后,您需要在每个主机上qconf -me
设置可用内存量complex_values
。
例如,我们有如下主机定义:
hostname node004
load_scaling NONE
complex_values h_vmem=30.9G,exclusive=1,version=3.3.0
答案2
我认为你正在寻找的是virtual_free
“如果对 virtual_free 的作业请求超出了可用量,则不会将该作业分派到该主机上的队列。” 来自https://web.archive.org/web/20100801220839/http://wikis.sun.com/display/GridEngine/Configuring+Complex+Resource+Attributes