我正在寻找一些关于如何精确计算我的作业正在我的集群上使用多less内存的指导。 我的工作不是multithreading的,只能运行在一个CPU上。
当我运行我的工作,并运行“顶部”,我可以看到,它使用这么多的RAM …
VIRT: 45.6g RES: 38g SHR: 9600
哪些(纠正我在哪里我错了)对我来说意味着我正在使用38 Gig的真正的RAM和7.6 Gig的东西,可能已被移动交换。 大约40 Gigs的数字是我testing的工具的作者说我的工作应该使用。
当我从SGE(使用qstat或qacct)获取这些数字时,就会出现混乱。 qacct -j 7270916在这里我看到
mem 2768.453 maxvmem 4.078G
然而,这些都不是接近我正在使用的45.6G内存(尽pipemaxvmem听起来像是真的应该代表45.6的演出)。
当作业正在运行时,我尝试使用这个命令qstat -j 7270916在其中我看到了一行:
usage 1: cpu=00:01:37, mem=168.12988 GBs, io=38.64676, vmem=1.665G, maxvmem=4.078G
我猜这个mem是在运行过程中使用/释放/使用/释放的所有内存的总和(但刚刚完成),但是maxvmem仍然非常低(远远低于我预期的45.6次演出)。
所以我使用qcct和qstat都会产生与预期数字不一致的数字(我在上面看到)。
有没有人有build议如何获得内存使用率数字,在运行结束后使用SGE命令是有意义的?
编辑:我正在使用SGE 6.2u5
这是一个古老的问题,但如果你还没有弄清楚,你可以input
qstat -j <Job_ID>
类别“maxvmem”为您提供运行时所用作业的最大内存量。 因此,maxvmem的值是您正在查找的数量,以查找作业在运行时使用的最大内存量。
另外,您只能在作业运行时使用qstat。 如果你想在工作完成后看到内存使用情况,则必须使用
qacct -j <Job_ID>.
希望这有助于下面的链接更多的信息。
http://wiki.genomics.upenn.edu/index.php/HPC:Large_memory_jobs