相关疑难解决方法(0)

从 /proc/pid/smaps 获取有关进程内存使用情况的信息

对于 中的给定进程/proc/<pid>/smaps,对于给定的映射条目是:

  1. Shared_Clean
  2. Shared_Dirty
  3. Private_Clean
  4. Private_Dirty

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 …

linux process memory virtual-memory

55
推荐指数
1
解决办法
6万
查看次数

Unix 命令告诉程序运行时使用了多少 RAM?

假设我正在运行一个脚本(例如在 Python 中)。为了找出程序花费了多长时间,可以运行

time python script1.py
Run Code Online (Sandbox Code Playgroud)

是否有一个命令可以跟踪脚本运行时使用了多少 RAM?为了找到有多少 RAM 可用,可以使用free,但此命令不适合上述任务。

memory command ram

44
推荐指数
2
解决办法
3万
查看次数

关于mem和vmem

我正在使用在Linux下运行的集群机器。

我有一个 shell 脚本,用于mpirun将我的作业提交到集群计算机。在同一脚本中,我可以选择分配给作业的节点数量。到目前为止,一切都很好。

我的问题出现在:当我提交一些作业时,一切正常,但是,当我填满节点的容量时,某些提交的作业将无法完成。因此,我怀疑集群上的可用内存不足以同时处理我的所有作业。

这就是为什么我想检查每个作业随着时间的推移的内存使用情况,然后我使用该qstat -f命令,但它显示了很多东西,其中大多数我无法理解。

所以这是我的问题:在下面命令的示例输出中qstat -f,我们可以看到两种类型的内存:memvmem。我想知道这两者有什么区别,实际使用的内存量是多少?

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 但它没有详细说明每个返回行。

memory cluster virtual-memory

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

memory ×3

virtual-memory ×2

cluster ×1

command ×1

linux ×1

process ×1

ram ×1