我应该如何比较两个进程之间的内存使用情况?

我应该如何比较两个进程之间的内存使用情况?

我有两个进程,我想比较它们的内存并找出哪一个进程的内存消耗更大(/proc/[pid]/status在 Linux 中使用)。但是,我对如何解释某些字段感到困惑(不是它们的含义 - 我知道每个字段代表什么)。

  1. 对于这两个进程,VmPeak均为 4505 kB。这是否意味着他们使用了相同数量的内存?既然虚拟内存包括RAM、交换区等,那么这是一个需要关注的领域吗?
  2. VmRSS进程 A 上的大小为 704 kB,而进程 B 上的大小为 740 kB。这是否意味着进程 B 更加密集,因为在物理 RAM 中分配了更多内存?此外,B 在RSSAnon,上较高RSSFile,但在 上较低VmPTE(如果以任何方式考虑)。
  3. B 有 200 次自愿上下文切换,而 A 有 1083 次。这与内存消耗情况有何关系?

我想这里真正的问题是我缺乏记忆知识,而不是其他任何东西,所以我为任何无知道歉。

答案1

“自愿上下文切换”是指进程自愿让出 CPU 的时刻。这基本上是在每次进行系统调用时完成的。非自愿切换是由于例如页面错误,进程必须等待资源并夺走CPU。与内存使用无关。

您正在查看峰值使用情况。但是,如果进程在其大部分运行时间中使用 1 MiB,并且偶尔在短时间内达到 4 MiB 峰值,或者持续使用 3 MiB,则情况显然非常不同。即使这样也是有误导性的,程序可能分配了 4 MiB,但实际上主动使用了 1 MiB,而其他部分则处于非活动状态。那部分可以换掉,没有什么区别。

您到底想实现什么目标?最好测量您真正感兴趣的性能数据并进行比较,而不是试图对其进行分解。

相关内容