据我所知,
mem_free
在具有内存free = mem_free
的主机中提交作业,而 h_vmem
是作业可以使用的内存的硬性限制,如果作业到达h_vmem
,作业会崩溃? 我想我们可以将主机的h_vmem
设置为总的物理内存,以便作业不会开始使用交换,并减慢服务器的速度。 那么什么是h_rss
? 它看起来和h_vmem.
具有相同的定义h_vmem.
还是我误解了h_vmem
? h_vmem
是用来保留它可能需要的额外内存,而不是它所需的最小内存( mem_free
)? 但是,如果超过内存不要崩溃,所以工作可以超过h_vmem
?
如果我对h_vmem
第二个解释是正确的,那么我猜测,要在一个主机上提交一个工作,这个工作必须同时满足mem_free
和h_vmem
(因为h_vmem
不是INFINITY)。
如果我对h_vmem
第一个解释是正确的,那么我想,在一个主机上提交一个工作,这个工作可以单独满足mem_free
,不需要满足h_vmem
,因为它只保留可用空间,如果没有空间可用,这没关系?
好吧,我通过检查执行服务器中正在运行的作业进程的/proc/<pid>/limits
来find答案。
当我提交h_rss=10G
的作业时, Max Resident Set
值设置为10737418240字节(即10G)。 (在操作系统的默认值是无限的)所以,进程不能超过这个内存。 也是不可消费的东西。
而当我提交h_vmem=50G
的作业时,在限制中Max Resident Set
值等于无限制 。 所以,它可以继续超过50G 。 然而,这是消耗性的,因此,主机的h_vmem
减less了50G 。
这可以通过运行以下命令find:
qhost -h <hostname> -F h_vmem
,其中h_vmem显示当前的h_vmem值和 qconf -se <hostname>
,其中complex_values中的h_vmem显示已分配的h_vmem值。