在我的工作中,我们有几个运行各种 RHEL 版本的 SGE 集群,我们正在使用更新的 Redhat 测试一个新集群,所有 . 在旧集群(“Centos 5.4 版”)上,我可以提交如下作业,并且运行良好:
echo "java -Xms8G -Xmx8G -jar blah.jar ..." |qsub ... -l h_vmem=10G,virtual_free=10G ...
在新集群“CentOS release 6.2 (Final)”上,具有这些参数的作业由于内存不足而失败,我必须将 h_vmem 更改为 h_vmem=17G 才能使其成功。新节点的 RAM 大约是旧节点的 3 倍,在测试中我一次只做几个工作。
在旧集群上,我将 设置-Xms/Xms
为N
,我可以使用N+1
orso 作为h_vmem
. 在新集群上,除非我设置h_vmem
为2N+1
.
我写了一个很小的 perl 脚本,它所做的只是逐步使用消耗更多内存并定期打印出使用的内存,直到它崩溃或达到限制。h_vmem 参数使其在预期的内存使用情况下崩溃。
我尝试了多个版本的 JVM(1.6 和 1.7)。如果我省略h_vmem
,它可以工作,但是运行起来风险更大。
我搜索了其他人看到类似问题的地方,但没有找到解决方案。