对于 中的给定进程/proc/<pid>/smaps,对于给定的映射条目是:
是Shared_Clean+Shared_Dirty是与其他进程共享的存储器的量?所以它就像共享RSS?
同样是Private_Clean+仅可用于一个进程Private_Dirty的内存量?所以它就像私人RSS?
PSS 值是否 = PrivateRSS +(SharedRSS / 共享它的进程数)?
阅读此链接后还有一些问题:LWN
现在让我们从整体上讨论这个过程,我们正在查看其 smaps 条目。
我注意到,如果我为流程的每个 smaps 条目执行Shared_Clean+ Shared_Dirty+ Private_Clean+ Private_Dirty,我会得到流程的 RSS 报告ps,这非常酷。例如
ps -p $$ -o pid,rss
Run Code Online (Sandbox Code Playgroud)
将为我提供与/proc/$$/smaps中每个Shared_Clean, Shared_Dirty, Private_Clean,Private_Dirty条目的总和(大约)相同的 rss 值。
但是整个过程的PSS呢?那么,从上面的示例中,我如何获得 $$ 的 PSS?我可以为每个 smaps 映射添加 PSS 条目并以 $$ 到达 PSS 吗?
那么整个过程中的USS …
假设我正在运行一个脚本(例如在 Python 中)。为了找出程序花费了多长时间,可以运行
time python script1.py
Run Code Online (Sandbox Code Playgroud)
是否有一个命令可以跟踪脚本运行时使用了多少 RAM?为了找到有多少 RAM 可用,可以使用free,但此命令不适合上述任务。
我正在使用在Linux下运行的集群机器。
我有一个 shell 脚本,用于mpirun将我的作业提交到集群计算机。在同一脚本中,我可以选择分配给作业的节点数量。到目前为止,一切都很好。
我的问题出现在:当我提交一些作业时,一切正常,但是,当我填满节点的容量时,某些提交的作业将无法完成。因此,我怀疑集群上的可用内存不足以同时处理我的所有作业。
这就是为什么我想检查每个作业随着时间的推移的内存使用情况,然后我使用该qstat -f命令,但它显示了很多东西,其中大多数我无法理解。
所以这是我的问题:在下面命令的示例输出中qstat -f,我们可以看到两种类型的内存:mem和vmem。我想知道这两者有什么区别,实际使用的内存量是多少?
resources_used.cput = 00:21:04
resources_used.mem = 2099860kb
resources_used.vmem = 40505676kb
resources_used.walltime = 00:21:08
Run Code Online (Sandbox Code Playgroud)
此外,如果有详细说明该命令输出的参考资料,我将不胜感激。我尝试了 man qstat 但它没有详细说明每个返回行。