跟踪 SGE 上作业的内存使用情况

跟踪 SGE 上作业的内存使用情况

我正在寻找一些指导,以准确计算出我的作业在集群上使用了多少 RAM。我的作业不是多线程的,而是在单个 CPU 上运行的。

当我运行我的作业并运行“top”时,我可以看到它使用了这么多的 RAM......

VIRT: 45.6g
RES: 38g
SHR: 9600

对我来说,这意味着我使用了 38 GB 的实际 RAM,以及可能已移至交换空间的 7.6 GB 的内容。我正在测试的工具的作者表示,我的工作应该使用大约 40 GB 的数字。

当我从 SGE(使用 qstat 或 qacct)获取这些数字时,混乱就出现了。 qacct -j 7270916 在这里我看到

mem 2768.453
maxvmem 4.078G

但是,这些都没有接近我所知道的我正在使用的 45.6 GB 的 RAM(尽管 maxvmem 听起来确实应该代表 45.6 GB)。

当作业正在运行时,我尝试使用此命令 qstat -j 7270916 ,其中我看到了以下行:

usage 1: cpu=00:01:37, mem=168.12988 GBs, io=38.64676, vmem=1.665G, maxvmem=4.078G

我猜测 mem 是运行过程中使用/释放/使用/释放的所有 RAM 的总和(刚刚完成),但 maxvmem 仍然很低(比我预期的 45.6 GB 少得多)。

因此,我使用 qcct 和 qstat 时生成的数字都与预期数字(我在 top 中看到)不一致。

有谁能建议如何在运行结束后使用 SGE 命令获取有意义的 RAM 使用数字吗?

编辑:我正在使用 SGE 6.2u5

答案1

这是一个老问题,但如果你还是没搞清楚,你可以输入

qstat -j <Job_ID>

类别“maxvmem”为您提供了您的作业运行时使用的最大 RAM 量。因此,maxvmem 的值就是您要查找的数值,以找到您的作业运行时使用的最大内存量。

此外,您只能在作业运行时使用 qstat。如果您想在作业完成后查看内存使用情况,则必须使用

qacct -j <Job_ID>.

希望这会有所帮助,下面是包含更多信息的链接。

http://wiki.genomics.upenn.edu/index.php/HPC:Large_memory_jobs

相关内容